Revenue Modelling
Cash-flow forecast for your Shopify store
If you run a Shopify store, your bank balance can swing hard from month to month: a big inventory order goes out, ad spend ramps, a payout lands a few days late. A cash-flow forecast is just a simple picture of what your balance will look like over the next few months — so nothing catches you off guard. You can build one in a spreadsheet in an afternoon. Here are the five steps.
Prefer to follow along with the finished sheet? Grab the free cash-flow forecast template for Shopify & WooCommerce — every formula in this guide is already wired up.
The four numbers everything else is built on
Before the grid, the inputs. You do not need a dashboard full of metrics to forecast a Shopify store — you need four numbers. Get these right and the forecast is roughly right; get them wrong and no amount of spreadsheet polish will save it. Here is what each one does to your cash, and exactly where to read it in Shopify.
1. Orders per month
The engine. Everything downstream — revenue, restocking, shipping, fees — scales with how many orders you ship. Track it monthly so you can see seasonality and the effect of promos.
In Shopify: Analytics → Reports → Sales over time (or the "Orders" metric on your Analytics overview). Read the last few complete months.
2. Average order value (AOV)
What each order is worth. Multiply it by orders and you have revenue. Small AOV moves — a bundle, free-shipping threshold, an upsell — flow straight to the top line without needing a single extra visitor.
In Shopify: Analytics → Reports → Average order value. If you can't see it directly, divide total sales by order count for the period.
3. Contribution margin per order
The number founders skip — and the one that decides whether growth helps or hurts. It's what's left from an order after the costs that scale with it: AOV − product cost − shipping − payment fee. If it's positive, every order funds the business; if it's thin, scaling ads just burns cash faster.
In Shopify: pull product cost from your cost per item field (Products → a product → Cost per item; the Profit reports use it), shipping from your carrier/Shopify Shipping, and fees at ~2–3%. Do the subtraction once per typical order.
| Per order (€) | |
|---|---|
| Avg order value | 58.00 |
| − Product cost | 22.00 |
| − Shipping | 5.00 |
| − Payment fee (2.7%) | 1.60 |
| Contribution margin | 29.40 |
Two stores with the same revenue can have wildly different cash flow. The one with a healthy contribution margin keeps cash after every sale; the one running on a 3% margin needs perfect timing just to stay level. Margin is the number that decides how hard you can push.
4. Refund & return rate
The quiet leak. A 10% return rate doesn't just cut revenue 10% — you often eat the shipping both ways and can't resell the item. Model it as a haircut on revenue: orders × AOV × (1 − refund rate).
In Shopify: Analytics → Reports → Returns (or "Refunds") over time, as a share of sales.
| Number | What it drives | Where in Shopify |
|---|---|---|
| Orders / month | Volume of everything | Reports → Sales over time |
| Average order value | Revenue per order | Reports → Average order value |
| Contribution margin | Cash kept per order | Cost per item + shipping + fees |
| Refund rate | Revenue actually collected | Reports → Returns |
| This month | |
|---|---|
| Orders | 920 |
| Avg order value (€) | 58 |
| Contribution margin / order (€) | 29.40 |
| Refund rate | 8% |
| Revenue (€) | 49,091 |
| Cash margin (€) | 24,884 |
Step 1 — Lay out your months
Open a spreadsheet. Put the next 12 months across the top row, and leave the left column for labels. Every number you enter lives under the month it actually happens in. That is the whole grid — revenue rows near the top, cost rows below, and a few summary rows at the bottom.
| Jan | Feb | Mar | |
|---|---|---|---|
| Revenue | |||
| Costs | |||
| Net cash flow | |||
| Cash at end |
Step 2 — Forecast your revenue (two ways)
This is the step that matters most, and you have two honest options. Pick the one that fits how much detail you want.
Take your last three months of Shopify revenue and carry the average forward, or add a modest monthly growth rate if you are clearly trending up. This is a "historical" forecast: it assumes next month roughly looks like the recent past. Perfect for a first draft.
Build revenue from the numbers that actually create it: orders × average order value × (1 − refund rate). Now you can plan a promo month by nudging orders up, or model a price change through AOV. This is a "driver-based" forecast, and it is far more useful once you want to steer.
| Jan | Feb | Mar | |
|---|---|---|---|
| Orders | 820 | 910 | 1,050 |
| Avg order value (€) | 58 | 58 | 60 |
| Refund rate | 8% | 8% | 7% |
| Revenue (€) | 43,755 | 48,558 | 58,590 |
orders × AOV × (1 − refund rate), copied across the months. (Option A is simpler still: one row, last three months' average carried forward.)Both are legitimate. Start with Option A to get a plan on the page today, and move to Option B when you want to test decisions. You can find all three inputs in Shopify Analytics — orders, average order value, and returns — which is what the four numbers above walk through.
| Jan | Feb | Mar | |
|---|---|---|---|
| Revenue (€) | 43,755 | 48,558 | 58,590 |
| Orders | 820 | 910 | 1,050 |
| Avg order value (€) | 58 | 58 | 60 |
| Refund rate | 8% | 8% | 7% |
| Costs | |||
| Net cash flow | |||
| Cash at end |
Step 3 — Add your costs
List your costs as separate rows so you can see what moves with sales and what does not:
| Cost | How to estimate it |
|---|---|
| Cost of goods (restocking) | Roughly your product cost × the orders you expect to ship |
| Shipping & fulfilment | Average label cost × orders |
| Payment fees | ~2–3% of revenue (Shopify Payments / PayPal) |
| Advertising | Your planned monthly ad budget |
| Fixed costs | Salaries, apps & subscriptions, rent — flat each month |
Notice the first three scale with orders, while the last row stays flat. Keeping them apart makes the next step honest. Each of these lines has its own short deep-dive — follow the links above for the exact formula behind restocking, shipping and payment fees, ad budget and fixed costs.
| Jan | Feb | Mar | |
|---|---|---|---|
| Revenue (€) | 43,755 | 48,558 | 58,590 |
| Orders | 820 | 910 | 1,050 |
| Avg order value (€) | 58 | 58 | 60 |
| Refund rate | 8% | 8% | 7% |
| Costs (€) | 39,000 | 62,000 | 47,000 |
| COGS (€) | 12,000 | 33,500 | 18,000 |
| Shipping (€) | 4,000 | 4,500 | 5,000 |
| Advertising (€) | 5,000 | 6,000 | 6,000 |
| Fixed costs (€) | 18,000 | 18,000 | 18,000 |
| Net cash flow | |||
| Cash at end |
Step 4 — Net cash flow and cash balance
Add a Net cash flow row (revenue minus all costs, per month). Then add a Cash at end of month row: start with what is in the bank today, and each month add that month's net. This bottom row is the one that matters — it shows the exact month your balance dips, and whether a big restock would take you under.
| Jan | Feb | Mar | |
|---|---|---|---|
| Revenue (€) | 43,755 | 48,558 | 58,590 |
| Orders | 820 | 910 | 1,050 |
| Avg order value (€) | 58 | 58 | 60 |
| Refund rate | 8% | 8% | 7% |
| Costs (€) | 39,000 | 62,000 | 47,000 |
| COGS (€) | 12,000 | 33,500 | 18,000 |
| Shipping (€) | 4,000 | 4,500 | 5,000 |
| Advertising (€) | 5,000 | 6,000 | 6,000 |
| Fixed costs (€) | 18,000 | 18,000 | 18,000 |
| Net cash flow (€) | 4,755 | −13,442 | 11,590 |
| Cash at end (€) | 24,755 | 11,313 | 22,903 |
A month can look profitable and still leave you short — inventory is paid up front, but the cash comes back only as you sell through. Always watch the cash balance row, not just revenue.
Step 5 — Keep it current (and add a downside)
A forecast is only useful if it stays fresh. Put a 20-minute reminder on the 1st of each month: drop in last month's real Shopify numbers, adjust the months ahead, re-read your ending cash. Each month you replace the oldest projection with what actually happened and extend one month further out.
| Jan | Feb | Mar | |
|---|---|---|---|
| Revenue (€) | 43,755 | 48,558 | 58,590 |
| Orders | 820 | 910 | 1,050 |
| Avg order value (€) | 58 | 58 | 60 |
| Refund rate | 8% | 8% | 7% |
| Costs (€) | 39,000 | 62,000 | 47,000 |
| COGS (€) | 12,000 | 33,500 | 18,000 |
| Shipping (€) | 4,000 | 4,500 | 5,000 |
| Advertising (€) | 5,000 | 6,000 | 6,000 |
| Fixed costs (€) | 18,000 | 18,000 | 18,000 |
| Net cash flow (€) | 4,755 | −13,442 | 11,590 |
| Cash at end (€) | 24,755 | 11,313 | 22,903 |
This is exactly the part a tool automates. Foreqast comes with the Shopify model already set up — orders, AOV and refunds sync in, the restocking, shipping and payment-fee lines are pre-wired, and both the historical and the driver-based revenue options from Step 2 are one click each. Same five-step forecast, kept current for you. It's an optional shortcut, not a requirement — the spreadsheet works fine too.
Here's the exact same five-step forecast living in Foreqast — the category rows and their drivers, with Shopify and Meta feeding the numbers automatically:
| Forecast | Jan 26 | Feb 26 | Mar 26 | Apr 26 | May 26 |
|---|---|---|---|---|---|
| Revenue | 43,755 | 48,558 | 58,590 | 52,293 | 54,427 |
| Shop revenue Σ orders × AOV × (1 − refunds) | €43,755 | €48,558 | €58,590 | €52,293 | €54,427 |
| Orders Shopify | 820 | 910 | 1,050 | 980 | 1,020 |
| Avg order value Shopify | €58 | €58 | €60 | €58 | €58 |
| Refund rate Shopify | 8% | 8% | 7% | 8% | 8% |
| Cost of goods | 11,200 | 11,480 | 12,740 | 14,700 | 13,720 |
| COGS (restocking) Σ prev-month orders × €14 | €11,200 | €11,480 | €12,740 | €14,700 | €13,720 |
| Avg purchase cost Manual | €14 | €14 | €14 | €14 | €14 |
| Marketing | 5,000 | 5,000 | 6,000 | 6,000 | 6,000 |
| Advertising driver-based | €5,000 | €5,000 | €6,000 | €6,000 | €6,000 |
| Ad budget | €5,000 | €5,000 | €6,000 | €6,000 | €6,000 |
| Other expenses | 9,400 | 9,400 | 9,400 | 9,400 | 9,400 |
| Other expenses last period | €9,400 | €9,400 | €9,400 | €9,400 | €9,400 |
| Net cash flow | €18,155 | €22,678 | €30,450 | €22,193 | €25,307 |
| Cash at end | €38,155 | €60,833 | €91,283 | €113,476 | €138,783 |
- Months across, lines down.
- Revenue: historical average, or orders × AOV × (1 − refunds).
- Costs: split the order-driven ones from the fixed ones.
- Two summary rows: net cash flow and ending cash.
- Update monthly to keep it current.
Forecast your store without the spreadsheet upkeep
Foreqast sets up the Shopify model from Step 2 for you and keeps your cash flow current automatically — historical or driver-based, your choice.
Get early access →No credit card required.
Prefer to read this on its own? Open the full article.