WooCommerce checkout fees and surcharges: add fixed or percentage fees to the cart
By Mariusz Szatkowski · Updated: 2026-06-22
Most stores quote a single product price, but the real cost of an order sometimes includes more: a handling fee, a service surcharge, a small charge that keeps a low-margin order viable. WooCommerce has no built-in way to add these to the cart cleanly, so they often end up as manual order edits that slow you down and confuse the customer. This guide explains what a checkout fee is, what to look for in a fee tool, and how to add one that behaves like a native part of the order.
What a Checkout Fee Is and Why It Matters
A checkout fee is any charge added to the cart on top of the product price. The two common shapes are a fixed fee, a flat amount added to every order, and a percentage fee, a percentage of the cart that scales as the order grows. A flat handling fee and a percentage service surcharge are the everyday examples.
The reason it matters is where the fee lives. A fee added correctly shows up in the cart totals, on the checkout page and on the saved order, the same way shipping and tax do. A fee bolted on by editing the order after the fact arrives too late: the customer never agreed to it at checkout, and your reporting no longer matches what was charged.
What to Look For
When you add fees to WooCommerce, a few properties separate a clean tool from a fragile workaround:
- Native fees, not manual edits. The fee should be applied through WooCommerce’s own cart fees API so it appears in totals and on the order automatically.
- Fixed and percentage support. Some costs are flat, others scale with the order. You want both.
- Correct tax handling. A fee that should be taxed must follow your existing WooCommerce tax rules, not a separate guess.
- A clear label. Customers should see what the fee is, on the cart, at checkout and on the order.
- A way to pause. You want to switch a fee on or off without deleting and rebuilding its configuration.
How Surcharge Does It
Surcharge for WooCommerce adds the fee as a native cart fee through the official WooCommerce fees API. Because of that, every fee appears in cart totals, on the checkout page and on the saved order, exactly like shipping or tax, with no manual order editing. The cart and checkout blocks and HPOS are both supported.
Each fee is either a fixed amount or a percentage of the cart contents subtotal, and there is no limit on how many fees you add. A percentage fee is taken from the cart contents subtotal including the tax on those items, before shipping and any other fees, with the percentage capped at the 0 to 100 range. Every fee carries its own custom label that customers see on the cart, at checkout and on the order.
Tax is handled by WooCommerce, not by Surcharge. Mark a fee as taxable and WooCommerce applies your standard tax rules to it; leave it unmarked and the fee is added tax-free. You can keep a fee saved but inactive with the per-fee enable toggle, and a single master switch pauses every fee at once without deleting your configuration, then restores them unchanged when you turn it back on. A row left without a label is simply skipped.
Surcharge is self-contained: no account, no tracking and no custom tables beyond its settings. It requires WooCommerce and does nothing without it.
What Surcharge Does Not Do in Free
The free plugin applies its configured fees to every cart while the master switch is on. It has no payment-method or shipping-country conditions. Conditional and advanced rules live in Surcharge Pro: fee-exempt user roles (for example wholesale accounts), tiered fees by cart value, per-product and per-category rules, schedule windows, and per-fee reporting with CSV export. Pro requires the free plugin and is delivered through Freemius.
Surcharge Versus Default WooCommerce
WooCommerce has no built-in interface for adding cart fees. Here is the difference for checkout fees specifically:
| Capability | Default WooCommerce | Surcharge |
|---|---|---|
| Add a fixed fee to the cart | Not built in | Yes, fixed amount |
| Add a percentage fee | Not built in | Yes, percentage of cart subtotal |
| Multiple fees at once | Not built in | Yes, no limit, each enabled separately |
| Taxable fees | n/a | Yes, follows your WooCommerce tax rules |
| Custom label on cart and order | n/a | Yes |
| Pause all fees without losing config | n/a | Yes, master switch |
| Shown in totals and on the order | n/a | Yes, via the official fees API |
| External account required | n/a | No, self-contained |
| Cost | Free (core has none) | Free; PRO adds role exemptions, tiered fees, per-product rules, schedules, reporting |
The Short Version
A WooCommerce checkout fee should be added as a native cart fee so it appears in totals, at checkout and on the order, not patched in by hand afterwards. Look for a tool that supports both fixed and percentage fees, follows your existing tax rules, labels each fee clearly, and can pause cleanly. Surcharge does all of that for free, and Surcharge Pro adds conditional rules like role exemptions and tiered fees when you need them.