Skip to main content
This example shows you how to buy and sell USD with either fiat currency or cryptocurrency using Busha’s API.

Use Cases

  • Convert local currency to USD
  • Convert stablecoins to USD
  • Convert USD to local currency
  • International payments
  • USD savings and liquidity management

Buy USD

Buy USD with Fiat

Buy USD with 50,000 NGN via Bank Transfer

1

Get a Quote

Create a quote with temporary bank account funding:
        curl -X POST https://api.sandbox.busha.so/v1/quotes \
          -H "Authorization: Bearer YOUR_SECRET_KEY" \
          -H "Content-Type: application/json" \
          -d '{
            "source_currency": "NGN",
            "target_currency": "USD",
            "source_amount": "50000",
            "pay_in": {
              "type": "temporary_bank_account"
            }
          }'
{
  "status": "success",
  "message": "Created quote successfully",
  "data": {
    "id": "QUO_gCcLjJ0P0uEc",
    "profile_id": "BUS_CQr0jPzGGzmn1uW5W7OVs",
    "source_currency": "NGN",
    "target_currency": "USD",
    "source_amount": "50000",
    "target_amount": "33.48543819",
    "rate": {
      "product": "USDNGN",
      "rate": "1490.2",
      "side": "buy",
      "type": "FIXED",
      "source_currency": "NGN",
      "target_currency": "USD"
    },
    "fees": [
      {
        "amount": {
          "amount": "100",
          "currency": "NGN"
        },
        "name": "payment gateway fee",
        "type": "FIXED"
      }
    ],
    "pay_in": {
      "type": "temporary_bank_account"
    },
    "pay_out": {
      "type": "balance"
    },
    "reference": "QUO_gCcLjJ0P0uEc",
    "status": "pending",
    "expires_at": "2026-01-23T11:34:17.175170741Z",
    "created_at": "2026-01-23T11:04:17.175146315Z",
    "updated_at": "2026-01-23T11:04:17.175146315Z"
  }
}
2

Create the Transfer

Use the quote ID to get temporary bank details:
        curl -X POST https://api.sandbox.busha.so/v1/transfers \
          -H "Authorization: Bearer YOUR_SECRET_KEY" \
          -H "Content-Type: application/json" \
          -d '{
            "quote_id": "QUO_gCcLjJ0P0uEc"
          }'
{
  "status": "success",
  "message": "Created transfer successfully",
  "data": {
    "id": "TRF_JSaOYnl7Sla0",
    "profile_id": "BUS_CQr0jPzGGzmn1uW5W7OVs",
    "quote_id": "QUO_gCcLjJ0P0uEc",
    "description": "Bought USD",
    "sub_description": "With NGN",
    "source_currency": "NGN",
    "target_currency": "USD",
    "source_amount": "50000",
    "target_amount": "33.48543819",
    "trade": "buy",
    "rate": {
      "product": "USDNGN",
      "rate": "1490.2",
      "side": "buy",
      "type": "FIXED",
      "source_currency": "NGN",
      "target_currency": "USD"
    },
    "fees": [
      {
        "amount": {
          "amount": "100",
          "currency": "NGN"
        },
        "name": "payment gateway fee",
        "type": "FIXED"
      }
    ],
    "pay_in": {
      "expires_at": "2026-01-23T11:37:32.289498887Z",
      "recipient_details": {
        "account_name": "BIBAGE TECHNOLOGIES LTD || Liverppol Business",
        "account_number": "0327318166",
        "bank_code": "090614",
        "bank_name": "Aella Microfinance Bank",
        "email": "[email protected]"
      },
      "type": "temporary_bank_account"
    },
    "pay_out": {
      "type": "balance"
    },
    "status": "pending",
    "timeline": {
      "total_steps": 0,
      "current_step": 0,
      "transfer_status": "",
      "events": []
    },
    "created_at": "2026-01-23T11:07:31.197428968Z",
    "updated_at": "2026-01-23T11:07:31.197429043Z"
  }
}
Important: Transfer exactly ₦50,000 to the provided bank account before the expiration time. The USD will be credited to your balance once payment is confirmed.
3

Check Transfer Status

