API V1 (legacy)

Collect from a customer (V1)

POST /V1/payment/mobile: request a Mobile Money payment from a customer in DR Congo.

You are reading the legacy V1, maintained for existing integrations. For a new integration, use V2; to migrate, see Versions and migration.

POST /V1/payment/mobile#

Parameters#

FieldTypeRequiredDescription
tokenstringYesYour API token.
phonestringYesCustomer number in local format, exactly 10 characters (e.g. 0812345678); the prefix determines the provider.
amountnumberYesAmount, ≥ 0.
currencystringYesCDF | USD
countrystringYesCD (DR Congo).
callbackstringYesURL that will receive the result (see Callbacks).

Recognised prefixes:

  • Vodacom M-Pesa: 081, 082, 083
  • Orange Money: 080, 084, 085, 089
  • Airtel Money: 097, 098, 099

Example#

Collect 100 USD

curl -X POST "https://api.labyrinthe-rdc.com/api/V1/payment/mobile" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"token":"VOTRE_TOKEN","phone":"0812345678","amount":100,"currency":"USD","country":"CD","callback":"https://boutique.example/callback"}'
200 response (example)
{
  "status_code": 200,
  "success": true,
  "orderNumber": "6f1d2c3b-8a7e-4f10-9b2c-3d4e5f607182",
  "reference": "6f1d2c3b-8a7e-4f10-9b2c-3d4e5f607182",
  "message": "Votre transaction a été initiée avec succès. Veuillez valider le push.",
  "results": {
    "status": {
      "code": "0",
      "name": "processed",
      "description": "Votre transaction a été initiée avec succès. Veuillez valider le push."
    },
    "details": {
      "amount": 100,
      "currency": "USD",
      "payment_method": "Mobile Money",
      "destinataire": "Labyrinthe",
      "fee": 93,
      "amountCustomer": 100,
      "provider": {
        "id": 1,
        "name": "mpesa",
        "description": "Vodacom RDC",
        "enabled": 1
      },
      "callback": "https://boutique.example/callback"
    }
  },
  "errors": null,
  "time": "2026-11-11T10:00:00.000000Z"
}

The response confirms the initiation (processed): the customer gets a confirmation prompt on their phone. The final status then arrives on your callback; keep orderNumber to find it.

Amounts#

  • The customer is charged the amount plus 7%; your balance in that currency is credited with amount when the payment succeeds.
  • Caps: 20,000,000 CDF and 10,000 USD per transaction (403, see Errors).

In the initiation response, details.fee and details.amountCustomer do not reflect the amount actually charged to the customer: do not rely on them. The charged total is the payment's amountCustomer field in get-transactions.

Prerequisites and refusals#

  • The token owner's profile must contain a valid DR Congo phone number (e.g. 0891234567), otherwise 400 with a message asking to complete the profile.
  • Currency other than CDF / USD: 400 "La monnaie renseignée ne correspond pas."
  • Unrecognised number: 400 "Le numéro de téléphone renseigné n'est pas correct."
  • Token not yet enabled for production: daily transaction limit (limit exceeded); blocked token: token blocked.