Packing list · pdf-lib

Packing list generator

Build a branded packing list PDF. Fill the shipper and consignee, the container details, one row per package type with dimensions and weights. The tool totals net and gross per the row count and outputs a customs-ready PDF in the Sourzi format.

Last updated 2026-05-09. Math runs in your browser, no data leaves your computer.

General guidance only, not legal or professional engineering advice. Verify against the cited primary sources (IMDG, REACH, ChAFTA, RCEP, Customs Tariff Act, supplier SDS, etc.) before committing to a shipment, declaration, or contract. Sourzi assumes no liability for outcomes based on these calculators.

The packing list pairs with the commercial invoice and the bill of lading. Same shipper, same consignee, same container number, same marks. Cargo description, package count, dimensions, and weights live here; price and HS code live on the commercial invoice.

Shipper

Consignee

Document header

Container and marks

Line items

One row per package type. Tool totals net and gross weight at the bottom.

Why the packing list is the cargo-side document

Customs at both ends works from three primary documents: the commercial invoice, the bill of lading, and the packing list. The packing list is the cargo-side view: it details what is physically in each container, what each package weighs, and what the dimensions are. Customs uses it for two purposes: physical inspection (does the cargo declared on the BL match what is actually in the container?) and volumetric checking (does the gross weight on the BL match the sum on the packing list?). When the two disagree, the cargo gets held for inspection.

Granularity matters. One row per package type is the right level for most cargo. A 25-tonne shipment of citric acid in 1,000 paper bags on 25 pallets is one row, not 1,000. The buyer customs broker reads "25 pallets, 1,000 paper bags total, 25 kg net per bag, gross 25,500 kg" and matches that against the BL gross weight. A row per individual bag would be unreadable and unmatchable. For mixed cargo (drums of NaOH plus IBCs of HCl in the same container), one row per product is the right granularity.

Net and gross weight are different concepts. Net weight is the cargo only; gross weight is cargo plus packaging plus pallet plus dunnage. For a 25 kg paper bag, net is 25 kg per bag; gross might be 25.4 kg (paper bag at 0.4 kg). For a 200 L drum filled with NaOH 50% solution, net is 252 kg (cargo); gross might be 274 kg (cargo plus 22 kg empty drum). The two numbers travel together through the BL and the VGM declaration; mismatches cause customs queries.

Dimensions per row matter most for LCL and air freight where the carrier bills on chargeable weight (the larger of actual and volumetric). The packing list dimensions feed into the chargeable weight calculation; without them, the forwarder either measures at the warehouse or estimates. For full-container loads, dimensions are less load-bearing on cost (the box is the box) but still help the destination broker plan the unstuffing.

Worked example. The package-count discrepancy

The booking. A US distributor receives 1 x 20GP of citric acid monohydrate from a Shanghai supplier. The commercial invoice says 25,000 kg net in 1,000 x 25 kg paper bags. The packing list says 1,000 bags, 25 pallets at 40 bags per pallet. The BL says total gross weight 25,400 kg. Container is sealed at origin. Looks fine on paper.

The failure. Cargo arrives at LA. US Customs runs an X-ray scan that estimates the package count at 1,008. Eight extra packages on a 1,000-package shipment is below the customs auto-pass threshold (typically 0.5 percent variance allowed). Cargo is flagged for physical inspection. The terminal opens the container; the cargo is unstuffed; an inspector counts every pallet and every bag. The actual count is 1,008 (the supplier added 8 sample bags as a free top-up that nobody told the buyer about). The cargo passes inspection but the count discrepancy adds 4 days of demurrage and a 600 USD CBP exam fee.

The fix. On the next shipment, the buyer asks the supplier to flag any free top-up samples on the packing list as a separate row ("8 free samples included"). The packing list now reads "1,000 bags + 8 sample bags = 1,008 total". The BL weight matches. CBP scan reads 1,008 and the customs system auto-passes. Cargo clears in 1 day. The supplier still adds the 8 samples; the document trail just makes the count explicit.

Frequently asked

What is a packing list and why is it separate from the commercial invoice?

A packing list is the cargo-side document; it details what is in each package, the gross and net weight of each, and the dimensions. The commercial invoice is the price-side document; it details the value, the HS code, and the buyer/seller. Customs at both ends needs both: the invoice for valuation and tariff classification, the packing list for physical inspection. The two documents share shipper, consignee, container number, and marks; everything else differs.

How granular should the packing list be?

One row per package type or per pallet, not per individual unit. A 25-tonne shipment of citric acid in 1,000 paper bags on 25 pallets is one row ("25 pallets, 1,000 bags total"), not 1,000 rows. The carrier and customs need package count and weight per row; they do not need a per-bag inventory. If you ship mixed cargo (different products in the same container), one row per product is the right granularity.

What weights go on the packing list?

Net weight (cargo only), gross weight (cargo plus packaging plus pallet), and the package count per row. Net and gross both go to the commercial invoice and the BL. The tool sums per-row weights to a total at the bottom of the document.

Should the packing list match the commercial invoice exactly?

Yes on shipper, consignee, container number, marks, and total weights. No on line-item detail; the packing list shows package count and dimensions per row, the invoice shows price and HS per row. They are different views of the same shipment. Customs holds get triggered most often when the two documents disagree on total package count or total gross weight.

Why include dimensions per row?

Forwarders need volumetric weight to compute chargeable weight on LCL or air shipments (see /tools/pricing-and-quoting/chargeable-weight-calculator). The packing list is the source-of-truth for dimensions; the BL inherits the totals. Without dimensions on the packing list, the forwarder either measures the cargo at the warehouse (slow) or estimates (often wrong).

What if the same shipment has DG cargo and non-DG cargo?

Use a separate packing list per BL. Most carriers issue a separate BL for DG cargo (different stowage, different declaration); the packing list follows the BL. Mixing DG and non-DG on one packing list is a common cause of customs holds at destination.