Skip to the content
FreightParse

Three invoices in, a Shipment import dossier out

FreightParse reads a supplier's invoice and packing list and writes the goods lines of the declaration. Here the same readings are written as the request Stratech Shipment and Beurtvaartadres ShipmentManager take at POST /api/Import/Importdossier, with the page and the printed text behind every value.

In

  • three public invoices, two with their packing list (PDF)
  • read by the cloud model, as a desk's documents are

Out

fits the field table Stratech publishes
  • one import dossier request per shipment
  • what it leaves out, what to check, where each value came from
5goods items from 3 documents
41values traced to a page and a printed text
41of them found on that page's own text
0values invented

The check is against the field table Stratech publishes for DMS import (40-00), https://www.stratechlogistic.nl/customer-portal/knowledge-base/shipment-api/dms-invoer, fetched 2026-10-11 (SHA-256 3d3248e34b2de4ed): 129 field paths, each with its type, length and range. Every object is closed, so a field the table does not name is refused wherever it sits. Stratech's OpenAPI file is on each customer's own Shipment environment and is not public, so the requests were not checked against it, and none has been posted to a Shipment environment yet.

The documents are public exhibits in US court records, chosen because anyone can open them and because each read cleanly in our test of 10 October: every goods-line and header value right. The readings are saved ones, made by Gemini 3.8 Flash in Google's EU region, one reading each. The service reads every document twice and marks where the two readings disagree, so a desk's file carries those marks as well. No model was called to make this page.

z17: All Courtesy International Ltd

All Courtesy International Ltd (Sheung Wan, Hong Kong; made by Centresky Crafts (Shantou), China) invoice and packing list BIG241014-03 to Closeout Distribution LLC (Big Lots), Tremont PA; FOB Yantian; 2 pages. The PDF, a public exhibit in a US court record (CourtListener).

Page 1 of z17.pdfPage 2 of z17.pdf

The goods items, and where each value is printed

ItemDescriptionCommodity codeTARIC partOriginNet massGross massPackagesValue
1VAL BOW WITH RED HEART95059060p.1, printed “9505906000”
verified on the page
00p.1, printed “9505906000”
verified on the page
CNp.1, printed “Country of Origin: CHINA”
verified on the page
399.1 kgp.2, printed “399.10”
verified on the page
516 kgp.2, printed “516.00”
verified on the page
307p.1, printed “307 CTNS”
verified on the page
3868.2 USDp.1, printed “3,868.200”
verified on the page

Read for the shipment: invoice total 3868.2 USD; delivery terms FOB; total gross mass 516 kg (p.2, printed “516.00”, verified on the page).

The request

{
 "dossierNumber": "BIG241014-03",
 "dmsImportDeclarations": [
  {
   "applicationReferenceId": "FP_BIG241014-03_SAMPLE1",
   "doSubmitWhenValid": false,
   "doNotSaveWhenInvalid": false,
   "importer": {
    "internalCode": "STRATECH_API"
   },
   "declarationData": {
    "incoTerms": {
     "incoTermsCode": "FOB"
    },
    "totalInvoiceAmount": 3868.2,
    "totalInvoiceCurrency": "USD",
    "totalGrossWeight": 516,
    "goodsItems": [
     {
      "sequenceNumber": 1,
      "description": "VAL BOW WITH RED HEART",
      "goodsItemType": {
       "hsCode": "95059060",
       "taricSubHeading": "00"
      },
      "countryOfOrigin": "CN",
      "goodsMeasure": {
       "grossWeight": 516,
       "netWeight": 399.1
      },
      "invoiceValue": 3868.2,
      "packaging": [
       {
        "quantity": 307,
        "typeCode": "CT"
       }
      ]
     }
    ]
   }
  }
 ]
}

To check before it is lodged

  • dmsImportDeclarations[0].declarationData.goodsItems[*].dispatchCountry: mandatory (DE 5/14), not read from the documents (all goods items); likely HK because the exporter's own address names it; not written: that is the declarant's call

z18: Gland Pharma Limited

