How to Display Prices in Crypto on Your Store or Site
Show prices in crypto the right way: live rates, quote locking, rounding, refresh times and checkout wording, with a practical setup for merchants.
Show prices in crypto the right way: live rates, quote locking, rounding, refresh times and checkout wording, with a practical setup for merchants.

The safest way to display prices in crypto is to keep your catalog priced in dollars, convert to a coin amount from a live rate, show when that rate was refreshed, and lock the amount for a short window once the customer starts paying. Do that, and shoppers see a number they understand while you are protected from price swings between the product page and the payment.
This guide covers what to show on product pages, how to get and refresh rates, how to handle rounding and expiry, and how to word it all so customers are never surprised.
Before touching code, settle one question: is the crypto number a label or a promise?
There are three common patterns:
Most merchants end up with pattern 1 or 2. Pattern 3 is a deliberate choice for sellers whose audience thinks in coins, and it needs a conversion plan so the proceeds do not drift.
If you sell globally, this also helps. Shoppers outside the card networks’ strongest markets can pay in a coin they already hold, and your catalog stays in one currency. We wrote more on that in getting paid where cards don’t reach.
A displayed crypto price is only as good as the data behind it. Three things matter: how the price is built, how often it refreshes, and whether you can tell when it is stale.
One exchange can show a temporary spike or a thin order book. An aggregated price smooths that out. CoinGecko’s documentation, for example, describes its token-price endpoint as returning a global average aggregated across active exchanges, which is the kind of figure you want behind a public price display.
Providers publish how often their data changes, and your display cannot be fresher than the source. CoinGecko’s price endpoint documents a 60-second cache on its Public API and 20 seconds on Pro, and it can return a last-updated timestamp so you can check whether a value is stale. If you need push updates instead of polling, streaming feeds exist: Amberdata’s documentation, for instance, describes a WebSocket spot-price feed that sends a USD price with a timestamp.
For an ordinary store, polling every minute or so on the server is plenty for an indicative price. Do not call the data provider from every visitor’s browser: cache the rate on your server and serve the cached value. It keeps you inside rate limits and makes every shopper see the same number.

If a single feed fails or returns something absurd, you do not want a $49 item showing as 0.0000 BTC. A sensible setup:
The fallback matters more than the feed. A missing crypto estimate costs nothing; a wrong one costs a sale or a margin.
The math is simple: divide the dollar price by the rate (dollars per coin). The details are where stores go wrong.
A course costs $120. The cached rate says 1 ETH is $3,000. The amount is 120 / 3,000 = 0.04 ETH. If the shopper chooses a stablecoin pegged to the dollar, the amount is simply 120.00 units, and no rate risk applies beyond the peg itself.

