Beneficiary Formats
When creating a quote, you must provide beneficiary information in the correct format for the target currency. This guide shows the required format for each supported currency.
Bitcoin (BTC)
For Bitcoin payouts, you can use one of three methods: Lightning Network invoice, Lightning address, or on-chain address.
Lightning Network Invoice
{
"beneficiary": {
"lnInvoice": "lntbs20u1p5dmy87pp5l2pm..."
}
}
Lightning Address
On-Chain Address
{
"beneficiary": {
"onChainAddress": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"
}
}
Fields
| Field | Type | Required | Description |
|---|
lnInvoice | string | No* | Lightning Network invoice for the payout |
lnAddress | string | No* | Lightning address (e.g., [email protected]) |
onChainAddress | string | No* | Bitcoin on-chain address (bech32, P2PKH, or P2SH) |
*One of these fields is required for BTC payouts.
- Lightning invoices must be valid and not expired when the payout is processed
- Lightning addresses provide a reusable payment destination
- On-chain addresses support standard Bitcoin address formats
Nigerian Naira (NGN)
For Nigerian Naira payouts, provide complete bank account details.
{
"beneficiary": {
"bankAccountName": "olaolu olajide",
"bankCode": "000013",
"bankName": "GTBANK PLC",
"bankAccountNumber": "0087241555"
}
}
Fields
| Field | Type | Required | Description |
|---|
bankAccountName | string | Yes | Account holder’s name as registered with the bank |
bankCode | string | Yes | NIP bank code (get from /bank/bankcode?country=NG) |
bankName | string | Yes | Full bank name |
bankAccountNumber | string | Yes | 10-digit Nigerian bank account number |
South African Rand (ZAR)
For South African Rand payouts, provide the beneficiary name and bank details.
{
"beneficiary": {
"name": "test merchant 1",
"bankName": "CAPITEC BANK",
"bankAccountNumber": "1325558779"
}
}
Fields
| Field | Type | Required | Description |
|---|
name | string | Yes | Beneficiary’s full name |
bankName | string | Yes | South African bank name |
bankAccountNumber | string | Yes | South African bank account number |
Bank account validation is not currently available for ZAR. Ensure account details are correct before creating a quote.
Kenyan Shilling (KES)
Kenyan payouts are processed through M-Pesa. There are three supported M-Pesa payment methods:
Pay to Phone (Mobile Money)
Send money directly to a mobile phone number.
{
"beneficiary": {
"identifierType": "paytophone",
"identifiers": {
"phoneNumber": "+254796980711"
}
}
}
Fields
| Field | Type | Required | Description |
|---|
identifierType | string | Yes | Must be "paytophone" |
identifiers.phoneNumber | string | Yes | Kenyan phone number in international format (+254…) |
Pay to Bill (Business Payments)
Send money to a business paybill number with an account reference.
{
"beneficiary": {
"identifierType": "paytobill",
"identifiers": {
"paybillNumber": "4141031",
"accountNumber": "vlad"
}
}
}
Fields
| Field | Type | Required | Description |
|---|
identifierType | string | Yes | Must be "paytobill" |
identifiers.paybillNumber | string | Yes | M-Pesa paybill number |
identifiers.accountNumber | string | Yes | Account number/reference for the paybill |
Pay to Till
Send money to a business till number.
{
"beneficiary": {
"identifierType": "paytotill",
"identifiers": {
"tillNumber": "796980711"
}
}
}
Fields
| Field | Type | Required | Description |
|---|
identifierType | string | Yes | Must be "paytotill" |
identifiers.tillNumber | string | Yes | M-Pesa till number |
All Kenyan phone numbers must be in international format starting with +254.
Complete Quote Examples
Example: NGN Payout
{
"amount": "1000000",
"sourceCurrency": "BTCSAT",
"targetCurrency": "NGNKOBO",
"paymentMethod": "LIGHTNING",
"paymentCurrency": "NGNKOBO",
"autopayout": true,
"beneficiary": {
"bankAccountName": "olaolu olajide",
"bankCode": "000013",
"bankName": "GTBANK PLC",
"bankAccountNumber": "0087241555"
}
}
Example: KES Payout (Pay to Phone)
{
"amount": "100000",
"sourceCurrency": "BTCSAT",
"targetCurrency": "KESCENT",
"paymentMethod": "LIGHTNING",
"paymentCurrency": "BTCSAT",
"autopayout": true,
"beneficiary": {
"identifierType": "paytophone",
"identifiers": {
"phoneNumber": "+254796980711"
}
}
}
Example: ZAR Payout
{
"amount": "1000000",
"sourceCurrency": "BTCSAT",
"targetCurrency": "ZARCENT",
"paymentMethod": "LIGHTNING",
"paymentCurrency": "ZARCENT",
"autopayout": true,
"beneficiary": {
"name": "test merchant 1",
"bankName": "CAPITEC BANK",
"bankAccountNumber": "1325558779"
}
}
Example: BTC Payout (Lightning Invoice)
{
"amount": "2000",
"sourceCurrency": "NGNKOBO",
"targetCurrency": "BTCSAT",
"paymentMethod": "BANKTRANSFER",
"paymentCurrency": "BTCSAT",
"autopayout": true,
"beneficiary": {
"lnInvoice": "lntbs20u1p5dmy87pp5l2pm..."
}
}
Example: BTC Payout (Lightning Address)
{
"amount": "2000",
"sourceCurrency": "NGNKOBO",
"targetCurrency": "BTCSAT",
"paymentMethod": "BANKTRANSFER",
"paymentCurrency": "BTCSAT",
"autopayout": true,
"beneficiary": {
"lnAddress": "[email protected]"
}
}
Example: BTC Payout (On-Chain Address)
{
"amount": "2000",
"sourceCurrency": "NGNKOBO",
"targetCurrency": "BTCSAT",
"paymentMethod": "BANKTRANSFER",
"paymentCurrency": "BTCSAT",
"autopayout": true,
"beneficiary": {
"onChainAddress": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"
}
}
Validation
Before creating a quote, you can validate beneficiary details:
- NGN: Use the Name Enquiry endpoint to validate account details
- ZAR: Validation not currently available
- KES: Ensure phone numbers are in correct format (+254…)
- BTC: Ensure Lightning invoice is valid and not expired
Next Steps