Stablecoins
Learn how to transfer funds to USDC, USDT, and RLUSD wallets globally.
Stablecoins enable you to transact and hold digital currency globally using blockchain technology. With Flutterwave Stablecoins, you can convert funds between fiat and supported stablecoins, hold balances, and send transfers across supported blockchain networks.
New to stablecoins or blockchain technology? Read our introduction to wallets, blockchain networks, and stablecoin settlements guide before beginning your integration.
Using this feature, you can:
- Convert fiat currencies to supported stablecoins.
- Convert supported stablecoins to fiat currencies.
- Transfer supported stablecoins to wallet addresses on supported blockchain networks.
- Hold funds in supported stablecoin wallets and settle transactions using the supported blockchain networks.
Supported Networks and Stablecoin Wallets
| Blockchain Network | Stablecoin Wallet |
|---|---|
| SOLANA | USDT, USDC |
| ETHEREUM | USDT, USDC, RLUSD |
| BASE | USDC |
| POLYGON | USDT, USDC |
Quickstart
The examples below demonstrate the core lifecycle of a stablecoin flow:
- Convert NGN to USDT.
- Transfer USDT to an external wallet address.
- Verify the transfer status.
Example 1: Convert NGN to USDT
Convert fiat currency to a USD-denominated stablecoin such as USDC, USDT, or RLUSD.
Supported source currencies for fiat-to-stablecoin conversion include: GHS , GBP, EUR, NGN, and USD.
curl --request POST \
--url 'https://developersandbox-api.flutterwave.com/direct-transfers' \
--header 'Authorization: Bearer {{YOUR_ACCESS_TOKEN}}' \
--header 'X-Scenario-Key: scenario:successful' \
--header 'Content-Type: application/json' \
--header 'X-Trace-Id: {{YOUR_UNIQUE_TRACE_ID}}' \
--header 'X-Idempotency-Key: {{YOUR_UNIQUE_INDEMPOTENCY_KEY}}' \
--data '{
"action": "instant",
"payment_instruction": {
"source_currency": "NGN",
"amount": {
"applies_to": "destination_currency",
"value": 100000
},
"recipient": {
"wallet": {
"provider": "flutterwave",
"identifier": "6312655"
}
},
"destination_currency": "USDT"
},
"type": "wallet",
"narration": "TESTING WALLET TRANSFERS",
"reference": "KYERIREYI-JGSJSJGSDJ"
}'
{
"status": "success",
"message": "Transfer created",
"data": {
"id": "trf_0W6lRQtk2Z8cUJ",
"type": "wallet",
"action": "instant",
"reference": "KYERIREYI-JGSJSJGSDJ",
"status": "NEW",
"narration": "TESTING WALLET TRANSFERS",
"source_currency": "NGN",
"destination_currency": "USDT",
"amount": {
"value": 100000,
"applies_to": "destination_currency"
},
"callback_url": "https://webhook.site/8a2e566e-4172-4a99-8c9d-5795641e68f4",
"recipient": {
"type": "wallet",
"id": "rcw_ayEKRMyre7",
"name": {
"first": "Ajadi",
"last": "Trailers & Co."
},
"currency": "USDT",
"wallet": {
"provider": "flutterwave",
"identifier": "6312655"
}
},
"meta": {},
"created_datetime": "2026-06-24T14:52:45.641Z"
}
}
Example 2: Transfer USDT to an External Wallet.
Specify the destination blockchain network, recipient wallet address, and transfer amount. The source and destination stablecoin must be the same. Cross-stablecoin transfers are not currently supported.
The source and destination stablecoin asset types must match. Cross-stablecoin transfers (e.g., sending USDT from your wallet to a USDC destination address) are not supported.
curl --request POST \
--url 'https://developersandbox-api.flutterwave.com/direct-transfers' \
--header 'Authorization: Bearer {{YOUR_ACCESS_TOKEN}}' \
--header 'X-Scenario-Key: scenario:successful' \
--header 'Content-Type: application/json' \
--header 'X-Trace-Id: {{YOUR_UNIQUE_TRACE_ID}}' \
--header 'X-Idempotency-Key: {{YOUR_UNIQUE_INDEMPOTENCY_KEY}}' \
--data '{
"action": "instant",
"type": "crypto",
"narration": "test",
"payment_instruction": {
"source_currency": "USDT",
"amount": {
"applies_to": "destination_currency",
"value": 300
},
"recipient": {
"crypto": {
"network": "POLYGON",
"address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
},
"name": {
"first": "King",
"last": "LeBron"
}
},
"destination_currency": "USDT"
}
}'
{
"status": "success",
"message": "Transfer created",
"data": {
"id": "trf_S1G7XEZ5itHqmG50ZVlNg",
"type": "crypto",
"action": "instant",
"reference": "flw_i9CVAeSUm9",
"status": "NEW",
"narration": "test",
"source_currency": "USDT",
"destination_currency": "USDT",
"amount": {
"value": 300,
"applies_to": "destination_currency"
},
"recipient": {
"type": "crypto",
"id": "rcs_m82OMOcPA8",
"name": {
"first": "King",
"last": "LeBron"
},
"currency": "USDT",
"crypto": {
"network": "POLYGON",
"address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
}
},
"meta": {},
"created_datetime": "2026-06-24T23:36:55.254Z"
}
}
Example 3: Verify the transfer status.
Retrieve the final status of the transfer using the transfer ID(data.id) returned in the creation response.
curl --request GET \
--url 'https://developersandbox-api.flutterwave.com/transfers/trf_S1G7XEZ5itHqmG50ZVlNg' \
--header 'Authorization: Bearer {{YOUR_ACCESS_TOKEN}}' \
--header 'Content-Type: application/json' \
--header 'X-Trace-Id: {{YOUR_UNIQUE_TRACE_ID}}' \
--header 'X-Idempotency-Key: {{YOUR_UNIQUE_INDEMPOTENCY_KEY}}' \
{
"status": "success",
"message": "Transfer fetched",
"data": {
"id": "trf_yr0z0eUJ9oWebi",
"type": "crypto",
"action": "instant",
"reference": "dev_eJ2iZL0YLS",
"status": "SUCCESSFUL",
"narration": "test",
"source_currency": "USDT",
"destination_currency": "USDT",
"amount": {
"value": 300,
"applies_to": "destination_currency"
},
"fee": {
"currency": "USDT",
"value": 3.0
},
"debit_information": {
"currency": "USDT",
"actual_debit_amount": 300,
"vat": 22.5
},
"payment_information": {
"proof": "803761698501817536849468056434"
},
"recipient": {
"type": "crypto",
"id": "rcs_V62o4CFuQa",
"name": {
"first": "King",
"last": "LeBron"
},
"currency": "USDT",
"crypto": {
"network": "POLYGON",
"address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
}
},
"meta": {},
"created_datetime": "2026-06-24T14:53:06.254Z"
}
}
Prerequisites
To use stablecoins successfully:
- Retrieve your v4 client credentials.
- Ensure your F4B account is approved for live transactions.
- Whitelist your IP addresses.
- Ensure your stablecoin wallet or fiat balance has sufficient funds to complete the transfer.
Best Practices
- Crypto transfers are irreversible. Always verify recipient details before initiating a transfer. It should be accurate and operate on the supported networks.
- Configure alerts on your account to prevent your wallet balance from running out.
