Orivanta PayDocs

Pay-out

Send money to a mobile money account.

POST /api/v1/pay-out/transfer sends money out to a beneficiary's mobile money account — the reverse of a charge.

No idempotency protection on this endpoint

Unlike charges, transfers have no idempotencyKey field, and no deduplication at any layer — not in the request body, not as a database constraint. If your client retries a transfer request after a timeout without checking first whether it already landed, you can send the money twice. Check the transaction's status before retrying a transfer that didn't get a clean response.

FieldTypeRequiredDescription
amountnumberYesInteger amount in the currency's base unit. Minimum 1.
currencystringYesISO 4217 currency code, e.g. "XAF".
paymentMethodstringYesProvider code, e.g. "MTN_MOMO_CM".
beneficiaryAccountstringYesThe phone number to credit. Max 100 characters.
beneficiaryNamestringYesMax 255 characters.
beneficiaryEmailstringNoMax 255 characters.
merchantReferencestringNoYour own reference, echoed back.
descriptionstringNoMax 255 characters.
curl -X POST https://api.orivantapay.com/api/v1/pay-out/transfer \
  -H "X-API-KEY: sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 25000,
    "currency": "XAF",
    "paymentMethod": "MTN_MOMO_CM",
    "beneficiaryAccount": "670000000",
    "beneficiaryName": "Amina Ndongo",
    "merchantReference": "payout-2024-001"
  }'

Response — 201 Created:

{
  "success": true,
  "code": "SUCCESS",
  "message": "Transfert initié.",
  "data": {
    "reference": "PO-C3D4E5F6A1B2",
    "status": "PENDING",
    "amount": 25000,
    "currency": "XAF",
    "description": null,
    "paymentMethod": "MTN_MOMO_CM",
    "beneficiaryAccount": "670000000",
    "beneficiaryName": "Amina Ndongo",
    "beneficiaryEmail": null
  },
  "timestamp": "2026-09-05T10:00:00.000"
}

Checking status

GET /api/v1/pay-out/check_status/{reference} — same shape as pay-in status, with beneficiary fields instead of payer fields and no type (transfers have only one shape, unlike pay-ins which distinguish checkout/charge/fund-collection).

Status values are the same PENDING/SUCCESS/FAILED/CANCELLED/REFUNDED set used everywhere else in the API.

On this page