Skip to content

WooCommerce

WooCommerce fee & margin calculator

What you actually keep from a sale, once the gateway and the tax authority have taken theirs.

Net revenue
49.00
Ex-tax, what the sale is worth
Tax collected
9.80
Passed on — never yours
Customer pays
58.80
The gateway charges on this
Gateway fee
2.01
Percentage of gross, plus fixed
Payout
56.79
What lands in your account
Profit
28.99
Payout − tax − cost
Margin

59.17

Markup

161.08

Fee as % of net

4.09

Margin is profit over net revenue, which is what an accountant means. Markup — profit over cost — is shown alongside because the two get conflated constantly.

Two mistakes make WooCommerce shops believe they’re more profitable than they are. Both are arithmetic, both are quiet, and both repeat on every single order.

Computing the fee on the net

Stripe’s 2.9% + 30¢ isn’t charged on your product price. It’s charged on the total the customer’s card is actually debited: product, tax and shipping together.

Take a £100 product at 20% VAT. Work the fee out on the net and you get 100 × 0.029 + 0.30 = £3.20. Work it out on the gross, which is what really happens, and it’s 120 × 0.029 + 0.30 = £3.78.

That’s 18% more fee than the figure most spreadsheets carry, and it scales with your tax rate, so a shop in a 25% VAT jurisdiction is under-counting by a quarter indefinitely.

The tax makes it sting a bit more than it first appears. You’re paying a card fee on money that was never yours. The VAT goes straight through to the tax authority, but the gateway still took 2.9% of it on the way past.

Misreading “prices entered with tax”

There’s a setting in WooCommerce → Settings → Tax that changes what the number in your product editor actually means.

With “Yes, I will enter prices inclusive of tax”, £120 in the box means the customer pays £120 and your net revenue is £100. With “No”, £120 in the box means tax gets added on top, the customer pays £144, and your net revenue is £120.

Same figure typed in. A 20% difference in revenue.

This catches people most often during a migration between shops, or when a developer sets staging up with the opposite setting to production and the numbers quietly stop reconciling. Toggle the checkbox above to see both readings of the same price.

Margin isn’t markup

The two get used interchangeably and they’re different numbers. Margin is profit divided by net revenue, which is what an accountant means, and it can’t exceed 100%. Markup is profit divided by cost, which is what suppliers quote, and it has no upper bound.

A product costing £40 that sells for £100 net has a 60% margin and a 150% markup. Agree on a “we work on 50%” rule without establishing which one you mean and you’ll be out by a long way.

The calculator leads with margin, because that’s the number telling you whether the business works, and shows markup next to it so the two never get muddled.

Tax isn’t revenue

Profit here has the collected tax subtracted before anything else, which is worth saying out loud because a surprising number of spreadsheets don’t do it. VAT and sales tax are collected on the state’s behalf and owed back. Count them as income and every margin looks healthy right up until the quarterly return lands.

Below a registration threshold and not charging tax at all? Set the rate to zero and the whole distinction disappears.

Working backwards to a price

Given a cost and a target margin, the price you need is:

net = (fixed_fee + cost) / [ (1 + tax)(1 − fee%) − tax − margin ]

The tool solves that for you. When the denominator drops to zero or below the target is genuinely unreachable, and it tells you so rather than returning a large confident number, which is how most calculators handle that case.

It isn’t a theoretical situation either. Chase a 95% margin through a 3% gateway and there is no price at all that gets you there.

What this deliberately doesn’t model

Refunds and chargebacks, for a start. Most gateways keep the fixed fee on a refund and a chargeback costs a flat penalty on top, so if your category runs a meaningful dispute rate you’ll want to subtract that separately. Cross-border payments and currency conversion typically add another 1–2% over the headline rate. Per-payout fees, platform subscriptions and marketplace commissions aren’t in here either.

The shipping field is what you charge the customer, not what it costs you. Put your real shipping cost in the cost field.

Presets use each gateway’s published standard rate. Negotiated rates, regional pricing and card-type surcharges all vary, so check a statement and override the percentage if yours differs.

Two questions that come up a lot

Why is my Stripe statement higher than this? Usually international cards, currency conversion, or an instant-payout fee. Compare a single domestic order first to isolate which one it is.

Does WooCommerce show fees anywhere? Not on its own. Stripe and PayPal’s official plugins record the fee in order meta and reporting extensions surface it, but out of the box the order total is all WooCommerce knows about.

One last thing, since people ask: adding a surcharge to cover the fee is restricted or banned outright in several jurisdictions, and most gateway agreements have their own terms about it. Check before you do it.

Published