📣 New Region Unlocked: You can now send payouts directly to Canada! 🇨🇦
Payouts
Create Payout Examples
NGN to CAD

CAD Payout

This endpoint allows you to process payouts in Canadian Dollars (CAD) to recipients with a bank account in Canada.


Endpoint

POST: {{baseURL}}/v2/payout


Request Details

Headers

Include these headers in your request:

HeaderValueRequired
Content-Typeapplication/json✅ Yes
x-api-keyYOUR_API_KEY✅ Yes

meCash supports two Payment Channels for CAD Payouts:

  • Bank Transfer: Bank Transfer is the traditional way to send money directly into a recipient's bank account
  • Interac: The Interac E-Transfer is a popular Canadian payment service that lets you send money using an email address or mobile phone number.

Sample Request for Bank Transfer

curl --location --request POST '{{baseURL}}/v2/payout' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
  "recipient": {
    "name": "John Chuks",
    "address": "12 blue street",
    "account": {
      "bankName": "Bank of Test",
      "accountNumber": "23099XXXXX",
      "address": "bank address",
      "sortCode": "890",
      "swiftCode": "SWIFT1234",
      "transitNumber": "12345"
    },
    "paymentChannel": "BANK_TRANSFER", // INTERAC
    "currency": "CAD",
    "country": "CA"
  },
  "quoteId": "f1474828-6a2e-4ee8-8598-xxxxxxxxxxxx",
  "reason": "Gift",
  "remark": "test"
}'

Sample Request: Interac E-Transfer

Here are examples of how to make a CAD payout request via Interac, using the recipient's email or mobile number.

curl --location --request POST '{{baseURL}}/v2/payout' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
    "recipient": {
        "name": "Nettie Wuckert",
        "mobileNumber": "6137007875",
        "email": "Guiseppe_Wisoky77@example.net",
        "type": "BUSINESS",
        "account": {},
        "paymentChannel": "INTERAC",
        "currency": "CAD",
        "country": "CA",
        "stored": true
    },
    "quoteId": "5392890f-cab6-40ee-8db2-xxxxxxxxxx",
    "reason": "Gift",
    "remark": "Testing"
}'

Request Body Breakdown

FieldTypeDescriptionRequired
quoteIdStringThe unique ID of the quote for this payout.✅ Yes
reasonStringThe purpose of the transfer (e.g., Payment for services).✅ Yes
remarkStringAn optional, additional note about the transaction.❔ No
recipientObjectAn object containing all details about the person receiving the funds.✅ Yes
recipient.nameStringThe full name of the recipient or business.✅ Yes
recipient.paymentChannelStringThe payment method. Can be BANK_TRANSFER or INTERAC for CAD payouts.✅ Yes
recipient.currencyStringThe ISO currency code. Must be CAD.✅ Yes
recipient.countryStringThe recipient's two-letter ISO country code. Must be CA.✅ Yes
recipient.mobileNumberString(Interac Only) The recipient's mobile number. Either mobileNumber or email is required for Interac.✅ Yes
recipient.emailString(Interac Only) The recipient's email address. Either mobileNumber or email is required for Interac.✅ Yes
recipient.typeString(Interac Only) The recipient type. Can be INDIVIDUAL or BUSINESS.✅ Yes
recipient.storedBoolean(Interac Only) Set to true if the recipient is a saved beneficiary.✅ Yes
recipient.addressString(Bank Transfer Only) The recipient's full residential or business address.✅ Yes
recipient.accountObject(Bank Transfer Only) An object containing the recipient's bank account details.✅ Yes
recipient.account.accountNumberString(Bank Transfer Only) The recipient's bank account number.✅ Yes
recipient.account.bankNameString(Bank Transfer Only) The name of the recipient's bank.✅ Yes
recipient.account.addressString(Bank Transfer Only) The address of the recipient's bank branch.✅ Yes
recipient.account.sortCodeString(Bank Transfer Only) The 3-digit institution number for the Canadian bank.✅ Yes
recipient.account.swiftCodeString(Bank Transfer Only) The recipient bank's SWIFT/BIC code.✅ Yes
recipient.account.transitNumberString(Bank Transfer Only) The 5-digit number identifying the recipient's bank branch in Canada.✅ Yes

Success Response (Bank Transfer) (200 OK)

If the payout is successfully created, the API returns the following response:

