Merchant Onboarding
Sign up, test in sandbox immediately, then verify to go live
Merchant Onboarding
Sandbox first, then go live. You can test everything without paying or submitting ID. Only when you're ready to accept real money do you complete verification.
Quick Overview
| Step | What happens | Time |
|---|---|---|
| 1. Sign up | Create account, verify email | 2 minutes |
| 2. Sandbox setup | Get test API keys, run test payments | 5 minutes |
| 3. Go live (optional) | Submit KYC (free) | 1–2 days for approval |
| 4. Live mode | Get live API keys, accept real payments | Done |
Step 1: Sign Up
Go to nylonpay.nilesquad.com. Enter your email and verify it.
Result: You're immediately in sandbox mode. No payment needed. No ID needed.
Step 2: Sandbox Setup
After signup, a guided onboarding modal walks you through these steps.
2.1 Create a Collection Account
- Go to Accounts in the dashboard
- Click Create Account
- Give it a name (e.g.,
"My Business Account")
A collection account holds incoming payments before settlement.
2.2 Create Sandbox API Keys
- Go to Settings > API Keys
- Click Create Key
- Copy your
apiKeyandapiSecretimmediately, the secret is shown only once
Your sandbox keys look like:
apiKey: npk_sandbox_...
apiSecret: nps_sandbox_...2.3 Set Your Webhook URL (Optional)
- Add your webhook endpoint in Settings > API Keys
- See the Webhooks guide for details
2.4 Enable Optional Services
Choose any extras:
- SMS receipts to customers
- Email receipts
- Invoice generation
2.5 Test Your Integration
import { createNylonPay } from '@nile-squad/nylonpay-ts'
const nylonPay = createNylonPay({
apiKey: 'npk_sandbox_your_key',
apiSecret: 'nps_sandbox_your_secret'
})
const payment = await nylonPay.collectPayment({
amount: 5000,
currency: 'UGX',
customer: {
name: 'Jane Doe',
phoneNumber: '+256712345678'
},
description: 'Test payment'
})
payment.on('success', ({ transaction }) => console.log('Paid:', transaction.reference))
payment.on('failed', ({ error }) => console.error('Failed:', error))Sandbox transactions are marked in the dashboard. They don't count toward limits or statistics.
Step 3: Go Live (When Ready for Real Payments)
Initiate from Settings > Verification or click the Go Live banner.
3.1 Submit Level 1 KYC
| What you need | Details |
|---|---|
| Product/service name | What you sell |
| Use case | How you use Nylon Pay |
| Business description | Brief overview |
| National ID | Verified via hosted ID capture session |
| Phone number | Must match your ID name |
3.2 Background Checks (Automatic)
| Check | What it verifies |
|---|---|
| Risk score | Overall risk profile |
| ID verification | Government ID is real |
| Selfie verification | Selfie matches ID photo |
| Watchlist check | Not on sanctions lists |
| Use case eligibility | Your business type is allowed |
3.3 Decision
| Outcome | What happens |
|---|---|
| Approved | Account upgraded to live mode. Monthly limit: 10,000,000 UGX |
| Rejected | You're told the reason. Contact support to appeal |
Typical approval time: 1–2 business days.
Step 4: After Approval (Live Mode)
Create Live API Keys
- Go to Settings > API Keys
- Create a new key, mode will be live
Your live keys look like:
apiKey: npk_live_...
apiSecret: nps_live_...Update Your SDK Configuration
const nylonPay = createNylonPay({
apiKey: 'npk_live_your_public_key',
apiSecret: 'nps_live_your_secret_key'
})Set Up Settlement
- Go to Accounts
- Add your settlement phone number or bank account
- Defaults to the phone number from your KYC
Keep Sandbox Keys
Your sandbox keys remain active. Test new features in sandbox while running live payments.
Sandbox vs Live Comparison
| Feature | Sandbox | Live |
|---|---|---|
| Real money | No | Yes |
| API key prefix | npk_sandbox_ / nps_sandbox_ | npk_live_ / nps_live_ |
| KYC required | No | Yes (free) |
| Monthly limit | Unlimited (test) | 10,000,000 UGX |
| SMS to customers | No (simulated) | Yes |
| Settlement | Not available | Yes |
Next Steps
- Test in sandbox, verify everything works
- Configure webhooks, receive payment notifications
- Create payment links, collect payments without coding