Validation & Shipping Standards

Container numbers, ports, dates, amounts, currencies and Incoterms, checked against the international standards as they are extracted

Last updated: September 2026

Why Validation Matters

Shipping documents flow between carriers, freight forwarders, customs brokers and port authorities worldwide. A single wrong digit in a container number or an unrecognised port code can delay clearance, trigger penalties, or hold up a whole vessel manifest. StarShipper checks these values at the point of extraction, before the data reaches your downstream systems.

The checks apply to the fields that have a standard to check against. A field name is matched to a validator by name, and more than 50 name patterns route to one of six validators: ports, dates, amounts, container numbers, currencies and Incoterms. A field with no matching standard, a description or an address for instance, is extracted and left alone.

Errors

Invalid data that will cause downstream failures. Shown with red borders.

Warnings

Potentially incorrect data that should be checked. Shown with orange borders.

Valid

Data passes all checks. No border colour — clean and ready to send.

Important: Content validation does not reduce the overall document confidence score, and it does not change the document status either. Confidence measures how well the AI could read the document; content validation measures whether the data itself is correct. A document extracted at 98% confidence can carry a warning for an unrecognised port code and still be Ready.

A missing required field is the separate case that does hold a document back, sending it to Needs Review whatever it scored. How statuses are decided →

How Validation Works

Automatic checks at extraction time and on every field edit

1

Field Extraction

When a document is processed, StarShipper extracts all fields — either via direct parsing (XML, JSON, Excel, CSV, Word) or AI Vision (PDF and image files).

2

Field Routing

Each field name is matched to a validation type. For example, portOfLoading, pol, and loadingPort all route to the UN/LOCODE port validator. Over 50 field name patterns are recognised.

3

Standard-Specific Check

The value is checked against the relevant international standard — ISO 6346 for containers, UN/LOCODE for ports, ISO 4217 for currencies, and so on.

4

Inline Results

Errors and warnings appear directly on the field in the document review screen — red for errors, orange for warnings, with a clear message explaining the issue. Fix the value inline and it re-validates instantly.

Container Numbers — ISO 6346

Check-digit verification for every container number

An intermodal shipping container carries an 11-character identification code defined by ISO 6346. The last digit is a check digit calculated from the preceding 10 characters. StarShipper computes this check digit and flags containers where it doesn't match — catching transposition errors, OCR misreads, and typos before they reach your manifest or customs declaration.

Format: ABCU 123456 0

Owner Code
3 uppercase letters — unique to the container owner (e.g., MSC, MAE, CMA)
Category + Serial
1 letter (U=freight, J=detachable, Z=trailer) + 6 digits
Check Digit
1 digit calculated from the first 10 characters using a weighted sum modulo 11
MSCU1234566
Valid — check digit matches computed value
MSCU1234560
Error — check digit should be 6, not 0
Fields checked: containerNumber, container_number, equipmentNumber, containers[].number, containers[].containerNumber

Port Codes — UN/LOCODE

Checked against the UN/LOCODE table StarShipper maintains

The United Nations Code for Trade and Transport Locations (UN/LOCODE) is a 5-character code identifying ports and trade locations worldwide. StarShipper validates port codes in two stages: first checking the format (2-letter country code + 3 alphanumeric characters), then looking up the code against StarShipper's UN/LOCODE table, which is seeded from the published UN/LOCODE dataset and falls back to a built-in list of 166 major ports if the database is unreachable. A code the table doesn't hold is flagged as a warning rather than an error, since it may be a genuine location we haven't loaded.

Format: AUSYD

Country Code
First 2 letters — ISO 3166-1 alpha-2 country code (e.g., AU=Australia, CN=China, US=United States)
Location Code
Next 3 characters — letters or digits identifying the specific location (e.g., SYD=Sydney, SHA=Shanghai)
CNSHA
Valid — Shanghai, China
AUXYZ
Warning — "Port code 'AUXYZ' not found in common ports database - verify manually"

