RETURNS POLICY COST ANALYZER · RUNS IN YOUR BROWSER

What do returns really cost your store?

Paste your orders — category, subtotal, amount refunded — and see what each return costs you, which categories lose money once returns are counted, and whether a return fee or restocking fee would pay.

Nothing is uploaded and no store is contacted. The text box is analysed in this browser and never leaves your device. Two behaviours — a fee talking buyers out of returning, and buyers leaving at checkout because of it — cannot be read from past orders, so you set them and the result shows how much they matter.

1. Paste your orders

Prefer a CLI, or want a CI check?

Same logic, zero dependencies, one command — reads a file or stdin:

node cli.mjs analyze orders.csv
cat orders.csv | node cli.mjs analyze -
node cli.mjs analyze orders.csv --margin 45 --out-ship 6.5 --resale 70 --days 90
node cli.mjs analyze orders.csv --deterrence 0.5 --drag 5 --json --fail-on warn

Get cli.mjs and engine.mjs — Node 18+, nothing to install, no network call. More: What a return really costs, and when a return fee pays.

What's recognised

InputHandling

Deterrence and checkout drop-off are assumptions you set (defaults: a fee worth 10% of the order prevents 10% of its returns; 3% of buyers do not check out when a return fee worth 10% of the order is shown, more for bigger fees); exchanges, store credit, repeat purchases and lifetime value are not modelled; margin is the profit share of merchandise before shipping and fees.

Common questions

Does this connect to my store?

No. It reads the order rows you paste and never contacts Shopify, WooCommerce, Etsy, Amazon or any carrier. Every figure is arithmetic on your numbers plus two behaviours you set, so nothing here is a measurement of your customers.

How do I get the numbers?

Export orders from your store with the product category, the merchandise subtotal and the amount refunded. In Shopify the orders export carries Subtotal and Refunded Amount; the return label cost comes from your carrier report and is optional. Orders that were not returned get a refund of 0.

What counts as the cost of a return?

The outbound shipping you paid and cannot recover, the return label, the time to receive and inspect it, the share of returned goods you cannot resell, and the card fee, which processors generally keep when you refund. The margin on the sale is gone too, so a returned order is usually a loss, not a zero.

Would a return fee or restocking fee pay?

It depends on two things past orders cannot tell you: how many returns the fee talks buyers out of, and how many buyers it scares away at checkout. You set both, and the tool shows the drop-off at which each policy breaks even and the policy that loses least if your guesses are off.

Is my data uploaded anywhere?

No. The browser page runs on the text in your own browser and never sends it anywhere. The CLI reads a local file or stdin and makes no network call.