A wrong calculator is worse than no calculator. This page says exactly where each number comes from and what happens when it changes.
Every rate is transcribed by hand from the operator's own published fee page — not from a blog, not from another calculator, and not from a model's memory. Each tool links to its source and shows the date it was last verified against it.
| Tool | Source |
|---|---|
| eBay fee & profit | eBay — Selling fees |
| PayPal | PayPal — Merchant fees (US) |
| Stripe | Stripe — Pricing |
| Walmart | Walmart Marketplace — Referral fees |
| Square | Square — Processing fees |
The two comparison tools (eBay vs Walmart, PayPal vs Stripe vs Square) add no rates of their own. They read the same tables as the single-operator tools above, so a rate can never disagree between a tool and a comparison that includes it.
A monitor re-fetches each source page on a schedule, extracts the fee section, and compares it with the copy that was in place when the rates were last verified. It raises an alert in three cases, and the third one is the one that matters most:
That third rule exists because the failure mode of a rate monitor is not a false alarm — it is years of quiet, confident, wrong numbers.
A change monitor answers "has the source moved?". It does not answer "was the number copied correctly in the first place?" — and if it was copied wrong on day one, a monitor that sees no change stays silent forever. So a second check runs alongside it: every rate, tier boundary, fixed fee, minimum and cap in the tables here is looked for in the text of the operator's own page, in each of the formats that operator actually uses (a fee of forty-nine cents appears as "0.49 USD" on one page and "49¢" on another; a tier at seven thousand five hundred dollars appears as "$7,500"). Anything not found is reported for a human to re-check by hand.
That check carries its own control. Alongside the real numbers it looks for fabricated ones that are not in the tables. If a fabricated number is "found", the matcher is matching anything and the run is reported as inconclusive rather than as a pass. A check that cannot fail is not a check.
The fee engines are covered by a test suite of hand-computed cases — tier boundaries, threshold cliffs, the sneaker exemption, currency-specific fixed fees, reverse calculations and their round trips. The tests assert values worked out by hand from the published tables, not values produced by the code itself.
Found something wrong? The rate tables are plain JSON and each one names its source and its verification date: eBay, PayPal, Stripe, Walmart, Square.