Skip to main content
This example shows you how to accept deposits into your Busha account via fiat (temporary bank accounts) or crypto (deposit addresses).

Use Cases

  • Customer funding their wallet
  • Accepting payments from users
  • Processing incoming transfers
  • Topping up account balances

Fiat Deposit via Temporary Bank Account

1

Get a Quote for the Deposit

Create a quote to generate a temporary bank account:
    curl -X POST https://api.sandbox.busha.so/v1/quotes \
      -H "Authorization: Bearer YOUR_SECRET_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{
        "source_currency": "NGN",
        "target_currency": "NGN",
        "source_amount": "50000",
        "pay_in": {
          "type": "temporary_bank_account"
        }
      }'
Response:
{
  "status": "success",
  "message": "Created quote successfully",
  "data": {
    "id": "QUO_vxcF2svmjMbxDp4T5dcD8",
    "profile_id": "BUS_tg6yujbZ1nMu5BLQkPGGO",
    "source_currency": "NGN",
    "target_currency": "NGN",
    "source_amount": "50000",
    "target_amount": "49500",
    "rate": {
      "rate": "1",
      "side": "sell",
      "type": "FIXED",
      "source_currency": "NGN",
      "target_currency": "NGN"
    },
    "fees": [
      {
        "amount": {
          "amount": "500",
          "currency": "NGN"
        },
        "name": "payment gateway fee",
        "type": "FIXED"
      }
    ],
    "pay_in": {
      "type": "temporary_bank_account"
    },
    "status": "pending",
    "expires_at": "2025-02-21T10:46:56.232278869Z",
    "created_at": "2025-02-21T10:16:54.40130914Z",
    "updated_at": "2025-02-21T10:16:54.401309215Z"
  }
}
2

Finalize the Transfer to Get Bank Account Details

Use the quote ID to generate the temporary bank account:
    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_vxcF2svmjMbxDp4T5dcD8"
      }'
Response:
{
  "status": "success",
  "message": "Created transfer successfully",
  "data": {
    "id": "TRF_LJB2GQb55Cs98LbpqgRMx",
    "profile_id": "BUS_tg6yujbZ1nMu5BLQkPGGO",
    "quote_id": "QUO_vxcF2svmjMbxDp4T5dcD8",
    "source_currency": "NGN",
    "target_currency": "NGN",
    "source_amount": "50000",
    "target_amount": "49500",
    "rate": {
      "rate": "1",
      "side": "sell",
      "type": "FIXED",
      "source_currency": "NGN",
      "target_currency": "NGN"
    },
    "fees": [
      {
        "amount": {
          "amount": "500",
          "currency": "NGN"
        },
        "name": "payment gateway fee",
        "type": "FIXED"
      }
    ],
    "pay_in": {
      "expires_at": "2025-02-21T10:46:56.232278869Z",
      "recipient_details": {
        "account_name": "Payaza(Business 1 Business)",
        "account_number": "7000384620",
        "bank_name": "78 FINANCE COMPANY LIMITED",
        "email": "support@busha.co"
      },
      "type": "temporary_bank_account"
    },
    "status": "pending",
    "created_at": "2025-02-21T10:16:54.40130914Z",
    "updated_at": "2025-02-21T10:16:54.401309215Z"
  }
}
3

Display Bank Details to Customer

Show the temporary bank account details to your customer:Account Details:
  • Bank Name: 78 FINANCE COMPANY LIMITED
  • Account Number: 7000384620
  • Account Name: Payaza(Business 1 Business)
  • Amount to Send: 50,000 NGN
  • Expires: 2025-02-21 at 10:46 AM
Customer transfers money to this account from their bank app.
4

Monitor Deposit Status

Check the transfer status to confirm when funds are received:
    curl -X GET https://api.sandbox.busha.so/v1/transfers/TRF_LJB2GQb55Cs98LbpqgRMx \
      -H "Authorization: Bearer YOUR_SECRET_TOKEN"
Possible Statuses:
  • pending - Awaiting customer’s bank transfer
  • processing - Funds received, being processed
  • funds_received - Successfully credited to your balance
  • cancelled - Transfer cancelled

