Appearance
Limits
Amounts
Send an integer in minor units. One major unit is 100. 100 is 1.00. 15000000 is 150,000.00.
Create checks the amount against the country's mobile-money rail.
Kenya (KES, M-Pesa) | Uganda (UGX, MTN MoMo) | |
|---|---|---|
| Minimum | 1.00 (100) | 1.00 (100) |
| Maximum | 150,000.00 (15000000) | 5,000,000.00 (500000000) |
| Whole units only | No | Yes. amount must be a multiple of 100 |
Outside those limits the API returns 422 and code 2702.
Uganda maximum
The Uganda maximum is a placeholder until MTN commercial limits are confirmed.
Card
Create still uses the mobile-money limits above. It does not apply the card rules.
When the payer pays by card:
- Send a multiple of
100. Card collection requires a whole major unit. - The card fee is added for the payer. You receive the checkout
amount. - The fee and the payer total are on the payer checkout as
card.feeandcard.total.cardisnullwhen card is off.
Request limits
| Field | Limit |
|---|---|
amount | Integer, minimum 1 |
reference | 1 to 64 characters |
description | 1 to 140 characters. The payer sees it |
return_url | 1 to 2048 characters, https |
phone | 9 to 15 digits, country code, no +. Example: 254712345678 |
Idempotency-Key | 1 to 128 characters |
| Unknown fields | 400, code 1701 |
Your rate limit
Merchant POST /checkouts and GET /checkouts/:id share 120 requests per minute per account. Over that, the API returns 429 and code 1804.
Confirm when the payer returns. Poll other orders every 10 to 30 seconds.
Payer rate limits
These limits are not on your key. They are on the hosted page.
| Route | Limit |
|---|---|
POST /checkouts/:id/pay | 5 per phone per hour, 20 per checkout per hour, 30 per IP per hour |
POST /checkouts/:id/card | 10 per checkout per hour, 20 per IP per hour |
GET /checkouts/:id (public) | 120 per minute per IP |
Expiry
The default life is 30 minutes. Read expires_at. See How a checkout works.
Keys
One secret key per account. See Authentication.