How to work out your real profit on a single order, in rupees
Do it once by hand
The point of this page is not the total. It is that once you have done this on paper for one order, you will never again mistake the revenue figure for the money — and you will know exactly which four numbers your business does not currently record.
The figures below are an illustration with round numbers, not a claim about your business or an average of anyone’s. Substitute yours as you read.
Step 1 — what was ordered
Say the order is PKR 3,000 for two items, delivery charged at PKR 200, so the customer owes the rider PKR 3,200. Your analytics will record PKR 3,200 as revenue, today, and will continue to for ever regardless of what happens next.
Step 2 — what the goods cost you
Not the average across your catalogue: the cost of these two items. Say PKR 1,150. This is the one deduction entirely within your control and the one most often estimated. A product-level average quietly moves margin between your variants, so a large pack subsidises a small one and neither figure is true.
Step 3 — freight out
Charged when the parcel is picked up, priced by zone and weight. Say PKR 250 — note that you charged the customer 200 and paid 250, so delivery is a small loss on this order rather than a small profit. That inversion is extremely common and almost never visible.
Step 4 — what the courier withholds
The rider collects PKR 3,200 in cash. What reaches your account is less: couriers deduct withholding tax on the collected amount before remitting. At an illustrative 4%, that is PKR 128 you never see, deducted from money you never touched.
Step 5 — the arithmetic on a delivered order
| PKR | |
|---|---|
| Collected from the customer | 3,200 |
| Cost of the goods | − 1,150 |
| Freight out | − 250 |
| Withholding on the remittance | − 128 |
| Left, on this order | 1,672 |
PKR 3,200 of “revenue” is PKR 1,672 of money. Analytics reported the first number and can never report the second, because three of those four lines never touched your website.
Step 6 — the order that comes back
Now the same order, refused at the door. You collect nothing. You still paid freight out, you now pay freight home, and the packaging is spent. The goods return to stock, so their cost comes back — but nothing else does.
| PKR | |
|---|---|
| Collected | 0 |
| Freight out | − 250 |
| Freight back | − 250 |
| Packaging | − 40 |
| Left, on this order | − 540 |
This is why a return rate matters more than almost any other number in a COD business. At these figures it takes a delivered order and a third of another just to cover one refusal.
The four numbers most stores do not record
- Cost per variant, not per product, and frozen at the moment of sale so last year’s profit does not rewrite itself when a supplier price moves.
- What you actually paid the courier per parcel, which is a table by zone and weight, not the flat figure in your settings.
- Withholding, which is deducted from the remittance and so is invisible unless you reconcile the settlement file against your orders.
- Which parcels came back, and the fact that they cost freight twice while earning nothing.
Miss any one of them and your profit figure is too high. All four errors point the same way, which is why the number always looks better than the bank balance.
Questions people ask
- How do I calculate net profit per order?
- Collected amount, minus cost of the goods sold, minus freight out, minus any withholding deducted before remittance — and for returned parcels, minus freight both ways and packaging with nothing collected.
- Does courier withholding tax come out of my reported revenue?
- It comes out of the remittance, not out of the order. Your order says 3,200 and your bank receives less, and nothing in your website or analytics records the difference.
- Should I count a returned order as revenue?
- Not as revenue, but do not delete it either. The sale happened and the channel that brought it earned that, so a channel with a high return rate should look different from one without — deleting the order hides exactly that.
- What return rate can a COD store survive?
- It depends entirely on your margin, which is the point of doing this arithmetic. Work out what one delivered order leaves you, divide it by what one refusal costs, and that ratio is your answer rather than any published figure.
- Do I need software for this?
- No — do it by hand for one order, which is what this page is for. You need software when doing it for every order stops being possible, and that arrives sooner than most people expect.
- Why does my analytics revenue never match my bank?
- Because they are measuring different events weeks apart, minus deductions one of them cannot see. There are six specific reasons, and they are worth knowing individually.
Next
If the last answer is the one you wanted, why your revenue never matches your bank takes those six reasons one at a time. If you want the deductions in more detail than this page gives them, what a COD order actually costs follows the same money with the timing attached.
Written by Markazi Panel, which does the arithmetic in this guide for you — see a dashboard with a month of data in it, or ask anything at hello@markazipanel.com.
Read next
- What tracking COD profit in a spreadsheet actually costs youThe four places a profit spreadsheet goes wrong, and why every one of them errs in your favour.
- Free analytics is not free when every order is cashWhat a free analytics tool costs a COD business, measured in decisions rather than rupees.
- How to see traffic from ChatGPT and other AI assistantsWhy AI traffic hides inside 'direct', how to pull it back out, and the difference between being read and being recommended.