Name resolution: Documents carry port names more often than codes, so extraction resolves them against the same table before validation runs. Aliases are handled too, which is how "Port Botany" and "SYDNEY" both land on AUSYD. A name the table doesn't recognise is left as written rather than guessed at.

A sample of the table — 45 of the ports covered

Australia
Sydney (AUSYD) · Melbourne (AUMEL) · Brisbane (AUBNE) · Fremantle (AUFRE) · Adelaide (AUADL) · Darwin (AUDRW) · Townsville (AUTSV)
China
Shanghai (CNSHA) · Ningbo (CNNGB) · Shenzhen (CNSZX) · Qingdao (CNQAG) · Tianjin (CNTSN) · Xiamen (CNXMN) · Dalian (CNDAL) · Guangzhou (CNGZG)
Southeast Asia
Singapore (SGSIN) · Bangkok (THBKK) · Ho Chi Minh City (VNSGN) · Jakarta (IDJKT) · Manila (PHMNL) · Port Klang (MYPKG)
Japan & Korea
Tokyo (JPTYO) · Yokohama (JPYOK) · Osaka (JPOSA) · Busan (KRPUS) · Incheon (KRICN)
Europe
Rotterdam (NLRTM) · Hamburg (DEHAM) · Antwerp (BEANR) · Felixstowe (GBFXT) · Le Havre (FRLEH) · Valencia (ESVLC) · Barcelona (ESBCN)
Americas
Los Angeles (USLAX) · Long Beach (USLGB) · New York (USNYC) · Savannah (USSAV) · Houston (USHOU) · Santos (BRSSZ)
Africa & Middle East
Jebel Ali (AEJEA) · Durban (ZADUR) · Cape Town (ZACPT) · Mombasa (KEMBA) · Maputo (MZMPM) · Djibouti (DJJIB)

The table is loaded from the published UN/LOCODE dataset and cached in memory, so lookups are instant. New ports are added by reseeding it, not by learning from your documents.

Fields checked: portOfLoading, portOfDischarge, pol, pod, placeOfReceipt, placeOfDelivery, loadingPort, dischargePort, originPort, destinationPort, transhipmentPort, finalDestination

Currency Codes — ISO 4217

33 currencies validated against the ISO 4217 standard

Currency codes on commercial invoices and other trade documents are validated against the ISO 4217 standard. Invalid codes (e.g., "US" instead of "USD") are flagged as errors immediately.

USD
EUR
GBP
JPY
CNY
AUD
NZD
SGD
HKD
CAD
CHF
KRW
INR
THB
IDR
MYR
PHP
AED
SAR
ZAR
BRL
MXN
SEK
NOK
DKK
PLN
TRY
ILS
CLP
COP
ARS
RUB
EGP
AUD
Valid — Australian Dollar
AUSD
Error — not a valid ISO 4217 currency code
Fields checked: currency, currencyCode, invoiceCurrency

Dates — ISO 8601

Format, range, and logic checks on all date fields

Dates are validated for correct ISO 8601 format (YYYY-MM-DD), calendar validity (no Feb 30 or Jun 31), and reasonable range (1990 to 10 years in the future). Invoice dates in the future also trigger a specific warning.

2026-02-12
Valid ISO 8601 date
12/02/2026
Error — wrong format (DD/MM/YYYY)
2027-06-15
Warning — invoice date is in the future
Fields checked: invoiceDate, etd, eta, shipDate, departureDate, arrivalDate, blDate, issueDate, onBoardDate, expiryDate, certDate, declarationDate

Financial Amounts

Numeric validation and range checks on all monetary values

Amount fields are checked to ensure they contain valid numbers, are non-negative, and fall within a reasonable range (up to $1 billion). This catches OCR errors that might introduce letters into numeric values or decimal point misplacements.

12,450.00
Valid numeric amount
-500.00
Error — negative amount
2,000,000,000
Warning — unusually large amount
Fields checked: total, totalAmount, subtotal, tax, taxAmount, shippingCost, freight, insurance, grossAmount, netAmount

