Logistics

Extract customs declarations to structured JSON

A customs declaration is what proves an import is legal: who imported the goods, where they came from, how they classify under the tariff schedule, and how much duty is owed. Carriers like FedEx, DHL, and UPS hand back the CBP 7501 Entry Summary as a PDF, not a data file, and each broker and port formats it differently. Sensible converts customs declarations into structured JSON so the entry can be reconciled against its commercial invoices and packing lists.

customs brokerage | trade compliance | duty reconciliation

Validated JSON

Schema-enforced output; every field matches your contract

Source coordinates

Every value links back to page + bounding box for audit

Per-document pricing

Predictable cost. No token-volatility surprises

Trusted by teams turning documents into production data

What makes customs declarations hard to extract

A CBP 7501 has a fixed federal layout, but the entry packet around it does not. Commercial invoices and packing lists arrive in every carrier's and supplier's format, and a single entry can carry dozens of tariff lines that have to stay tied to their values and duty. Layout-based rules pin the consistent boxes; LLM parsing absorbs the variable documents; the math gets re-checked before the entry posts.

01

Form And Country Variation

The 7501 box positions hold steady, but the supporting commercial invoices and packing lists vary by carrier, supplier, and country of origin, and a packet can mix all three. Positional rules read the fixed entry summary; LLM parsing handles the invoices and packing lists no matter how the exporter laid them out.

02

HTS Tariff Line Tables

A single entry can list dozens of line items, each with a 10-digit HTS classification, an entered value, a duty rate, and a calculated duty. Sensible reads the tariff table as structured rows, keeping each HTS code tied to its value and duty instead of flattening the grid into loose text.

03

Value, Duty And Fee Math

Do the line entered values sum to the total? Does each duty equal its value times its rate? Do duty, merchandise processing fee, and harbor maintenance fee add up to the total owed? Sensible re-checks these calculations and flags discrepancies with confidence scores, so the entry that fails reconciliation against its invoices gets reviewed rather than posted.

Managed services

Don't want to build it? We'll write your configs from your samples.

Solutions engineers handle plan, build, deploy, and adjust on your behalf. You see clean JSON in your API response. Same engine as self-serve, just with the configuration work outsourced.

What's included

01Plan.Engineers review your samples and pick the right method

02Build.SenseML configs written from your samples

03Deploy.Same engine as self-serve, ready for production

04Adjust.We update configs when formats shift or new edge cases appear

05Integrate.Help with custom integration into your downstream systems

Fields we extract

Every trade-compliance pipeline maps the entry to its own schema, so we build the config around your fields rather than a fixed list. These are the fields brokers and importers pull most often; we map whatever else your duty reconciliation or audit workflow needs.

01

Entry & parties

Entry number, entry type, entry date, importer of record name and ID, consignee, exporter, port of entry, country of origin, country of export, mode of transport, bill of lading or air waybill number

02

Merchandise & HTS lines

Line number, HTS classification code, description of merchandise, quantity and unit, net weight, entered value, duty rate, duty amount, relationship and special-program indicators

03

Value, duties & fees

Total entered value, total duty, merchandise processing fee (MPF), harbor maintenance fee (HMF), other taxes and fees, total amount owed, currency

config.json

SenseML

{ /* SenseML: customs declaration extraction */
"fields": [
{
"method": {
"id": "queryGroup",
"queries": [
{ "id": "entry_number", "description": "entry number, entry no, CBP entry number" },
{ "id": "importer_of_record", "description": "importer of record, importer name, IOR" },
{ "id": "country_of_origin", "description": "country of origin, COO" },
{ "id": "total_entered_value", "description": "total entered value, entered value total" }
// + HTS tariff lines and fee fields, mapped to your schema
]
}
}
]
}

Supported declaration formats

Sensible processes customs declarations across carriers, brokers, and ports, plus the commercial invoices and packing lists in the same entry packet. New formats can be configured in hours. The extraction logic is explicit in SenseML, not buried in prompt tuning.

By document

CBP 7501 Entry Summary, entry/immediate delivery forms, commercial invoices, packing lists, and carrier-issued PDF declaration copies

By source

FedEx, DHL, UPS, and freight-forwarder copies, broker-generated entries, ABI/ACE system exports, and scanned or faxed paper declarations

Common Questions

Answers about HTS tariff line extraction, reconciling declarations against commercial invoices, and handling carrier PDF copies.

Can Sensible reconcile the declaration against its invoices?

Sensible re-checks the math: whether line entered values sum to the total, whether each duty equals its value times its rate, and whether duty, MPF, and HMF add up to the total owed. Entries that fail reconciliation against their commercial invoices get flagged with confidence scores rather than posted.

How does Sensible handle HTS tariff line tables?

A single entry can list dozens of line items, each with a 10-digit HTS classification, an entered value, a duty rate, and a calculated duty. Sensible reads the tariff table as structured rows, keeping each HTS code tied to its value and duty instead of flattening the grid.

What fields does Sensible extract from a customs declaration?

Entry number and type, importer of record, consignee, port of entry, country of origin, the HTS tariff lines, and the value, duty, and fee totals are all extracted. Custom fields can be added in SenseML to match your duty-reconciliation or audit schema.

Which customs declaration formats does Sensible support?

Sensible processes the CBP 7501 Entry Summary, entry and immediate-delivery forms, and the commercial invoices and packing lists in the same entry packet. Sources include FedEx, DHL, UPS, and freight-forwarder copies, broker-generated entries, ABI/ACE system exports, and scanned paper declarations.

Start free

Turn your next customs declaration into JSON.

Free 14-day trial. No credit card required. Start extracting in minutes.