Retail & e-commerce

Spreadsheet work for retail and e-commerce

Knowing which products actually make money after fees, returns and shipping — and holding the right stock to sell them.

Get your Excel job done

Send the file, not a brief. No call required.

Retail reporting almost always measures revenue and almost never measures contribution. The platform report shows a bestseller; the same product recomputed after payment fees, outbound shipping and its return rate can be the worst line in the catalogue. Most of what we build for retailers is that recomputation, once, correctly.

What we build for this sector

The four engagements that come up most often

Contribution reporting

  • Net margin by SKU, channel and cohort after fees, shipping and returns.

Inventory planning

  • Reorder points and safety stock derived from velocity and lead time, not guessed.

Multi-channel consolidation

  • Shopify, Amazon and marketplace exports reconciled onto one order table.

Promotion analysis

  • What a discount actually cost in margin, against the volume it actually moved.

What the worksheet looks like

The columns that carry the argument

Order lines with the deductions platform reports leave out of the headline figure.
ABCDEFG
1SKUUnitsGrossFeesReturns %Net/unit
2TSH-BLK-M1,24059,5202,67823.1%31.02
3MUG-CER3,18069,9603,1482.4%19.85
4HDY-GRY64046,0802,0748.8%56.41
5CAP-NVY91022,7501,0245.1%20.16

The calculations behind it

Why each one is written the way it is

  • =([@Gross]-[@Fees]-[@Shipping]-[@Returns])/[@Units] Net contribution per unit. A return does not net to zero — you keep the payment fee and the outbound shipping — which is why return-heavy products can lose money at a healthy gross margin.
  • =COUNTIFS(Orders[SKU],[@SKU],Orders[Returned],"Yes")/COUNTIFS(Orders[SKU],[@SKU]) Return rate by SKU. Above roughly 15% the cause is usually sizing or a misleading product page, not quality.
  • =ROUNDUP(AVERAGE(Sales[Daily])*LeadTime*1.2, 0) Reorder point from actual daily velocity and supplier lead time, with a safety buffer, rather than a number someone set once and never revisited.
  • =SUMIFS(Sales[Net],Sales[Cohort],[@Cohort],Sales[MonthsSince],"<="&12) Twelve-month value by acquisition cohort — the figure that tells you what you can afford to pay for a customer.

The bestseller that was losing money

A worked case from this sector

A clothing retailer ranked products by revenue and kept its top t-shirt in the top three all year. Recomputed on net contribution, it fell to eleventh: a 23% return rate meant roughly one order in four returned unrecoverable fees and outbound shipping. Adding a size chart to the product page cut returns to 14% within two months — a change that only became findable once returns were charged against the SKU that caused them.

Templates to start from

Free, and adaptable to your own data

Need it built around your data?

  • We work in your existing workbook
  • Fixed scope agreed before we start
  • Delivered within 24 hours

Questions from this sector

Specific to this work, not generic

Can you work with our Shopify or Amazon exports?

Yes. Both export at order level with fees and shipping reported separately from line items, which is the part that needs care — allocating an order-level fee across lines by value is the default, and by weight where you have it.

How do we handle returns that arrive months later?

Log the return against the original order date, not the date it arrived. Charging it to the current month makes every month look fine and the trend invisible.

At what point do we outgrow a spreadsheet for stock?

Around 50,000 SKUs, or as soon as you have multiple locations with transfers between them. Our inventory guide sets out the thresholds.