Volatility is the number-one merchant concern in crypto payments. The solution is simple and proven: fixed-rate quotes with short validity windows. In this article, we’ll explain how fixed quotes work end-to-end, how to handle over/under-payments gracefully, and how to wire the accounting so month-end is boring (in the best way).
What is a fixed-rate quote?
When a buyer selects “Pay with crypto,” your gateway fetches a firm fiat-to-crypto rate and locks it for a short window (e.g., 10–15 minutes), displaying:
- The exact amount of crypto to send
- The destination address (and chain if relevant)
- A countdown timer to quote expiry
If the buyer pays before expiry, the merchant is guaranteed the fiat value of the order. The gateway absorbs minor market moves within risk tolerances or hedges in real time.
Why fixed quotes increase conversion
- Predictability: Buyers don’t fear paying “too much” due to market movement.
- Clarity: Countdown eliminates ambiguity; under/over-payment rules are transparent.
- Parity with cards: Mirrors card pricing certainty, reducing support contacts.
Handling under- and over-payments
- Under-payment: Offer a top-up link or automatically refresh the quote for the shortfall.
- Over-payment: Option A: accept and convert the excess; Option B: refund the difference in stablecoin.
- Expired quotes: Provide a one-click “Get New Quote” with the cart preserved.
Your help center should have short, visual guides for each scenario.
Slippage and treasury policy
To keep payouts predictable, set auto-conversion rules:
- Convert to USDC or fiat immediately after receipt.
- Define acceptable slippage thresholds and abort conditions.
- Route to low-fee rails dynamically.
Treasury then holds low-volatility assets or fiat, eliminating exposure.
Accounting made simple
Each payment record should include:
- Quote time, quoted rate, and expiry
- Asset paid, network used, tx hash
- Fees (network + gateway) and final settlement asset
- Any refund info linked to the original order
Export these lines to your ERP. Month-end reconciliation becomes mechanical: order value in base currency equals funds received (minus fees) with clear timestamps and rates.
Refunds on fixed-quote payments
- Stablecoin refunds preserve value and simplify bookkeeping.
- For BTC/ETH orders, communicate refund currency upfront—most merchants refund in stablecoin unless the buyer insists otherwise.
UX essentials
- Prominent countdown; accessible copy address / open wallet buttons.
- “Network too busy?” fallback that suggests an alternative rail.
- Clear under/over-payment messaging with self-serve actions.
Risk and controls
- KYT before confirming order fulfillment.
- Velocity rules to prevent abuse (e.g., multiple failed attempts).
- Refund re-verification to avoid misdirection.
Implementation blueprint
- Enable fixed quotes for USDC + BTC/ETH.
- Set 10–15 minute windows; shorter for volatile assets.
- Auto-convert to USDC/fiat at the edge.
- Build help-center content and macros for support.
- Test under/over-payment paths end-to-end in sandbox and live with small values.
FAQs
What window length is best?
Long enough for buyers to complete the wallet flow, short enough to limit exposure—10–15 minutes is a common sweet spot.
Can we show prices directly in crypto?
Yes, but we recommend fiat pricing with fixed quotes for clarity and tax consistency.
What if the network gets congested?
Auto-route to cheaper/faster rails where possible, or extend the window programmatically if tx is broadcast within time.