Skip to main content

Endpoint

POST https://pay.sandbox.yabetoopay.com/v1/disbursements   # Sandbox
POST https://pay.api.yabetoopay.com/v1/disbursements       # Production

Authentication

Use your secret key in the Authorization header:
Authorization: Bearer YOUR_SECRET_KEY
Secret key security: The secret key must be kept confidential and must never be exposed in the frontend or client code. It must only be used on the server side.

Request Body

ParameterTypeRequiredDescription
amountnumberYesThe amount to transfer
currencystringYesCurrency code (e.g., XAF, XOF)
first_namestringYesCustomer’s first name
last_namestringYesCustomer’s last name
payment_method_dataobjectYesPayment method details

payment_method_data structure

{
  "type": "momo",
  "momo": {
    "msisdn": "242066594471",
    "country": "CG",
    "operator_name": "mtn"
  }
}
FieldDescription
typePayment method type (momo for Mobile Money)
momo.msisdnCustomer’s phone number
momo.countryCountry code (e.g., CG, CM)
momo.operator_nameOperator name (mtn, airtel)

Example Request

curl -X POST https://pay.sandbox.yabetoopay.com/v1/disbursements \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_SECRET_KEY" \
  -d '{
    "amount": 10000,
    "currency": "XAF",
    "first_name": "Jean",
    "last_name": "Dupont",
    "payment_method_data": {
      "type": "momo",
      "momo": {
        "msisdn": "242066594471",
        "country": "CG",
        "operator_name": "mtn"
      }
    }
  }'

Response

200 OK

When the disbursement was successfully created, the API will return a 200 OK response. The status of the disbursement is processing because the payment is still being processed and has not been executed yet.
{
  "amount": 10000,
  "currency": "xaf",
  "status": "processing",
  "firstName": "Jean",
  "lastName": "Dupont",
  "operatorName": "mtn",
  "country": "cg",
  "phone": "242066594471",
  "object": "disbursement",
  "type": 1,
  "shouldExecutedAt": "2025-03-18T09:24:57.555Z",
  "id": "wt_RMqehxy8NNi1ocJFG2SSAZMj81m6spo72vnZ",
  "createdAt": "2025-03-17T10:24:57.559+01:00",
  "updatedAt": "2025-03-17T10:24:57.559+01:00"
}

Disbursement Status

StatusDescription
processingBeing processed
succeededDisbursement completed successfully
failedDisbursement failed
canceledDisbursement was canceled

400 Bad Request

{
  "errors": [
    {
      "rule": "required",
      "field": "currency",
      "message": "required validation failed"
    }
  ]
}

401 Unauthorized

{
  "message": "Unauthorized"
}
Disbursements are processed asynchronously. Use webhooks to track their status in real-time.