Payouts
Create Payout Examples
NGN to USD

Create a USD Payout Example

The Payout API allows users to process payouts in US Dollars (USD) to recipients in the United States via Bank Transfer.

Endpoint

Post: {{baseURL}}/v1/payout

Request Details

Headers

Include these headers in your request:

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

Sample cURL Request

 
curl --location --request POST 'https://api.me-cash.com/v1/payout' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
  "recipient": {
    "id": "ef2503ff-aec9-40e5-bfcf-73167ba8077e",
    "name": "John Benjamin",
    "firstName": "John",
    "lastName": "Benjamin",
    "type": "BUSINESS",
    "account": {
      "accountNumber": "8612343562723",
      "sortCode": "0919202",
      "routingNumber": "342672"
    },
    "paymentChannel": "BANK_TRANSFER",
    "currency": "USD",
    "country": "US",
    "stored": true
  },
  "quoteId": "859b19e8-8a00-4d59-9970-85395006cc13",
  "reason": "Gift"
}'

Request Body

The following fields are required when making an NGN payout request:

Request Body Breakdown

FieldTypeDescriptionRequired
recipientObjectDetails of the payout recipient✅ Yes
├─ recipient.idStringUnique identifier for the recipientOptional
├─ recipient.nameStringFull name of the recipient✅ Yes
├─ recipient.firstNameStringFirst name of the recipient✅ Yes
├─ recipient.lastNameStringLast name of the recipient✅ Yes
├─ recipient.typeStringRecipient type (INDIVIDUAL or BUSINESS)✅ Yes
├─ recipient.accountObjectRecipient’s bank account details✅ Yes
│ ├─ account.accountNumberStringBank account number of the recipient✅ Yes
│ ├─ account.sortCodeStringSort code of the recipient's bank✅ Yes
│ └─ account.routingNumberStringRouting number for the recipient's bank✅ Yes
├─ recipient.paymentChannelStringPayment method (BANK_TRANSFER)✅ Yes
├─ recipient.currencyStringCurrency code (e.g., USD)✅ Yes
├─ recipient.countryStringCountry code (e.g., US)✅ Yes
└─ recipient.storedBooleanWhether recipient info is stored for future use✅ Yes
quoteIdStringUnique Quote ID for the payout✅ Yes
reasonStringReason for the payout (e.g., Gift, Invoice Payment)✅ Yes

Success Response (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-xxxxxxxxxxxxx",
    "remark": "Invoice Payment",
    "reason": "Invoice Payment",
    "referenceNumber": "TXYZD6RWSQMKF",
    "type": "SEND",
    "state": "COMPLETED",
    "quote": {
      "id": "d19a64f9-5a47-4bda-b7c2-xxxxxxxxxxxxx",
      "source": {
        "currency": "NGN",
        "country": "NG",
        "amount": 160000
      },
      "target": {
        "currency": "USD",
        "country": "US",
        "amount": 100
      },
      "rate": 1600,
      "fee": {
        "amount": 500
      }
    },
    "recipient": {
      "name": "Adeolu Adebayo",
      "type": "BANK",
      "account": {
        "accountNumber": "0123456789",
        "bankCode": "044"
      },
      "paymentChannel": "BANK_TRANSFER",
      "currency": "USD",
      "country": "US"
    },
    "created": "2025-02-27T14:17:48.038044",
    "processed": "2025-02-27T14:20:49.712685"
  }
}
 

Response Breakdown

FieldTypeDescription
messageStringTransaction creation message
statusStringStatus of the transaction
dataObjectDetails of the transaction
├─ idStringUnique ID of the transaction
├─ remarkStringRemark provided for the transaction
├─ reasonStringReason for the transaction
├─ referenceNumberStringReference number for tracking
├─ typeStringType of transaction (e.g., SEND)
├─ stateStringCurrent state of the transaction
├─ quoteObjectQuote details associated with the transaction
│ ├─ idStringQuote ID
│ ├─ sourceObjectSource currency details
│ │ ├─ currencyStringSource currency code (e.g., NGN)
│ │ ├─ countryStringSource country code (e.g., NG)
│ │ ├─ amountNumberSource amount
│ ├─ targetObjectTarget currency details
│ │ ├─ currencyStringTarget currency code (e.g., USD)
│ │ ├─ countryStringTarget country code (e.g., US)
│ │ ├─ amountNumberTarget amount
│ ├─ rateNumberExchange rate
│ ├─ feeObjectFee details
│ │ ├─ amountNumberFee amount
├─ recipientObjectRecipient details
│ ├─ nameStringName of the recipient
│ ├─ typeStringType of recipient (e.g., BANK)
│ ├─ accountObjectRecipient's account information
│ │ ├─ accountNumberStringBank account number
│ │ ├─ bankCodeStringBank code
│ ├─ paymentChannelStringPayment method used
│ ├─ currencyStringRecipient’s currency code
│ ├─ countryStringRecipient’s country code
├─ createdStringCreation timestamp
├─ processedStringProcessing timestamp

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
400Bad RequestInvalid parameters
401UnauthorizedInvalid API key
422Unprocessable EntityInvalid quote ID
500Internal Server ErrorAn internal error occurred

Best Practices

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