Gland Pharma Limited (Dundigal, Hyderabad, India) commercial invoice M12317000460 to Athenex Pharmaceutical Division; injections, EXW, air Hyderabad to Chicago; 2 pages. The PDF, a public exhibit in a US court record (CourtListener).

Page 1 of z18.pdfPage 2 of z18.pdf

The goods items, and where each value is printed

ItemDescriptionCommodity codeTARIC partOriginNet massGross massPackagesValue
1BIVALIRUDIN INJECTION 250MG/50ML (5MG/ML), 50ML VIAL NDC No: 7086040351 ANDA No: 211215 FDA Code: 61 L C P -3930049099p.1, printed “30049099”
verified on the page
not writtenINp.1, printed “Country of Origin of Goods : INDIA”
verified on the page
1254.667 kgp.1, printed “1254.667”
verified on the page
1365.652 kgp.1, printed “1365.652”
verified on the page
147p.1, printed “147”
verified on the page
370020 USDp.1, printed “370,020.00”
verified on the page

Read for the shipment: invoice total 370020 USD; delivery terms EXW; total gross mass 1365.652 kg (p.1, printed “1365.652”, verified on the page).

The request

{
 "dossierNumber": "M12317000460",
 "dmsImportDeclarations": [
  {
   "applicationReferenceId": "FP_M12317000460_SAMPLE1",
   "doSubmitWhenValid": false,
   "doNotSaveWhenInvalid": false,
   "importer": {
    "internalCode": "STRATECH_API"
   },
   "declarationData": {
    "incoTerms": {
     "incoTermsCode": "EXW"
    },
    "totalInvoiceAmount": 370020,
    "totalInvoiceCurrency": "USD",
    "totalGrossWeight": 1365.652,
    "goodsItems": [
     {
      "sequenceNumber": 1,
      "description": "BIVALIRUDIN INJECTION 250MG/50ML (5MG/ML), 50ML VIAL NDC No: 7086040351 ANDA No: 211215 FDA Code: 61 L C P -39",
      "goodsItemType": {
       "hsCode": "30049099"
      },
      "countryOfOrigin": "IN",
      "goodsMeasure": {
       "grossWeight": 1365.652,
       "netWeight": 1254.667
      },
      "invoiceValue": 370020,
      "packaging": [
       {
        "quantity": 147
       }
      ]
     }
    ]
   }
  }
 ]
}

To check before it is lodged

  • goodsItemType.taricSubHeading (goods item 1): digits 9-10 (TARIC) are not on the document: it gives 30049099, 8 digits
  • packaging[0].typeCode (goods item 1): read 'Shippers', which is not a two-character package code (code list CL017), so it is not written
  • dmsImportDeclarations[0].declarationData.goodsItems[*].dispatchCountry: mandatory (DE 5/14), not read from the documents (all goods items); likely IN because the exporter's own address names it; not written: that is the declarant's call

z19: Home Creations Inc

Home Creations Inc (Lin-gang Special Area, Shanghai, China; made by Jiangsu Hongbo Home Goods) invoice and packing list S202410230008 to CSC Distribution LLC (Big Lots), Montgomery AL; FOB Shanghai to Savannah; 4 pages. The PDF, a public exhibit in a US court record (CourtListener).

Page 1 of z19.pdfPage 2 of z19.pdfPage 3 of z19.pdfPage 4 of z19.pdf

The goods items, and where each value is printed