Crypto Deposit via Address

1

Get a Quote for Crypto Deposit

Create a quote to generate a crypto deposit address:
    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": "USDT",
        "source_amount": "100",
        "pay_in": {
          "type": "address",
          "network": "TRX"
        }
      }'
Response:
{
  "status": "success",
  "message": "Created quote successfully",
  "data": {
    "id": "QUO_GxYibGxTIN5c",
    "profile_id": "BUS_9rDAqqREdmMQcQj3zsRlL",
    "source_currency": "USDT",
    "target_currency": "USDT",
    "source_amount": "100",
    "target_amount": "100",
    "rate": {
      "product": "",
      "rate": "1",
      "side": "sell",
      "type": "FIXED",
      "source_currency": "USDT",
      "target_currency": "USDT"
    },
    "fees": [],
    "pay_in": {
      "network": "TRX",
      "type": "address"
    },
    "pay_out": {
      "type": "balance"
    },
    "reference": "QUO_GxYibGxTIN5c",
    "status": "pending",
    "created_at": "2025-10-30T14:35:16.487382045Z",
    "updated_at": "2025-10-30T14:35:16.487382045Z"
  }
}
2

Create Transfer to Get Deposit Address

Use the quote ID to generate the crypto deposit address:
    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_GxYibGxTIN5c"
      }'
Response:
{
  "status": "success",
  "message": "Created transfer successfully",
  "data": {
    "id": "TRF_abc123xyz",
    "profile_id": "BUS_9rDAqqREdmMQcQj3zsRlL",
    "quote_id": "QUO_GxYibGxTIN5c",
    "source_currency": "USDT",
    "target_currency": "USDT",
    "source_amount": "100",
    "target_amount": "100",
    "rate": {
      "product": "",
      "rate": "1",
      "side": "sell",
      "type": "FIXED",
      "source_currency": "USDT",
      "target_currency": "USDT"
    },
    "fees": [],
    "pay_in": {
      "type": "address",
      "address": "TXYZabc123def456ghi789jkl",
      "network": "TRX",
      "memo": null
    },
    "status": "pending",
    "created_at": "2025-10-30T14:35:20.123456Z",
    "updated_at": "2025-10-30T14:35:20.123456Z"
  }
}
3

Display Deposit Address to Customer

Show the crypto deposit details to your customer:Deposit Instructions:
  • Network: TRX (Tron)
  • Address: TXYZabc123def456ghi789jkl
  • Asset: USDT
  • Amount: 100 USDT (minimum)
Customer sends USDT to this address from their wallet.
4

Monitor Deposit Status

Check the transfer status to confirm when crypto is received:
    curl -X GET https://api.sandbox.busha.so/v1/transfers/TRF_abc123xyz \
      -H "Authorization: Bearer YOUR_SECRET_TOKEN"
Possible Statuses:
  • pending - Awaiting blockchain confirmation
  • processing - Transaction confirmed, processing deposit
  • funds_received - Crypto credited to balance
  • cancelled - Deposit cancelled

Deposit for a Customer

To process deposits on behalf of a customer, include the customer’s profile ID in the header:
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": "NGN",
    "target_currency": "NGN",
    "source_amount": "50000",
    "pay_in": {
      "type": "temporary_bank_account"
    }
  }'
The deposit will be credited to the customer’s account instead of your business account.

Supported Networks for Crypto Deposits

  • USDT: TRX (Tron), ERC20 (Ethereum), BEP20 (BSC), POLYGON
  • BTC: BTC (Bitcoin)
  • ETH: ETH (Ethereum)
  • Other cryptos: Check supported networks via the Pairs API

Important Notes

Fiat Deposits

  • Temporary bank accounts expire after 30 minutes
  • Always check the expires_at field
  • If expired, create a new quote and transfer
  • Fees are deducted from the deposited amount

Crypto Deposits

  • Always specify the correct network
  • Deposits require blockchain confirmations
  • Minimum deposit amounts apply per asset
  • Wrong network = lost funds (unrecoverable)

Learn More