FlowParse
Tool August 2026 16 min read

Customs and Import Documentation

A commercial invoice, a packing list and a customs entry describe the same shipment, prepared by different people, on different timelines, rarely checked against each other line by line. Here's how they're read and matched before a broker or an audit has to ask.

FlowParse
flowparse.io
flowparse.iono sound needed
0:00 / 0:00

Where the real work is

Once a customs broker has everything they need, filing an entry and calculating duty is fast — the classification and the math aren't where the time goes. What consumes the time is everything before that: a commercial invoice from an overseas supplier, a packing list that doesn't quite match it, a bill of lading, and a broker's entry summary that has to reconcile against all three.

And in the middle sits a question no document answers on its own: does the invoice value the broker used to calculate duty actually match what your accounting records show as paid? That question doesn't get answered by glancing at a total — it gets answered by reading every line and checking it against the entry.

This page describes the mechanical part — turning a shipment's scattered paperwork into reliable, matched rows — and says clearly where reading stops and your customs broker's judgment begins.

FlowParse
flowparse.io

Why import paperwork is harder than it looks

A commercial invoice arrives in whatever format the overseas supplier uses — no two suppliers lay one out the same way, and many arrive as scans or photos rather than clean PDFs. A packing list from the same shipment often uses different line groupings than the invoice, and the broker's entry summary comes back in a format specific to their own filing software.

Treating these as three unrelated documents, checked separately if at all, misses exactly the failure mode that matters most: a value on the entry that doesn't trace back cleanly to the invoice that should have supported it — the specific comparison covered in duty and tariff reconciliation— discovered, if it's discovered at all, during an audit rather than before filing.

FlowParse
flowparse.io

What this doesn't do, stated up front

Doesn't file anything

No connection to any customs authority. Filing stays with your licensed customs broker.

Doesn't calculate duty

Reads the values already on your documents and lays them out clearly. The duty calculation itself is a broker function.

Doesn't assign HS codes

Classification carries real compliance consequences if it's wrong. This reads whatever code is already on the document and flags where none is present.

Isn't a system of record

The source documents remain yours to retain — extracted data is deleted immediately after processing.

Doesn't give customs or trade advice

No classification guidance, no duty-rate interpretation, no compliance opinions. That's your broker's role.

What's left is narrower, and it's exactly the part nobody else does for you: turning a shipment's mismatched paperwork into something usable, without losing anything along the way that a broker or an auditor will need later.

What gets read

FieldWhere it comes fromIf it's missing
Supplier and buyer identificationThe documentThe invoice can't stand as a customs document
Invoice value, per line and totalThe documentNothing to reconcile duty against
HS code, where presentThe documentFlagged as missing, never guessed
Country of originThe documentDuty rate and trade agreements can't be confirmed
IncotermThe documentWhether freight and insurance belong in the dutiable value is unclear
Source file and pageThe read itselfA query months later means reopening every document by hand

Five of the six are on paper and can be read. One — HS code — is frequently absent from the commercial invoice entirely, because classification is the broker's job, not the supplier's, and that absence is exactly the kind of gap this reading surfaces rather than papers over.

FlowParse
flowparse.io

Commercial invoice vs. proforma invoice

A proforma invoice is a pre-shipment estimate — sent before goods ship, used for quoting or arranging payment, not a customs document. A commercial invoice is the final, actual invoice for goods that shipped, and it's the document customs valuation is based on. Treating the two as interchangeable is a common and costly mix-up.

The distinction matters because a proforma's values can differ meaningfully from what actually shipped — quantities change, prices get renegotiated, partial shipments happen. Reading each document by its own label and structure, rather than assuming any invoice-shaped PDF is the commercial invoice, is what prevents a proforma's estimated figures from silently becoming the basis for a duty calculation.

FlowParse
flowparse.io

HS codes, read but never assigned

When a commercial invoice or a broker's paperwork already shows an HS code, it's read and carried through exactly as printed — no reinterpretation, no correction based on what a similar product's code usually looks like.

When no code is present — common on invoices from suppliers who leave classification entirely to the broker — that gap is flagged rather than filled with a guess. Classification is a compliance decision with real financial and legal consequences if it's wrong, and that decision belongs with a licensed customs broker, not a document reader.

FlowParse
flowparse.io

How it works

1

Upload the shipment's documents

Commercial invoice, packing list, bill of lading and broker entry summary, in whatever formats they arrive.

2

Every document is read

Values, HS codes where present, country of origin and Incoterm, for each line.

3

The documents are matched

Invoice lines checked against the entry summary, with mismatches flagged for review.

4

Export

Excel, CSV or JSON, with every value traceable back to its source document.

FlowParse
flowparse.io

A shipment, in practice

One container shipment, 42 line items across a commercial invoice and a broker entry summary.

ResultLine items
Matched, high confidence38
Minor value discrepancy, resolved as a rounding difference3
Genuine mismatch, flagged1

42 line items, one genuine mismatch — a line item where the entry summary's declared value was roughly 8% higher than the commercial invoice, traced to a freight allocation that had been added into the goods value rather than kept separate. Caught before the duty payment was finalized, not discovered months later during a post-entry review.

FlowParse
flowparse.io

A shipment routine that holds up

Per shipment · collect

Commercial invoice, packing list and bill of lading, gathered as the shipment moves, not weeks later.

