What is a credit card surcharge?
A surcharge is an additional amount applied at checkout when a customer chooses to pay with a credit card. It is intended to offset the merchant's processing cost (typically around 2.9% + $0.30 per transaction). Crucially, a surcharge is tied to the payment method, not the product price, which is what separates it legally from a price markup.
Surcharges apply only to credit cards. Debit card surcharging is prohibited under the Durbin Amendment (15 U.S. Code § 1693o-2), regardless of state. ACH bank transfers are not cards and have no surcharge restrictions.
Surcharge vs. convenience fee
These are commonly confused. The differences matter for compliance.
- Surcharge: Applied because the customer chose a credit card. Card-brand rules apply (caps, advance notice, disclosure). State surcharge laws apply.
- Convenience fee: Applied because the customer chose a specific alternative-payment channel (e.g., paying online instead of in person). The fee must apply to all customers using that channel, not just credit-card payers, and cannot exceed the actual added cost.
For a typical Shopify online store, the relevant frame is surcharging, not convenience fees. See our surcharge vs. convenience fee guide for more.
Is surcharging legal?
Yes, in most of the US. The 2013 Visa antitrust settlement removed Visa's general ban on surcharging. Mastercard, Discover, and American Express followed with similar rule changes. Today, surcharging is legal under federal law and in most states.
States that prohibit credit card surcharging as of April 2026:
- Connecticut, flat prohibition under Conn. Gen. Stat. § 42-133ff
- Massachusetts, flat prohibition under Mass. Gen. Laws Chap. 140D, § 28A
- Maine, restricted under Me. Rev. Stat. tit. 9-A, § 8-509
- Puerto Rico, prohibited under Reg. 5524
A handful of states (notably New York, after a 2023 statutory update) require specific disclosure formatting rather than a flat ban, you must show the dollar amount of the surcharge, not just the percentage. California, Colorado, Florida, Kansas, Oklahoma, and Texas also have surcharge disclosure requirements that vary by jurisdiction.
The state-by-state breakdown above is informational, not legal advice. Consult counsel for your specific situation.
Card-brand rules
Even where state law permits surcharging, the card brands impose their own rules. These apply to every merchant accepting their cards regardless of state.
- Visa: Surcharge is capped at 3% of transaction or the merchant's actual cost, whichever is lower. Merchants must give Visa 30 days' written notice before surcharging. Cannot surcharge in prohibited states.
- Mastercard: Surcharge capped at 4% of transaction or actual cost. No advance notice requirement to Mastercard, but local disclosure rules still apply.
- American Express: Allows surcharging, but only if all card brands the merchant accepts are surcharged equally (anti-discrimination rule).
- Discover: Allows surcharging with similar disclosure requirements.
- Debit (any brand): Prohibited. The Durbin Amendment prevents merchants from surcharging debit transactions. This includes prepaid debit cards.
Disclosure requirements
Both the card brands and many states require clear disclosure of the surcharge to the customer before they complete the transaction. At a minimum, your checkout should show:
- The surcharge as a separate line item (not bundled into the subtotal).
- The percentage rate and the dollar amount (some states require both).
- The fact that the surcharge applies to credit cards specifically and that other payment methods (debit, ACH) are not subject to it.
- An option to choose a non-surcharged payment method where one is available.
FeeLayer ships with a Theme App Extension that adds compliant storefront disclosure to your theme without touching code. The line-item label is customizable per merchant brand.
Implementing a surcharge on Shopify, three approaches
There are three common ways to implement a credit card surcharge on Shopify, and they have very different reliability profiles.
1. JavaScript injection (oldest, least reliable)
Earlier surcharge apps inject a JS snippet into your theme that adds a fee line item to the cart when the customer selects a credit card. The fundamental problem: Shop Pay, Apple Pay, and Google Pay skip the storefront entirely , express checkout buttons jump straight from the product page to payment authorization, never running your storefront JS. Result: those payment methods bypass the surcharge entirely.
2. Checkout UI Extensions (better, still bypassable)
Shopify's Checkout UI Extensions (introduced 2023) let an app render UI inside Shopify's hosted checkout. This solves the storefront-bypass problem. Shop Pay Checkout uses the same extension surface. But UI extensions still don't run on Apple Pay express checkout from product pages or carts, where Apple's UI handles the entire transaction without invoking checkout extensions.
3. Cart Transform + Checkout Validation Functions (current best practice)
Cart Transform Functions are server-side WebAssembly functions that run inside Shopify's checkout infrastructure. They mutate the cart on every change, adding, modifying, or removing line items based on rules. Critically, they run for every payment method, including all express checkouts.
Cart Transform alone is enough to inject the surcharge in a tamper-resistant way, but a determined customer could still attempt to manipulate the totals between cart and payment. The second enforcement layer is Checkout Validation Functions, which run at payment authorization and reject any order where the totals don't match the expected calculation.
FeeLayer uses both layers. Most surcharge apps surveyed on Shopify rely on one or the other, see our comparison for the full feature matrix.
Surcharge best practices
- Pair surcharging with an ACH option. The single most effective thing a surcharging merchant can do is offer customers a fee-free alternative. PayLayer adds Stripe ACH at 0.8% (capped at $5), most B2B and high-AOV customers will switch the moment you give them the option.
- Set a per-order cap. A 3% surcharge on a $5,000 order is $150, which dwarfs your actual processing cost on that order ($145.30). Capping the surcharge per order keeps you in line with card-brand "actual cost" rules and improves customer trust.
- Be explicit about why. Customers don't object to the fee, they object to surprise. Clear messaging in checkout ("Card processing fee, waived for ACH and debit") substantially reduces support volume.
- Audit your state mix. If a meaningful share of orders ship to Connecticut, Massachusetts, or Maine, your effective recovery rate is lower than the headline percentage suggests. Region-aware auto-waive is essential.
How FeeLayer handles all of this
FeeLayer is an end-to-end implementation of the patterns above:
- Cart Transform + Checkout Validation Functions for tamper-proof enforcement
- Auto-waive in Connecticut, Massachusetts, and Maine
- Card-brand caps enforced (Visa 3%, Mastercard 4%)
- Debit and ACH automatically exempt under Durbin
- 30-day-notice template generator for Visa compliance
- Theme App Extension for storefront disclosure
- POS + online parity
- Flat $9/month, no transaction fees, no volume caps
Legal disclaimer
This guide is informational and reflects publicly available information as of April 2026. It is not legal advice. Surcharge laws change; consult licensed counsel in your jurisdictions before implementing or modifying surcharge practices. MerchantLayer makes no warranty of accuracy or fitness for a particular purpose.