Incoterms 2020

All 11 ICC Incoterms recognised and validated

International Commercial Terms (Incoterms) define buyer and seller responsibilities for delivery, risk, and cost. StarShipper validates delivery terms against the ICC Incoterms 2020 standard. Non-standard terms trigger a warning.

CodeFull NameTransport
EXWEx Works
Any Mode
FCAFree Carrier
Any Mode
CPTCarriage Paid To
Any Mode
CIPCarriage and Insurance Paid To
Any Mode
DAPDelivered at Place
Any Mode
DPUDelivered at Place Unloaded
Any Mode
DDPDelivered Duty Paid
Any Mode
FASFree Alongside Ship
Sea/Waterway Only
FOBFree on Board
Sea/Waterway Only
CFRCost and Freight
Sea/Waterway Only
CIFCost, Insurance and Freight
Sea/Waterway Only
Fields checked: incoterms, deliveryTerms, tradeTerms

25 Shipping Document Types

Purpose-built schemas with required fields, auto-detection, and type-specific validation

StarShipper is built specifically for international shipping. Each of the 25 supported document types has its own extraction schema defining which fields are required, which are optional, and what validation rules apply.

Commercial Invoice
Amounts, currencies, line items, buyer/seller
Ocean Bill of Lading
B/L number, vessel, voyage, containers, ports
House Bill of Lading
House B/L number, shipper, consignee, cargo
Air Waybill
AWB number, flight, routing, piece count
Trucking Bill of Lading
Pickup/delivery addresses, trailer, driver
Road Consignment Note
CMR number, routing, vehicle, carrier
Packing List
Package counts, weights, dimensions, marks
Container Loading List
Container list, stuffing detail, load order
Shipping Instruction
Stuffing details, cut-off dates, special instructions
Forwarding Instruction
Parties, routing, cargo, B/L instructions
Booking Confirmation
Booking ref, vessel, voyage, container allocation
Purchase Order
PO number, line items, supplier, delivery terms
Arrival Notice
ETA, vessel, charges, consignee details
Container Manifest
Container list, seal numbers, weights, counts
Customs Declaration
Declaration number, HS codes, duties, declarant
Delivery Order
Release details, container, depot, collection
Certificate of Origin
Origin country, HS codes, certifying authority
Insurance Certificate
Policy number, insured value, coverage terms
Packing Declaration
Timber and packaging declarations for biosecurity
Fumigation Certificate
Treatment date, chemical, dosage, duration
Health Certificate
Issuing authority, commodity, inspection date
Phytosanitary Certificate
Plant product, treatment, issuing authority
Treatment Certificate
Treatment type, provider, date, target pest
Manufacturer's Declaration
Manufacturer, product, compliance statement
Terms & Conditions
B/L reverse-side clauses, Hague-Visby flagging

Auto-detection: StarShipper identifies the document type automatically using field signatures — unique combinations of fields that distinguish one type from another. You can also pre-configure an inbox to expect a specific document type, in which case missing required fields for that type will be flagged.

View all document types with full field schemas →

Shipping-aware extraction

Generic document extraction tools can read text from a PDF. StarShipper goes further — it understands shipping documents. Here's what that means in practice:

Industry-specific validation
Every field is checked against the standard it belongs to — ISO 6346 for containers, UN/LOCODE for ports, ISO 4217 for currencies. Generic tools just extract text.
25 purpose-built document schemas
Each document type has required fields, optional fields, and type-specific rules. A packing list needs package counts; a B/L needs vessel and voyage.
Port intelligence
A UN/LOCODE table with aliases, country codes, and name-to-code resolution. "Port Botany" becomes AUSYD, "Shanghai" becomes CNSHA.
Fix-on-edit re-validation
Edit a field value in the review screen and validation runs again instantly. Fix a container check digit and the error clears in real time.
CargoWise-ready output
Extracted and validated data maps directly to CargoWise XML format for automatic job creation via eAdaptor.