Your courier app says "Delivered". In your head, the money has arrived.
But delivery and payment are two separate events, run by two separate systems, usually two to three weeks apart. And between those two events, parcels fall through the gap — delivered, cash collected from your customer, and then never appearing on any payment sheet you receive.
Nobody notices, because nobody is counting.
This guide is one thing only: how to count. It takes about 40 minutes the first time and 20 minutes a month after that. You need Excel or Google Sheets. No software, no signup, nothing to buy.
I do this every month for my own brand. Here is exactly how.
Azeem Amin
What you're looking for
Every month, some number of your delivered parcels never get paid for.
This is not usually theft. Couriers in Pakistan are pushing hundreds of thousands of parcels through systems that were not built for this volume. Settlement runs miss batches. Statuses fail to sync. Rows get dropped.
But the money is yours, and the only person who will ever notice it is missing is you.
In our data, 2 to 4 percent of delivered parcels have no corresponding payment entry in the month they were delivered. Some of it resolves the following month. Some of it never does.
On a thousand parcels a month averaging PKR 2,500, two percent is PKR 50,000. Every month.
The whole check is one question: of the parcels marked delivered last month, which ones do not appear on any payment sheet?
What you need
Two things, both a few clicks from your courier's portal. Pick one month to start — last month is ideal, because it has had time to settle.
1. Your delivered list. Every parcel with a status of Delivered for that month. You need at minimum: tracking number, delivery date, COD amount.
2. Your payment sheets. For every payment the courier sent you that month, there is a matching settlement sheet — depending on the courier it's called a CPR, a payment advice, or a remittance report. You need all of them. If you received four payments, you need four sheets.
If you cannot find either, email your account manager and ask. Both are standard reports and every courier has them.
Doing this for more than one courier? Run the whole check separately per courier. Never mix two couriers in one sheet — the tracking number formats differ and you will get false matches.
The check, step by step
Step 1 — Set up the file
Open a new spreadsheet with two tabs:
- Tab named
Delivered— paste your delivered list here - Tab named
Paid— paste every row from every payment sheet here, stacked one under the other
If you had four payments that month, all four sheets go into this one Paid tab. Do not keep them separate.
Step 2 — Clean the tracking numbers
This step matters more than it sounds, and skipping it is the single most common reason this check fails.
Excel does unhelpful things to tracking numbers. It strips leading zeros. It converts long numbers into scientific notation. It leaves invisible spaces from the export. Two files describing the same parcel can end up looking completely different to a formula.
In both tabs, add a new column called Clean and use:
=UPPER(TRIM(SUBSTITUTE(SUBSTITUTE(A2," ",""),"-","")))
Where A2 is your tracking number column. This strips spaces and dashes and forces uppercase so both sides match reliably.
Drag it down the full length of both tabs.
If your tracking numbers show as 2.26E+13 or similar, the column was read as a number. Select the column, format it as Text, then re-paste the original values before cleaning.
Step 3 — Match
In the Delivered tab, add a column called Paid?:
=IF(COUNTIF(Paid!D:D, D2)>0, "PAID", "NOT FOUND")
Where column D is the Clean column in each tab. Adjust the letters to match your own layout.
Drag it down.
Step 4 — Read the result
Filter the Paid? column to NOT FOUND.
Every row showing is a parcel that was delivered, whose cash was collected from your customer, and which does not appear on any payment sheet you received.
Sum the COD column for those rows.
That number is what you are owed.
What a normal result looks like
You will not get zero. That is not the goal, and a zero usually means the match is broken rather than perfect.
Rough expectations on a thousand delivered parcels:
| Not found | Reading |
|---|---|
| Under 1% | Very clean. Likely just month-end timing. |
| 1 - 3% | Normal. Worth listing and sending, but not alarming. |
| 3 - 6% | High. Send it to your account manager this week. |
| Over 6% | Something is wrong. Escalate, and check your match first. |
Before you escalate anything, sanity-check the match itself. If almost everything shows NOT FOUND, the problem is usually your formula or the cleaning step, not the courier. Pick one tracking number you know was paid, and search for it manually in both tabs. If it's in both but still showing NOT FOUND, the cleaning didn't work.
Timing is not a discrepancy
A parcel delivered on the 28th of the month will very often appear on the following month's payment sheet. That is normal — settlement runs on a cycle.
So before you send anything, check the delivery dates on your NOT FOUND rows. If most are clustered in the final week of the month, wait and re-check next month rather than raising it now.
The rows worth chasing are the ones delivered early or mid-month that still have no payment entry.
The reverse check
Now look the other way, because this one goes in the courier's favour and almost nobody checks it.
Filter your Paid tab for any row whose status contains return, RTO, cancelled, or refused.
Any of those showing a positive payment amount deserves a question.
Returned parcels sometimes appear on settlement sheets carrying their original COD value, even though the customer never paid anything. If a courier credits you for a return and later reverses it, your books swing twice and you will not know why.
Two minutes, and it catches a class of error that is genuinely hard to spot any other way.
How to raise it
Do not phone. Write, and make it easy to say yes to.
Copy this, fill in your numbers, and attach your NOT FOUND rows as a spreadsheet:
Subject: Payment discrepancy — [Month] — [N] delivered parcels not settled
Hello [Name],
I have reconciled our delivered parcels for [Month] against the
settlement sheets received.
[N] parcels show as Delivered in the portal but do not appear on any
settlement sheet. Total COD value: PKR [amount].
Settlement sheets checked: [reference numbers / dates]
Delivered list exported: [date]
The full list is attached with tracking numbers and delivery dates.
Please confirm the status of these and advise when they will be settled.
Thanks,
[Your name]
[Business name] — Account [number]
Two things make this work.
First, you have done the investigation for them. They don't need to reconstruct anything, so acting on it is cheap.
Second, and more important: you have demonstrated that you are counting. A seller who counts gets treated differently from a seller who does not. That reputation is worth more over a year than any single month's recovery.
Keep every reply. Patterns across several months are what turn a discrepancy into a negotiation.
Make it a habit
Once a month, on the 1st, for the previous month. Twenty minutes.
Keep one running sheet with one row per month:
| Month | Delivered | Not found | PKR at stake | Raised? | Recovered |
|---|---|---|---|---|---|
After three months this sheet tells you things a single month never can — whether one courier is consistently worse than another, whether a gap is growing, whether raised items actually get paid.
That last column is the one that matters. Raising a discrepancy and never checking whether it was settled is the same as not raising it.
If this is too much work
Everything above is done by hand and it is genuinely enough. Do it every month and you will be ahead of almost every seller in this market.
But it is twenty minutes a month, forever, and it is the first thing to get dropped when you are busy — which is exactly when the money goes missing.
I built ShipFox because I got tired of doing it by hand for my own brand. It connects your store and your couriers, reconciles every settlement automatically, and tells you month by month what each courier still owes you.
If you want to see what it finds in your numbers, book a call at shipfox.pk. Twenty minutes, nothing to buy.
And if you would rather just use this method — do that. It is genuinely enough.
Want the rest?
This is one chapter of a longer guide covering what every courier deduction actually means, how to cut your return rate, and how to work out which courier is really cheapest — including why the one with the lowest rate is often the most expensive.
Read it free: shipfox.pk/guide/where-your-money-goes
Written by Azeem Amin, founder of ShipFox. I run an e-commerce brand in Pakistan and built ShipFox because I needed it.
Found this useful? Send it to another seller. Most of them have never checked.
