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?AirtimeCurrencySupports Bank Account?
BJBeninYesNoNoXOFYes
CICôte d'IvoireYesNoNoXOFYes
TGTogoYesNoNoXOFYes
SNSenegalYesNoNoXOFYes
MLMaliYesNoNoXOFYes
BFBurkina FasoYesNoNoXOFYes
CMCamerounYesNoNoXAFYes
GNGuinée (Conakry)YesNoNoGNFNo
GHGhanaYesNoNoGHSYes
SLSierra LeoneYesNoNoSLENo
KEKenyaYesNoNoKESNo
RDCRépublique Démocratique du CongoYesNoNoCDFNo
UGOugandaYesNoNoUGXNo

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_CM, ORANGE_CM2001500000
GNGuinée (Conakry)ORANGE_GN, MTN_GN2001500000
GHGhanaMTN_GH, VODAFONE_GH, AIRTEL_GH2001500000
SLSierra LeoneORANGE_SL2001500000
KEKenyaEQUITEL_KE, MPESA_KE, AIRTEL_KE2001500000
UGOugandaAIRTEL_UG, MTN_UG2001500000
RDCRepublique Démocratique du CongoORANGE_CD, MPESA_CD, AIRTEL_CD2001500000

List Bank Short code Supported of Ghana

CodeBank NameSupported?
CALCalBank PLC✅ Yes
ECOEcobank Ghana PLC✅ Yes
ECBKEcobank Ghana PLC✅ Yes
GCBGCB Bank PLC✅ Yes
ZENZenith Bank Ghana Limited✅ Yes
UMBUniversal Merchant Bank Limited✅ Yes
UBAUnited Bank for Africa Ghana Limited✅ Yes
STBStanbic Bank Ghana Limited✅ Yes
SGSociete Generale Ghana PLC✅ Yes
SCBStandard Chartered Bank Ghana PLC✅ Yes
RPBRepublic Bank Ghana PLC✅ Yes
PBLPrudential Bank Limited✅ Yes
NIBNational Investment Bank Limited✅ Yes
GTBGuaranty Trust Bank Ghana Limited✅ Yes
FNBFirst National Bank Ghana Limited✅ Yes
FIBFirst Atlantic Bank Limited✅ Yes
FABFirst Atlantic Bank Limited✅ Yes
FBNFirst Bank of Nigeria✅ Yes
FBONFirst Bank of Nigeria✅ Yes
CBGConsolidated Bank Ghana Limited✅ Yes
BOABank of Africa Ghana Limited✅ Yes
ARBARB Apex Bank Limited✅ Yes
ADBADB Bank Limited✅ Yes
ACBAccess Bank Ghana Limited✅ Yes
ABSABSA Bank Ghana Limited✅ Yes
ABSAABSA Bank Ghana Limited✅ Yes

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,bank_account)enumYes
country_codeCountry code (e.g., CI)ISO2 CountryYes
receiver_accountReceiver's account numberStringYes
payment_methodPayment Method (ORANGE_CI)StringYes
receiver_first_nameFirst name of the receiverStringYes
receiver_last_nameLast name of the receiverStringYes
sender_firstnameFirst Name for sender (required for GH and CM)StringNo
sender_lastnameLast Name for sender (required for GH and CM)StringNo
sender_phone_numberPhone number for sender (required for CM)StringNo
sender_addressSender addressStringNo
sender_countrySender country code (GH, CI, CM,...)StringNo
receiver_account_numberAccount number of receiverStringif channel is bank_account
receiver_bank_nameBank name of receiverStringif channel is bank_account
receiver_bank_short_codeYou can find it on section (List Bank Short code Supported of Ghana)Stringif channel is bank_account
receiver_bank_swift_codeSwift code of receiverStringNo
receiver_bank_addressBank address of receiverStringNo
webhook_urlURL to receive webhook notificationsStringNo
custom_fieldAny additional custom field for the clientStringNo
Number for test

When running test transactions, you can simulate different outcomes based on the last two digits of the receiver_account (or receiver_account_number if bank). The system interprets the status based on the ending of the phone number or account number, using the logic below:

Ends WithResult Description
00Success
01Pending
02Failed

✅ Example Test Numbers:

  • +23350000000000 → ends with 00Success
  • +23350000000001 → ends with 01Pending
  • +23350000000002 → ends with 02Failed

⚠️ These test behaviors are only activated in sandbox environments. Real numbers in production are not subject to this logic.

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",
  "payment_method": "ORANGE_CI",
  "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 Mobile Money

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 Request Bank Account

curl

curl --location 'https://api.magmaonepay.com/v1/payout/transfer' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data '{
  "merchant_transaction_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "amount": 5,
  "currency": "GHS",
  "description": "Transfer test",
  "channel": "bank_account",
  "country_code": "GH",
  "receiver_first_name": "JOHN",
  "receiver_last_name": "DOE",
  "receiver_account_number": "12223444555",
  "receiver_bank_name": "ECOBANK GHANA",
  "receiver_bank_short_code": "ECO",
  "sender_firstname": "DOE",
  "sender_lastname": "DJO",
  "webhook_url": "https://webhook.site/80dac6fc-7c6b-4473-b23f-3f020f6cced8",
  "custom_field": "123456"
}'

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"
  }
}