Coverage
Countries, payment methods, languages, and requirements for Nylon Pay
What you can use today, market by market. Check that your country, currency, and payment method are available before you build.
At a glance
| Method / surface | Status | Where it works | How to use |
|---|---|---|---|
| Mobile Money | Available | Uganda, Kenya, Tanzania, Rwanda, DR Congo | SDK method: "mobileMoney" |
| Payment Links | Available | Same markets | Dashboard or SDK createInvoice |
| Bank Transfer | Available | Payouts from Send money or SDK makePayout | Bank account number and bank name |
| Utilities | Available | Dashboard Utilities page | Airtime, data, electricity, water, DStv, GOtv |
| Card (Visa) | Available | Hosted payment links and invoices | Hosted page |
| USSD | Enterprise | Enterprise on request | Contact us |
Payment links collect on a hosted page across mobile money, cards, and bank transfers. Bank payouts and utilities also run from the dashboard.
Countries and currencies
We build for Africa first. Coverage expands as we onboard mobile money and banking partners in each market.
| Country | Currency | Code | Status |
|---|---|---|---|
| Uganda | Ugandan Shilling | UGX | Available |
| Kenya | Kenyan Shilling | KES | Available |
| Tanzania | Tanzanian Shilling | TZS | Available |
| Rwanda | Rwandan Franc | RWF | Available |
| DR Congo | Congolese Franc | CDF | Available |
Mobile money and payment links work in these markets. Use E.164 phone numbers for the destination country.
Additional currency codes
The SDK accepts these ISO 4217 codes for accounts and integrations that operate across borders:
| Currency | Code | Notes |
|---|---|---|
| US Dollar | USD | Cross-border and international settlement |
| Euro | EUR | Cross-border and international settlement |
| British Pound | GBP | Cross-border and international settlement |
Cross-border pricing applies where relevant. See Pricing.
Amounts
Pass amounts as integers in each currency's smallest tracked unit. For UGX, that is whole shillings (no decimals). Minimum collection amount is 500 UGX. Minimum payout amount is 5,000 UGX.
Payment methods
Mobile Money
Available now in Uganda, Kenya, Tanzania, Rwanda, and DR Congo.
| Country | Networks |
|---|---|
| Uganda | MTN MoMo, Airtel Money |
| Kenya | M-Pesa, Airtel Money |
| Tanzania | Airtel Money, Tigo, Vodacom, HaloPesa |
| Rwanda | MTN MoMo, Airtel Money |
| DR Congo | Airtel Money, Orange, Vodacom |
How it works:
- Your server calls
collectPayment/collect_payment(or the*AndResolvevariant). - The customer approves a prompt on their phone.
- You receive status updates through events or webhooks.
Phone numbers must be in E.164 format (for example +256700000000). See Phone Verification for pre-validation.
Minimum collection: 500 UGX. Minimum payout: 5,000 UGX.
Payment Links
Available now.
Payment links give customers a hosted page to pay you. Share the URL through email, SMS, WhatsApp, or your website.
| Surface | What you get | Mobile money | Notes |
|---|---|---|---|
| Dashboard payment links | Reusable hosted URL | Yes | Create from the dashboard |
SDK invoices (createInvoice) | Hosted URL + optional email | Yes | One reference per invoice from your server |
Dashboard links can stay open for multiple payers until they expire or you revoke them. SDK invoices are tied to a single reference you generate on the server.
Dashboard links can also collect by card or bank transfer, and the same webhook and status events apply.
See Payment Links for the full guide and Invoices for the SDK API.
Bank Transfers
Available now for payouts.
Send money to a bank account from Send money or with SDK makePayout using a bank destination (account holder name, account number, bank name, and recipient phone). Minimum bank payout is 50,000 UGX. See Pricing.
Level 2 merchants verify the settlement bank account during onboarding.
Utilities
Available now on the dashboard Utilities page.
Pay airtime, mobile data, prepaid electricity, NWSC water, DStv, and GOtv from your Nylon Pay balance. Open Utilities from the sidebar, or jump there with Cmd+K. See Dashboard.
Card Payments
Available now on hosted payment links and invoices.
Card checkout runs on a hosted payment page with 3D Secure so card details never reach your servers.
- KYC Level 2 is required before card processing is enabled on your account.
- Africa-issued debit and credit cards are supported first. International cards follow as partnerships are confirmed.
See Requirements for KYC levels and card eligibility rules.
USSD
Available on request for enterprise accounts with volume commitments.
USSD lets customers initiate or confirm payments through a network short code on any phone, including devices without smartphones or mobile data.
To discuss USSD for your organization:
Integration surfaces today
| Surface | Mobile Money | Payment link | Bank payout | Utilities | Card |
|---|---|---|---|---|---|
| SDK collect / payout | Yes | n/a | Payout yes | No | Hosted invoice |
SDK invoice (createInvoice) | Yes (hosted link) | Yes | No | No | Hosted link |
| Dashboard | Yes | Yes | Send money | Utilities page | Payment links |
The table shows what you can use from the SDK and from the dashboard.
Choosing a method in code
// Mobile money collect: available today
const payment = await nylonpay.collectPayment({
amount: 10000,
currency: "UGX",
customer: { name: "Jane Doe", phoneNumber: "+256700000000" },
description: "Order #1234",
method: "mobileMoney",
});
// Payment link via invoice: available today
const invoice = await nylonpay.createInvoice({
amount: 25000,
currency: "UGX",
customerEmail: "customer@example.com",
description: "Order #1234",
});# Mobile money collect: available today
payment = nylonpay.collect_payment(
amount=10000,
currency="UGX",
customer={"name": "Jane Doe", "phone_number": "+256700000000"},
description="Order #1234",
method="mobileMoney",
)
# Payment link via invoice: available today
invoice = nylonpay.create_invoice(
amount=25000,
currency="UGX",
customer_email="customer@example.com",
description="Order #1234",
)Bank payouts use the same Result and webhook patterns as mobile money. See Make Payout and Collect Payment.
Languages
Our SDKs are open source and available in multiple programming languages. All SDKs follow the same API specification with idiomatic naming conventions for each language.
Currently available
- TypeScript -
@nile-squad/nylonpay-ts, Node.js 18+. The reference implementation. SDK Reference | Repository - Python -
nylonpay-py(pip install nylonpay-py), Python 3.10+. Uses snake_case (collect_payment,phone_number). SDK Reference | Repository - PHP -
nile-squad/nylonpay-php(composer require nile-squad/nylonpay-php), PHP 8.1+ withext-curl,ext-json,ext-openssl,ext-mbstring. Uses camelCase like TypeScript. SDK Reference | Repository
In pipeline
| Language | Status | Expected Release |
|---|---|---|
| Go | In pipeline | Q3 2026 |
| C# | In pipeline | Q4 2026 |
Planned
| Language | Status | Expected Release |
|---|---|---|
| Rust | Planned | Q4 2026 |
| Java | Planned | Q1 2027 |
| Kotlin | Planned | Q1 2027 |
| Elixir | Planned | Q2 2027 |
All pipeline and planned SDKs follow the same API specification. Language-idiomatic naming applies, for example collectPayment in TypeScript/PHP becomes collect_payment in Python.
Runtime requirements
All SDKs require:
- Server-side environment. SDKs are for backend use only.
- HTTPS support. All communication with our servers occurs over HTTPS.
- Authenticated requests. The SDK authenticates requests automatically.
- Language runtimes: Node.js 18+ (TypeScript), Python 3.10+ (Python), PHP 8.1+ with the extensions listed above (PHP).
SDK skills and contribution
Each available SDK ships a SKILL.md for language-specific setup and code. Cross-language flows and operation choice live in the integration skill. See Example prompts.
SDKs are open source. Contributions follow the SDK specification, the single source of truth for all implementations. Start from the public overview and CONTRIBUTING.
Requirements
Payment method availability by KYC level
| Method | Level 1 | Level 2 |
|---|---|---|
| Mobile Money | Available | Available |
| Bank payouts | Available | Available |
| Utilities | Available | Available |
| Cards (Africa-issued) | Level 2 required | Available |
See the Merchant Onboarding guide for details on KYC levels and how to upgrade.
KYC Level 2 requires Level 1 to be approved first. Level 2 review takes up to 5 business days and requires company documentation.
Card requirements
- Local cards first. Africa-issued debit and credit cards are accepted first. International cards follow as partnerships are confirmed.
- KYC Level 2 required. Card processing requires an approved Level 2 account.
- Proof of bank account ownership. You verify ownership of the settlement bank account during Level 2 onboarding.
- Non-virtual, non-prepaid cards only. Virtual and prepaid cards are not accepted.
Mobile money requirements
- Available at all KYC levels
- Primary payment method for most merchants
- Phone in E.164 for the destination country
Bank transfer requirements
Bank payouts are available from Send money and the SDK. Settlement bank account ownership must be verified for Level 2.
Utilities requirements
- Available at all KYC levels from the dashboard Utilities page
- Airtime, data, electricity, water, DStv, and GOtv
Expansion
East and Central Africa coverage includes Uganda, Kenya, Tanzania, Rwanda, and DR Congo. For status updates, join the WhatsApp community or request coverage on the public hub.
Related
- Features
- Merchant Onboarding, KYC levels and verification process
- Payment Links
- Collect Payment
- Invoices