Skip to main content

Extract data from freight invoices

A freight invoice is the carrier's bill for moving a shipment, and it is the document a logistics team audits line by line before it pays, because freight bills are wrong often enough that freight-audit is its own industry. Less-than-truckload carriers such as Old Dominion Freight Line and Estes Express invoice against a PRO number and a SCAC that identify the shipment and the carrier; parcel carriers bill weekly across hundreds of tracking numbers; an international forwarder issues a bill that follows the EN 16931 semantic invoice terms line for line. The charge that shows up is rarely a single number: a base freight charge sits beside a fuel surcharge that moves with a published index, an accessorial for a liftgate or a residential delivery, and a dimensional-weight adjustment that reprices the shipment on volume rather than scale weight. Auditing that bill means catching the discrepancies. Billed weight has to match the bill of lading, accessorials have to correspond to services that were actually performed, the rate has to reflect the negotiated tariff, and the PO reference has to tie the charge back to a shipment the shipper authorized. When a carrier bills 1,240 pounds against a BOL that reads 980, it has overcharged, and a fuel surcharge computed off the wrong week's index compounds across thousands of shipments. Payment terms, the carrier's tax ID, and the remittance details govern how and when the bill settles. Talonic reads the freight invoice and returns the carrier and payer, the SCAC and PRO number, the pickup and delivery dates, the billed weight and unit, and a charges array that separates base freight from fuel surcharge and accessorials, alongside the net, tax, and total. A freight bill of $3,180 in USD against PRO 771-4482, pickup 2026-04-16 and delivery 2026-04-18, lands as structured fields a freight-audit process can check against the rate agreement, so an overcharge is caught before the invoice is paid.

What gets extracted from freight invoices

Invoice NumberFB-2026-55021
Invoice Date2026-04-20
CarrierOld Dominion Freight Line
SCACODFLStandard Carrier Alpha Code
PRO Number771-4482Shipment progressive number
PayerMeridian Retail Inc.
Pickup / Delivery Date2026-04-16 / 2026-04-18
Billed Weight1,240 lb
Freight Charge$2,410.00Base freight before surcharges
Fuel Surcharge$470.00
Invoice Total$3,180.00

How extraction works for freight invoices

Freight bills arrive from carrier billing systems, third-party freight-audit platforms, and forwarder TMS exports, so a US LTL bill built around a SCAC and a PRO number looks nothing like a European forwarder invoice keyed to EN 16931 business terms. Talonic classifies the invoice and maps it to the freight-invoice model in the Field Registry, which holds the carrier, payer, shipper, and consignee identity next to the shipment references and the charges breakdown. Base freight, fuel surcharge, and each accessorial are kept as their own rows in a charges array rather than collapsed into one total, because a freight-audit process has to test each one against the rate agreement. Billed weight and its unit are captured so the bill can be checked against the bill of lading, the SCAC and PRO number tie the charge to the shipment, and the net, tax, and total are reconciled so a bill that does not add up is flagged. Every value returns with a confidence score and a region pointer back into the source PDF under DIN SPEC 91491, so a freight auditor can verify a surcharge or the billed weight against the document before releasing payment.

Sample extraction

A US LTL freight invoice in USD with a fuel surcharge and one accessorial

{
  "document_number": "FB-2026-55021",
  "document_date": "2026-04-20",
  "due_date": "2026-05-20",
  "currency": "USD",
  "purchase_order_reference": "PO-88231",
  "supplier.name": "Old Dominion Freight Line",
  "supplier.tax_id": "US54-0743217",
  "buyer.name": "Meridian Retail Inc.",
  "shipper.name": "Cascade Components LLC",
  "consignee.name": "Meridian DC 3",
  "carrier.scac_code": "ODFL",
  "pro_number": "771-4482",
  "pickup_date": "2026-04-16",
  "delivery_date": "2026-04-18",
  "weight_actual": 1240,
  "weight_unit": "LB",
  "freight_charge": 2410,
  "charges": [
    {
      "charge_type": "Base freight",
      "charge_amount": 2410
    },
    {
      "charge_type": "Fuel surcharge",
      "charge_amount": 470
    },
    {
      "charge_type": "Liftgate delivery",
      "charge_amount": 100
    },
    {
      "charge_type": "Dimensional-weight adjustment",
      "charge_amount": 200
    }
  ],
  "total_amount_without_vat": 3180,
  "tax_amount": 0,
  "total_amount": 3180,
  "amount_due": 3180,
  "payment_terms": "Net 30"
}

Frequently asked

Does it separate base freight from fuel surcharges and accessorials?

Yes. Base freight, the fuel surcharge, and every accessorial (liftgate, residential delivery, reweigh, dimensional-weight adjustment) come back as their own rows in a charges array, so a freight-audit process can test each charge against the rate agreement rather than accepting one lump total.

How does it support freight-audit against the rate agreement?

Billed weight and its unit are captured for comparison against the bill of lading, the SCAC and PRO number tie the charge to a specific shipment, and each charge row is exposed individually, so an overcharge (a weight that does not match the BOL, or a surcharge off the wrong index) is visible before payment.

Can it read the SCAC and PRO number?

Yes. The Standard Carrier Alpha Code and the PRO number are captured as their own fields and used to link the invoice back to the shipment and its bill of lading, which is how a logistics team reconciles a bill to the load it paid for.

Does it handle both US LTL bills and EN 16931 e-invoices?

Both are classified and mapped to the same freight-invoice model. A US LTL bill leans on SCAC, PRO, and accessorials; a European forwarder invoice carries the EN 16931 business terms and a VAT breakdown, which are captured when present.

Author note

Reviewed by Talonic engineering · last reviewed 2026-07-06