DocumentationGetting startedTroubleshooting: the fee is not showing
Troubleshooting: the fee is not showing
A missing fee nearly always has one of nine causes, and the first five take a minute each to rule out. Work down the list in order; the last section covers what to include in a support message.
No fee anywhere
1. Is the method switched on in the fee settings? WooCommerce → Settings → Pay for Payment, pick the method, look for Charge an extra fee when customers pay with that method. A method that is off charges nothing, whatever its fields hold. This is the cause more often than everything below combined.
2. Is there an amount? A rule with an empty fixed amount and an empty percentage charges nothing: with both blank the rule is skipped before anything is calculated. A rule that computes something and is then capped or filtered down to zero does write a zero line.
3. Is shipping free? Don’t charge the fee when free shipping is available switches the fee off when the shopper’s chosen shipping method is a free-shipping one. On a split shipment, one free package is enough. It reads the chosen method, not what was merely available — though WooCommerce usually preselects one, so the two often look the same. Untick it, retest.
4. Is there nothing to pay for? A basket fully discounted by a coupon with no shipping cost gets no fee since 3.0. Paid shipping on free goods still charges.
5. Is cash on delivery restricted to shipping methods it is not being used with? COD’s own Enable for shipping methods setting decides whether COD is offered at all; if the shopper’s shipping method is not on that list, no COD fee.
On the wrong method
The cart page shows a fee before anyone has chosen a method. That is the preview for the method WooCommerce would default to, and it recalculates at checkout. The display controls page explains it and the two ways round it, one of them free.
The fee of the method the customer did not use is on the order. On the free version this happens on a wallet payment (Apple Pay or Google Pay) where the session’s last-selected method was different. Pro corrects it for the official WooCommerce Stripe gateway’s express sheet; other gateways’ wallet buttons are not corrected. On a pay-for-order retry the stale fee is removed by both versions.
Wrong amount
Work down the calculation order: fixed, plus the percentage of the base, clamped, then tax. The usual suspects, in order:
- The percentage base. Taxes is on by default, so 2 % of a 100 basket at 21 % tax is 2.42, not 2.00. See the base options.
- The amount includes tax. Only applies once Payment fee is taxable is on, which is off by default. With both on, a fee typed as 3.25 is charged as 2.69 plus tax, so the customer still pays 3.25. If you expected 3.25 + tax, untick it. Your 3.25 stays in the settings either way.
- A cap. A minimum of 1 on small baskets, a maximum of 8 on large ones.
- Inherit from cart items picks the highest rate in the basket.
- Multi-currency. The fee is a number in the base currency and converted by whichever of the five supported plugins is active; on a store with a different currency switcher it is not converted at all.
- A filter. A 2.x snippet on
woocommerce_pay4pay_*still runs. Search the theme and the code-snippets plugin forpay4pay.
Not updating at checkout
The total does not change when the shopper switches method on the block
checkout: the Checkout block is inside a template part rather than in the
checkout page’s own content. The fee still charges correctly; the live update
does not fire. Move the block into the page. On the classic checkout, another
plugin’s checkout script may be suppressing WooCommerce’s update_checkout
event; disable checkout-related plugins one at a time.
Klarna’s one-step express checkout never carries a fee; that is Klarna’s formula, not a setting. See limitations.
Missing on some orders
- Orders created in the admin, or paid through a pay-for-order link: core never runs cart fees there. The free version adds nothing; Pro does, with Charge the fee on manual & order-pay orders switched on. See order-pay & manual orders.
- A conditional rule did not match (Pro): check the rule’s conditions against the order — a guest has no role, the country condition reads the shipping address, the shipping-method condition reads the first package.
- Mercadopago drops fee lines through a bug in its own integration.
- It used to work and stopped: a plugin or WooCommerce update. Pro’s watchdog exists for exactly this and names the gateway and the day. Deactivate recently updated checkout, shipping and totals plugins one by one on staging.
What to send
Four things, and the reply comes back in one round instead of four:
- Free or Pro, and the WordPress, WooCommerce and PHP versions.
- The method and its fee settings — a screenshot of the panel is ideal.
- One real basket: the items, the shipping, the method chosen, the fee you expected and the one you got.
- Classic or block checkout, and any multi-currency, tax or checkout plugin that touches the same totals.
Where to send it is on the support page.
Reached the bottom of the list? Send the four things in the last section and it gets answered from the person who wrote the code.
Get in touch