ItemDescriptionCommodity codeTARIC partOriginNet massGross massPackagesValue
124IN SQUARE STEEL SLAT FOLDING TABLE94032000p.1, printed “9403200050”
verified on the page
50p.1, printed “9403200050”
verified on the page
CNp.1, printed “CHINA”
verified on the page
6957.5 kgp.3, printed “6,957.50”
verified on the page
7755 kgp.3, printed “7,755.00”
verified on the page
275p.1, printed “275 CTNS”
verified on the page
20350 USDp.1, printed “20,350.000”
verified on the page
2HELENA SQUARE LAMINATED DINING TABLE94032000p.1, printed “9403200050”
verified on the page
50p.1, printed “9403200050”
verified on the page
CNp.1, printed “CHINA”
verified on the page
6381.2 kgp.3, printed “6,381.20”
verified on the page
7675.5 kgp.3, printed “7,675.50”
verified on the page
301p.1, printed “301 CTNS”
verified on the page
12642 USDp.1, printed “12,642.000”
verified on the page
3HELENA 4PK CUSHION DINING CHAIRS94017900p.1, printed “9401790011”
verified on the page
11p.1, printed “9401790011”
verified on the page
CNp.1, printed “CHINA”
verified on the page
8668.8 kgp.3, printed “8,668.80”
verified on the page
10715.6 kgp.3, printed “10,715.60”
verified on the page
301p.1, printed “301 CTNS”
verified on the page
33110 USDp.1, printed “33,110.000”
verified on the page

Read for the shipment: invoice total 66102 USD; delivery terms FOB; total gross mass 26146.1 kg (p.3, printed “26,146.10 KGS”, verified on the page).

The request

{
 "dossierNumber": "S202410230008",
 "dmsImportDeclarations": [
  {
   "applicationReferenceId": "FP_S202410230008_SAMPLE1",
   "doSubmitWhenValid": false,
   "doNotSaveWhenInvalid": false,
   "importer": {
    "internalCode": "STRATECH_API"
   },
   "declarationData": {
    "incoTerms": {
     "incoTermsCode": "FOB"
    },
    "totalInvoiceAmount": 66102,
    "totalInvoiceCurrency": "USD",
    "totalGrossWeight": 26146.1,
    "goodsItems": [
     {
      "sequenceNumber": 1,
      "description": "24IN SQUARE STEEL SLAT FOLDING TABLE",
      "goodsItemType": {
       "hsCode": "94032000",
       "taricSubHeading": "50"
      },
      "countryOfOrigin": "CN",
      "goodsMeasure": {
       "grossWeight": 7755,
       "netWeight": 6957.5
      },
      "invoiceValue": 20350,
      "packaging": [
       {
        "quantity": 275,
        "typeCode": "CT"
       }
      ]
     },
     {
      "sequenceNumber": 2,
      "description": "HELENA SQUARE LAMINATED DINING TABLE",
      "goodsItemType": {
       "hsCode": "94032000",
       "taricSubHeading": "50"
      },
      "countryOfOrigin": "CN",
      "goodsMeasure": {
       "grossWeight": 7675.5,
       "netWeight": 6381.2
      },
      "invoiceValue": 12642,
      "packaging": [
       {
        "quantity": 301,
        "typeCode": "CT"
       }
      ]
     },
     {
      "sequenceNumber": 3,
      "description": "HELENA 4PK CUSHION DINING CHAIRS",
      "goodsItemType": {
       "hsCode": "94017900",
       "taricSubHeading": "11"
      },
      "countryOfOrigin": "CN",
      "goodsMeasure": {
       "grossWeight": 10715.6,
       "netWeight": 8668.8
      },
      "invoiceValue": 33110,
      "packaging": [
       {
        "quantity": 301,
        "typeCode": "CT"
       }
      ]
     }
    ]
   }
  }
 ]
}

To check before it is lodged

  • dmsImportDeclarations[0].declarationData.goodsItems[*].dispatchCountry: mandatory (DE 5/14), not read from the documents (all goods items); likely CN because the exporter's own address names it; not written: that is the declarant's call

What the request leaves to the declarant

Not taken from the documents, because no invoice or packing list states them: the procedure (governmentProcedure), the declaration type and symbol, the customs office, the valuation method and indicators (customsValuation, valuationAdjustment), the statistical value, the preference (taxCalculation.dutyRegimeCode), a preferential origin, the supporting documents and certificates (additionalDocuments), the additional TARIC and national codes, the supplementary units, and the previous document an import follows (previousDocuments: the temporary storage reference). These are the declarant's: Shipment's own settings and article file fill them, or the desk's fixed values where it gave them.

