Tanzania
Transfer funds to Tanzanian bank accounts.
Supported Country
Payouts to Tanzania are only available to businesses registered in Tanzania. Your Flutterwave account’s signup country must be set to
Tanzania.
Send TZS directly to bank accounts in Tanzania. This guide walks you through the steps required to initiate and verify a transfer.
Prerequisites
- Complete KYC and ensure your account is approved for transactions.
- Whitelist your server IP addresses. See this guide for more information.
- Enable Transfers via API. See this guide for more information.
- Ensure you have sufficient funds in the TZS wallet. For cross-currency transfers, the transfer amount is debited from the
debit_currencywallet, while the transfer fee is debited from the TZS wallet. See the supported currencies and transfer fees page for more information.
Payout Flow
Follow these steps to send money to a bank account in Tanzania.
- Collect the beneficiary details
Gather the beneficiary's name, bank, branch, and account number.
See the table below for the required and optional parameters.
| Parameter | Description | Format | Example | Is required |
|---|---|---|---|---|
account_bank | The beneficiary's bank code. Use the Get Banks endpoint to retrieve the bank code. | String | "20638300" | Yes |
account_number | The beneficiary's account number. | String | "0152295991300" | Yes |
beneficiary_name | The beneficiary's full name. | String | "Kalinde Kitakwa" | Yes |
amount | The amount to send. | Integer | 350 | Yes |
currency | The transfer currency. Must be TZS. | String | "TZS" | Yes |
destination_branch_code | The beneficiary bank's branch code. Use the Get Branches endpoint to retrieve the branch code. | String | "1812062H9C" | Yes |
debit_currency | The wallet currency to debit for the transfer. | String | "XOF" | No |
narration | A description for the transfer. | String | "Tanzania Withdrawal" | No |
reference | Unique reference to identify the transfer. | String | "Your-Unique-Reference" | No |
- Initiate the transfer
Send aPOSTrequest to the transfer endpoint with the beneficiary and transfer details.
curl --request POST \
--url https://api.flutterwave.com/v3/transfers \
--header 'Authorization: Bearer {{YOUR_SECRET_KEY}}' \
--header 'Content-Type: application/json' \
--data '{
"amount": 1000,
"account_bank": "20638300",
"account_number": "0152295991300",
"currency": "TZS",
"beneficiary_name": "Kalinde Kitakwa",
"destination_branch_code": "1812062H9C",
"debit_currency": "XAF",
"narration": "Tanzania withdrawal",
"reference": "STkrMLRdF_k5kdHkkY3_PMCKDU_1"
}'
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 2245074,
"account_number": "0152295991300",
"bank_code": "20638300",
"full_name": "Kalinde Kitakwa",
"created_at": "2026-10-05T14:06:43.000Z",
"currency": "TZS",
"debit_currency": "XAF",
"amount": 1000,
"fee": 3000,
"status": "NEW",
"reference": "STkrMLRdF_k5kdHkkY3_PMCKDU_1",
"meta": null,
"narration": "Tanzania withdrawal",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "CRDB Bank PLC"
}
}
- Verify the transfer status
There are two ways to verify the transfer status:
- Call the transfer status endpoint using the transfer ID (
data.id) returned in the transfer response.
curl --request GET \
--location 'https://api.flutterwave.com/v3/transfers/2245074' \
--header 'Authorization: Bearer {{YOUR_SECRET_KEY}}'
{
"status": "success",
"message": "Transfer fetched",
"data": {
"id": 2245074,
"account_number": "0152295991300",
"bank_code": "20638300",
"full_name": "Kalinde Kitakwa",
"created_at": "2026-10-05T14:06:43.000Z",
"currency": "TZS",
"debit_currency": "XAF",
"amount": 1000,
"fee": 3000,
"status": "SUCCESSFUL",
"reference": "STkrMLRdF_k5kdHkkY3_PMCKDU_1",
"meta": null,
"narration": "Tanzania withdrawal",
"approver": null,
"complete_message": "Successful",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "CRDB Bank PLC"
}
}
- Listen for webhooks. Configure your webhook URL on the Flutterwave Dashboard to receive real-time transfer updates. See the webhooks guide for more information.
{
"event": "transfer.completed",
"event.type": "Transfer",
"data": {
"id": 2245074,
"account_number": "0152295991300",
"bank_name": "CRDB Bank PLC",
"bank_code": "20638300",
"fullname": "Kalinde Kitakwa",
"created_at": "2026-10-05T14:06:43.000Z",
"currency": "TZS",
"debit_currency": "XAF",
"amount": 1000,
"fee": 3000,
"status": "SUCCESSFUL",
"reference": "STkrMLRdF_k5kdHkkY3_PMCKDU_1",
"meta": null,
"narration": "Tanzania withdrawal",
"approver": null,
"complete_message": "Successful",
"requires_approval": 0,
"is_approved": 1
}
}
Testing Transfers
Check the testing guide for mocking transfers in the test environment.
Updated 3 days ago
Did this page help you?