{
  "message": "Transaction created successfully",
  "status": "success",
  "data": {
    "id": "d4e5f6a7-b8c9-1234-abcd-xxxxxxxxxxxxx",
    "reason": "Gift",
    "referenceNumber": "CADXFER5ABCFG",
    "type": "SEND",
    "state": "COMPLETED",
    "quote": {
      "id": "f1474828-6a2e-4ee8-xxxxxxxxxxxx",
      "source": {
        "currency": "NGN",
        "country": "NG",
        "amount": 125000
      },
      "target": {
        "currency": "CAD",
        "country": "CA",
        "amount": 100
      },
      "rate": 1250,
      "fee": {
        "amount": 500
      }
    },
    "recipient": {
      "name": "John Chuks",
      "address": "12 blue street",
      "account": {
        "accountNumber": "2309...XXX",
        "bankName": "Bank Test",
        "sortCode": "890",
        "swiftCode": "SWIFT1234",
        "transitNumber": "12345"
        
      },
      "paymentChannel": "BANK_TRANSFER",
      "currency": "CAD",
      "country": "CA"
    },
    "created": "2025-09-23T08:10:15.123456Z",
    "processed": "2025-09-23T08:12:30.789101Z"
  }
}

Success Response for Interac (200 OK)

If the payout is successfully created, the API returns the following response:

 
{
  "message": "Transaction created successfully",
  "status": "success",
  "data": {
    "id": "a1b2c3d4-e5f6-7890-abcd-xxxxxxxxxx",
    "reason": "Gift",
    "referenceNumber": "CADINT5ZYXWV",
    "type": "SEND",
    "state": "COMPLETED",
    "quote": {
      "id": "5392890f-cab6-40ee-8db2-xxxxxxxxxx",
      "source": {
        "currency": "NGN",
        "country": "NG",
        "amount": 150000
      },
      "target": {
        "currency": "CAD",
        "country": "CA",
        "amount": 120
      },
      "rate": 1250,
      "fee": {
        "amount": 500
      }
    },
    "recipient": {
      "name": "Nettie Wuckert",
      "email": "Guiseppe_Wisoky77@example.net",
      "account": {},
      "paymentChannel": "INTERAC",
      "currency": "CAD",
      "country": "CA"
    },
    "created": "2025-10-03T15:10:15.123456Z",
    "processed": "2025-10-03T15:10:16.789101Z"
  }
}

Response Breakdown

This table explains each field in the success response payload. Note that some fields in the recipient object are specific to the payment channel used.

FieldTypeDescription
messageStringA confirmation message indicating the result of the request.
statusStringThe overall status of the request, e.g., success.
dataObjectA container for all the transaction data.
data.idStringThe unique identifier for this payout transaction.
data.reasonStringThe reason for the payout that was provided in the request.
data.referenceNumberStringA unique reference number generated for the payout.
data.stateStringThe current state of the payout (COMPLETED, PENDING, etc.).
data.quoteObjectAn object containing the details of the quote used for this transaction.
data.quote.target.amountNumberThe converted amount that the recipient is scheduled to receive.
data.recipientObjectAn object containing details of the recipient.
data.recipient.nameStringThe full name of the recipient.
data.recipient.emailString(Interac Only) The recipient's email address that the e-Transfer notification was sent to.
data.recipient.paymentChannelStringThe payment channel used for the payout, either BANK_TRANSFER or INTERAC.
data.recipient.account.accountNumberString(Bank Transfer Only) The recipient's masked bank account number.
data.recipient.account.bankNameString(Bank Transfer Only) The name of the recipient's bank.
data.recipient.account.sortCodeString(Bank Transfer Only) The 3-digit institution number of the recipient's bank.
data.recipient.account.transitNumberString(Bank Transfer Only) The 5-digit transit number of the recipient's bank branch.
data.createdStringISO 8601 timestamp of when the transaction was created.
data.processedStringISO 8601 timestamp of when the transaction was successfully processed.

Payout Transaction States

The payout transaction can have one of the following states:

StateDescription
COMPLETEDThe payout was successfully processed.
PENDINGThe payout is still being processed.
FAILEDThe payout failed to process.
REFUNDEDThe payout has been sent back to sender.

Error Handling

Status CodeMeaningExample Response
400Insufficient BalanceInsufficient Balance
401UnauthorizedInvalid API key provided.
403ForbiddenIP not whitelisted
404Not FoundThe requested endpoint does not exist.
422Unprocessable EntityInvalid quote ID provided.
500Internal Server ErrorAn internal error occurred.

Best Practices

✅ Ensure quoteId is valid and linked to an existing quote.
✅ Confirm that the recipient’s account number, transit number, and institution number are correct.
✅ Use a valid API key in the headers.
✅ Handle error responses correctly in your integration.