Monitor the transfer to confirm the purchase completed successfully:
        curl -X GET https://api.sandbox.busha.so/v1/transfers/TRF_JSaOYnl7Sla0 \
          -H "Authorization: Bearer YOUR_SECRET_KEY"
{
  "status": "success",
  "message": "Fetched transfer successfully",
  "data": {
    "id": "TRF_JSaOYnl7Sla0",
    "profile_id": "BUS_CQr0jPzGGzmn1uW5W7OVs",
    "quote_id": "QUO_gCcLjJ0P0uEc",
    "description": "Bought USD",
    "sub_description": "With NGN",
    "source_currency": "NGN",
    "target_currency": "USD",
    "source_amount": "50000",
    "target_amount": "33.48543819",
    "trade": "buy",
    "rate": {
      "product": "USDNGN",
      "rate": "1490.2",
      "side": "buy",
      "type": "FIXED",
      "source_currency": "NGN",
      "target_currency": "USD"
    },
    "fees": [
      {
        "amount": {
          "amount": "100",
          "currency": "NGN"
        },
        "name": "payment gateway fee",
        "type": "FIXED"
      }
    ],
    "pay_in": {
      "expires_at": "2026-01-23T11:37:32.289498887Z",
      "recipient_details": {
        "account_name": "BIBAGE TECHNOLOGIES LTD || Liverppol Business",
        "account_number": "0327318166",
        "bank_code": "090614",
        "bank_name": "Aella Microfinance Bank",
        "email": "[email protected]"
      },
      "type": "temporary_bank_account"
    },
    "pay_out": {
      "type": "balance"
    },
    "status": "funds_converted",
    "timeline": {
      "total_steps": 3,
      "current_step": 3,
      "transfer_status": "funds_converted",
      "events": [
        {
          "step": 1,
          "done": true,
          "status": "pending",
          "title": "Transfer Started",
          "description": "Waiting for your NGN payment",
          "timestamp": "2026-01-23T11:07:34.553579Z"
        },
        {
          "step": 2,
          "done": true,
          "status": "funds_received",
          "title": "Payment Received",
          "description": "We received your NGN Payment",
          "timestamp": "2026-01-23T11:07:34.553579Z"
        },
        {
          "step": 3,
          "done": true,
          "status": "funds_converted",
          "title": "Funds Converted",
          "description": "Your USD has been added to your wallet.",
          "timestamp": "2026-01-23T11:07:34.65765Z"
        }
      ]
    },
    "created_at": "2026-01-23T11:07:31.197428Z",
    "updated_at": "2026-01-23T11:07:35.404245Z"
  }
}

Other Examples

Buy USD with NGN from Balance
curl -X POST https://api.sandbox.busha.so/v1/quotes \
  -H "Authorization: Bearer YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "source_currency": "NGN",
    "target_currency": "USD",
    "source_amount": "50000",
    "pay_in": {
      "type": "balance"
    }
  }'

Buy USD with Crypto

Convert 100 USDT to USD from Balance

1

Get a Quote

Create a quote to see the exchange rate:
        curl -X POST https://api.sandbox.busha.so/v1/quotes \
          -H "Authorization: Bearer YOUR_SECRET_KEY" \
          -H "Content-Type: application/json" \
          -d '{
            "source_currency": "USDT",
            "target_currency": "USD",
            "source_amount": "100",
            "pay_in": {
              "type": "balance"
            }
          }'
{
  "status": "success",
  "message": "Created quote successfully",
  "data": {
    "id": "QUO_zqGjq5VI4Dyu",
    "profile_id": "BUS_CQr0jPzGGzmn1uW5W7OVs",
    "source_currency": "USDT",
    "target_currency": "USD",
    "source_amount": "100",
    "target_amount": "99.6",
    "rate": {
      "product": "USDTUSD",
      "rate": "0.996",
      "side": "sell",
      "type": "FIXED",
      "source_currency": "USDT",
      "target_currency": "USD"
    },
    "fees": [],
    "pay_in": {
      "type": "balance"
    },
    "pay_out": {
      "type": "balance"
    },
    "reference": "QUO_zqGjq5VI4Dyu",
    "status": "pending",
    "expires_at": "2026-01-20T09:48:40.822804422Z",
    "created_at": "2026-01-20T09:18:40.822779472Z",
    "updated_at": "2026-01-20T09:18:40.822779472Z"
  }
}
2

Create the Transfer

