Appearance
Limits and settlement times
Each payment channel has a smallest and a largest amount per payment, and takes its own time to finish.
The API is the source of truth
Read limits and settlement times from payment options by country before each payment, and build your checkout from what it returns. The tables on this page are a snapshot from 16 October 2026 to help you plan. They go out of date, so do not hard-code them. When the API and this page disagree, the API is right.
Read them from the API
Every network in payment options by country carries its own limits and timing:
| Field | Meaning |
|---|---|
min_amount, max_amount | The limits for that network, in the local currency. 0 means Payd has no limit on file, and the network's own limits apply. |
settlement_seconds | About how long a payment takes to finish, in seconds. 0 when Payd has no estimate. |
settlement_type | How it finishes: instant, same_day, next_business_day, manual (a bank processes it by hand) or delayed. Empty when Payd has no estimate. Treat a value you do not know as slow. |
js
const auth = Buffer.from(`${process.env.PAYD_API_USERNAME}:${process.env.PAYD_API_PASSWORD}`).toString('base64')
const options = await fetch('https://api.payd.money/api/v2/payments/discovery/UG', {
headers: { Authorization: `Basic ${auth}` },
}).then((r) => r.json())
const networks = Object.values(options.provider_networks ?? {})
.flatMap((group) => group.networks)
.filter((n) => n.ramp_type === 'deposit' && n.status === 'active')
for (const n of networks) {
const limit = n.max_amount ? `${n.min_amount} to ${n.max_amount}` : `from ${n.min_amount}`
const time = n.settlement_seconds ? `about ${Math.ceil(n.settlement_seconds / 60)} min` : 'no estimate'
console.log(`${n.network_name}: ${options.currency} ${limit}, ${time}`)
}python
import math
import os
import requests
AUTH = (os.environ["PAYD_API_USERNAME"], os.environ["PAYD_API_PASSWORD"])
options = requests.get("https://api.payd.money/api/v2/payments/discovery/UG", auth=AUTH, timeout=15).json()
for group in (options.get("provider_networks") or {}).values():
for n in group["networks"]:
if n["ramp_type"] != "deposit" or n["status"] != "active":
continue
seconds = n.get("settlement_seconds") or 0
limit = f"{n['min_amount']} to {n['max_amount']}" if n.get("max_amount") else f"from {n['min_amount']}"
time = f"about {math.ceil(seconds / 60)} min" if seconds else "no estimate"
print(f"{n['network_name']}: {options['currency']} {limit}, {time}")The API also checks every amount when you send a payin or payout, and refuses one outside the limits. Cache the response for metadata.cache_ttl_seconds, then fetch it again.
"Finish" means Payd knows the result and sends the webhook. For a collection, the money is in your Payd balance at that point, except for cards.
Snapshot: 16 October 2026
The tables below are what the API returned on 16 October 2026. Use them to plan, then read the live values as shown above. Where a time says "Read settlement_seconds", Payd had no estimate for that country on that date.
M-Pesa in Kenya
| Per payment | Typical time | |
|---|---|---|
| Collect | KES 1 to 250,000 | Under a minute after the customer enters their PIN |
| Pay out | KES 10 to 150,000 | Under a minute |
The customer has about a minute to approve a collection prompt before it fails. M-Pesa also caps how much a customer can send in a day, so a large payment can fail even inside these limits.
Mobile money
| Country | Collect | Pay out | Typical time |
|---|---|---|---|
| Uganda | UGX 15,001 to 3,000,000 | UGX 15,001 to 3,000,000 | About a minute |
| Tanzania | TZS 2,501 to 10,000,000 | TZS 2,501 to 10,000,000 | Read settlement_seconds |
| Rwanda | RWF 1,501 to 10,000,000 | RWF 1,501 to 10,000,000 | Read settlement_seconds |
| Zambia | ZMW 101 to 20,000 | ZMW 101 to 20,000 | Read settlement_seconds |
| Côte d'Ivoire | Up to XOF 1,500,000 | Up to XOF 1,500,000 | About a minute |
| Senegal | XOF 1,001 to 200,000 | XOF 1,001 to 200,000 | Read settlement_seconds |
| Cameroon | Up to XAF 1,000,000 | Up to XAF 1,000,000 | Read settlement_seconds |
| Benin | Up to XOF 300,000 | Up to XOF 1,500,000 | Read settlement_seconds |
| Togo | Up to XOF 1,500,000 | Up to XOF 1,500,000 | Read settlement_seconds |
| Botswana | BWP 151 to 10,000 | BWP 151 to 10,000 | Read settlement_seconds |
Limits differ between networks in one country. In Côte d'Ivoire, for example, one network starts at XOF 1,001. Check the network the customer picked.
Bank transfers
| Country | Collect | Pay out | Typical time |
|---|---|---|---|
| Kenya | KES 301 to 999,999 | KES 501 to 999,999 | Up to 2 days |
| Nigeria | NGN 501 to 30,000,000 | NGN 1,801 to 30,000,000 | About a minute |
| Tanzania | TZS 2,501 to 150,000,000 | TZS 2,501 to 150,000,000 | Read settlement_seconds |
| Botswana | From BWP 151 | BWP 151 to 1,000,000 | Read settlement_seconds |
| South Africa | ZAR 101 to 500,000 | About a minute | |
| Ethiopia | The bank's own limits | Read settlement_seconds |
Some Nigerian banks start collections at NGN 2,501. Bank transfers marked "up to 2 days" are processed by hand, so they can finish the next business day. A collection by bank transfer also waits for the customer to send the money. See collect by bank transfer.
Cards
| Per payment | Typical time | |
|---|---|---|
| Collect | Set by the card issuer | Approved in seconds. The money reaches your balance 72 hours later. |
Payd sends payin.succeeded when the card payment is approved and payin.settled when the money is released to your balance. Ship on payin.succeeded. See card payments.
Stablecoins
| Per payment | Typical time | |
|---|---|---|
| Collect | More than USD 0 and up to USD 1,000,000 | A few minutes, once the network confirms the transfer |
The customer has 30 minutes to send the payment. Your Payd balance is credited when the checkout completes. Stables Checkout checks the amount when you create a checkout. See collect stablecoin payments.
Your account limits
Your Payd account can also have limits of its own. If a payment inside the limits above is refused, the error message says why. Email support@paydhq.com to change your account limits.

