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

# Customer Payouts

> Process crypto-to-fiat payouts to bank accounts and mobile money.

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

<Tabs>
  <Tab title="Nigeria (NGN)">
    ### Bank Transfer Payout

    <Steps>
      <Step title="Create a Bank Recipient">
        First, create a recipient for the Nigerian bank account:

        ```bash theme={null}
                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.
      </Step>

      <Step title="Create a Payout Quote">
        Create a quote specifying how much crypto to convert and send:

        ```bash theme={null}
                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"
                    }
                  }'
        ```

        <Accordion title="View Response">
          ```json theme={null}
          {
            "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"
            }
          }
          ```
        </Accordion>
      </Step>

      <Step title="Create the Payout Transfer">
        Finalize the payout using the quote ID:

        ```bash theme={null}
                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"
                  }'
        ```

        <Accordion title="View Response">
          ```json theme={null}
          {
            "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"
            }
          }
          ```
        </Accordion>
      </Step>

      <Step title="Monitor Payout Status">
        Check the transfer status to confirm delivery:

        ```bash theme={null}
                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
      </Step>
    </Steps>
  </Tab>

  <Tab title="Kenya (KES)">
    ### M-Pesa Mobile Money Payout

    <Steps>
      <Step title="Create an M-Pesa Recipient">
        First, create a recipient for the M-Pesa mobile money wallet:

        ```bash theme={null}
                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.
      </Step>

      <Step title="Create a Payout Quote">
        Create a quote specifying how much crypto to convert and send:

        ```bash theme={null}
                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"
                    }
                  }'
        ```

        <Accordion title="View Response">
          ```json theme={null}
          {
            "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"
            }
          }
          ```
        </Accordion>
      </Step>

      <Step title="Create the Payout Transfer">
        Finalize the payout using the quote ID:

        ```bash theme={null}
                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"
                  }'
        ```

        <Accordion title="View Response">
          ```json theme={null}
          {
            "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"
            }
          }
          ```
        </Accordion>
      </Step>

      <Step title="Monitor Payout Status">
        Check the transfer status to confirm delivery:

        ```bash theme={null}
                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
      </Step>
    </Steps>
  </Tab>
</Tabs>

***

## Payout for a Customer

To process payouts on behalf of a customer, include the customer's profile ID:

```bash theme={null}
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

<table style={{ width: "100%", borderCollapse: "collapse" }}>
  <thead>
    <tr>
      <th style={{ width: "25%", textAlign: "left", padding: "12px" }}>
        Country
      </th>

      <th style={{ width: "25%", textAlign: "left", padding: "12px" }}>
        Currency
      </th>

      <th style={{ width: "25%", textAlign: "left", padding: "12px" }}>
        Method
      </th>

      <th style={{ width: "25%", textAlign: "left", padding: "12px" }}>
        Recipient Type
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td style={{ padding: "12px" }}>Nigeria</td>
      <td style={{ padding: "12px" }}>NGN</td>
      <td style={{ padding: "12px" }}>Bank transfer</td>

      <td style={{ padding: "12px" }}>
        <code>ngn\_bank</code>
      </td>
    </tr>

    <tr>
      <td style={{ padding: "12px" }}>Kenya</td>
      <td style={{ padding: "12px" }}>KES</td>
      <td style={{ padding: "12px" }}>M-Pesa mobile money</td>

      <td style={{ padding: "12px" }}>
        <code>mpesa\_mobile\_money</code>
      </td>
    </tr>
  </tbody>
</table>

***

## 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

* [Process Payouts Guide](/guides/payouts/process-payouts) - Detailed payout guide
* [Create Recipients](/guides/recipients/create-and-manage) - Recipient management
* [Understanding Quotes](/overview/quotes) - How quotes work
* [Webhooks Setup](/guides/webhooks/setup) - Monitor payouts in real-time
* [Initiate Transactions on Behalf of Customers](/guides/customers/transactions-on-behalf) - Customer transactions