Use the quote ID to finalize the conversion:
        curl -X POST https://api.sandbox.busha.so/v1/transfers \
          -H "Authorization: Bearer YOUR_SECRET_KEY" \
          -H "Content-Type: application/json" \
          -d '{
            "quote_id": "QUO_zqGjq5VI4Dyu"
          }'
{
  "status": "success",
  "message": "Created transfer successfully",
  "data": {
    "id": "TRF_O7MHNJocNQaN",
    "profile_id": "BUS_CQr0jPzGGzmn1uW5W7OVs",
    "quote_id": "QUO_zqGjq5VI4Dyu",
    "description": "Sold USDT",
    "sub_description": "For USD",
    "source_currency": "USDT",
    "target_currency": "USD",
    "source_amount": "100",
    "target_amount": "99.6",
    "trade": "sell",
    "rate": {
      "product": "USDTUSD",
      "rate": "0.996",
      "side": "sell",
      "type": "FIXED",
      "source_currency": "USDT",
      "target_currency": "USD"
    },
    "fees": [],
    "pay_in": {
      "type": "balance"
    },
    "pay_out": {
      "type": "balance"
    },
    "status": "pending",
    "timeline": {
      "total_steps": 0,
      "current_step": 0,
      "transfer_status": "",
      "events": []
    },
    "created_at": "2026-01-20T09:33:01.915628818Z",
    "updated_at": "2026-01-20T09:33:01.915628873Z"
  }
}
3

Check Transfer Status

Monitor the transfer to confirm completion:
        curl -X GET https://api.sandbox.busha.so/v1/transfers/TRF_O7MHNJocNQaN \
          -H "Authorization: Bearer YOUR_SECRET_KEY"
{
  "status": "success",
  "message": "Fetched transfer successfully",
  "data": {
    "id": "TRF_O7MHNJocNQaN",
    "profile_id": "BUS_CQr0jPzGGzmn1uW5W7OVs",
    "quote_id": "QUO_zqGjq5VI4Dyu",
    "description": "Sold USDT",
    "sub_description": "For USD",
    "source_currency": "USDT",
    "target_currency": "USD",
    "source_amount": "100",
    "target_amount": "99.6",
    "trade": "sell",
    "rate": {
      "product": "USDTUSD",
      "rate": "0.996",
      "side": "sell",
      "type": "FIXED",
      "source_currency": "USDT",
      "target_currency": "USD"
    },
    "fees": [],
    "pay_in": {
      "type": "balance"
    },
    "pay_out": {
      "type": "balance"
    },
    "status": "funds_converted",
    "timeline": {
      "total_steps": 2,
      "current_step": 2,
      "transfer_status": "funds_converted",
      "events": [
        {
          "step": 1,
          "done": true,
          "status": "funds_received",
          "title": "Crypto Received",
          "description": "Funded from Balance"
        },
        {
          "step": 2,
          "done": true,
          "status": "funds_converted",
          "title": "Funds Converted",
          "description": "Your USD has been added to your wallet."
        }
      ]
    },
    "created_at": "2026-01-20T09:33:01.915628Z",
    "updated_at": "2026-01-20T09:33:02.456789Z"
  }
}

Other Examples

Buy USD with USDC from Balance
curl -X POST https://api.sandbox.busha.so/v1/quotes \
  -H "Authorization: Bearer YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "source_currency": "USDC",
    "target_currency": "USD",
    "source_amount": "100",
    "pay_in": {
      "type": "balance"
    }
  }'

Sell USD

Sell USD for Fiat

Convert 50 USD to NGN

1

Get a Quote

Create a quote to see the exchange rate:
        curl -X POST https://api.sandbox.busha.so/v1/quotes \
          -H "Authorization: Bearer YOUR_SECRET_KEY" \
          -H "Content-Type: application/json" \
          -d '{
            "source_currency": "USD",
            "target_currency": "NGN",
            "source_amount": "50",
            "pay_in": {
              "type": "balance"
            }
          }'
{
  "status": "success",
  "message": "Created quote successfully",
  "data": {
    "id": "QUO_6T9lPmqMSPPt",
    "profile_id": "BUS_CQr0jPzGGzmn1uW5W7OVs",
    "source_currency": "USD",
    "target_currency": "NGN",
    "source_amount": "50",
    "target_amount": "80363.5",
    "rate": {
      "product": "USDNGN",
      "rate": "1607.27",
      "side": "sell",
      "type": "FIXED",
      "source_currency": "USD",
      "target_currency": "NGN"
    },
    "fees": [],
    "pay_in": {
      "type": "balance"
    },
    "pay_out": {
      "type": "balance"
    },
    "reference": "QUO_6T9lPmqMSPPt",
    "status": "pending",
    "expires_at": "2026-01-20T09:56:01.045425406Z",
    "created_at": "2026-01-20T09:26:01.045403632Z",
    "updated_at": "2026-01-20T09:26:01.045403632Z"
  }
}
2

