Skip to content

POST Execute Transfer

https://api.magmaonepay.com/v1/payout/transfer

Execute Transfer

This guide will help you execute a transfer to any available corridor.

These are for channels: mobile_money, airtime

Corridors

Here are the countries and their supported payment methods:

Country CodeCountry NameSupports Mobile Wallet?Supports Credit Card?AirtimeCurrency
BJBeninYesNoNoXOF
CICôte d'IvoireYesNoNoXOF
TGTogoYesNoNoXOF
SNSenegalYesNoNoXOF
MLMaliYesNoNoXOF
BFBurkina FasoYesNoNoXOF
CMCamérounYesNoNoXAF
GNGuinée (Conakry)YesNoNoGNF
GHGhanaYesNoNoGHS

Available Payment Methods

Here are the available payment methods per country and their minimum and maximum transaction limits:

Country CodeCountry NamePayment methodsMin amountMax amount
BJBeninMOOV_BJ, MTN_BJ2001500000
CICôte d'IvoireMOOV_CI, MTN_CI, ORANGE_CI, WAVE_CI2001500000
TGTogoMOOV_TG, TMONEY_TG2001500000
SNSenegalWAVE_SN, ORANGE_SN, FREE_SN2001500000
MLMaliORANGE_ML, MOOV_ML2001500000
BFBurkina FasoMOOV_BF, ORANGE_BF2001500000
CMCamerounMTN_GN, ORANGE_GN2001500000
GNGuinée (Conakry)ORANGE_GN, MTN_GN2001500000
GHGhanaMTN_GH, VODAFONE_GH, AIRTEL_GH2001500000

Transfer Statuses

Transfers may have one of the following statuses:

StatusDescription
newThe transfer is newly created
successThe transfer is successful
pendingThe transfer is pending
failedThe transfer has failed
refundedThe transfer has been refunded
cancelledThe transfer has been cancelled

HEADERS

AuthorizationBearer TOKEN

NB: TOKEN is your private secret key dependant on your mode (live or test) for server-side

Body

Request Body

The body of the request should be a JSON object with the following fields:

FieldDescriptionTypeRequired
merchant_transaction_idUnique transaction identifier on your systemStringYes
amountAmount to be transferredNumberYes
currencyCurrency code (e.g., XOF)ISO3 CurrencyYes
descriptionDescription of the operationStringNo
channelTransfer channel (mobile_money,wave)enumYes
country_codeCountry code (e.g., CI)ISO2 CountryYes
receiver_accountReceiver's account numberStringYes
transfer_methodTransfer Method if you want to specify (ORANGE_CI)StringNo
receiver_first_nameFirst name of the receiverStringYes
receiver_last_nameLast name of the receiverStringYes
webhook_urlURL to receive webhook notificationsStringNo
custom_fieldAny additional custom field for the clientStringNo
Exemple of a body, raw (json)
json

{
  "merchant_transaction_id": "876d6cab-d96e-4fec-8639-216cb52b76e3",
  "amount": 500,
  "currency": "XOF",
  "description": "Payment description",
  "channel": "mobile_money",
  "country_code": "CI",
  "receiver_account": "+2250707000200",
  "receiver_first_name": "Amidou",
  "receiver_last_name": "Amada",
  "webhook_url": "https://webhook.site/dcfa6085-3e7f-469e-9ff6-3c9bc0ed1c1d",
  "custom_field": "any_string"
}

Example Request

curl

curl --location 'https://api.magmaonepay.com/v1/payout/transfer' \
--header 'Authorization: Bearer TOKEN' \
--data '{
    "merchant_transaction_id": "876d6cab-d96e-4fec-8639-216cb52b76e3",
    "amount": 500,
    "currency": "XOF",
    "description": "Payment description",
    "channel": "mobile_money",
    "country_code": "CI",
    "receiver_account": "+2250707000200",
    "receiver_first_name": "Amidou",
    "receiver_last_name": "Amada",
    "webhook_url": "https://webhook.site/dcfa6085-3e7f-469e-9ff6-3c9bc0ed1c1d",
    "custom_field": "any_string"
}'

Example Response

Body
json

{
    "code": 201,
    "message": "CREATED",
    "data": {
        "created_at": "2024-06-04T00:46:19.000000Z",
        "done_at": null,
        "transfer_token": "da578aa9-cf07-481c-83d9-6c71ca980644",
        "merchant_transaction_id": "JGVDHUSJGBJs",
        "country_name": "Côte d'Ivoire",
        "country_code": "CI",
        "amount": 150,
        "currency": "XOF",
        "description": "Transfer test",
        "channel": "mobile_money",
        "receiver_account": "+2250707000200",
        "receiver_first_name": "Cheick",
        "receiver_last_name": "Cheick",
        "webhook_url": "https://webhook.site",
        "custom_field": "123456",
        "status": "new"
    }
}