Skip to main content
A single POST /v1/payouts creates and submits a payout. Supply the X-Idempotency-Key header so that network retries do not create duplicate transfers.

Request

curl https://api.orqex.com/v1/payouts \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: PO-2026-0001" \
  -d '{
    "amount": 5000,
    "currency": "XOF",
    "method": "momo_mtn",
    "description": "Salary payout",
    "reference": "PO-2026-0001",
    "customer": {
      "email": "[email protected]",
      "first_name": "Jane",
      "last_name": "Doe"
    },
    "instrument": {
      "type": "phone",
      "phone_number": "+22990000000",
      "country": "BJ"
    },
    "metadata": { "department": "engineering" }
  }'

Request body

amount
integer
required
Amount to send, in major units (e.g. 50 for 50.00 of the currency). Minimum 1.
currency
string
required
Three-letter ISO 4217 currency code, uppercase (e.g. XOF).
method
string
required
Payout method code. See Methods & instruments.
description
string
required
Short description of the payout purpose (e.g. "Salary payout").
customer
object
required
The recipient’s identity. Orqex resolves this to a project customer; the customer’s name is used as the beneficiary name on the transfer.
instrument
object
required
Typed destination. The required sub-fields depend on instrument.type. See Instrument types below.
reference
string
Your own unique identifier for this payout, scoped to your project. Re-using an existing reference returns 409 Conflict.
metadata
object
Up to 10 arbitrary key/value pairs, stored on the payout and returned as-is.

Instrument types

Mobile-money or wallet transfer to a phone number.
{
  "type": "phone",
  "phone_number": "+22990000000",
  "country": "BJ"
}
FieldRequiredDescription
phone_numberYesE.164-formatted phone number.
countryYesISO 3166-1 alpha-2 country code.

Response

{
  "id": "po_...",
  "amount": { "value": 5000, "formatted": "5,000 XOF", "short": "5K", "currency": "XOF" },
  "method": "momo_mtn",
  "status": "processing",
  "reference": "PO-2026-0001",
  "description": "Salary payout",
  "customer": {
    "id": "cus_...",
    "first_name": "Jane",
    "last_name": "Doe",
    "email": "[email protected]",
    "avatar_url": null
  },
  "instrument": {
    "id": "poi_...",
    "type": "phone",
    "phone_number": "+22990000000",
    "country": "BJ"
  },
  "gateway": {
    "transaction": {
      "id": "gw_tx_123",
      "reference": "po_ref_generated",
      "external_id": null
    }
  },
  "fee_amount": 0,
  "failure": { "code": null, "message": null },
  "metadata": {},
  "initiated_at": "2026-06-14T10:00:00+00:00",
  "completed_at": null,
  "failed_at": null,
  "created_at": "2026-06-14T10:00:00+00:00"
}
id
string
Public payout id, prefixed po_.
amount
object
method
string
Payout method code used.
status
string
pending, processing, completed, or failed. See Lifecycle.
reference
string
Your reference, if provided.
description
string
Payout description.
customer
object
Resolved project customer (simplified: id, first_name, last_name, email, avatar_url).
instrument
object
Full instrument object returned as provided.
gateway
object
fee_amount
number
Payout fee in major units (decimal).
failure
object
Populated when status is failed. See Lifecycle.
metadata
object
Your metadata as supplied.
initiated_at
string|null
ISO 8601 timestamp when the payout was submitted to the gateway.
completed_at
string|null
ISO 8601 timestamp when the payout completed, or null.
failed_at
string|null
ISO 8601 timestamp when the payout failed, or null.
created_at
string
ISO 8601 timestamp of creation.
Do not treat the initial status in this response as final. Payout status is resolved asynchronously. Listen to webhook events or poll the retrieve endpoint for the authoritative outcome.