Handcrafted Beautiful Bootstrap HTML Templates for your Business Website.
Every WooCommerce order should satisfy a simple equation:
Items − discounts + shipping + fees + tax = order total = amount charged
Most of the time it does. But WooCommerce lets dozens of plugins change those numbers: coupons, dynamic pricing, tax services, shipping calculators, payment fees, currency switchers, gift cards. Any one of them can leave an order where the parts don’t add up to the whole, or where the whole doesn’t match what the customer was actually charged.
Nothing alerts you when this happens. The order looks normal. You only find out when an accountant can’t reconcile a month, a tax report is off, or a customer points out they were overcharged.
This guide covers the six common causes, how to find affected orders, and how to keep totals honest.
It helps to separate:
The first can be found by inspecting your own database. The second can only be found by comparing with the gateway.

Advanced coupon, BOGO and dynamic pricing plugins modify cart items and totals during checkout. If one fails mid-calculation (an error, a timeout, a conflict with another pricing plugin), the stored line items and the stored total can disagree. Sometimes the customer is charged the discounted price but the items show full price, or vice versa.
External tax services calculate tax by calling an API at checkout. If the call times out or fails, some plugins fall back to WooCommerce’s built-in rates, to zero, or to a cached value. The order may then show tax that doesn’t match the address, or a total that doesn’t include the tax lines shown.
Shipping and payment fee plugins add lines to the order. If a line fails to save while the total was calculated with it (or the reverse), the order is out of balance. Often this means you undercharged for shipping.
Multi-currency plugins convert prices and round them. Rounding each line separately versus rounding the total can produce small, persistent differences, often a cent or two per order. Individually trivial; across thousands of orders, it’s a reconciliation headache. Worse, if the plugin and the gateway disagree about the currency or amount, the charge can differ from the order.
Editing an order after payment (adding an item, changing a quantity, adjusting shipping) and clicking Recalculate can change the total, while the payment stays the same. Editing without recalculating can leave the total stale. Either way, the order no longer matches the charge.
Scheduled sales starting, coupons expiring or dynamic pricing rules changing while the shopper is on the checkout page can create mismatches. WooCommerce’s documentation notes that from WooCommerce 11.1, block-based checkout stops an order if the total increases between page load and Place order, asking the customer to refresh. Decreases still go through. That’s a welcome safeguard, but it doesn’t cover classic checkout, plugins that modify totals after the order is created, or the other causes above.

Here’s a real-looking order that doesn’t add up, to show how small the signals can be.
| Line | Amount |
|---|---|
| T-shirt × 2 @ $25.00 | $50.00 |
| Coupon SPRING10 (10%) | −$5.00 |
| Shipping: Standard | $6.95 |
| Tax (8% on items after discount + shipping) | $4.16 |
| Expected total | $56.11 |
| Stored order total | $51.11 |
The difference is exactly $5. On investigation, a second discount plugin also applied a $5 “first order” discount to the total, but didn’t add a visible line for it. The customer was charged $51.11, which is fine for them, but your sales report shows $50 of items, a $5 coupon, $6.95 of shipping and $4.16 of tax, which adds up to $56.11, so $5 of revenue that never existed. Multiply by every first-time customer for a quarter, and your books are noticeably wrong.
Now the opposite case: the order lines add up to $56.11, the stored total is $56.11, but the gateway shows $61.11. A payment fee plugin added a $5 surcharge at the gateway step without recording a fee line. The customer was overcharged by your records’ standards, and won’t be pleased if they notice.
Neither order would look strange in the orders list.
Currency switchers convert each price from your base currency and round it. The problem is where the rounding happens:
Both are defensible. But if the plugin calculates one way and your tax report, the gateway, or a later recalculation uses the other, every order carries a cent or two of drift. Tax is particularly sensitive, because tax rounding rules (per line or per order) are set in WooCommerce → Settings → Tax and interact with the currency plugin’s own rounding.
A tolerance-based check is the practical answer: ignore differences of a cent or two, and investigate anything bigger. That’s why Ordafide’s total check has a configurable rounding tolerance rather than demanding exact matches.
A vendor who answers these clearly is much less likely to leave you with mismatched totals.
Open a sample of recent orders and add up items, minus discounts, plus shipping, fees and tax. Compare with the total. Then compare the total with the amount shown in the gateway for that transaction ID.
It works for a handful of orders. It isn’t practical for hundreds, and it’s the kind of job that never gets done in a busy month.
Ordafide Order Integrity for WooCommerce includes an “Order total does not add up” check. For each recent order it compares items + shipping + fees + tax with the stored total and flags any order that’s out by more than a rounding tolerance you configure. That tolerance matters for multi-currency stores, so a cent of rounding doesn’t flood you with findings while real errors still show up.
Findings come with the numbers side by side and are sorted by money at risk, so a $40 missing shipping line ranks above a 2-cent rounding difference. The check reads only your own database, sends nothing anywhere, and never changes your orders.
If an order adds up internally but the gateway took a different amount, only the gateway knows. Ordafide Pro reconciles orders against Stripe, PayPal, Square, Mollie and Razorpay with read-only API keys and flags amount disagreements between the order and the charge, alongside money with no order, paid orders with no payment, and refunds missing in WooCommerce. For accountants, Pro’s CSV/JSON audit export covers any date range.
When mismatches turn up, your accountant needs three things: how many orders, how much money, and since when. A clear note might read:
“Between 3 March and 18 April, a discount plugin applied an extra $5 first-order discount without recording a line. 214 orders are affected. Customers were charged correctly; our reports overstate revenue by $1,070. The plugin was removed on 18 April. Order IDs attached.”
That turns a confusing reconciliation gap into a known, bounded adjustment. It’s only possible if you can list affected orders quickly, which is exactly what an automated total check gives you. Without one, the investigation itself becomes the expensive part.
Keep a short log of pricing, tax and currency plugin changes (what changed, when, and why). When a mismatch appears, the first question is always “what changed around then?”, and the log answers it.
Total mismatches often start right after a client installs “just one more” discount or upsell plugin. Ordafide’s WP-CLI commands (`wp ordafide scan`, `wp ordafide findings`) let you include an order-total check in your maintenance scripts across client sites, and Ordafide Pro’s multi-store dashboard puts every store’s findings on one screen.
Why is my WooCommerce order total wrong?
Usually because a coupon, pricing, tax, shipping, fee or currency plugin changed part of the order without the rest being updated, or because the order was edited after payment.
How do I check if WooCommerce orders add up?
Sum items, discounts, shipping, fees and tax and compare with the order total. Ordafide's free "Order total does not add up" check does this automatically for recent orders with a configurable rounding tolerance.
Can the order total be right but the charge wrong?
Yes. The only way to catch that is comparing with the gateway, which Ordafide Pro's reconciliation does.
What rounding tolerance should I use?
For single-currency stores, a cent or two. For multi-currency stores, look at the typical size of rounding differences in a sample of orders and set the tolerance just above it, so real errors still stand out.
Does WooCommerce stop checkout if the total changes?
From WooCommerce 11.1, block checkout stops the order if the total increases between page load and placing the order. Decreases go through, and classic checkout isn't covered.