EasyFeezy

Methodology & Sources

This calculator covers UK seller rules only (Shopify UK, Etsy UK, eBay UK Business Sellers, Amazon UK FBM, TikTok Shop UK, Vinted UK), current to 16 August 2026 for Shopify/Etsy/eBay/Amazon, 31 August 2026 for TikTok Shop, and 2 September 2026 for Vinted. It is not tax or accounting advice — always confirm VAT and fee treatment with your accountant, HMRC guidance, or the relevant platform invoice. Last independently audited 16 August 2026 (launch audit, then a same-day follow-up audit — see corrections below); TikTok Shop UK support was added 31 August 2026; Vinted UK support was added 2 September 2026.

Sources

2026-08-16 launch audit — corrections

Amazon: removed 10 categories with an unconfirmed threshold mechanic. A prior build had auto-calculated ~37 extra categories, assigning each a marginal-vs-whole-amount "mechanic" by analogy rather than verification. The audit found a concrete error — Automotive & Powersports was modelled as whole-amount when Amazon's own terms describe it as marginal (15% up to £45, 9% above) — now fixed and individually confirmed (AUDIT_VERIFIED). Ten other multi-bracket categories whose mechanic remains genuinely unconfirmed (Baby Products, Baby Pushchairs & Safety Equipment, Reusable Work & Safety Gloves, Clothing & Accessories, Electronic Accessories, Printer & Scanner Accessories, Furniture, Grocery & Gourmet, Pet Clothing & Food, Vitamins/Minerals & Supplements) were removed from auto-calculation rather than re-guessed — select "Other" and enter a rate manually for these.

Etsy: Regulatory Operating Fee VAT was corrected. Previously modelled as unconfirmed; Etsy's Regulatory Operating Fee page explicitly states the fee is subject to VAT where applicable, so it now follows the same VAT-ID-based mechanism as the listing, transaction and Etsy Payments fees.

eBay/Amazon: blank or invalid manual category rates no longer silently become 0%. A missing, malformed, zero, negative or implausibly high (>60%) manual rate now excludes the category-dependent fee (confidence EXCLUDES_VARIABLE_FEES) with an inline validation error, instead of being treated as a real calculated assumption.

Etsy: listing fee now scales with quantity. Etsy charges the US$0.20 listing fee per unit sold, not once per order — a 3-unit order now shows 3× the fee, converted through the same editable USD→GBP assumption.

Confidence precedence was made explicit and consistent. Every engine now reduces a list of signals to the worst case: a missing/applicable-but-excluded fee outranks a disclosed assumption, which outranks a fully verified input. Shopify always excludes billing VAT, so it can no longer report EXACT_FOR_SELECTED_INPUTS. Etsy's currency-conversion and Offsite Ads fees have unconfirmed VAT treatment, so selecting either now reports EXCLUDES_VARIABLE_FEES rather than merely ASSUMPTION_DEPENDENT.

eBay's category table was not expanded (first attempt). This first audit pass made two further attempts to fetch eBay's live category page (both timed out) and one targeted web search, which returned figures for Jewellery that conflicted with this build's tested, spec-given figures. Given that unreliability, the table was deliberately left at its existing 7 verified categories rather than risk encoding a wrong or stale rate — see the follow-up audit below, which found a working access path.

"Fees last verified" now requires full verification. The banner only appears when every fee line contributing to a result is independently verified as of that date — a mixed result (any unverified or manually entered line) no longer shows it.

2026-08-16 follow-up audit — further corrections

