Fill in your sales, see totals and margins instantly, then download as CSV or print to PDF
Cost is your cost of goods sold for those units. Leave it blank if you only want revenue totals.
A sales report is a structured summary of what your business sold over a defined period, and what that selling actually earned you. At minimum it records units sold and revenue. A useful one goes further: it breaks the numbers down by product, channel, or rep, subtracts cost of goods sold to show gross profit, and compares the period against a target or the period before it.
The distinction matters because a revenue-only report tells you almost nothing. A month where revenue rose 12% while gross margin fell from 38% to 29% is a worse month than it looks, and you cannot see that without cost in the same table. The template above calculates margin on every line so the comparison is unavoidable.
If you want the theory behind the format rather than a blank template to fill in, our complete guide to sales reports covers report types, worked examples, and how to write the commentary that goes with them.
Every sales report, whatever the period, should answer five questions. These are the fields the template above generates:
| Element | What It Answers | Why It Matters |
|---|---|---|
| Reporting period | What window does this cover? | Without explicit start and end dates, two reports cannot be compared. This is the single most common omission. |
| Units sold | How much moved? | Separates genuine demand growth from price increases. Revenue can rise while volume falls. |
| Revenue | What came in? | The headline number, and the one that is most often reported alone. |
| Cost of goods sold | What did those sales cost? | Turns revenue into gross profit. Use our COGS calculator if you need to work this out per unit first. |
| Gross profit and margin | What did you actually keep? | The number that decides whether growth is worth having. See net sales margin for how this flows down to the bottom line. |
| Comparison | Better or worse than what? | A target, the previous period, or the same period last year. A number with nothing to compare it to is not a finding. |
| Commentary | Why did it happen? | Two or three sentences naming the campaign, stockout, or price change behind the movement. This is what makes the report actionable. |
The same template serves all three, but the granularity and the purpose change. Pick the preset that matches the decision you are trying to make:
| Report | Break Rows Down By | Decision It Supports | Comparison to Use |
|---|---|---|---|
| Daily sales report | Channel or store | Spotting a broken listing, a stockout, or a campaign spike while you can still act on it | Same weekday last week |
| Weekly sales report | Product or category | Reordering, promotion planning, catching a slow bleed on a hero SKU | Previous week |
| Monthly sales report | Channel and product | Margin review, budget tracking, deciding what to delist | Target and previous month |
| Quarterly or annual | Category or region | Range planning, supplier negotiation, headcount | Same period last year |
A practical note on daily reports: resist breaking a daily report down by individual product. At one day of volume most SKU rows carry too few units to mean anything, and the noise buries the signal. Channel-level rows are the right resolution for a daily view.
The template calculates most of these for you, but it is worth knowing what sits behind each one:
A template is the right tool when you are reporting monthly, selling on one or two channels, or building the habit. It stops being the right tool at roughly the point where compiling the report takes longer than reading it.
The usual trigger is channel count. One store is a five-minute export. Four marketplaces plus a website means four different report formats, four fee structures, and four definitions of what counts as a completed order, all of which have to be normalised before the numbers can be added together. That is a half-day a month that produces a report which is already out of date.
OneCart consolidates orders, inventory, and sales data from Shopee, Lazada, TikTok Shop, Amazon, Shopify, WooCommerce, and other channels into one dashboard, with fees and returns already accounted for. If you also need stock levels to reconcile against those sales, omnichannel inventory management covers how the two connect. In the meantime, this template will do the job perfectly well.
The sales report is one document in a wider set. These pair with it:
Yes, completely. There is no signup, no account, and no email required. Fill in the form, download the CSV or print to PDF, and you are done. The report is generated entirely in your browser, so your sales figures are never sent to us or stored anywhere.
Yes. The Download CSV button exports every line along with the calculated gross profit, margin, and share of revenue, plus a summary block with your totals, target attainment, and period-on-period growth. CSV opens natively in Excel, Google Sheets, Numbers, and LibreOffice, so you can reformat it, chart it, or paste it into an existing workbook.
Keep it to one screen. Pick the Daily Sales Report preset, break the rows down by sales channel rather than by product, and compare against the same weekday last week rather than yesterday, since weekday and weekend patterns differ sharply in ecommerce. Add one line of commentary naming anything unusual: a campaign, a stockout, a listing that went down. A daily report is an alerting tool, not an analysis tool, so anything that takes more than ten minutes to produce will not survive contact with a busy week.
A sales report records what already happened over a closed period. A sales forecast projects what will happen in a future one, usually built from historical sales, pipeline, seasonality, and planned promotions. They are complementary: the accuracy of your forecast is only as good as the historical reporting it is built on, which is why consistent report formats matter more than sophisticated ones.
Report net, and say so on the report. Gross sales flatter the numbers by ignoring returns, discounts, and marketplace commission, which on Shopee runs to about 15% to 25% of your selling price once transaction and service fees are included, and varies widely by platform and category on Lazada and TikTok Shop. If you report gross to yourself, you will make reorder and pricing decisions on money you never received. The template's cost column is the right place to capture per-unit costs; deduct platform fees from the revenue figure before entering it, or add a fee line of its own.
Monthly is the minimum for margin and budget review. Weekly is right for most ecommerce sellers, because it is frequent enough to catch a slow decline on a hero SKU while it is still fixable. Daily is worth it only if you have someone who will act on it the same day. The cost of over-reporting is not the time spent producing reports, it is that nobody reads any of them.
Selling on Shopee, Lazada, TikTok Shop, Amazon, and your own store? OneCart pulls orders, fees, and inventory from every channel into one place, so your sales numbers are consolidated and current without a single manual export.
Try OneCart Free →