Senegal

Transfer money to XOF Mobile Money Wallets.

Send XOF directly to Senegalese mobile money accounts. This guide walks you through the steps required to initiate and verify a transfer.

Prerequisites

  1. Complete KYC and ensure your account is approved for transactions.
  2. Whitelist your server IP addresses. See this guide for more information.
  3. Enable Transfers via API. See this guide for more information.
  4. Ensure you have sufficient funds in the XOF wallet. For cross-currency transfers, the transfer amount is debited from the debit_currency wallet, while the transfer fee is debited from the XOF wallet. See the supported currencies and transfer fees page for more information.

Payout Flow

Follow these steps to send money to a mobile money account in Senegal.

  1. Collect the beneficiary details
    Gather the beneficiary's name, mobile money network, and number.

See the table below for the required and optional parameters.

ParameterDescriptionFormatExampleIsrequired
account_bankThe beneficiary's mobile money network. Supported values are freemoney , orangemoney , WAVEString"WAVE"Yes
account_numberThe beneficiary's mobile money number.String"221786040464"Yes
beneficiary_nameThe beneficiary's full name.String"Waly Aboubacar"Yes
amountThe amount to send.Integer350Yes
currencyThe transfer currency. Must be XOF.String"XOF"Yes
debit_currencyThe wallet currency to debit for the transfer.String"XAF"No
narrationA description for the transfer.String"Waly's Withdrawal"No
referenceA unique reference to identify the transfer.String"Your-Unique-Reference"No
  1. Initiate the transfer
    Send a POST request 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": 350,
       "account_bank": "WAVE",
       "account_number": "221786040464",
       "currency": "XOF",
       "beneficiary_name": "Waly Aboubacar",
       "narration": "Waly's Withdrawal",
       "reference":"STkKkgJ_PMCKDU_1""
  }'
{
    "status": "success",
    "message": "Transfer Queued Successfully",
    "data": {
        "id": 2247095,
        "account_number": "221786040464",
        "bank_code": "WAVE",
        "full_name": "Waly Aboubacar",
        "created_at": "2026-10-20T15:38:21.000Z",
        "currency": "XOF",
        "amount": 350,
        "fee": 14,
        "status": "NEW",
        "reference": "STkKkgJ_PMCKDU_1",
        "meta": [
            {
                "Sender": "Dotuns Fashion Limited",
                "SenderCountry": "ZA",
                "SenderAddress": null,
                "SenderMobileNumber": "07054748747",
                "BeneficiaryCountry": "SN"
            }
        ],
        "narration": "Waly's Withdrawal",
        "complete_message": "",
        "requires_approval": 0,
        "is_approved": 1,
        "bank_name": "FA-BANK"
    }
}
  1. Verify the transfer status
    There are two ways to verify the transfer status:
curl --request GET \
  --location 'https://api.flutterwave.com/v3/transfers/2247095' \
  --header 'Authorization: Bearer {{YOUR_SECRET_KEY}}'
{
    "status": "success",
    "message": "Transfer fetched",
    "data": {
        "id": 2247095,
        "account_number": "221786040464",
        "bank_code": "WAVE",
        "full_name": "Waly Aboubacar",
        "created_at": "2026-10-20T15:38:21.000Z",
        "currency": "XOF",
        "debit_currency": null,
        "amount": 350,
        "fee": 14,
        "status": "SUCCESSFUL",
        "reference": "STkKkgJ_PMCKDU_1",
        "meta": [
            {
                "sender": "Dotuns Fashion Limited",
                "beneficiary_country": "SN"
            }
        ],
        "narration": "Waly's Withdrawal",
        "approver": null,
        "complete_message": "Successful",
        "requires_approval": 0,
        "is_approved": 1,
        "bank_name": "FA-BANK"
    }
}
  • 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": 2247095,
    "account_number": "221786040464",
    "bank_name": "FA-BANK",
    "bank_code": "WAVE",
    "fullname": "Waly Aboubacar",
    "created_at": "2026-10-20T15:38:21.000Z",
    "currency": "XOF",
    "debit_currency": null,
    "amount": 350,
    "fee": 14,
    "status": "SUCCESSFUL",
    "reference": "STkKkgJ_PMCKDU_1",
    "meta": [
      {
        "Sender": "Dotuns Fashion Limited",
        "SenderCountry": "ZA",
        "SenderAddress": null,
        "SenderMobileNumber": "07054748747",
        "BeneficiaryCountry": "SN"
      }
    ],
    "narration": "Waly's 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.


Did this page help you?