Commodity codes are written as the document prints them, split over the two fields the API has: goodsItemType.hsCode (positions 1-8) and taricSubHeading (9-10). An invoice from outside the EU usually prints the seller's or the buyer's own national tariff code: its first six digits are the international HS code, the rest may not be the EU's. The declarant confirms the CN/TARIC code. These three invoices were made out to US buyers, so z17 and z19 print US tariff codes and z18 an Indian one: they show where a code goes, not that the code is right in the EU.

The exporter is not written either. The API takes it as a code from the desk's Shipment address book (exporter.internalCode) or as a name with its street, city and country, and the address is not split into those fields here.

Container numbers come from a bill of lading read with the invoice. The cloud reading of an invoice does not give them, so the three containers printed on z19's invoice are not in its request; nor is the place after FOB, which the reading left out.

What goes where

Every value is one a document states, written where the table puts that data element, in the form the field takes. Anything that does not fit stays out, and the to-check file says why.

Read from the documentsFieldRule
Description of goods (DE 6/8)descriptionLine breaks become spaces; up to 512 characters
Commodity code (DE 6/14)goodsItemType.hsCode, taricSubHeading10 digits fill both (1-8, 9-10); 8 digits fill hsCode and the TARIC part is listed to check; never padded
Country of origin (DE 5/15)countryOfOriginTwo capital letters, or nothing
Country of dispatch (DE 5/14)dispatchCountry on each goods itemOnly when a document states it; a likely value goes to the to-check file, never into the field
Gross and net mass (DE 6/5, 6/1)goodsMeasure.grossWeight, netWeightKilograms, at most 6 decimals (MIG n..16,6)
Item value (DE 4/14)invoiceValueThe line's amount in the invoice currency, 2 decimals (MIG n..16,2)
Packages and their type (DE 6/10, 6/9)packaging[0].quantity, typeCodeA whole number, and a two-character code from list CL017: a printed “CTNS” is written as CT, with the source of the count it is printed beside; a word with no code is listed to check, not written
Delivery terms and place (DE 4/1)incoTerms.incoTermsCode, locationNameWhen every line agrees; the place up to 35 characters
Invoice currency (DE 4/10)totalInvoiceCurrencyWhen every line agrees
Invoice total as printed (DE 4/11)totalInvoiceAmountOnly with one invoice in the shipment; never a sum of the lines
Total gross mass as printedtotalGrossWeightWhen every document that prints one prints the same
Containers (DE 7/2)containers[].number, isContainerShipmentUp to 17 characters each; the flag only as true
B/L, air waybill or CMR numbertransportDocuments[] on each goods itemN705, N740, N730 by the document it was read from

What the sender gives

Five values are on no document. dossierNumber is the invoice number unless the desk gives its own (up to 30 characters). applicationReferenceId is unique for every request, so change it before sending a file twice. importer.internalCode is the importer as the desk's Shipment address book knows it, with its EORI and address: here STRATECH_API, the code in Stratech's own example. doSubmitWhenValid is always false: the declarant lodges the declaration, Shipment does not. doNotSaveWhenInvalid is false, so Shipment keeps the dossier while the declarant's fields are still empty. A desk can fix its own procedure (for example 4000), declaration type, office and exporter code once; they are then written as given, and the notes say so.

The same goods lines for an item import

Software that imports goods items from a spreadsheet and keeps the column mapping, as Riege Scope's C89 module does, takes the same lines as a CSV: one row per goods line, the columns named after the declaration's data elements (DE 6/8 description, 6/14 commodity code, 6/1 net mass and so on), semicolons, UTF-8. Each document's file is linked above as “goods lines as CSV”.

FreightParse is not affiliated with Stratech or Beurtvaartadres. Stratech Shipment and ShipmentManager are theirs; the field table is the one Stratech publishes. The three documents are public exhibits in US court records (CourtListener), not a FreightParse customer's documents.

A desk's documents are read in Google's EU region, not used for training; a request flagged by Google's abuse checks may be kept up to 90 days, in the EU; FreightParse keeps no copy. Questions: danil@freightparse.com.