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.
| Rule | Value |
|---|---|
| Minimum amount | 200 |
| Maximum amount | 2,000,000 |
Exceptions to the minimums:
| Payment method | Minimum |
|---|---|
RDC_PM_AIRTEL (payin) | 50 (CDF) |
CB_PM_MTN, CB_CASHIN_MTN | 500 (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.
| Country | Expected format | Example |
|---|---|---|
Côte d'Ivoire (CI) | 10 digits, starting with 01, 05 or 07 | 0505000000 |
Senegal (SN) | 9 digits, starting with 70, 75, 76, 77 or 78 | 770000000 |
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_idmust 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.