eBay: fixed a per-item vs per-order threshold bug. Tiered categories were being evaluated against the COMBINED order total (item price × quantity + postage), which let multiple items collectively cross a threshold that none of them crossed individually — e.g. two £800 Jewellery items were being taxed as if £1,600 had been sold in one go. eBay's own published wording for these categories explicitly says "per item", confirmed via a direct fetch of eBay's community announcement pages (the main fee page still could not be directly fetched — see below). The three tiered categories (Jewellery & Watches, Women's Bags & Handbags, Smartphones) are now evaluated per item and multiplied by quantity; flat categories are mathematically unaffected. For a single item, "per item" and "per order" are the same basis. For multiple items, postage's allocation across items for tier purposes is not stated by any primary source found, so it is excluded from the per-item basis rather than invented — this exclusion is disclosed on the result and the order-level fees (regulatory, international, currency conversion) still include the full postage charged.

eBay: category IDs and a reduced per-order-fee exception, sourced from a working access path. eBay's main fee page remains unfetchable directly, but eBay's community.ebay.co.uk announcement pages ARE fetchable and are still a primary eBay source. This confirmed official category IDs for the three tiered categories (Jewellery & Watches #281, Women's Bags & Handbags #169291, Smartphones #9355) and a fully-sourced reduced 10p (instead of 30p) per-order fee for qualifying sales ≤ £10 in Antiques (#20081), Art (#550), Coins (#11116), Collectables (#1), Dolls & Bears (#237), Pottery & Glass (#870), Sports Memorabilia (#64482), Stamps (#260) and Home, Furniture & DIY. That reduction is exposed as an independent toggle rather than folded into a new category, because none of those categories currently have a confirmed variable Final Value Fee percentage in this build — pairing a verified exception with a guessed percentage would be worse than not adding it.

eBay: one open question surfaced, not resolved by guessing. A primary-source announcement dated 7 March 2024 states the current 14.9%/£1,000/4% rate applies to "Jewellery only", with no corresponding increase mentioned for "Watches, Parts & Accessories". This build still treats "Jewellery & Watches" as one combined category at that rate, because that is the explicit, tested ground truth given for this build and the announcement doesn't state what Watches' current rate actually is — only that it wasn't part of that specific increase. Flagged for a human to confirm whether Watches should be split into its own category.

Amazon: every automatically enabled category is now individually verified. The first audit pass removed 10 categories rather than guess their marginal-vs-whole-amount mechanic. This follow-up made nine separate, targeted fetches of sell.amazon.co.uk/pricing — one per category or small group, by name, quoting each category's literal published wording rather than a bulk summary — which distinguishes "X% for the portion of the total price up to £Y" (marginal) from "X% for products/items priced at/up to £Y" (whole-price threshold). This resolved the mechanic for all 10 previously-removed categories (now restored) and individually confirmed the rate and minimum fee for the remaining ~32 flat categories, which were previously auto-calculated without that individual check. One genuine contradiction was found and resolved: a bulk fetch implied Books had a £0.25 minimum fee, but a dedicated, narrower fetch confirmed "not applicable" — consistent with the original build's figure — so the narrower, targeted answer was trusted over the bulk one. No Amazon category remains AUTOMATED_UNVERIFIED while auto-selectable; an automated test fails the build if one ever becomes selectable again without being upgraded first.

2026-08-16 second follow-up audit — further corrections

eBay: Jewellery and Watches, Parts & Accessories are now split — the prior "open question" is resolved. The previous pass flagged that Jewellery's 14.9%/£1,000/4% rate increase explicitly excluded "Watches, Parts & Accessories", but didn't state what Watches' own rate actually was, so the two stayed combined pending confirmation. That confirmation has now been provided: Jewellery (#281, excluding subcategories) stays at 14.9%/£1,000/4%; Watches, Parts & Accessories (#260324) is a separate category at 12.9% on the portion up to £750 per item, 3% above. The combined "Jewellery & Watches" option no longer exists — selecting Watches items under Jewellery's rate is no longer possible. Category ID #260324 was independently cross-checked against eBay's own category browse page.

eBay: the reduced 10p per-order fee is now tied to category selection, not a free-standing toggle. The previous implementation exposed eligibility as an independent checkbox, which allowed impossible combinations (e.g. applying the Collectables discount to a Jewellery listing). It has been removed. The nine categories confirmed eligible for the reduction (Antiques, Art, Coins, Collectables, Dolls & Bears, Pottery & Glass, Sports Memorabilia, Stamps, Home/Furniture/DIY) are now real, selectable entries in the same category dropdown as every other category — each carries a confirmed reducedPerOrderFee rule, applied automatically when eligible. None of these nine have a confirmed variable Final Value Fee percentage, so selecting one still requires a manual FVF rate (or leaves the FVF excluded) — but the per-order-fee reduction is independently confirmed and doesn't depend on that. A category with no confirmed reduction (e.g. Jewellery, Everything Else) can never receive the discount, at any sale price, by construction — there is no input that can assert it.

eBay: the per-item correction now visibly marks a partial result as partial. When postage is excluded from a multi-item per-item Final Value Fee calculation, the fee line's own label now reads "— INCOMPLETE (postage excluded)" and carries an explanatory note, in addition to the general exclusion already shown — the figure is never presented as if it were a complete, exact fee.

eBay: the main fee page still could not be fetched — four more attempts. This round tried the main page under its two known URL slugs, a generic "selling-fees" page, and a fees.ebay.co.uk subdomain that turned out not to resolve at all (DNS failure) — plus two more community-forum threads that exist but sit behind a login wall. Only eBay's public community ANNOUNCEMENT pages (as opposed to forum discussion threads) remain reliably fetchable, and by nature those only document specific historical changes, not today's full consolidated table. Category coverage beyond what's listed below was not expanded by guessing.

2026-08-16 third audit pass — complete eBay category schedule

A complete official-page capture was supplied directly and implemented in full. After three rounds of failed automated fetch attempts, a complete rendered capture of eBay's official UK Business Seller fees page (structured JSON table transcription cross-checked line-by-line against the full rendered text — both agree exactly) was provided directly. Every row in that page's "Final value fees by category" table has been implemented: 74 categories and subcategories in total, each with its official category ID, exact rate(s), threshold(s) and per-item/per-order basis, taken directly from the source with nothing inferred or extrapolated. No further fetch attempts were made this round, per instruction.

The nine reduced-per-order-fee categories now also have a confirmed FVF rate. Antiques, Art, Coins, Collectables, Dolls & Bears, Pottery & Glass, Sports Memorabilia, Stamps and Home, Furniture & DIY previously required a manual FVF entry (their per-order-fee eligibility was confirmed, but not their FVF percentage). This capture confirms real rates for all nine — every one of their official category IDs cross-checks exactly against the IDs found via community announcements in the prior audit pass, corroborating both sources.

A new basis rule was found and implemented: threshold determination that excludes postage. The Trainers subcategories (Men's and Women's Shoes > Trainers) charge 11.9% below a £100 item price and 7% at £100 or more — and the source explicitly states "the item selling price excludes postage, and any other additional fees or taxes". This is a confirmed rule, modelled distinctly from the general per-item-postage-exclusion used elsewhere (which is an unconfirmed-allocation limitation for quantity > 1, not a published rule) — a Trainers calculation is never marked incomplete, because nothing about it is uncertain.

One verbatim source oddity was preserved, not corrected. The official table lists "Tyres" twice, against two different category IDs (#179680 and #124313) sharing the same rate — both the JSON and the rendered text show this identically. Rather than assume one is an error and drop it, both are encoded as separate, independently selectable entries, per the instruction not to infer anything absent from the source.

Still explicitly out of scope: the Classified Ad listing format (no FVF applies to it at all), listing-time upgrade fees (Reserve Price, Subtitle, Gallery Plus, etc.), the £14 dispute fee, and seller-performance-based fee penalties — none of these are calculated by this build, consistent with its existing scope.

TikTok Shop UK

Complete commission schedule, mechanically extracted from a verified source file. The official TikTok Shop UK commission-category workbook was downloaded from TikTok Seller Academy and supplied directly for this build. Its SHA-256 hash was checked against the hash it was supplied with before any row was encoded, and every one of its 343 category/subcategory rules (127 at 5%, 216 at 9%) was extracted directly from the source .xlsx by a small script — no value was hand-retyped at any point, which is what eliminates transcription risk for this dataset. The extraction script re-checks the source hash and the audited row/rate counts every time it runs, and refuses to generate anything if either doesn't match. The category data was verified 31 August 2026.

Commission is a VAT-inclusive cash rate. Unlike this build's other platforms, TikTok Shop's published commission rate already includes applicable VAT — no separate 20% UK VAT is added on top of it, and the full published amount is deducted as-is. The standard rate is 9%; a minority of categories/subcategories are confirmed at a reduced 5%. Each commission fee line carries a VAT-inclusive flag so this is shown explicitly, and the shared summary's "VAT added separately to fees" figure is correctly £0 for TikTok — it describes VAT added on top, not VAT already embedded in the commission.

Platform commission and affiliate/creator commission use different bases. TikTok publishes two distinct formulas, not one shared basis:

  • Platform commission basis = (item price × quantity) minus any seller-funded discount, plus shipping charged to the customer. A TikTok-funded (platform) discount is recorded for transparency but does not reduce this basis — TikTok absorbs that cost itself. Worked example: £100 product, £10 seller discount, £5 customer-paid shipping → basis = 100 − 10 + 5 = £95; commission at 9% = £8.55.
  • Affiliate/creator commission basis = product price minus seller discount minus platform discount — it excludes customer-paid shipping entirely, and (unlike the platform basis) it does subtract the platform discount. Same order, 10% affiliate rate: basis = 100 − 10 − 10 = £80; commission = £8.00. Seller discount plus platform discount is validated against the product subtotal (original product price × quantity) before either basis is calculated — an order where they'd exceed the subtotal is rejected outright, never floored or normalised into a plausible-looking but fictitious result.

Affiliate/creator commission is optional and seller-entered, and its VAT treatment is disclosed rather than modelled. A rate is only applied when the seller enters one — it is never assumed — and it must fall within TikTok's documented 1%–80% range; blank or exactly 0% means no affiliate arrangement applies. A supplied but invalid rate blocks the whole result rather than being silently treated as "not applicable". Whenever an affiliate commission is included, its VAT treatment isn't fully known — it depends on the individual creator and whether they issue a VAT invoice — so the result is disclosed as excluding a variable and downgraded to EXCLUDES_VARIABLE_FEES rather than reported as exact. See knowledge_id=7753826522334978.

No rate stacking; a manually entered rate is always disclosed as an assumption. An optional seller-specific promotional commission rate, when entered, entirely replaces the category rate — never added to or combined with it — and adds ASSUMPTION_DEPENDENT to the result's confidence, exactly like a manually entered rate for a category outside the verified schedule. An enabled-but-invalid promotional rate (blank, malformed, zero, negative, or above the allowed ceiling) blocks the entire result until corrected — it is never silently excluded while the rest of the calculation continues to look exact.

TikTok Shop fulfilment (FBT), ads, storage and return costs are a user-entered actual cash cost, not an automatically verified marketplace schedule. These have no published, verified fee schedule in this build's dataset, so — consistent with the existing "never guess" approach used elsewhere for the seller's actual shipping cost — they are entered as the total cash amount actually charged, including any VAT, rather than estimated. Including this amount always adds ASSUMPTION_DEPENDENT at minimum; a VAT-registered seller additionally sees a disclosure that potential VAT recovery on this entered amount is not modelled.

VAT-registered vs non-VAT-registered sellers. For a non-VAT-registered seller, the full VAT-inclusive commission is the correct cash deduction as published, with nothing left unmodelled — such a result can report EXACT_FOR_SELECTED_INPUTS. For a VAT-registered seller, the VAT embedded within the commission is not separated out or estimated — this build never derives a reclaimable VAT amount without the seller's own Platform Service Fee invoice — so the result is disclosed and downgraded to EXCLUDES_VARIABLE_FEES instead. The commission amount itself is identical either way; only the confidence/disclosure differs. Sources: knowledge_id=7753824408913665, knowledge_id=6837879071016706, and gov.uk/charge-reclaim-record-vat/reclaim-vat-business-expenses.

One source-data oddity preserved verbatim. The workbook's Pre-Owned category lists a subcategory using an unusual first character ("Ǫuartz Watches", U+01EA rather than a plain "Q"). That literal source value is retained for auditability; the calculator displays the corrected "Quartz Watches" as a tested alias, without mutating the underlying source record.

Official TikTok Seller Academy sources. Category commission workbook: https://seller-uk.tiktok.com/university/essay?knowledge_id=3315312175236897. Cross-referenced against knowledge_id=3337893683398432 (commission structure), knowledge_id=7753824408913665 (fee overview), and knowledge_id=7753826522154754 (affiliate/creator commission formula).

Vinted UK

Mandatory seller platform fee: £0. Confirmed on Vinted's own "How it works" page: "There are zero selling fees, so what you earn is yours to keep." Listing is also free. This is shown as a real, sourced £0 fee line rather than silently omitted, so the "zero fee" claim itself is auditable.

Buyer Protection: a documented conflict between two official Vinted pages, resolved in favour of the more specific one. The same "How it works" page states a simplified headline figure — "5% of the item price + £0.70" — for the mandatory fee Vinted charges the BUYER at checkout. Vinted's dedicated Buyer Protection help page and Price List instead describe a variable calculation: the fee "varies based on several factors, such as: item characteristics, order value, order type (a single item versus a bundle)" and "typically includes a percentage of the item's or bundle's price, as well as a fixed fee — usually 3% to 8% + £0.3 to £0.8." Because the specific, dedicated pages describe the real mechanism and the marketing page is an acknowledged simplification, this build does not hard-code "5% + £0.70" as an exact fee (see VINTED_BUYER_PROTECTION_MARKETING_SOURCE in src/data/vinted.fees.ts, kept only as a documented, unused reference). Instead, results show only the published "usually 3%–8% + £0.30–£0.80" range, clearly labelled as an indicative typical range — not an exact fee, quote or guarantee. The real figure is calculated and shown to the buyer by Vinted itself at checkout; it also includes VAT and excludes buyer-paid shipping and any optional Item Verification charge.

Buyer Protection is paid by the buyer and is never part of seller maths. It is not deducted from seller revenue, not added to seller fees, not presented as a seller charge, and not included in estimated profit, margin or ROI — it is surfaced separately, purely as context, on a dedicated field (buyerProtectionRange) that the shared calculation plumbing (buildResult) never sums into any total.

Bump and Showcase: an actual, user-entered cost — never invented. Vinted's Price List confirms these optional, seller-paid visibility services have no universal fixed price — "the applicable fee...will be shown to you at checkout." This calculator asks whether you paid for one and, if so, requires the actual VAT-inclusive amount — a blank, malformed or negative entry blocks the whole result with a clear inline error rather than silently becoming £0. VAT recovery on this entered amount is not modelled.

Shipping is never assumed. With Vinted's normal prepaid-label flow, the buyer purchases shipping directly through Vinted and the seller typically neither receives nor pays anything for it — so both shipping fields default to £0 and are relabelled "Shipping Amount You Received" and "Shipping You Paid Yourself" for Vinted. If a seller genuinely received or paid a real amount, they enter it directly; nothing is calculated on their behalf.

Private vs Pro. Vinted's Pro guide confirms professional sellers must register as a Pro Seller, can list for free (the same £0 mandatory-fee position as private sellers), but "the listing price must include all related taxes, this includes the VAT amount as well," and that "a special VAT margin scheme could be applied for second-hand items" — see HMRC's own VAT margin schemes guidance on that scheme. This calculator does not compute output VAT, the margin scheme, corporation tax, income tax or personal tax for a Pro sale — a Pro result always carries an explicit exclusion explaining that the correct VAT/tax treatment depends on the seller, the item, and whether a margin scheme applies, and is downgraded to EXCLUDES_VARIABLE_FEES accordingly. The general shared "VAT Profile" control (used by every other platform to model VAT on marketplace fees) is hidden for Vinted entirely, rather than left visible with a misleading meaning — Vinted charges no fees for it to apply VAT to in the first place.

Formulas used. Gross revenue = item selling price × quantity + shipping amount actually received by the seller. Estimated profit deducts item cost × quantity, actual seller-paid shipping, and any confirmed actual Bump/Showcase cost — never Buyer Protection. Verified 2 September 2026.

Coverage & what's not verified

eBay category coverage: 74 categories, all with a confirmed Final Value Fee. The complete published category schedule from the 4 August 2026 official page is implemented, including 9 categories that also carry a confirmed reduced 10p per-order fee. Any category genuinely not on eBay's published table (e.g. a brand-new or regional category not yet captured) still requires a manually entered rate — the calculator will never silently apply a guessed rate or an unearned fee reduction.

Amazon category coverage: 9 spec-verified, 43 audit-verified, 0 unverified. Every automatically selectable Amazon category is either 9 given verbatim in the original build brief and covered by acceptance tests, or 43 individually confirmed by name — rate, threshold mechanic and minimum fee — via targeted fetches of sell.amazon.co.uk/pricing during the 2026-08-16 follow-up audit, quoting each category's literal published wording to distinguish marginal ("portion of the total price") from whole-price-threshold ("products/items priced at/up to") categories. No category remains auto-selectable while unverified — see the automated test asserting this in the test suite.

Etsy VAT treatment is fee-specific. VAT (20% if no VAT ID is on file, 0% reverse charge if one is) is applied to the listing, transaction, Etsy Payments and Regulatory Operating fees, all of which Etsy's own help pages confirm are subject to this treatment. The currency conversion fee and Offsite Ads fee are shown ex-VAT with the uncertainty disclosed, because their specific VAT treatment could not be independently confirmed.

Amazon referral-fee VAT is not calculated. The Individual (£0.75/unit) and Professional (£25/month) fees are explicitly published ex-VAT, so 20% UK VAT is added to those. Referral-fee VAT treatment was not confirmed, so it is excluded rather than assumed.

Shopify billing VAT is not calculated at all. Check your Shopify invoice.

Etsy's Offsite Ads fee cap is modelled at US$100/order, converted to £ using the same explicit, editable USD→GBP assumption used for the listing fee.

TikTok Shop commission schedule: 343 category/subcategory rules, all confirmed. Every selectable category resolves to a confirmed 5% or 9% commission rate — none require a manual rate. A category genuinely outside the workbook (e.g. a new category TikTok adds later) still requires one, rather than a guess.

V1 explicitly excludes: Amazon FBA, TikTok Shop FBT/ads/storage/return fee schedules (entered as an actual cost, not calculated), Vinted Pro output VAT/margin-scheme/tax treatment (entered nowhere — deliberately not calculated), accounts/saved calculations, marketplace API connections, and non-UK seller jurisdictions.

Vinted UK: no mandatory seller fee to model beyond £0, and the Buyer Protection fee is never an exact figure by design. The only genuine calculation uncertainty is an optional, user-confirmed Bump/Showcase cost (never invented) — see the Vinted UK section above for the full sourcing and the resolved Buyer Protection conflict.

Arithmetic & rounding

All calculations run on arbitrary-precision decimal arithmetic (via decimal.js), not raw JavaScript floats. Individual fee lines are shown unrounded (e.g. £30 × 0.35% displays as £0.105) so the breakdown reconciles exactly against the total. Rounding to the nearest penny happens only at headline currency display (revenue, profit, totals) — never mid-calculation.

Confidence levels & precedence

Every calculation collects a signal for each fee decision it makes, then reports the single worst signal — never an average and never the happy-path default:

  1. Excludes variable fees (worst) — a fee that should apply is missing or its VAT couldn't be confirmed, and is excluded from the total rather than guessed. Outranks everything else.
  2. Assumption-dependent — every fee is calculated, but at least one line relies on a disclosed, user-controllable assumption (an entered processor rate, an unverified category, an FX rate).
  3. Exact for selected inputs (best) — every fee line is a verified rate applied exactly as published, with no exclusions or assumptions.

Because Shopify billing VAT and Amazon referral-fee VAT are always excluded, those two platforms can never report "Exact for selected inputs" — that is intentional, not a bug. TikTok Shop is the one platform where this varies: a non-VAT-registered seller can report "Exact for selected inputs" (the VAT-inclusive commission is the complete, correct cash figure for them), while a VAT-registered seller is downgraded to "Excludes variable fees" because the embedded VAT component isn't separated out — see the TikTok Shop UK section above.

Input validation

Negative prices/costs/shipping, zero or negative quantities, fractional quantities, malformed numbers, and invalid FX/processor/ manual-category rates are rejected with an inline error rather than silently converted to 0 or 1 — no calculation is shown until every field relevant to the selected platform is valid. A manually entered category rate of exactly 0% is rejected outright: it is never a real supported fallback value, only a missing one. For TikTok Shop specifically, an enabled-but-invalid promotional rate and a supplied (nonblank) invalid affiliate rate both block the whole result the same way, rather than being silently excluded while the rest of the calculation continues to look exact — and a seller discount plus platform discount that would exceed the product subtotal (original product price × quantity) is rejected outright, never floored or normalised.

← Back to calculator