Create the Transfer

Use the quote ID to finalize the conversion:
        curl -X POST https://api.sandbox.busha.so/v1/transfers \
          -H "Authorization: Bearer YOUR_SECRET_KEY" \
          -H "Content-Type: application/json" \
          -d '{
            "quote_id": "QUO_6T9lPmqMSPPt"
          }'
{
  "status": "success",
  "message": "Created transfer successfully",
  "data": {
    "id": "TRF_qaZ4QmI5ahSw",
    "profile_id": "BUS_CQr0jPzGGzmn1uW5W7OVs",
    "quote_id": "QUO_6T9lPmqMSPPt",
    "description": "Sold USD",
    "sub_description": "For NGN",
    "source_currency": "USD",
    "target_currency": "NGN",
    "source_amount": "50",
    "target_amount": "80363.5",
    "trade": "sell",
    "rate": {
      "product": "USDNGN",
      "rate": "1607.27",
      "side": "sell",
      "type": "FIXED",
      "source_currency": "USD",
      "target_currency": "NGN"
    },
    "fees": [],
    "pay_in": {
      "type": "balance"
    },
    "pay_out": {
      "type": "balance"
    },
    "status": "pending",
    "timeline": {
      "total_steps": 0,
      "current_step": 0,
      "transfer_status": "",
      "events": []
    },
    "created_at": "2026-01-20T09:33:40.957016939Z",
    "updated_at": "2026-01-20T09:33:40.957017017Z"
  }
}
3

Check Transfer Status

Monitor the transfer to confirm completion:
        curl -X GET https://api.sandbox.busha.so/v1/transfers/TRF_qaZ4QmI5ahSw \
          -H "Authorization: Bearer YOUR_SECRET_KEY"
{
  "status": "success",
  "message": "Fetched transfer successfully",
  "data": {
    "id": "TRF_qaZ4QmI5ahSw",
    "profile_id": "BUS_CQr0jPzGGzmn1uW5W7OVs",
    "quote_id": "QUO_6T9lPmqMSPPt",
    "description": "Sold USD",
    "sub_description": "For NGN",
    "source_currency": "USD",
    "target_currency": "NGN",
    "source_amount": "50",
    "target_amount": "80363.5",
    "trade": "sell",
    "rate": {
      "product": "USDNGN",
      "rate": "1607.27",
      "side": "sell",
      "type": "FIXED",
      "source_currency": "USD",
      "target_currency": "NGN"
    },
    "fees": [],
    "pay_in": {
      "type": "balance"
    },
    "pay_out": {
      "type": "balance"
    },
    "status": "funds_converted",
    "timeline": {
      "total_steps": 2,
      "current_step": 2,
      "transfer_status": "funds_converted",
      "events": [
        {
          "step": 1,
          "done": true,
          "status": "funds_received",
          "title": "Payment Received",
          "description": "Funded from Balance"
        },
        {
          "step": 2,
          "done": true,
          "status": "funds_converted",
          "title": "Funds Converted",
          "description": "Your NGN has been added to your wallet."
        }
      ]
    },
    "created_at": "2026-01-20T09:33:40.957016Z",
    "updated_at": "2026-01-20T09:33:42.123456Z"
  }
}

Sell USD for Crypto

Convert 50 USD to USDT

1

Get a Quote

