Skip to content
Ztract
Shipping & customs docs

Customs invoices and commercial documents, parsed in batch.

Sender and recipient addresses, declaration date, every product line with HS code, country of origin, INCOTERMS, and currency, plus net and gross weights — extracted in one pass.

Live demo

See it on a real document.

Click a field on the right and we'll highlight where it came from on the left.

Click any field or any boxed region to link them.
Shipping — page 1

Extracted fields

To

From

Total

Products

Origin Hs code Currency Quantity Incoterms Net weight Unit price Total weight Product description

Sample data. Real engine output.

Overview

What is customs document data extraction?

Customs-document extraction turns commercial invoices, customs declarations, and similar trade-compliance paperwork into the structured data that customs brokers, freight forwarders, and trade-compliance teams feed into their entry-filing and screening tools. The use case is one of the most labor-intensive in international trade: HS codes need to be exact, weights need to reconcile to grams, and a typo on a party name can hold a shipment at the border.

On the sample document above, Ztract returns the full sender and recipient blocks — each with company name, contact person, phone number, full street address, city, country, and ZIP code; the declaration date; the total block with currency, net weight, gross weight, and declared price; and the products array with each line's HS code, country of origin, quantity, currency, and INCOTERMS. The shape maps cleanly into the fields that CBP, EU SAD, and most national customs forms require.

International trade documents vary by country, mode, and carrier. The engine doesn't depend on one template — Chinese exporters' commercial invoices, EU-bound declarations, and US CBP-bound paperwork all read into the same schema. HS codes are returned as printed (6–10 digits), not mapped to an outdated dictionary; INCOTERMS abbreviations are captured with their named place ('FOB Shanghai', 'CIF Hamburg'); and multilingual paperwork (Chinese shipper, English consignee, French port-of-loading) stays in its original script.

Hard parts

Where this gets tricky.

The reasons this doc type is harder than it looks — and how we handle them.

  • HS codes printed exactly as filed

    Codes change with regulation — chapter-level changes happen yearly. The engine returns the full 6–10 digit code as printed on the document, not a mapping to an internal dictionary that may be out of date.

  • Multi-language paperwork

    Chinese shipper, English consignee, French port-of-loading on one document. Each party block stays in its original script; addresses are kept structured (street, city, country, ZIP).

  • Sender and recipient as nested blocks

    Both parties come back as complete address objects — company name, contact person, phone, street, city, country, ZIP — rather than collapsed into one ambiguous string.

  • INCOTERMS and origin per line

    INCOTERMS (FOB / CIF / DDP / EXW / etc.) and country of origin are captured per product line, not just at the document level. Mixed-origin shipments stay correctly attributed.

Who uses it

Workflows this lands in.

  • Customs brokers

    Pre-populate entry filings from the commercial invoice instead of typing each line into the customs portal — HS codes, INCOTERMS, and party details already structured.

  • Freight forwarders

    Reconcile thousands of customs invoices per day against booking and tracking systems — sender and recipient addresses match against the carrier's manifest.

  • Trade compliance

    Screen HS codes, countries of origin, and consignee names against sanctions and denied-party lists, with the source field cited for every match.

FAQ

Common questions.

Which customs documents does Ztract handle?
Commercial invoices, customs declarations, and similar shipping paperwork with sender, recipient, product lines, HS codes, and INCOTERMS. Bills of lading (BOL) and air waybills (AWB) have a different shape and aren't yet specifically optimized — talk to us if that's your primary need.
Are HS codes validated against a database?
No — and intentionally. HS codes get added, retired, and restructured each year, and a mapping table is always slightly out of date. Ztract returns the 6–10 digit code exactly as printed on the document; your downstream classification tooling does the validation.
Does it handle multi-line product tables across pages?
Yes. Just like invoices, the products table is stitched across page breaks back into one array, with each line preserving HS code, origin, INCOTERMS, quantity, and currency.
What about multilingual documents?
Common. Chinese-export documents often have Chinese shipper info and English consignee info; Latin American customs paperwork mixes Spanish and English. Each party block stays in its original script, with addresses kept structured.
Can the output drive automated customs filings?
The extracted schema is shaped to drop straight into a customs broker's filing tool — sender, recipient, declared value, product lines with HS code and origin. Whether to auto-file or human-review is a workflow choice your team makes; Ztract just returns the data.

Try it on your own document.

Start free with 30 pages. No credit card, no subscription, no setup.