Documentation Index
Fetch the complete documentation index at: https://docs.busha.io/llms.txt
Use this file to discover all available pages before exploring further.
This example shows you how to process payouts from crypto to fiat bank accounts or mobile money wallets.
Use Cases
- Vendor payments from marketplace
- Salary disbursements in local currency
- Cash out crypto to bank account
- Mobile money withdrawals
Crypto to Fiat Payout
Nigeria (NGN)
Kenya (KES)
Bank Transfer Payout
Create a Bank Recipient
First, create a recipient for the Nigerian bank account: curl -X POST https://api.sandbox.busha.so/v1/recipients \
-H "Authorization: Bearer YOUR_SECRET_TOKEN" \
-H "X-BU-VERSION: 2025-07-11" \
-H "Content-Type: application/json" \
-d '{
"currency": "NGN",
"country_code": "NG",
"type": "ngn_bank",
"bank_name": "UNITED BANK FOR AFRICA",
"bank_code": "033",
"account_number": "2109328188",
"account_name": "SOSANYA DICKSON OLUMIDE"
}'
Save the recipient_id from the response. Create a Payout Quote
Create a quote specifying how much crypto to convert and send: curl -X POST https://api.sandbox.busha.so/v1/quotes \
-H "Authorization: Bearer YOUR_SECRET_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"source_currency": "USDT",
"target_currency": "NGN",
"source_amount": "100",
"pay_out": {
"type": "bank_transfer",
"recipient_id": "677bbf9c7cf061f23784555a"
}
}'
{
"status": "success",
"message": "Created quote successfully",
"data": {
"id": "QUO_mprvCPMCfm3K2qSnzbWj7",
"source_currency": "USDT",
"target_currency": "NGN",
"source_amount": "100",
"target_amount": "168876",
"rate": {
"product": "USDTNGN",
"rate": "1690.76",
"side": "sell",
"type": "FIXED"
},
"fees": [
{
"amount": {
"amount": "200",
"currency": "NGN"
},
"name": "Fees",
"type": "FIXED"
}
],
"pay_out": {
"recipient_details": {
"account_name": "SOSANYA DICKSON OLUMIDE",
"account_number": "2109328188",
"bank_name": "UNITED BANK FOR AFRICA",
"country": "NG"
},
"recipient_id": "677bbf9c7cf061f23784555a",
"type": "bank_transfer"
},
"expires_at": "2025-02-20T10:58:19.540052923Z"
}
}
Create the Payout Transfer
Finalize the payout using the quote ID: curl -X POST https://api.sandbox.busha.so/v1/transfers \
-H "Authorization: Bearer YOUR_SECRET_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"quote_id": "QUO_mprvCPMCfm3K2qSnzbWj7"
}'
{
"status": "success",
"message": "Created transfer successfully",
"data": {
"id": "TRF_tYZ1y5bmXv4N5IhXSMbWJ",
"source_currency": "USDT",
"target_currency": "NGN",
"source_amount": "100",
"target_amount": "168876",
"pay_out": {
"recipient_details": {
"account_name": "SOSANYA DICKSON OLUMIDE",
"account_number": "2109328188",
"bank_name": "UNITED BANK FOR AFRICA",
"country": "NG"
},
"type": "bank_transfer"
},
"status": "pending"
}
}
Monitor Payout Status
Check the transfer status to confirm delivery: curl -X GET https://api.sandbox.busha.so/v1/transfers/TRF_tYZ1y5bmXv4N5IhXSMbWJ \
-H "Authorization: Bearer YOUR_SECRET_TOKEN"
Possible Statuses:
pending - Payout initiated
processing - Funds being processed
funds_delivered - Successfully delivered to bank account
cancelled - Payout cancelled
M-Pesa Mobile Money Payout
Create an M-Pesa Recipient
First, create a recipient for the M-Pesa mobile money wallet: curl -X POST https://api.sandbox.busha.so/v1/recipients \
-H "Authorization: Bearer YOUR_SECRET_TOKEN" \
-H "X-BU-VERSION: 2025-07-11" \
-H "Content-Type: application/json" \
-d '{
"type": "mpesa_mobile_money",
"account_name": "Samuel Kiprotich",
"phone_number": "254712345678"
}'
Save the recipient_id from the response. Create a Payout Quote
Create a quote specifying how much crypto to convert and send: curl -X POST https://api.sandbox.busha.so/v1/quotes \
-H "Authorization: Bearer YOUR_SECRET_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"source_currency": "USDT",
"target_currency": "KES",
"source_amount": "10",
"pay_out": {
"type": "mobile_money",
"recipient_id": "6923ca7f32faa00bb0932c78"
}
}'
{
"status": "success",
"message": "Created quote successfully",
"data": {
"id": "QUO_F5I5r0Mhnrpa",
"source_currency": "USDT",
"target_currency": "KES",
"source_amount": "10",
"target_amount": "1236.3",
"rate": {
"product": "USDTKES",
"rate": "129.63",
"side": "sell",
"type": "FIXED"
},
"fees": [
{
"amount": {
"amount": "60",
"currency": "KES"
},
"name": "Fees",
"type": "TIERED"
}
],
"pay_out": {
"recipient_details": {
"account_name": "Samuel Kiprotich",
"country_code": "KE",
"currency": "KES",
"phone_number": "254712345678"
},
"recipient_id": "6923ca7f32faa00bb0932c78",
"type": "mobile_money"
},
"expires_at": "2025-11-24T03:32:06.233668598Z"
}
}
Create the Payout Transfer
Finalize the payout using the quote ID: curl -X POST https://api.sandbox.busha.so/v1/transfers \
-H "Authorization: Bearer YOUR_SECRET_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"quote_id": "QUO_F5I5r0Mhnrpa"
}'
{
"status": "success",
"message": "Created transfer successfully",
"data": {
"id": "TRF_GbqoYfHekk9f",
"source_currency": "USDT",
"target_currency": "KES",
"source_amount": "10",
"target_amount": "1236.3",
"pay_out": {
"recipient_details": {
"account_name": "Samuel Kiprotich",
"country_code": "KE",
"currency": "KES",
"phone_number": "254712345678"
},
"type": "mobile_money"
},
"status": "pending"
}
}
Monitor Payout Status
Check the transfer status to confirm delivery: curl -X GET https://api.sandbox.busha.so/v1/transfers/TRF_GbqoYfHekk9f \
-H "Authorization: Bearer YOUR_SECRET_TOKEN"
Possible Statuses:
pending - Payout initiated
processing - Funds being processed
funds_delivered - Successfully delivered to M-Pesa wallet
cancelled - Payout cancelled
Payout for a Customer
To process payouts on behalf of a customer, include the customer’s profile ID:
curl -X POST https://api.sandbox.busha.so/v1/quotes \
-H "X-BU-PROFILE-ID: CUSTOMER_PROFILE_ID" \
-H "Authorization: Bearer YOUR_SECRET_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"source_currency": "USDT",
"target_currency": "NGN",
"source_amount": "100",
"pay_out": {
"type": "bank_transfer",
"recipient_id": "677bbf9c7cf061f23784555a"
}
}'
The payout will be processed from the customer’s balance.
Payout Methods by Country
| Country | Currency | Method | Recipient Type |
|---|
| Nigeria | NGN | Bank transfer | ngn_bank |
| Kenya | KES | M-Pesa mobile money | mpesa_mobile_money |
Important Notes
- Recipients must be created before payouts
- Quotes expire after 30 minutes
- Fees are deducted from the payout amount
- Use webhooks for real-time status updates
- Bank transfers typically complete within minutes
- Mobile money transfers are usually instant
Learn More