Why does my customer get charged before they can see or enter a discount?
Shop Pay, Apple Pay, and Google Pay's one-tap buttons can take a buyer straight to payment without ever showing a discount code field — here's why, and how to make sure customers see what they're actually being charged.
What's going on
A customer clicks the Shop Pay, Apple Pay, Google Pay, or PayPal button on your product page or cart — the fast one-tap buttons Shopify calls accelerated or dynamic checkout buttons — and is taken almost straight to a payment confirmation. If they had a discount code in mind, or expected a promotion to apply, there may be no field to enter it and no clear summary showing whether it applied at all. The purchase completes, and only afterward does the buyer realize they paid full price, or paid a different amount than they expected.
This is a real, recurring complaint on Shopify's own merchant forums, usually framed as "my customer says they got charged before they could add a discount" or "Shop Pay skipped my coupon code." It shows up most with mobile buyers, because the express payment sheets from Apple Pay and Google Pay are rendered by the phone's operating system, not by your Shopify theme, and they show a much more condensed order summary than the standard checkout page does.
It's worth separating two different situations that get lumped into this complaint: automatic discounts (no code required) generally do calculate correctly and are reflected in the total across every checkout path, including accelerated buttons. Discount codes are the more common source of trouble, because the accelerated buttons typically don't include a code-entry field the way Shopify's standard checkout page does — a buyer who never reaches that page never gets the chance to type a code in.
Why it happens
Accelerated checkout buttons exist specifically to remove steps between "add to cart" and "paid" — that's their entire value proposition, and it's also exactly what causes this complaint. Apple Pay and Google Pay sheets are native OS interfaces that Shopify populates with totals but does not fully control the layout of, so there's less room, and less obligation, to spell out discount line items the way a full checkout page does.
On top of that, discount codes are inherently a manual-entry mechanism. If the checkout path a buyer takes never presents a text field, the code has no way to get applied, regardless of how good your discount setup is. Automatic discounts don't have this problem because they don't require the buyer to do anything, but many merchants default to code-based discounts out of habit (email marketing, influencer partnerships) without realizing those codes are effectively invisible to anyone who checks out via a one-tap button.
5 ways to fix it
Test every accelerated checkout button yourself, on mobile, with a live discount
Add a discount code and an automatic discount to your store, then click through the Shop Pay button, the Apple Pay/Google Pay button, and PayPal from both the product page and the cart — not just the regular "Checkout" button. Confirm the discounted total is visible before you're asked to confirm payment. Do this on an actual phone: the express payment sheets from Apple Pay and Google Pay are rendered by the device, not your theme, and they compress the order summary far more aggressively than desktop, so a discount line that looks obvious on a laptop can be a single small line a thumb swipes past on mobile.
Prefer automatic discounts over discount codes for anything you want to survive every checkout path
Discount codes require a text field to redeem, and the accelerated/express buttons (Shop Pay, Apple Pay, Google Pay, PayPal) generally don't expose a code-entry field the way the standard Shopify checkout page does — a buyer who taps a fast-checkout button may never get the chance to type a code in at all. Automatic discounts (set up under Shopify admin > Discounts > Create discount > Automatic discount) apply based on cart contents or amount with no code needed, so they're calculated and included in the total regardless of which checkout button the customer uses. If a promotion is central to your funnel, an automatic discount is the more checkout-path-proof option; keep code-based discounts for cases where you genuinely want to gate the offer (email lists, influencer codes, etc.) and disclose clearly that those codes only work if the buyer reaches the standard checkout page.
Disclose discount eligibility on the product page and in the cart, before any payment button
Since you can't fully control what a customer sees inside a native Apple Pay or Google Pay sheet, put the responsibility for disclosure earlier in the funnel where you do control the UI. Add a visible line in your cart drawer or cart page ("Free shipping over $75 — applied automatically" or "10% off applied") using your theme's cart template, so the buyer already knows the discount status before they ever tap an accelerated button. Many free theme cart drawers support a simple announcement or discount-summary block; if yours doesn't, a theme edit adding a line under the subtotal that reads from Shopify's cart discount data is usually a small, one-time change.
Turn off accelerated checkout buttons on the specific pages where confusion is worst, if it's a real conversion problem
In Shopify admin, go to Settings > Payments > scroll to "Dynamic checkout buttons" (also called express checkout buttons) to toggle Shop Pay, Apple Pay, Google Pay, and PayPal on or off, or to control where they appear (product page, cart page). This is a blunt instrument — it will reduce one-tap conversions — so treat it as a temporary fix for a specific promotion or product line where charge-before-context complaints are actually showing up in support tickets or refund requests, not a permanent policy.
If you're on Shopify Plus, use Checkout UI Extensions or a Function to add explicit discount messaging inside checkout itself
Plus merchants have access to Checkout UI Extensions, which can render a custom banner or line item inside the standard checkout flow explaining exactly which discount applied and why. This doesn't reach the native Apple Pay/Google Pay payment sheets (those are controlled by Apple/Google, not Shopify), but it closes the gap for anyone who lands on Shopify's own checkout page rather than a device payment sheet. This is a developer-involved fix, so weigh it against the simpler cart-messaging and automatic-discount changes above first.
Bottom line
Most of this is a disclosure problem, not a bug: Shopify's accelerated checkout buttons are designed to compress the path to payment, which means less room for a full price breakdown, especially inside native Apple Pay or Google Pay sheets you don't control. Start by testing your own checkout on a phone with a live discount running, lean on automatic discounts over codes wherever you want the promotion to survive every checkout path, and add discount messaging in the cart before the buyer ever reaches a payment button. If you find yourselves fielding repeat "why was I charged that" tickets tied to a specific promotion, a cart-drawer or pre-checkout messaging app in the discounts/upsell category can help, but it's worth fixing the underlying discount setup first — an app won't help if the promotion itself is a code that accelerated buttons never had a chance to apply.
Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.