Commercial Invoice vs Packing List: What to Check
The commercial invoice says what the goods are worth and the packing list says how they're packed, and customs, carriers and your own systems expect the two to agree. This guide goes field by field through what to compare, why the two documents drift apart, and which differences should stop a shipment.
Updated: November 4, 2026 • Audience: trade operations, customs and logistics teams who receive invoices and packing lists from suppliers
A commercial invoice is the seller's bill for the goods. It names the seller and the buyer, describes each item and gives its quantity, unit price and value, and customs uses it as the starting point for the value it charges duty on. A packing list describes the same shipment physically: what each carton or pallet contains, the marks and numbers on it, and its net and gross weight. Carriers and forwarders plan the move from the packing list, warehouses receive against it, and customs reaches for it when it opens a container to see what's inside.
Because the two documents describe one shipment from two angles, every figure they share has to agree. When they don't, the problem tends to surface at the worst moment, as a broker's query the day the vessel arrives, a declaration filed with the wrong weight or a goods receipt that won't reconcile. This guide goes through the fields the two documents share, what to compare on each, why they drift apart in the first place, and how teams decide which differences should stop a shipment and which only need a note.
The difference at a glance
| Commercial invoice | Packing list | |
|---|---|---|
| What it records | What was sold, to whom and for how much | How the goods are packed and what each package holds |
| Who uses it | Customs for value, duty and statistics, the buyer's accounts payable, banks under a letter of credit | Carriers, forwarders and warehouses, and customs when it inspects the goods |
| Values | Unit prices, line totals, invoice total, currency and Incoterm | Usually none, although a combined invoice and packing list carries both |
| Quantities | In the unit the goods are sold in | In packages, with the quantity inside each one |
| Weights | Sometimes per line, often only as totals, sometimes not at all | Net and gross per package or line, with totals |
| Where it comes from | The billing or ERP system, built from the sales order | The warehouse, built from what was picked and packed |
That last row explains most of what follows, because the invoice is written from what was ordered and the packing list from what was packed, so any change between the two moments shows up as a difference between the documents.
What to compare, field by field
The table lists the fields that both documents usually carry. Not every invoice and packing list will have all of them, and a field that's missing on one side is worth noting in its own right, because it means that point can't be verified against the other document.
| Field | What to compare | Why they often differ |
|---|---|---|
| Invoice reference | The packing list quotes the invoice number it belongs to | The packing list was made before the invoice, or quotes a PO or delivery number instead |
| Seller, buyer and consignee | Names and addresses of each party | Two legal entities in one group, a delivery address used as the buyer, abbreviations |
| Item codes and descriptions | The same items, with descriptions that mean the same thing | The invoice uses the sales catalogue's wording and the packing list the warehouse system's |
| Quantity per line | The same quantity per item, in the same unit of measure | Cartons on one and pieces on the other, or one item split over two batches |
| Total quantity and packages | Header totals that equal the sum of the lines, with packages and quantity kept apart | A "total quantity" field that actually holds the number of cartons |
| Net weight | The same net weight per line and in total, and lines that add up to the total | Rounding, or weight per carton on one document and per line on the other |
| Gross weight | The same totals, and gross above net on every line and in total | Pallet weight added on one document only, or a typing error |
| Marks and package numbers | Shipping marks and number ranges (1 to 24, say) that match the packages shipped | Marks copied over from an earlier shipment |
| HS codes | The same code for each item, at the same number of digits | One document uses the export code and the other the import code, or 6 digits against 8 or 10 |
| Country of origin | The same origin for each line | Origin stated once for the whole invoice on one document and per line on the other |
| Incoterm | The same rule and named place, and freight or insurance charges on the invoice that fit the rule | A different rule or place on the packing list, or main freight added to an invoice whose Incoterm leaves it to the buyer |
| Currency and value | If the packing list shows values, the same values in the same currency | A combined document edited in two places |
When there are more than two documents
The set that arrives from a supplier isn't always an invoice and a packing list. It can be an invoice with a delivery note, an invoice with a shipping advice, all three together, or a single PDF with everything in it and nothing titled. The customs team at one consumer goods manufacturer we work with put the rule simply: whatever arrives, everything has to match. With three documents, that means comparing each one against the invoice and the packing list against the delivery note as well, because two documents that each agree with the invoice within tolerance can still disagree with each other.
Checking that every document is there matters just as much. When a supplier sends two invoices and one packing list, the comparison that does run will look fine, and the problem is the packing list that never arrived. Counting the documents expected for each invoice, per supplier or lane, catches the gap before anyone starts comparing figures.
Mismatches worth looking for
Packages read as quantity
Packing list headers usually carry both a total number of packages and a total quantity, and the two get swapped. A total quantity that's really the number of boxes looks plausible, and it'll even match an invoice built from the same packing list, but it's the wrong figure for the declaration. The check that catches it compares the header total with the sum of the line quantities, and it was one of the first a customer's customs team asked us for.
Lines that don't line up
An invoice might have one line per batch while the packing list has one line per material, so an item shipped from two batches shows up as two invoice lines and one packing list line. Compared line by line, everything after that point looks wrong. The batch lines have to be summed before they're compared, and the invoice is normally the better source for the line structure, because it's what customs values and what the declaration is built from.
Weights that don't add up
There are three things to check on weights: that the net weight is below the gross weight on every line and in total, that the line weights add up to the totals on each document, and that the totals agree between the documents. Some invoices carry no weights at all, and the weight per line then has to come from the packing list or delivery note, which is its own small calculation when the lines aren't broken down the same way. We've written about that in automated weight distribution.
Documents that don't share a reference
Pairing an invoice with its packing list is easy when the packing list quotes the invoice number, but often it doesn't. The invoice carries the buyer's PO number and the packing list carries a delivery number or a reference the buyer uses internally, so there's no single field that links them. They can still be paired on the items and quantities, which works in most cases but is less certain, so a pairing made that way deserves a second look before anything else is checked against it.
Which differences should stop a shipment
Some differences matter far more than others. A net weight that's 40 kg out goes straight into the customs declaration, while a seller written as "Ltd" on one document and "Limited" on the other changes nothing. Teams that check documents at volume decide this field by field, and some of the teams we work with arrive with the decision already made, as a list of which fields are hard stops and which only raise a warning.
The fields that usually end up as hard stops are the ones that feed the declaration directly: item or material code, quantity, value, and net and gross weight. One customs team told us they expect these fields to be right every time, because a wrong material code, quantity or value has consequences with the customs authority. Party names and addresses, descriptions and invoice references are more often warnings, which a person looks at but which don't hold the shipment on their own.
Two settings make this workable in practice. The first is tolerance, since weights rarely match to the gram and a small difference, set as a percentage or an absolute value, shouldn't block anything. The second is what happens at a hard stop. The shipment's data is held until someone decides whether the supplier has to reissue the document or the difference can be accepted with a reason recorded. Holding a document usually costs an email to the supplier, which is far cheaper than correcting a declaration after a wrong weight or value has gone into the customs system or ERP.
Checking at volume
When a team receives hundreds of document sets a week, these checks stop being something a person can do on every shipment, and they end up being done on a sample or after something has gone wrong. Sail, Portmind's trade document validation product, reads the invoice, packing list and any delivery note or transport document as they arrive, in whatever layout the supplier uses, and runs these cross-checks before the data goes on to your customs software or ERP.
Out of the box, differences between the invoice and the packing list in net weight, gross weight, quantity and total value are hard stops, and differences in parties, addresses, HS codes and the invoice reference raise warnings. Your team can change any of those, set tolerances in percent, and add checks of its own, such as package counts or volumes. When a hard-stop check fails, the shipment is held, and if the supplier has to correct a document, Sail drafts the email listing each difference with the values it found on both documents, for your team to review and send.
Templates and requirements
If you're producing these documents yourself, the commercial invoice and packing list generator builds both from one form so that they agree from the start, and there are Excel and Word templates for both on the same page. What the invoice itself has to contain for customs in the EU, Switzerland, the UK and the US is covered in commercial invoice requirements.