A practical guide for Shopify merchants checking Digidokaan, PostEx, and TCS invoices.
Bifrost Tech
A courier invoice can be read as a single number: the total arrives, it is compared with last month’s, and it is paid. Read that way, the line items underneath go unchecked, because checking them means rebuilding the courier’s own arithmetic, and that needs the rate card, the weights and the zone list in one place at the same time. This guide sets out how to reconcile courier shipping charges in Pakistan line by line, against your contracted rate card, using a spreadsheet and the contract itself.
When a freight line and your contract disagree, start with four inputs: the weight that was billed, the slab it was rounded into, the lane it was classified into, and the surcharges and the base they were applied to. A difference in any of them can arise without anyone doing anything deliberate, and each one can be checked. Where a difference comes from how a line was calculated, it repeats on every line calculated the same way, which is why the month, not the single consignment, is the unit worth checking.
This is a practical method for checking that invoice yourself, whether or not you ever use software to do it.
Two different exercises share the name “reconciliation” in Pakistani e-commerce, and completing one does not check the other.
COD settlement reconciliation asks: did the cash the courier collected from customers reach my account, minus the deductions we agreed? It compares delivered orders against remittances.
Freight invoice reconciliation asks a different question: was I charged the correct amount to carry each consignment, given my contracted rate card? It compares invoice lines against the contract.
A settlement report answers the first question only. It can balance exactly while individual freight lines inside it do not match the contract, because it compares remittances with deliveries, not charges with rates. This guide is about the second.
A freight line on a rate-card contract is built from four inputs. If you can reconstruct all four, you can verify the line. If any one is missing, you cannot — and that matters more than it sounds, because a line you cannot verify is not the same as a line that is correct.
Chargeable weight. This is not necessarily the weight on your booking slip. Where your contract has a volumetric clause, the actual weight measured at the courier’s hub is compared with a volumetric weight, derived from the parcel’s dimensions divided by a divisor written into the contract, and the higher of the two is billed. A light, bulky parcel is then billed on its size, not its mass. Our free tool works out chargeable weight in Pakistan from the divisor in your own contract, and shows the slab it rounds into.
The lane. Where the consignment went, expressed in the courier’s own model. A sector model derives the band from the origin–destination pair: within city, same province, province to province, with certain named cities sometimes treated as their own cases. A zone model assigns every city to a zone first, then prices on whether the origin and destination zones match. The two are not interchangeable, and a dispute calculated on the wrong model compares the line against the wrong price. Which model applies to you is set by your contract. Our page on how TCS shipping charges are calculated walks through a sector model, the guide to PostEx billing reconciliation walks through a zone model, and the page on how Leopards courier rates are structured explains why the lane model is a question for your own contract.
The slab. On a slab-based card, freight is priced in bands rather than per kilogram. A base slab covers everything up to a first threshold; above it, weight is charged in fixed increments, each carrying its own additional charge. The threshold and the increment are both set in your contract. Read them from there rather than assuming either.
The surcharges. Fuel adjustments, GST at the applicable rate, and any handling or COD service components. A rate card can quote its figures exclusive of tax and fuel, with those applied as separate invoice lines, or it can fold them into the quoted rate. Establish which basis yours uses before comparing anything, because it affects every line at once.
With the four inputs understood, the method is five steps. Each depends on the one before it, so take them in order.
Find the signed rate card, including its weight bands, its volumetric divisor, and its stated treatment of fuel and GST. A rate quoted in a sales conversation is not something you can reconcile against; the signed card is.
If you cannot locate this document, stop here and ask your courier account manager for it in writing. Every subsequent step compares against it, and a reconciliation without a contract is just a description of what you were charged.
Export the invoice and export your orders, then join them on the consignment or tracking number. The checks that come before this join, and five ways it can break, are set out in our guide to matching each invoice line to your orders.
Do not join on order value. Order totals and freight amounts diverge for legitimate reasons — partial deliveries, exchanges, adjustments — and a value-based match can silently pair the wrong rows. The consignment number identifies one parcel on both sides, which an amount cannot.
Before you join, check how each side writes its references. Shopify order names carry a # prefix; if the invoice records the same reference without it, or your export and the invoice otherwise format it differently, the two will not match as written. Normalise both sides first, and do the same for city names wherever one city can be written more than one way.
If the invoice comes from an aggregator, start with attribution. Each line has to be traced to the courier that carried it before it can be priced, because each courier on the network can be priced on its own section of the rate sheet. Our page on reading a Digidokaan invoice explains why attribution comes before verification.
Then, for each matched consignment, take the chargeable weight — the volumetric weight calculator will work it out for a single parcel — and find its band on your rate card. Apply the right formula, because there are two and they are not the same.
Inside the base slab, the slab rate is the entire freight charge. No increment is added; any surcharges your contract applies sit on top, as covered above.
Above the base slab, the charge is the top slab rate plus a number of increments — the weight above the threshold, converted into whole increments in the way your contract specifies, multiplied by the additional charge per increment.
The spreadsheet error easiest to make here is applying the increment logic inside the base band. It distorts every expected figure in that band and produces a list of apparent differences that come from your own arithmetic, not from the invoice.
Finally, check how your contract rounds. Where it rounds up to the next whole increment, a consignment fractionally over a threshold is billed as though it sat at the top of the next band, and there is no partial increment.
Sort the differences you find into two piles, because they are different arguments with different evidence.
A weight dispute with a courier says the billed weight does not match what your packed parcel and your contract support. The evidence is your packed dimensions and weight, and the divisor in your contract.
A zone dispute says the lane was classified into a different band from the one your contract gives it. The evidence is the origin and destination on the consignment, and the courier’s own coverage or zone list.
Raise them separately. Each rests on different evidence, and a claim that mixes the two is harder to assess on either point.
There is a third pile, and it is the easiest one to lose track of: unresolved lines. If the origin city is missing from the invoice, or the destination is not on the coverage list you hold, that line has no computable expected charge. It is not correct and it is not overcharged — it is unknown. Put it in its own bucket. A reconciliation that quietly drops unresolved lines and reports everything else as clean is worse than no reconciliation, because it produces confidence rather than information.
Check whether your contract sets a window for raising billing disputes and, if it does, the date it is counted from. The invoice date and the date you noticed a problem are different dates, so read which one the clause names. Take the length of the window from your own agreement rather than assuming it.
Sort your findings by date before you sort them by size. A large claim outside the window may not be considered at all; a small one inside it can still be raised.
Before a dispute leaves your outbox, test it against three errors that produce a difference where none exists.
Comparing across tax treatments. If your rate card is quoted exclusive of GST and the invoice line includes it, every line will appear higher than the card by the applicable rate. Establish which basis each side uses before comparing anything.
Applying increments in the base band. Covered above, and worth re-checking, because it produces a very convincing list of wrong answers.
Rounding noise. If your calculation and the invoice round at different points — per component, per line, or on the total — they can differ by a small amount with no error on either side. Set a tolerance and treat anything inside it as matched. Disputing rounding noise costs you credibility on the claims that matter.
The method above needs nothing more than a spreadsheet and the contract, and for one courier and one month it is a contained piece of work.
What changes with volume is the repetition, not the method. The same work recurs with every invoice. If you use more than one courier, each billing file may have its own layout and its own portal to collect it from. City names and order references have to be normalised again each time. For an accounts department already handling the reconciliation of payments, that is an added burden, and a month that is skipped is a month in which the claim window can close before anyone has checked.
That is the point at which automating it is worth considering — matching consignments to orders, applying the right slab and lane model per courier, and flagging the differences with the unresolved lines kept visible rather than hidden.
Pak Shipping Recon does this for Shopify stores billed directly by TCS, PostEx, Leopards or M&P, and for aggregator invoices where several couriers appear on one document. The free plan covers your first 100 orders.
The weight your courier bills you on. Where your contract has a volumetric clause, it is the higher of the parcel's actual weight, measured at the courier's hub, and its volumetric weight, calculated from its dimensions divided by the divisor stated in your contract. A parcel that is large for its mass is therefore billed on its size.
Check four things first: whether the hub measured a higher weight than your booking slip declared; whether the weight rounded up into the next slab; whether the lane was classified into a different zone or sector than you expected; and whether your rate card is quoted before fuel and GST while the invoice includes them.
Your contract is the place to look. Find any clause that sets a window for billing disputes, and note the date it is counted from, which may be the invoice date rather than the date you found the problem. Then sort disputes by date before size, because a claim raised after the window has closed may not be considered at all.
COD reconciliation checks whether the cash collected from your customers reached your account. Freight reconciliation checks whether the amount charged to carry each consignment matches your contracted rate. A settlement report can balance exactly while individual freight lines inside it still differ from the contract.
Not directly. An aggregator invoice can contain consignments carried by several different couriers, and its rate sheet can price each of them separately, so every line must first be attributed to the courier that actually carried it. Checking a line against the wrong courier's slab is not a check at all.
Checking a whole month by hand? Pak Shipping Recon matches consignments to their orders, checks each line against your contracted rate card, and keeps unresolved lines visible. Free for your first 100 orders.