Rate Quotes & Spread
All deposit and withdrawal quotes include a spread applied on top of the live market FX rate. The total spread is the sum of Regini's base margin and any additional margin you have configured on your program.
The spread is always applied against the user:
Deposits (KES to USDC): the effective rate is marked up, so the user receives fewer USDC per KES paid.
Withdrawals (USDC to KES): the effective rate is marked down, so the user receives fewer KES per USDC sold.
The exchange_rate in every quote response is the effective KES/USDC rate with the full spread already applied, this is the rate to show the user.
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 |
Configuring your partner spread
You can add your own FX margin on top of Regini's base spread at the program level. This is optional, if you do not configure one, the Regini base spread is the only margin applied.
PATCH /programs/{program_id}/spread
Requires scope: accounts:create
| Field | Type | Constraints |
|---|---|---|
partner_spread_bps |
integer | 0 – 500 (0 removes the partner spread) |
Revenue from your additional spread is credited to your FX spread ledger account and visible in your Ledger view.
Response:
The change takes effect on the next quote issued. Existing locked quotes (rate_ids already issued) continue to use the spread at the time they were created.