Skip to main content
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

Bank Transfer Payout

1

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.
2

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"
  }
}
3

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"
  }
}
4

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

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

CountryCurrencyMethodRecipient Type
NigeriaNGNBank transferngn_bank
KenyaKESM-Pesa mobile moneympesa_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