Features
Everything Nylon Pay offers for collecting payments, settling funds, and managing your business
A complete overview of what Nylon Pay provides. Each feature links to the relevant documentation for deeper detail.
Collections
Accept payments from customers through multiple channels with a single integration.
| Method | Providers | How it works |
|---|---|---|
| Mobile Money | MTN MoMo, Airtel Money | Customer approves a prompt on their phone |
| Bank Transfer | 25+ banks | Customer pays from their bank account |
| Card | Visa | Customer pays on a hosted payment page with 3D Secure |
const payment = await nylonpay.collectPayment({
amount: 10000,
currency: 'UGX',
customer: { name: 'Jane Doe', phoneNumber: '+256700000000' },
description: 'Order #1234',
method: 'mobileMoney',
})See Collect Payment for the full API.
Settlements
Move funds from your Nylon Pay balance to a mobile money wallet or bank account. Use for disbursements, supplier payments, refunds, or any scenario where money leaves your account.
| Destination | Details |
|---|---|
| Mobile Money | Settle to any MTN or Airtel number |
| Bank Account | Settle to any supported bank using account number and bank name |
const payout = await nylonpay.makePayout({
amount: 50000,
currency: 'UGX',
customer: { name: 'Jane Doe', phoneNumber: '+256700000000' },
destination: { accountHolderName: 'Jane Doe', accountNumber: '1234567890' },
description: 'Refund for order #1234',
})See Make Payout for the full API. Settlement limits are based on your KYC level. See Merchant Onboarding for details.
Payment Links
Generate a hosted payment page and share the URL via email, SMS, WhatsApp, or any channel. No checkout UI required on your side.
- Create links directly from the dashboard — no code needed
- Generate links programmatically through the SDK for invoice workflows
- Dashboard links support mobile money, card, and bank transfer; SDK invoices send a payment link by email and are paid by mobile money
- Optional line items for itemized breakdowns on the payment page
- Card payments run only through this hosted page, so card details never reach your servers
Dashboard links stay active so multiple customers can pay through the same URL. SDK invoices are tied to a single reference and generated from your server.
const result = await nylonpay.createInvoice({
amount: 25000,
currency: 'UGX',
customerEmail: 'customer@example.com',
description: 'Monthly subscription',
items: [{ name: 'Pro Plan', quantity: 1, amount: 25000 }],
})
if (result.isOk) {
console.log(result.value.paymentLink)
}See Payment Links for the full guide.
Smart Tags
Tag transactions with custom labels to organize and filter your payment history.
| Use case | Example tags |
|---|---|
| Separate product lines | "electronics", "clothing" |
| Track campaigns | "black-friday", "launch-promo" |
| Segment customers | "wholesale", "retail", "vip" |
| Internal accounting | "recurring", "one-time" |
Tags are searchable and filterable in the dashboard analytics. Filter by one or multiple tags to see exactly the transactions you need.
Addon Services
Optional services you can enable per account from the dashboard to extend what happens around each transaction.
| Service | What it does |
|---|---|
| SMS Notifications | Send SMS messages to customers when transactions succeed or fail |
| Email Receipts | Automatically email payment receipts to customers after successful collections |
| Auto-Invoicing | Generate invoices automatically for every collection |
Enable or disable these in Dashboard > Settings > Services. Each service can be toggled independently.
Webhooks
Receive real-time HTTP notifications when transaction status changes. Configure your endpoint in the dashboard and Nylon Pay pushes events to your server automatically.
| Event | When | What to do |
|---|---|---|
transaction.successful | A transaction completed successfully | Fulfill the order, send a receipt |
transaction.failed | A transaction was rejected or timed out | Notify the customer, offer a retry |
transaction.processing | A transaction is in flight | Update the status in your system |
transaction.cancelled | A transaction was cancelled | Update the order state |
Webhook payloads include a signature your server can verify to confirm the event came from Nylon Pay. Failed deliveries are retried automatically.
See Webhooks for setup and signature verification.
Sandbox
Test your full integration without moving real money. Use your sandbox API key to run transactions in a test environment.
- Same API surface as production
- Success and failure outcomes are simulated automatically
- Webhooks fire as normal
- No balance changes, no fees charged
- Monthly limits do not apply
Switch between sandbox and live by using the corresponding API key. There is no separate configuration option.
See Quick Start for sandbox setup.
Phone Verification
Pre-validate a phone number before initiating a payment. Returns the registered name on the account so you can confirm customer identity before collecting or settling.
const result = await nylonpay.verifyPhone({
phoneNumber: '+256700000000',
})
if (result.isOk && result.value.verified) {
console.log('Registered to:', result.value.customerName)
}See the SDK Reference for input and output shapes.
Phone Number Format
Phone numbers are automatically normalized to international format. You can pass any common format and the SDK handles the rest.
| You pass | Stored as |
|---|---|
0768499027 | 256768499027 |
+256768499027 | 256768499027 |
256768499027 | 256768499027 |
+256 768 499 027 | 256768499027 |
All phone fields across collections, payouts, and phone verification accept any of these formats. The normalized value is what gets stored and sent to the mobile network.
Minimum Transaction Amounts
| Operation | Minimum Amount |
|---|---|
| Collections | 500 UGX |
| Payouts | 5,000 UGX |
Amounts below the minimum are rejected with a validation error.
KYC Verification
Two-level identity and business verification system. Both levels are free.
Level 1: Identity Verification (Automatic)
- Government ID verification through a hosted session
- Unlocks live mode with a 10,000,000 UGX monthly limit
Level 2: Business Document Verification (Manual)
- Company document upload and admin review
- Available after Level 1 approval
- Raises monthly limit to 100,000,000 UGX
See Merchant Onboarding for the full flow.
Multiple Currencies
Process transactions in seven currencies through a single integration.
USD, EUR, GBP, KES, UGX, TZS, RWF
Security
All API communication is encrypted and authenticated. The SDK handles request signing and response verification automatically. You do not need to configure any security logic.
Additional controls available in the dashboard:
| Control | What it does |
|---|---|
| API key scopes | Limit a key to collections only or settlements only |
| IP whitelisting | Restrict API access to specific server IP addresses |
See Security for the full security model.
Dashboard
The merchant dashboard at nylonpay.nilesquad.com provides:
- Account creation and management
- API key generation with scope and IP controls
- Transaction history with tag filtering
- Analytics and reporting
- Payment link creation and management
- KYC submission and tracking
- Addon service configuration
- Webhook configuration
- Support messaging with the Nylon Pay team
Support
Built-in support messaging between your dashboard and the Nylon Pay team. Accessible from the dashboard support widget.
For urgent issues, contact nylonpay@mail.nilesquad.com.