Those two numbers show why many merchants offer stablecoins prominently: the price on the page is the price paid.
The customer’s wallet pays the blockchain network fee on top of the invoice amount. Make that clear in your checkout copy so a shopper does not send exactly the invoice amount minus a fee and come up short. A gateway checkout page that shows the exact amount to send, and detects underpayment, removes most of this friction.
A price shown on a product page can be indicative. A price at payment cannot. Crypto moves while the customer finds their wallet, and a transaction needs time to be broadcast and detected.
The standard answer is a quote window: the coin amount is fixed for a few minutes, then expires and a new quote is generated. Payment-infrastructure documentation describes this pattern plainly: quotes are locked for a validity window, then must be replaced once they expire. Windows differ by provider and by use case, from a few minutes to longer, so check the one your processor uses.
Things to get right:
Our piece on exchange-rate slippage in crypto payments goes deeper on what a merchant actually nets after conversion, which is the number that should drive your policy.
There are two ways to put prices on a page.
| Hosted widget or plugin | Price API in your own code | |
|---|---|---|
| Setup time | Minutes, a snippet or a plugin install | Hours to days |
| Design control | Limited to the widget’s styling | Full, your own markup |
| Backend work | None | Server job, cache, error handling |
| Drives calculations (carts, invoices) | Not really | Yes |
| Best for | Informational price tickers, small sites | Stores, SaaS billing, marketplaces |
A widget is fine when you only want to show a rate. Once the price has to feed a cart, an invoice or a subscription charge, use a server-side integration: fetch and cache the rate, convert and round at display time, snapshot the rate into the cart, and store the locked rate and timestamp on the order.
If you want the rates without building a feed, you can use our live crypto prices page as a reference, and let shoppers check amounts themselves with the crypto converter. For a hands-on walkthrough of the website side, see how to display crypto prices on your website.
Running WordPress? A plugin route is often the fastest. Stores selling downloads can use the Easy Digital Downloads crypto gateway, which keeps your catalog in fiat and handles the coin amount at payment.
Clear wording prevents most disputes. A checklist for product pages and checkout:
Keep these labels consistent between the product page, cart and payment page. A shopper who sees three slightly different numbers will assume something is wrong.
Recurring billing in crypto works best when the plan is priced in dollars and each renewal creates a fresh invoice at the current rate. Show the dollar price on the plan page and the coin amount only on the renewal invoice. Accepting stablecoins for renewals removes the question entirely.
With multiple sellers, decide which currency each seller sees. A common setup is dollar-denominated listings, one locked quote per order, and commission splits computed in dollars before payouts are made. Our crypto payments for marketplaces page shows how commission splitting fits in.
For invoices, show the dollar total and generate a payment link that fixes the coin amount when the client opens it. If a client takes days to pay, a reusable invoice that re-quotes on open is better than a stale number. Finance teams comparing a checkout flow with invoices will find the trade-offs in crypto checkout versus invoices.
In-game purchases are small and frequent, so quote windows and fee structure matter. A flat per-payment fee can be easier to model for low-value items than a percentage, and automated delivery on confirmation keeps the player experience fast.
We see the same mistake again and again: a merchant treats a crypto price on a product page as if it were a contract. It is not. It is a conversion of a dollar price at a moment in time, and the moment passes.
Our approach is to keep the catalog in the currency you do your books in, convert at the point of payment, and lock the amount long enough for a normal customer to pay. That is how our hosted checkout, plugins, payment links and API are designed to work, and it is why we put stablecoin auto-conversion next to the checkout rather than in a back office.
We also think onboarding should not be the hard part. You should be able to get approved quickly, with no KYC step to slow you down, and start displaying and accepting coins without a setup fee or a monthly fee. Display is the visible tip; what matters is that settlement and reconciliation behind it are clean.
Dustin
Building rate feeds, caching, quote locking, underpayment handling and reconciliation is a real project. If you would rather ship, our gateway handles it: hosted checkout, e-commerce plugins, payment links and an API that accept 110+ cryptocurrencies, with optional auto-conversion to stablecoins.
On our site, pricing is volume-based and listed as Standard at 2%, Growth at 1.5%, Scale at 1% and Enterprise at 0.1%, with the tier set by monthly volume. A flat fee of $0.10 per payment is also listed on the gateway page. White-label fees start from 1%. See the full crypto payments offer for the current terms.

Selling online? Our crypto payments for e-commerce page shows how stores add crypto checkout without changing their dollar catalog.
Show dollars as the main price and crypto as a converted amount at checkout or as a labeled estimate. Dollar pricing keeps your margins and bookkeeping stable. Only price natively in a coin if your audience expects it and you have a plan to convert proceeds.
It depends on your source, because you cannot be fresher than its data. One major provider documents a 60-second cache on its public tier and 20 seconds on its paid tier. For an indicative display, refreshing about once a minute on your server is reasonable, and the payment quote should be locked separately.
Nothing, if the quote is locked. The coin amount stays fixed for the validity window shown on the payment page. If the window expires, the checkout generates a new quote at the current rate and the customer pays that amount instead.
Yes. A payment gateway supplies the rates, converts the dollar total, locks the amount and detects the payment. You keep your catalog in dollars and add a crypto option through a plugin, payment link, hosted checkout or API.
Open a free CryptoPayr account and take your first crypto payment the same day.
Get started for free
Why crypto rates differ between sites, how aggregated prices are built, and how to choose and use a rate source for invoices, checkout and payouts.
Crypto payments can't be retried like cards. Learn how to chase unpaid invoices, handle underpayments and expired payments, and track what you recover.
Why crypto payments fail or never reach the order, how to check a transaction, what can be refunded, and how merchants can prevent failures at checkout.