Quote windows as of October 2026: BlindPay, Stripe FX Quotes, Wise, MoonPay, Transak, Bridge, Coinbase. What each locks, for how long, and at what cost.
Payment quotes last anywhere from seconds to a day. As of October 2026, BlindPay payout and payin quotes last 5 minutes (10 seconds for OTC Pix payin quotes), Stripe FX Quotes lock for 5 minutes, 1 hour, or 24 hours, and Wise holds a quote's rate for 30 minutes. Some on-ramp quotes aren't locked at all.
So the useful question isn't only "how long." It's "what exactly is locked, for how long, and what does the lock cost?" This page compares the published answers. For how expiry works inside one BlindPay integration, handling expired quotes in TypeScript and Python has the code.
Key takeaways
expires_at.Here is what each provider's own documentation says, as of October 2026.
| Provider | What is quoted | Window | Locked? | Source |
|---|---|---|---|---|
| BlindPay | Payout quote (stablecoin to bank account) | 5 minutes; can be shorter on SEPA and Faster Payments | Yes, rate and fees | Cut-off times |
| BlindPay | Payin quote (bank deposit to stablecoin) | 5 minutes; OTC Pix payin quotes 10 seconds | Yes, rate and fees | Payin quotes |
| BlindPay | Transfer quote | 5 minutes, fixed | Yes | Cut-off times |
| Stripe FX Quotes API (preview) | FX rate for payments and transfers | 5 minutes, 1 hour, or 24 hours | Yes, within a rate threshold | Stripe docs |
| Wise | Transfer quote | 30 minutes | Yes, mid-market rate | Wise docs |
| MoonPay | Buy quote | expiresIn; the reference example shows 1,800 seconds | Docs show an expiry, not a lock label | MoonPay reference |
| Transak | Whitelabel quote | Refreshed every minute | No, settles at the latest rate | Transak docs |
| Bridge | Exchange rate | Updated roughly every 30 seconds | No, estimate only | Bridge docs |
| Coinbase Offramp | Cash-out transaction | 30-minute transaction window | Window, not a price lock | Coinbase docs |
Two notes on the table. Bridge's docs say plainly that it does not offer a quote that locks a rate for a period of time; its rate is "provided only as a courtesy to estimate." And Coinbase's 5-minute limit applies to session tokens, which are single-use access tokens for the onramp, not a price.
Because each provider is taking a different risk. A locked quote is a promise to trade at a fixed price while the market keeps moving. If the rate moves against the provider before you execute, the provider loses the difference. That promise behaves like an option, and options cost more the longer they last. Why a locked quote costs money walks through the mechanics.
Three things set the window:
Stripe is the clearest public example, because it prices each duration. Its FX Quotes API adds a duration_premium to the base rate. For currencies in its Group 2, which includes BRL, MXN, and COP, the premium is 0.12% for 5 minutes, 0.15% for 1 hour, and 0.30% for 24 hours. Group 1 currencies such as EUR and GBP cost 0.07%, 0.10%, and 0.20%.
The lock also has limits. Stripe says an extended quote for payments is invalidated if the rate moves more than 3.5%, and one for transfers if it moves more than 1%. Then lock_status changes to expired.
Illustrative example. A US platform prices a R$ purchase worth $10,000 using Stripe's Group 2 premiums:
| Lock duration | Premium | Added cost on $10,000 |
|---|---|---|
| 5 minutes | 0.12% | $12.00 |
| 1 hour | 0.15% | $15.00 |
| 24 hours | 0.30% | $30.00 |
Going from 5 minutes to a day more than doubles the cost of certainty. If your customer confirms within a minute, the 24-hour lock buys nothing.
No, and this is where most comparisons go wrong. A quote that refreshes every minute shows the current price, but the amount can still change before settlement.
Transak's Get Quote docs describe a "temporary price quote" that is "refreshed every minute," and say the crypto amount at settlement is "based on the latest exchange rate at that moment." Bridge's exchange rate endpoint is an estimate. Both are honest designs for their products. They just don't promise the amount.
A locked quote does. BlindPay payout quotes return sender_amount and receiver_amount along with the rate and fee lines, and those numbers hold until expires_at (payout quotes). That's the property that lets you show a recipient the exact amount before you pay.
Match the window to the gap between showing a number and executing it.
| Use case | Time between quote and execute | Window that fits |
|---|---|---|
| API payout with instant confirmation | Seconds | 5 minutes |
| Payout with a human approval step | Minutes | 5 minutes, re-quote if approval runs long |
| Large OTC conversion | Seconds, prepared in advance | Seconds |
| Prices published in local currency for a day | Hours | 1 to 24 hours, and pay the premium |
| Consumer checkout that settles at market | Minutes | Any, but expect the amount to move |
Approvals are the common trap. If a finance lead needs 20 minutes to approve a payout, no 5-minute quote survives. The fix is to approve the payout parameters first and request the quote right before execution. Quote API latency and timeouts shows how much of the window your own calls use up.
You get a new one. Every provider in the table rejects an expired quote:
fx_quote.expired webhook and returns payment_intent_fx_quote_invalid or transfers_fx_quote_invalid if you use one anyway.rateExpirationTime field so you can show how long the rate holds.The pattern is the same everywhere. Never cache a quote, never show a stale amount, and treat expiry as a normal path in your code, not an error. Stablecoin API quotes explained covers what a BlindPay quote locks field by field, and how on/off-ramp providers make money explains where the lock's cost ends up in the price.
Request a BlindPay payout quote on a development instance and log expires_at next to the time you received it. Then measure how long your own confirmation step takes. The payout quotes docs list every field.
Seven places blockchain payments beat bank rails: contractor payroll, remittances, B2B suppliers, marketplaces, 24/7 treasury, bill pay, and PSP payouts.
Push means the payer sends an ACH transfer. Pull means you debit a connected account. How each funds a USD to USDC on-ramp, the fees, and the return risk.
AP2, ACP, and x402 each verify that an AI agent had permission to spend. Here is what every protocol covers, who backs it, and the reconciliation gap none of them close.