Rate Quotes & Spread
All deposit and withdrawal quotes include a spread applied on top of the live market FX rate. The spread is agreed during onboarding and configured on your program.
- On deposits: the spread reduces the USDC amount the user receives.
- On withdrawals: the spread reduces the KES amount the user receives.
The spread_bps field is included in every quote response so you can display it to your users.
Quote lifecycle
| Property | Value |
|---|---|
| Validity | 10 minutes from issue |
| Reuse | Single-use — consumed on a successful deposit or withdrawal |
| Expiry | RATE_EXPIRED error if used after 10 minutes or after first use |
Spread guard (max_spread_bps)
Both deposit and withdrawal endpoints accept an optional max_spread_bps parameter. If the effective spread at execution time exceeds this threshold, the request is rejected with SPREAD_EXCEEDED before any M-Pesa call is made.
Use this to protect your users from unexpectedly wide spreads during periods of FX volatility.