Skip to main content

Limits and validation

The API checks every request before passing it to the operator. Operators may additionally apply their own caps.

Amounts​

amount must be a JSON number (1000, not "1000"), expressed in the country's currency.

RuleValue
Minimum amount200
Maximum amount2,000,000

Exceptions to the minimums:

Payment methodMinimum
RDC_PM_AIRTEL (payin)50 (CDF)
CB_PM_MTN, CB_CASHIN_MTN500 (XAF)

An amount outside the limits is rejected with a 400 status, for example:

{ "err": { "status": "error", "message": "Amount must be <= 2 000 000 Fcfa", "code": 400 } }

Phone numbers​

telephone must be a JSON string, in the national format (without country code) of the country concerned. Spaces and separators are ignored.

CountryExpected formatExample
Côte d'Ivoire (CI)10 digits, starting with 01, 05 or 070505000000
Senegal (SN)9 digits, starting with 70, 75, 76, 77 or 78770000000
Burkina Faso (BF)8 digits
Benin (BN)10 digits
Cameroon (CM)9 digits

Operator prefixes are also checked for these countries. The other countries (Congo-Brazzaville, DR Congo, Gambia) are validated against their own national format. A rejected number returns Phone number not valid (HTTP 400).

Transaction identifier​

  • merchant_transaction_id must be unique, across all time. Uniqueness is enforced across the whole platform (not only within your account): use a company-specific prefix or a UUID.
  • An identical transaction (same amount, same number, same type) still in progress for less than a minute is rejected: An identical transaction is already in progress. Please wait.

Required fields​

A missing field returns 400 with the name of the field, for example You must add telephone to your body. The list of required fields for each endpoint is in Collect a payment and Send money.