Customs clearance
Customs packets checked before the declaration is filed
Documind splits mixed shipment packets, reads each document and checks invoices, packing lists, origin certificates and HS codes against each other. Your team reviews only the values that cannot be proven. Clean data goes to your declaration software or ERP.
- GDPR and KVKK aligned
- SOC 2 Type II in progress
- Runs on-prem
The problem
-
01
One shipment. Many documents. Many formats.
Every shipment packet holds 5 to 10 documents that must match: the commercial invoice, the packing list, the bill of lading or air waybill, and a certificate of origin such as an EUR.1 or an A.TR. Each one is keyed again into the declaration, and every re-key is a chance for a typo in a weight, a value or a tariff code.
-
02
A small mismatch turns into a customs query.
The invoice says 1,240 kg, the packing list says 1,262.5 kg. The consignee name differs by one word. Customs asks questions and the release slips. Post-clearance audits can find the same gap months later.
-
03
Every day at the terminal costs money.
After free time, container detention and demurrage are charged per box per day, and reefers cost more. Late corrections to a declaration add days to that clock. Speed comes from getting the data right the first time.
One packet, checked as a whole
One shipment, five documents, one set of checks
Documind reads the whole packet and checks the documents against each other. A mismatch stops the value from being approved and names the rule that failed.
-
invoice.total declaration.customs_value
The invoice total matches the customs value on the declaration draft, after the freight and insurance adjustments you define.
-
packing_list.gross_weight bill_of_lading.gross_weight
Gross weights agree within the tolerance you set, for example 0.5%.
-
bill_of_lading.container_no packing_list.container_no
Same container number on both documents, and the ISO 6346 check digit passes.
-
invoice.line.hs6 declaration.tariff_code
The first six digits of the national tariff code match the HS code on the invoice line.
-
a_tr.issue_date presentation_date
The A.TR is presented within four months of its issue date.
-
invoice.buyer bill_of_lading.consignee
Buyer and consignee are the same legal entity; name variants go to a reviewer.
Documents Documind reads
| Document | Purpose | Key fields |
|---|---|---|
| Commercial invoice | Sets price and value for customs valuation; shows parties, terms and currency. |
|
| Packing list | Physical content of the consignment; must match invoice counts and weights. |
|
| Certificate of origin | Declares the country of origin for tariff or non-preferential purposes. |
|
| EUR.1 movement certificate | Preferential origin proof for agricultural and ECSC goods and for FTA trade. |
|
| A.TR movement certificate | Proves free circulation under the EU–Türkiye customs union (not origin); valid four months. |
|
| Bill of lading | Sea transport contract and document of title. |
|
| Air waybill (AWB) | Air transport contract. |
|
| CMR consignment note | Road transport contract for international road freight. |
|
| Customs declaration (draft) | The declaration your team prepares in the declaration software. |
|
Checks that matter here
-
HS and tariff code format
A tariff code in the wrong format, or an HS code that differs between invoice, origin certificate and declaration.
-
ISO 6346 check digit
A mistyped container number on the B/L or the packing list.
-
Tax ID check digits
A wrong tax ID for the importer, the exporter or the declarant.
-
IBAN checksum
A wrong bank account on the invoice.
-
Sums and arithmetic
Line items that do not add up to the invoice total.
-
Dates and validity windows
An A.TR outside its four-month window, or an invoice dated after the B/L.
Cross-document validation
| Rule | Example | Outcome |
|---|---|---|
| Gross weight: packing list vs B/L | Packing list 1,262.5 kg, B/L 1,240.0 kg. Difference 1.8%, tolerance 0.5%. | Veto |
| Invoice arithmetic | Sum of lines 48,250.00 vs invoice total 48,520.00. Difference 270.00 EUR. | Veto |
| HS consistency | Invoice line HS 845959, declaration draft tariff code starts with 845950. | Veto |
| Origin consistency | Certificate of origin says DE; one invoice line says CN. | Veto |
| A.TR validity window | A.TR issued 2 Oct 2026; presentation planned 15 Mar 2027, more than four months later. | Veto |
| Party name match | Invoice buyer "Atlas Machinery Industries Ltd." vs B/L consignee "Atlas Machinery Industries Limited". | Needs review |
| Incoterm and freight | Incoterm FCA, but freight charges appear on the invoice. Customs value needs a person to confirm. | Needs review |
| Package count | Packing list 4 cartons, invoice 4 pieces, B/L 4 packages. | Approved |
How it works
-
Send the packet
Forward the email, drop the file into an SFTP folder or S3 bucket, or call the API. Scans, phone photos and multi-page PDFs all work.
-
Split and classify
Documind finds where each document starts and ends and labels it: invoice, packing list, origin certificate, A.TR, EUR.1, B/L, AWB, CMR and more.
-
Extract with evidence
Three different AI models read each value and must agree. Each value comes with its evidence: the exact place on the page, how certain the models are, and which sources agree.
-
Check across documents
Weights, values, parties, origin, incoterms and HS codes are compared across the packet. Your own rules run on top. A value that fails a check is stopped and is not approved.
-
Review and deliver
Reviewers see only the routed fields, with the reason. Approved data goes to your declaration software, TMS or ERP by webhook, SFTP, S3 or SAP IDoc output.
Source · Split · Classify · Extract · Rules · Review · Deliver
When it is not sure, it asks
bill_of_lading.consignee
Needs reviewReason: The consignee name differs from the invoice buyer: the legal form is written out in full.
Candidate values
- Atlas Machinery Industries Ltd. Invoice, page 3
- Atlas Machinery Industries Limited B/L, page 9
Sample data
What you get
-
Mixed-packet splitting
One PDF, many documents.
Documind finds each document in a combined file. A 40-page scan with an invoice on page 3, a packing list on pages 4 to 6 and a CMR on page 9 becomes separate, labelled documents.
-
Certificate-aware extraction
A.TR, EUR.1 and other origin certificates, read the same way.
Documind reads certificate numbers, issue dates, origin criteria and validity. It checks that an A.TR is presented within its four-month window. An A.TR proves free circulation, not origin, and the rules treat it that way.
-
HS and tariff code validation
Format and consistency, checked as code.
Documind validates the national tariff code format and checks that the HS code agrees across the invoice, the origin certificate and the declaration draft. A licensed person still decides the classification.
-
Cross-document rules you approve
Describe the rule. Approve the code.
Describe a rule such as "packing-list gross weight matches the B/L within 0.5%". The AI assistant writes the validation code, which is compiled and checked before you accept it. A failed rule shows both values and both pages.
-
New forms without a training project
Describe the document and give examples.
Add a supplier certificate, a phytosanitary certificate or a conformity certificate by describing its fields and adding a few examples. Documind generates the schema, the extraction prompt and the validation code for you to approve.
-
Your servers, your record
Your data center. Your tamper-proof record.
Documind runs in your data center, including air-gapped, on AI models you own. Every decision and every edit is saved in a tamper-proof record. Each entry is linked to the one before it, so a change cannot go unnoticed, and RFC 3161 timestamps (a trusted time stamp that proves when each step happened) are added.
Sample output
A five-document import packet after the checks: two values approved with evidence, two stopped by rules, one routed to a reviewer.
{ "packet_id": "PKT-2026-0412-0093", "status": "needs_review", "documents": [ { "type": "commercial_invoice", "pages": [3] }, { "type": "packing_list", "pages": [4, 5] }, { "type": "a_tr", "pages": [7] }, { "type": "bill_of_lading", "pages": [9] }, { "type": "customs_declaration_draft", "pages": [11] } ], "fields": { "invoice.total_value": { "value": "48250.00 EUR", "status": "approved", "evidence": [ { "type": "citation", "page": 3, "bbox": [612, 1128, 884, 1162] }, { "type": "model_agreement", "models": 3, "agrees": true }, { "type": "rule", "id": "line_items_sum", "pass": true } ] }, "bill_of_lading.container_number": { "value": "DMXU4821935", "status": "approved", "evidence": [ { "type": "citation", "page": 9, "bbox": [88, 702, 340, 731] }, { "type": "rule", "id": "iso6346_check_digit", "pass": true } ] }, "packing_list.gross_weight_kg": { "value": 1262.5, "status": "veto", "evidence": [ { "type": "citation", "page": 5, "bbox": [540, 1090, 940, 1150] }, { "type": "rule", "id": "gross_weight_match_bl", "pass": false, "detail": "B/L 1240.0 kg, difference 1.8%, tolerance 0.5%" } ] }, "declaration_draft.gtip": { "value": "8459.50.00.00.00", "status": "veto", "evidence": [ { "type": "rule", "id": "hs6_matches_invoice", "pass": false, "detail": "invoice line HS 845959" } ] }, "bill_of_lading.consignee": { "value": null, "status": "needs_review", "reason": "Name variant: 'Atlas Machinery Industries Limited' vs invoice buyer 'Atlas Machinery Industries Ltd.'" }, "a_tr.issue_date": { "value": "2026-10-02", "status": "approved", "evidence": [ { "type": "citation", "page": 7, "bbox": [60, 1010, 500, 1340] }, { "type": "rule", "id": "atr_within_4_months", "pass": true, "detail": "valid until 2027-02-02" } ] } }} What the evidence shows
- invoice.total_value Approved
Cited on page 3. All three AI models agree, and the line items add up to the total.
- bill_of_lading.container_number Approved
The ISO 6346 check digit passes, so the container number is structurally valid.
- packing_list.gross_weight_kg Veto
1,262.5 kg vs 1,240.0 kg on the B/L: 1.8% apart, above the 0.5% tolerance. The rule stops the value.
- declaration_draft.gtip Veto
The first six digits (845950) differ from the invoice HS code (845959).
- bill_of_lading.consignee Needs review
No value is approved. The reviewer sees both names and both pages.
Outputs and deployment
Documind prepares validated data for your declaration software, TMS or ERP. It connects through built-in connectors and an open API.
Built-in connectors and outputs
-
Email (IMAP)
Forward packets to a customs inbox; each message starts a run.
-
SFTP and S3
Pick up scans from a folder or bucket and deliver results back.
-
Google Drive
Watch a shared folder for new packets.
-
Signed webhooks
Push approved data to your declaration software, TMS or ERP.
-
SAP IDoc output
Write validated invoice data as an IDoc, for example INVOIC02.
-
JSON, CSV, Excel, XML, PDF
Export results in the format your team already uses.
Any system that can call a REST API or receive a webhook can use Documind: declaration software, ERPs, TMS, RPA and automation tools. SDKs are available for Java, .NET, Python, TypeScript and Go.
Runs in your data center, including air-gapped, on open-weight models. No document leaves your network and no third-party AI API is called.
Documind does not submit declarations to national customs systems (for example BİLGE in Türkiye, or NCTS and ICS2 in the EU). It prepares and checks the data; your declaration software or your broker submits it.
Outcome targets
Targets, not customer results. We measure them with you in a pilot.
- Fields typed by hand
- Exceptions only
- Target: most fields pre-filled above your threshold, so reviewers see exceptions only.
- Mismatches that reach customs
- Caught before filing
- Target: cross-document checks catch weight, value, party and origin mismatches before the declaration is filed.
- Packet turnaround
- Minutes, not hours
- Target: a 10-page packet ready for review in minutes. We measure the time from email receipt to approved data in your pilot.
Context
- Türkiye made about 9.4 million customs declarations in 2025: 5.7 million export and 3.7 million import (reported). Source: Ekonomi Gazetesi, 26 January 2026 (opens in new tab)
- Dry-container detention and demurrage at Turkish import terminals: USD 60 to 150 per day after free time (Maersk tariff effective 15 September 2025). Source: Maersk Türkiye import tariff (opens in new tab)
- EU ICS2 release 3 covers sea, rail, road and inland waterway since 3 June 2024; road and rail carriers phased in from 1 April to 1 September 2025. Source: Irish Revenue, ICS2 release schedule (opens in new tab)
- An A.TR proves free circulation between the EU and Türkiye, not origin, and is valid for four months from issue. Source: KVK (Netherlands Chamber of Commerce) (opens in new tab)
Frequently asked questions
Which documents does Documind read for customs clearance?
Commercial invoices, packing lists, certificates of origin, EUR.1 and A.TR certificates, bills of lading, air waybills, CMR notes and customs declaration drafts. You can add other forms, such as phytosanitary or conformity certificates, by describing their fields and giving examples.
Does Documind submit declarations to customs systems?
No. Documind prepares and checks the data. Your declaration software, your broker or your customs team submits the declaration. Documind delivers the data by webhook, SFTP, S3, file export or SAP IDoc output.
Does Documind choose the HS code?
No. Documind validates the national tariff code format and checks that the HS code agrees across the invoice, the origin certificate and the declaration draft. A licensed person decides the classification.
How does it handle A.TR and EUR.1 certificates?
Documind reads the certificate number, issue date, parties, goods and invoice reference. A rule checks that an A.TR is presented within four months of its issue date. The rules also reflect that an A.TR proves free circulation, not origin.
Does it work with scanned and handwritten documents?
Yes. It reads scans, phone photos and PDFs with mixed layouts. When a value cannot be proven, for example because a stamp covers a digit, Documind does not guess: it routes the field to a reviewer with the reason.
What happens when two documents disagree?
The rule that compares them fails and the value is not approved. The reviewer sees both values, both pages and the rule name, and decides which value is right.
Can we set our own validation rules?
Yes. Describe the rule in plain language, for example "packing-list gross weight matches the B/L within 0.5%". The AI assistant writes the validation code, which is compiled and checked before you accept it.
Where is our data processed?
In your own data center, including air-gapped, on AI models you own. No document leaves your network and no third-party AI API is called. Documind is GDPR and KVKK aligned; SOC 2 Type II is in progress.
Map your process with us. Go live in the demo.
In the demo we look at how your team checks shipment packets today. Then we put your first customs workflow live, on your own systems.