Create a quote to see the exchange rate:
        curl -X POST https://api.sandbox.busha.so/v1/quotes \
          -H "Authorization: Bearer YOUR_SECRET_KEY" \
          -H "Content-Type: application/json" \
          -d '{
            "source_currency": "USD",
            "target_currency": "USDT",
            "source_amount": "50",
            "pay_in": {
              "type": "balance"
            }
          }'
{
  "status": "success",
  "message": "Created quote successfully",
  "data": {
    "id": "QUO_g0k6EIlv4ZH6",
    "profile_id": "BUS_CQr0jPzGGzmn1uW5W7OVs",
    "source_currency": "USD",
    "target_currency": "USDT",
    "source_amount": "50",
    "target_amount": "49.800796",
    "rate": {
      "product": "USDTUSD",
      "rate": "1.004",
      "side": "buy",
      "type": "FIXED",
      "source_currency": "USD",
      "target_currency": "USDT"
    },
    "fees": [],
    "pay_in": {
      "type": "balance"
    },
    "pay_out": {
      "type": "balance"
    },
    "reference": "QUO_g0k6EIlv4ZH6",
    "status": "pending",
    "expires_at": "2026-01-20T10:00:31.485131911Z",
    "created_at": "2026-01-20T09:30:31.485109051Z",
    "updated_at": "2026-01-20T09:30:31.485109051Z"
  }
}
2

Create the Transfer

Use the quote ID to finalize the conversion:
        curl -X POST https://api.sandbox.busha.so/v1/transfers \
          -H "Authorization: Bearer YOUR_SECRET_KEY" \
          -H "Content-Type: application/json" \
          -d '{
            "quote_id": "QUO_g0k6EIlv4ZH6"
          }'
{
  "status": "success",
  "message": "Created transfer successfully",
  "data": {
    "id": "TRF_4vpxeM3IzcuV",
    "profile_id": "BUS_CQr0jPzGGzmn1uW5W7OVs",
    "quote_id": "QUO_g0k6EIlv4ZH6",
    "description": "Bought USDT",
    "sub_description": "With USD",
    "source_currency": "USD",
    "target_currency": "USDT",
    "source_amount": "50",
    "target_amount": "49.800796",
    "trade": "buy",
    "rate": {
      "product": "USDTUSD",
      "rate": "1.004",
      "side": "buy",
      "type": "FIXED",
      "source_currency": "USD",
      "target_currency": "USDT"
    },
    "fees": [],
    "pay_in": {
      "type": "balance"
    },
    "pay_out": {
      "type": "balance"
    },
    "status": "pending",
    "timeline": {
      "total_steps": 0,
      "current_step": 0,
      "transfer_status": "",
      "events": []
    },
    "created_at": "2026-01-20T09:34:13.772974486Z",
    "updated_at": "2026-01-20T09:34:13.772974539Z"
  }
}
3

Check Transfer Status

Monitor the transfer to confirm completion:
        curl -X GET https://api.sandbox.busha.so/v1/transfers/TRF_4vpxeM3IzcuV \
          -H "Authorization: Bearer YOUR_SECRET_KEY"
{
  "status": "success",
  "message": "Fetched transfer successfully",
  "data": {
    "id": "TRF_4vpxeM3IzcuV",
    "profile_id": "BUS_CQr0jPzGGzmn1uW5W7OVs",
    "quote_id": "QUO_g0k6EIlv4ZH6",
    "description": "Bought USDT",
    "sub_description": "With USD",
    "source_currency": "USD",
    "target_currency": "USDT",
    "source_amount": "50",
    "target_amount": "49.800796",
    "trade": "buy",
    "rate": {
      "product": "USDTUSD",
      "rate": "1.004",
      "side": "buy",
      "type": "FIXED",
      "source_currency": "USD",
      "target_currency": "USDT"
    },
    "fees": [],
    "pay_in": {
      "type": "balance"
    },
    "pay_out": {
      "type": "balance"
    },
    "status": "funds_converted",
    "timeline": {
      "total_steps": 2,
      "current_step": 2,
      "transfer_status": "funds_converted",
      "events": [
        {
          "step": 1,
          "done": true,
          "status": "funds_received",
          "title": "Payment Received",
          "description": "Funded from Balance"
        },
        {
          "step": 2,
          "done": true,
          "status": "funds_converted",
          "title": "Funds Converted",
          "description": "Your USDT has been added to your wallet."
        }
      ]
    },
    "created_at": "2026-01-20T09:34:13.772974Z",
    "updated_at": "2026-01-20T09:34:15.456789Z"
  }
}

Learn More