Per shipment · read

Every line item extracted with its source document, not just a header total.

Per shipment · match

The entry summary checked against the invoice as soon as the broker returns it.

Monthly · reconcile duty

Every entry for the period checked against invoiced value, flagging anything that drifted.

Monthly · export

To your ERP or finance team, with source documents traceable on every line.

Ongoing · archive

Original documents kept in your own retention system — that stays outside this tool.

Per shipment rather than monthly is the one cadence change that actually matters — a discrepancy caught while the shipment is still fresh in everyone's memory gets resolved in minutes; the same discrepancy discovered during a quarterly review gets resolved after someone spends an afternoon reconstructing what happened.

Six common mistakes

Treating any invoice-shaped PDF as the commercial invoice

A proforma's estimated values can end up as the basis for duty if the two aren't distinguished carefully.

Never cross-checking the entry summary against the invoice

A value that drifted during broker processing goes unnoticed until an audit forces the question.

Accepting a missing HS code silently

A gap in classification data is exactly the kind of thing that should be visible, not absorbed into a total that looks complete.

Losing track of which Incoterm applied

Whether freight and insurance belong in the dutiable value depends entirely on this, and it's easy to lose track of across many shipments.

Batching document review until month-end

By then, nobody remembers the specific circumstances of a shipment from three weeks ago.

Keeping only the final numbers, not the source documents

A total with no traceable source is a claim, not evidence, the moment anyone asks where it came from.

Why the Incoterm changes what to track

Whether freight and insurance belong inside the dutiable value depends on which Incoterm governed the sale. Under an FOB (Free On Board) term, the invoice value typically excludes freight and insurance, which then get added separately to reach a CIF (Cost, Insurance, Freight) basis for duty. Under a CIF term, they're often already included in the invoice value.

Reading the Incoterm off every commercial invoice, and keeping it as its own field rather than assuming every shipment from the same supplier uses the same term, is what prevents freight from silently getting added twice — or never being added at all — when duty is calculated.

FlowParse
flowparse.io

Building toward landed cost

Landed cost — the true cost of a product once it's in your warehouse — adds freight, insurance, duty and customs clearance fees to the invoiced goods value. Getting it right depends entirely on the underlying fields being read accurately and kept separate, not merged into a single number too early.

This reading produces exactly those separated fields — goods value, HS code, country of origin, Incoterm — as clean inputs. The actual landed cost calculation, with its own business rules about how overhead and clearance fees get allocated, is a finance function that sits on top of this data, not something this reading performs itself.

FlowParse
flowparse.io

The shipment with no matching entry

A commercial invoice with no corresponding customs entry on file is the most expensive gap in this whole process, and the quietest one — nothing about a missing entry announces itself the way a rejected filing would.

The only reliable way to see it is to compare the full list of commercial invoices received against the full list of entries filed for the same period. Invoices with no matching entry are exactly the list that matters, and it's a comparison that has to be made deliberately — it never surfaces on its own.

FlowParse
flowparse.io

What your broker's system already does

A reasonable question at this point: if the customs broker already has software for filing entries, what's missing?

A broker's system handles everything downstream of the entry being filed correctly — the classification, the duty calculation, the submission itself. What it doesn't solve is getting clean, matched data to the broker in the first place, or checking the broker's output against your own invoice records after the fact.

This doesn't replace anything you already use. It covers the stretch before and after the broker's filing — turning scattered shipment paperwork into matched rows, and checking the entry summary against the invoice once it comes back.

How you know a shipment file is complete

Does every line item on the commercial invoice have a corresponding line on the entry summary?

Is the HS code present for every line, or explicitly flagged where it's missing?

Does the Incoterm match what's expected for this supplier, or is a change explained?

Are there any bank payments to this supplier with no matching invoice on file?

Four questions, all answerable in minutes once a shipment is in table form. Over a folder of scattered PDFs, none of them ever really get answered.

When one entry covers several suppliers

A consolidated shipment — several suppliers' goods combined into one container by a freight forwarder — files as a single customs entry backed by multiple commercial invoices, one per supplier. Reconciling that entry means matching each invoice to its own portion of the declared value, not treating the entry total as a single figure to check against a single document.

The freight forwarder's consolidation manifest is the document that ties the individual invoices to their share of the entry — and it's worth keeping alongside the invoices themselves, since without it a later question about why one supplier's goods show a particular value on the entry has no starting point to answer from.

Consolidation also changes who to contact when something doesn't add up. A discrepancy on a consolidated entry may trace back to the forwarder's allocation of shared freight costs across suppliers rather than to any single supplier's invoice — worth checking before assuming the gap sits with the supplier whose invoice happens to be easiest to review first. Keeping each supplier's allocated share on record, not just the combined figure, is what makes that first check possible without contacting the forwarder every time.

FlowParse
flowparse.io

Where to start

Take one shipment you've already cleared — commercial invoice, packing list and the broker's entry summary — and read them together as a test.

Don't correct anything yet. Just check two things: does every invoice line have a matching entry line, and how many line items are missing an HS code. That second list is usually short, and it's exactly what decides whether your import documentation is actually complete.

FlowParse
flowparse.io

Frequently asked questions

Read a shipment's paperwork now

Upload a commercial invoice and entry summary and see how they're matched — no signup required.

Related reading