📣 New Region Unlocked: You can now send payouts directly to Malawi! 🇲🇼
Payouts
Create Payout Examples
NGN to EUR

EUR Payouts

This endpoint allows you to send payouts in EUR to recipients in any SEPA country (e.g., Germany, France, Spain). The request must include the recipient's details, payment method, and a valid quoteId.

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

Request Examples

curl --location --request POST '{{baseURL}}/v1/payout' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
  "remark": "Invoice #INV-2025-08",
  "reason": "Payment for services",
  "quoteId": "a4f7b2c1-ef14-4999-906b-xxxxxxxxxxxxx",
  "recipient": {
    "name": "Max Müller",
    "paymentChannel": "BANK_TRANSFER",
    "currency": "EUR",
    "country": "DE",
    "account": {
      "iban": "DE89370400440532013000",
      "bic": "COBADEFFXXX"
    }
  }
}'

Request Body

The following fields are required when making a EUR payout request:

FieldTypeDescription
remarkStringAdditional note about the transaction.
reasonStringPurpose of the transfer (e.g., Payment for services).
quoteIdStringUnique Quote ID for the payout.
recipient.nameStringFull name of the recipient.
recipient.paymentChannelStringPayment method (BANK_TRANSFER).
recipient.currencyStringISO currency code (EUR).
recipient.countryStringISO country code of a SEPA country (e.g., DE).
recipient.account.ibanStringInternational Bank Account Number of the recipient.
recipient.account.bicStringBank Identifier Code (SWIFT code). Optional for some SEPA banks but recommended.

Success Response (200 OK)

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

{
  "message": "Transaction created successfully",
  "status": "success",
  "data": {
    "id": "b2c3d4e5-f6a7-8901-bcde-f1234567890a",
    "remark": "Invoice #INV-2025-08",
    "reason": "Payment for services",
    "referenceNumber": "UYKLG7SXTNPLF",
    "type": "SEND",
    "state": "COMPLETED",
    "quote": {
      "id": "a4f7b2c1-ef14-4999-906b-xxxxxxxxxxxxx",
      "source": {
        "currency": "USD",
        "country": "US",
        "amount": 108.50
      },
      "target": {
        "currency": "EUR",
        "country": "DE",
        "amount": 100
      },
      "rate": 0.9216,
      "fee": {
        "amount": 3.00
      }
    },
    "recipient": {
      "name": "Max Müller",
      "firstName": "Max",
      "lastName": "Müller",
      "relationship": "BUSINESS_PARTNER",
      "type": "BANK",
      "account": {
        "iban": "DE89370400440532013000",
        "bic": "COBADEFFXXX"
      },
      "paymentChannel": "BANK_TRANSFER",
      "currency": "EUR",
      "country": "DE"
    },
    "created": "2025-08-22T11:02:15.038044",
    "processed": "2025-08-22T11:04:21.712685"
  }
}

Response Breakdown

FieldTypeDescriptionExample
messageStringStatus message of the payout creation"Transaction created successfully"
statusStringStatus of the payout"success"
dataObjectDetails of the payout transaction
data.idStringUnique ID of the transaction"a8b9c7d6-4e5f-1234-abcd-xxxxxxxxxxxxx"
data.remarkStringRemark or note for the payout"Gift"
data.reasonStringReason for the payout"Gift"
data.referenceNumberStringUnique reference number for the payout"NGNEURXREF123"
data.typeStringType of transaction"SEND"
data.stateStringState of the payout (PENDING, COMPLETED, etc.)"PENDING"
data.quoteObjectDetails of the quote
data.quote.idStringQuote ID"2000e048-57a7-4c62-bdc8-xxxxxxxxxxxxx"
data.quote.sourceObjectSource currency details
data.quote.source.currencyStringSource currency code"NGN"
data.quote.source.countryStringSource country code"NG"
data.quote.source.amountNumberAmount sent in source currency150000
data.quote.targetObjectTarget currency details
data.quote.target.currencyStringTarget currency code"EUR"
data.quote.target.countryStringTarget country code"DE"
data.quote.target.amountNumberAmount received in target currency200
data.quote.rateNumberExchange rate used750
data.quote.feeObjectFee details
data.quote.fee.amountNumberFee amount in source currency1000
data.recipientObjectRecipient details
data.recipient.nameStringRecipient’s full name"Busola Obasanjo"
data.recipient.typeStringRecipient type (BANK)"BANK"
data.recipient.accountObjectBank account details
data.recipient.account.accountNumberStringBank account number"222222222"
data.recipient.account.sortCodeStringSort code of the recipient’s bank"11111"
data.recipient.account.bankNameStringBank name of the recipient"Bank Name"
data.recipient.paymentChannelStringPayment method (BANK_TRANSFER)"BANK_TRANSFER"
data.recipient.currencyStringCurrency code of payout"EUR"
data.recipient.countryStringCountry code of the recipient"DE"
data.createdStringTimestamp when the transaction was created"2025-06-11T10:45:00.000000"
data.processedString | nullTimestamp when the payout was processed or nullnull

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.