Every shop eventually needs to add something to a total that is not a product: a handling charge on small orders, a surcharge for cash on delivery, a discount for paying by bank transfer, insurance on a parcel worth insuring. Gatemi Checkout Fees is a list of rules, each with its own conditions, applied through WooCommerce's own fee mechanism.
A fee is a fee, not a product in the cart. Putting a "Handling" product in somebody's basket breaks the store's stock report, its product feed, its sales-by-product analytics and any per-item shipping rule, and puts handling in "customers also bought". A fee is tax-aware, survives every recalculation, is displayed natively by the classic cart, the Blocks cart, the Store API and every email, and lands on the order as a fee line where an accountant expects it.
A percentage says what it is a percentage of. This is the one genuinely hard question in this category, and every plugin in it gets it wrong the same way — by measuring everything against the subtotal. A card surcharge should be measured against *everything the customer pays*, because that is what your gateway takes its cut of; measuring it against the goods alone quietly under-recovers by exactly the shipping, on every order that ships. A handling fee is usually of the goods, because handling is about what is in the box. Both are right, so a rule says which.
Every condition on a rule must be satisfied. Adding a second condition narrows a rule; it never widens it, which is what "and" means. And a condition nothing understands is false — a rule that quietly starts charging everybody is something your customers notice before you do.
Nothing is carried forward between recalculations. WooCommerce clears its fee list and rebuilds it on every pass, of which one checkout has several, so a plugin that stores an amount and adds it back doubles the charge on the first AJAX cart update. Every amount here comes from the cart as it stands.
Shipping insurance
A tick box on the cart, the checkout, or both. Priced as a flat amount, a percentage of the goods, or both with a floor — because a percentage alone charges four pence to insure a £3 order, and a flat amount alone charges the same to cover a £3 parcel as a £3,000 one.
It is never ticked for the shopper. There is deliberately no setting for that: a charge nobody asked for is a chargeback, and in several places it is illegal.
What was covered goes on the order — the acceptance, the amount as it was charged, and the value it covered, all together. "Was this order insured, and for how much?" is a question asked weeks later, when a parcel has gone missing and somebody is deciding who pays; a merchant who changes their rate next month has not changed what a past order says.
What's in it
- As many fee rules as you need, each shown as its own line on the total
- Flat amounts and percentages, measured against the goods, the goods and shipping, or everything the customer pays
- Negative amounts, which is how "2% off for bank transfer" is written
- Ten conditions: cart value, item count, country, payment method, shipping method, category, shipping class and customer role
- Per-rule taxability and tax class
- Shipping insurance with a flat amount, a percentage and a floor
- The insurance recorded on the order, and shown on both order screens
- No database tables, no storefront JavaScript, no stylesheet on a shopper's page
Every license includes
- One year of updates and priority support, delivered straight to your WordPress dashboard.
- Use on 1, 5 or 25 sites depending on your license — local, staging and development sites are always free.
- 30-day money-back guarantee — full refund, no questions asked.
- Keeps working after expiry — if you choose not to renew, the plugin keeps running exactly as installed; it simply stops receiving updates and support until you do.
Requires WordPress 6.4+ · PHP 7.4+ · tested up to WordPress 7.0. Works with the classic and block checkout alike.

Natalie Tate (verified owner) –
I expected to lose an evening to this and lost twenty minutes. The Checkout Fees update in the spring went through without any drama. Nothing more I could ask of it.
Diego V. (verified owner) –
Muy buen trabajo. No he tocado los ajustes de Checkout Fees desde el primer día.
Olivia S. (verified owner) –
Rolled it out across the whole group in an afternoon. Checkout Fees behaved itself on a store with a very odd setup.
Brian H. (verified owner) –
Better than I expected for the price, honestly. Checkout Fees works, once you get past the setup. Comfortable four stars.
Martin W. (verified owner) –
Not the prettiest settings screen I’ve used, but it works.