Skip to content

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)
Minimum1.00 (100)1.00 (100)
Maximum150,000.00 (15000000)5,000,000.00 (500000000)
Whole units onlyNoYes. 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.fee and card.total. card is null when card is off.

Request limits ​

FieldLimit
amountInteger, minimum 1
reference1 to 64 characters
description1 to 140 characters. The payer sees it
return_url1 to 2048 characters, https
phone9 to 15 digits, country code, no +. Example: 254712345678
Idempotency-Key1 to 128 characters
Unknown fields400, 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.

RouteLimit
POST /checkouts/:id/pay5 per phone per hour, 20 per checkout per hour, 30 per IP per hour
POST /checkouts/:id/card10 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.

Staging documentation. Staging charges real money. See Environments.