Skip to main content
POST
/
payouts
Create Payout
curl --request POST \
  --url https://quickei.io/pay/sandbox/api/v1/payouts \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "amount": 123,
  "currency": "<string>",
  "recipient": {},
  "reference": "<string>",
  "description": "<string>",
  "idempotency_key": "<string>"
}
'

Documentation Index

Fetch the complete documentation index at: https://developer.quickei.io/llms.txt

Use this file to discover all available pages before exploring further.

Initiate a payout to a mobile money account or bank account. Funds are deducted from your merchant wallet.

Endpoint

POST https://quickei.io/pay/sandbox/api/v1/payouts

Authentication

HTTP Basic Authentication using your client_id and client_secret.

Parameters

amount
number
required
Amount to send. Must be greater than 0.
currency
string
required
ISO 4217 currency code (3 characters, e.g. XAF, XOF, EUR). Must match an active wallet.
recipient
object
required
Recipient details. Structure depends on the payout type.For mobile money:
FieldTypeRequiredDescription
typestringYesMust be mobile_money
mobile_codestringYesCountry dialing code (e.g. 237)
mobile_numberstringYesMobile number without country code
operatorstringYesMobile operator (mtn, orange, moov)
For bank transfer:
FieldTypeRequiredDescription
typestringYesMust be bank_transfer
bank_codestringYesBank SWIFT/BIC or local code
account_numberstringYesRecipient account number
account_namestringYesAccount holder full name
reference
string
required
Your internal reference. Must be unique per merchant (max 255 chars).
description
string
Description of the payout (max 500 chars).
idempotency_key
string
Unique key to prevent duplicate payouts (max 64 chars).

Fees

A fee of 2% is applied to each payout, with a minimum of 100 XAF (or equivalent in the payout currency). The fee is deducted from your wallet on top of the payout amount.
Example
Amount10,000 XAF
Fee (2%)200 XAF
Total deducted10,200 XAF

Example Request

curl -X POST https://quickei.io/pay/sandbox/api/v1/payouts \
  -H "Authorization: Basic {base64_credentials}" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 10000,
    "currency": "XAF",
    "recipient": {
      "type": "mobile_money",
      "mobile_code": "237",
      "mobile_number": "670000000",
      "operator": "mtn"
    },
    "reference": "PAY-2026-0042",
    "description": "Salary March 2026",
    "idempotency_key": "idem_payout_abc123"
  }'

Success Response 200

{
  "message": {
    "success": ["Payout initiated successfully"]
  },
  "data": {
    "id": "PYT-20260323-X4K9M2",
    "reference": "PAY-2026-0042",
    "amount": 10000,
    "currency": "XAF",
    "fee": 200,
    "total_deducted": 10200,
    "status": "pending",
    "recipient": {
      "type": "mobile_money",
      "mobile_code": "237",
      "mobile_number": "670000000",
      "operator": "mtn"
    },
    "description": "Salary March 2026",
    "failure_reason": null,
    "processed_at": null,
    "created_at": "2026-03-23T10:30:00+00:00"
  }
}

Payout Statuses

StatusDescription
pendingPayout created, awaiting processing
processingPayout is being processed by the provider
completedFunds successfully delivered to the recipient
failedPayout failed — see failure_reason for details

Error Responses

400 Validation Error

{
  "message": {
    "error": ["The recipient.operator field is required when type is mobile_money"]
  }
}

422 Insufficient Balance

{
  "message": {
    "error": ["Insufficient wallet balance for this payout"]
  }
}

409 Duplicate Reference

{
  "message": {
    "error": ["A payout with this reference already exists"]
  }
}