5 Carriers, One Cost ReportBatch Freight Invoice Processing

Processing freight invoices one at a time doesn't just take longer — it hides the cost patterns that determine whether your logistics budget is under control. A FedEx invoice alone tells you what FedEx charged this month. Batch all five carrier invoices together in one extraction, and you see that YRC is 18% cheaper per pound on Midwest lanes while UPS overshoots on fuel surcharges every single month. That insight is invisible to single-invoice processing, and it's the difference between reconciling freight spend and actually managing it.

Batch freight invoice processing for cross-carrier shipping cost analysis

Key Takeaways

  1. Processing carrier invoices one at a time hides the $28,800 you're overpaying on a single lane family — cross-carrier comparison only exists when the data is in one place.
  2. Your AP team is spending 2.5 hours typing numbers from PDFs into a spreadsheet that could arrive pre-built with cost-per-pound, fuel surcharge ratios, and accessorial breakdowns already calculated.
  3. Five carriers, one column list, one consolidated spreadsheet — and six months of this data becomes the carrier scorecard you bring to your next business review instead of assembling manually from memory.

The Multi-Carrier Invoice Problem at Month-End

Most mid-market shippers work with at least five carriers: FedEx and UPS for parcel and express, one or two regional LTL carriers for heavier freight, and often a last-mile courier for local deliveries. Each carrier sends invoices in its own format — FedEx uses one layout with its own charge codes, UPS uses another, the LTL carrier structures line items around PRO numbers and NMFC classes, and the last-mile courier might send a one-page PDF with handwritten totals.

The logistics manager's job at month-end isn't just to pay these invoices. It's to reconcile total freight spend — breaking down costs by carrier, lane, shipment type, and accessorial category — before finance closes the books. The window is typically three working days. With 50 to 200 invoices arriving across five different formats, most teams default to what they can do: scan the totals, flag anything that looks high, and move on. Cross-carrier comparison doesn't happen because the data isn't in one place.

This is where the gap between single-document processing and batch processing becomes the whole game. Processing one invoice at a time gives you 50 individual data points you can't compare without manual consolidation. Processing all 50 invoices in one batch — across all five carriers, with a shared set of column definitions — gives you a consolidated shipping cost spreadsheet in the same time it takes to process one. That's not just a speed improvement. It's a different category of analysis.

What a Freight Invoice Actually Contains — and Why Each Field Matters

Before defining extraction columns, you need to know what you're looking at. A freight invoice isn't a simple "date, amount, vendor" document. It carries carrier-specific line items that determine whether $4,200 on a YRC invoice is reasonable or $900 too high.

The core fields on a typical LTL freight invoice include:

  • PRO Number — The carrier's internal shipment identifier, used for identity matching against your TMS or shipment records. This is how you confirm the invoice ties to a real shipment you actually tendered.
  • BOL Reference — Your bill of lading number, the document that initiated the shipment. Cross-referencing PRO to BOL confirms the carrier billed the correct shipment.
  • NMFC Class — The National Motor Freight Classification code, ranging from 50 (dense, easy-to-handle freight like bricks) to 500 (low-density, fragile freight). The class directly determines the base rate — and misclassification is one of the most common billing errors.
  • Weight — The billed weight, which may differ from your declared weight if the carrier reweighed at the terminal. Reweigh disputes require your own certified scale reading as evidence.
  • Zones / Lane — Origin-to-destination routing. Lane-level cost analysis is how you discover that FedEx is cheaper on Northeast lanes but YRC wins the Midwest.
  • Base Freight (Linehaul) — The core transportation charge before surcharges. This is your negotiating baseline.
  • Fuel Surcharge (FSC) — Calculated weekly from the DOE/EIA national diesel price index, typically 18–28% of the base linehaul. FSC tables are carrier-specific and negotiable — locking a fixed FSC table in your contract eliminates calculation disputes.
  • Accessorial Charges — Liftgate, residential delivery, limited access, detention, inside delivery, appointment delivery, reweigh, and reclass fees. Accessorials collectively add 15–40% on top of the base LTL rate, and 25–40% of freight invoices include at least one accessorial beyond the fuel surcharge. This is where billing errors concentrate.
  • Invoice Total — The sum of base freight, fuel surcharge, and all accessorials. If this is the only number you check, you're flying blind on cost structure.

Parcel invoices from FedEx and UPS add another layer: dimensional weight calculations (using a divisor of 139 for most services), delivery area surcharges, additional handling fees, and residential delivery premiums — each billed under carrier-specific charge codes that don't match across carriers.

The extraction challenge isn't that any one of these fields is hard to find. It's that each carrier places them in different positions, labels them differently, and sometimes splits them across multiple pages. A human reconciler has to mentally remap "Charge Code 050" on a FedEx invoice to "Base Freight" and "Liftgate Fee" on a YRC invoice to the same accessorial category — across 50+ PDFs, under time pressure.

The Batch Workflow: From 5 Carrier Invoices to One Consolidated Spreadsheet

ImageToTable.ai uses Custom Column Extraction: instead of training templates or drawing bounding boxes around each field, you type the column names you want — the same column headers that will appear in your final spreadsheet — and the AI locates the corresponding values anywhere on each document by understanding what the field means, not where it sits. This is what makes multi-carrier batch processing work without pre-configuring a template for every carrier format.

Here's how a logistics manager runs the monthly freight reconciliation batch:

1

Upload all carrier invoices at once.

Drag in 50+ PDFs from five carriers — FedEx, UPS, a regional LTL carrier, a last-mile courier, and a freight broker. The system accepts PDFs, scanned images, and even phone photos of paper invoices. No pre-sorting, no separating by carrier.

2

Define your columns once — they apply across all carriers.

Enter the column names that define your shipping cost analysis: Carrier, PRO#, Shipment Type, Weight, Zones, Base Freight, Fuel Surcharge, Accessorials, Total. Because the AI understands what "Fuel Surcharge" means — regardless of whether a carrier labels it "FSC," "Fuel Fee," or "Charge Code 050" — the same column definition works across every invoice format.

3

AI processes the entire batch — all carriers, all formats.

The AI reads each invoice, locates the values matching your column definitions, and populates the output table. A FedEx PDF, a YRC scanned invoice, and a handwritten last-mile courier bill all feed into the same structured spreadsheet. Processing takes 5–10 seconds per page — a 50-invoice batch completes in minutes, compared to the 2.5 hours of manual data entry (at roughly 3 minutes per invoice).

4

Export one consolidated spreadsheet with all carrier data.

Download as Excel — every invoice from every carrier in one table, with identical column structure. Sort by carrier to see individual performance, filter by lane to compare rates on the same route, or pivot by shipment type to analyze cost breakdowns. This single file is your freight spend reconciliation for the month.

JPG/PNG/PDF AI Extraction

Files are processed securely and not stored.

Cross-Carrier Cost Comparison: The Insight Single-Invoice Processing Can't Give You

When all carrier invoices land in one spreadsheet with identical column structure, cost patterns emerge that are invisible when you process invoices individually. This is the batch advantage — not speed for its own sake, but visibility into the cost structure of your entire carrier portfolio.

Consider a typical discovery during batch reconciliation: YRC is charging $0.18 per pound on Midwest lanes while FedEx Freight comes in at $0.24 on the same corridors. The difference — $0.06 per pound — on 40,000 pounds of monthly freight is $2,400. That's $28,800 annually on one lane family. But you only see this when carrier invoices sit side by side with comparable lane and weight data.

Fuel surcharge patterns tell another story. One carrier applies FSC at 22% of base freight on every invoice. Another fluctuates between 18% and 26% depending on the week, hitting 26% on the invoices that happened to land in the last week of the month. Without batch comparison, the higher rate looks like bad luck. With batch comparison across all carriers, it's a pattern worth addressing in your next contract negotiation — either by locking a fixed FSC table or by routing more volume to the carrier with the lower effective fuel rate.

Accessorial frequency by carrier is the third dimension. One regional LTL carrier applies liftgate charges to 60% of deliveries — including shipments to dock-equipped warehouses where liftgate wasn't requested. Another carrier's detention charges consistently appear on invoices where your records show driver check-in and check-out within the free-time window. Processing invoices individually, these are one-off anomalies you might dispute or ignore. Processing them in batch makes them a data set: six months of accessorial data by carrier gives you the evidence to renegotiate contract terms or switch carriers on specific lanes.

The core insight: you can't negotiate what you can't quantify. Cross-carrier batch processing turns anecdotal suspicion — "I think YRC charges more for fuel" — into structured data you can bring to a carrier business review.

Computed Columns: Logistics KPIs Calculated During Extraction

Raw extracted data — Carrier, Weight, Base Freight, Fuel Surcharge, Total — answers "what did we pay?" Computed columns answer "was it reasonable?" and "which carrier is actually cheapest?"

ImageToTable.ai's Computed Columns feature lets you define calculations that run during extraction, so the AI outputs finished KPIs rather than raw numbers you have to formula-crunch afterward. You write the calculation logic directly in the column name or in a Rule Format (for more complex multi-step derivations), and the AI performs the math as it processes each invoice.

Three computed columns that logistics teams routinely need:

Computed ColumnFormulaWhat It Tells You
Cost Per PoundTotal / WeightThe single most useful carrier comparison metric. A $1,200 invoice for 8,000 lbs ($0.15/lb) is cheaper than an $800 invoice for 4,000 lbs ($0.20/lb) — but you need the computed column to see it at a glance across 50 invoices.
Fuel as % of TotalFuel Surcharge / Total × 100Flags carriers whose fuel surcharge structure is disproportionately high relative to competitors. If Carrier A consistently sits at 18% and Carrier B at 26%, you have a negotiation data point — or a routing decision.
Accessorial RatioAccessorials / Base Freight × 100Measures how much extra you're paying beyond the base rate. An accessorial ratio above 30% on any carrier-lane combination signals either operational issues at the delivery point or a carrier that over-indexes on surcharge billing.

These aren't Excel formulas you apply after export — they're computed during extraction, which means the output spreadsheet arrives with the KPIs already calculated. For a 50-invoice batch, that eliminates 150 formula entries (three computed columns × 50 rows) and the inevitable copy-paste errors that come with them.

This is possible because the AI processes each document, extracts the raw values, and runs the computation in the same pass — it's not post-processing on a CSV export. Define Cost Per Pound (Total / Weight) as a column name, and every row in your output gets the calculation automatically.

Building Monthly Carrier Scorecards from Batch Extractions

The natural output of consistent monthly batch processing is a carrier scorecard — a structured view of cost and performance across every carrier in your portfolio. The key performance indicators logistics teams track — on-time delivery, claims rate, accessorial frequency, cost per pound by lane — all require data that batch extraction produces as a byproduct.

Here's what a monthly carrier scorecard built from batch-extracted freight invoice data looks like in practice:

KPIData Source from Batch ExtractionWhat to Track
Cost Per PoundComputed column: Total / WeightMonth-over-month trend per carrier. A rising cost-per-pound on the same lanes signals rate creep or increased accessorial billing.
Accessorials as % of FreightComputed column: Accessorials / Base FreightIndustry benchmark: 15–25% is normal for LTL programs. Above 30% consistently warrants a contract review or shipment profile audit.
Fuel Surcharge VarianceExtracted Fuel Surcharge / Base Freight per invoiceCompare FSC percentages across carriers in the same week. A carrier consistently 5+ points above peers on the same DOE index base is either using a different FSC table or calculating on the wrong base amount.
Invoice Accuracy RateManual review flag: did extracted total match expected?Track the percentage of invoices where the billed amount matched your expected accrual. A declining accuracy rate on a specific carrier is an early warning of systematic billing drift.
Lane Cost ComparisonExtracted: Carrier, Lane, Cost Per PoundWhich carrier is cheapest on each lane family? This data feeds routing decisions — not just carrier selection at contract time, but day-to-day dispatch choices.

The scorecard isn't a separate project — it's the natural monthly output of running the same batch extraction workflow with the same column definitions. Once you've defined columns for Carrier, Lane, Weight, Base Freight, Fuel Surcharge, Accessorials, and your computed KPIs, every monthly batch produces a data set you can compare to last month's. Six months of this data gives you the evidence base for carrier business reviews that most logistics teams spend weeks assembling manually.

And because ImageToTable.ai processes invoices from any carrier format without template setup, adding a new carrier to your portfolio doesn't break the workflow — the same column definitions work on the new carrier's invoices immediately. Your scorecard dataset stays consistent even as your carrier mix changes.

The Month-End Close: Why Batch Processing Matters When the Clock Is Running

Finance closes the books on the third business day of the month. For the logistics team, that means all freight spend for the prior month must be reconciled, categorized, and submitted before the cutoff — or it becomes an accrual estimate that finance will chase you about later.

Manual reconciliation across five carriers' invoice formats in three days isn't just slow — it's structurally incapable of producing the level of analysis described above. The team defaults to approval mode: scan for obvious errors, approve the rest, move on. Cross-carrier cost comparison, KPI computation, and scorecard construction get deferred to "when we have time" — which, for a team already running against a monthly deadline, means never.

Batch extraction changes the timeline: the 2.5 hours of manual data entry becomes 5 minutes of upload-and-define. The remaining time — nearly the full three-day window — shifts from data entry to analysis. The logistics manager who used to spend day one of month-end typing numbers from PDFs now spends it reviewing a pre-built cost comparison spreadsheet, flagging anomalies, and preparing carrier scorecard data for the monthly operations review.

This is the throughput difference that matters: not "faster data entry," but "data entry becomes analysis time."

Frequently Asked Questions

Can ImageToTable.ai handle handwritten freight invoices from smaller carriers?

Yes. The AI recognizes handwritten text, including cursive and numbers, on scanned invoices and phone photos. For last-mile couriers or regional carriers that still send paper invoices with handwritten totals, you can photograph the invoice with your phone and upload it directly into the same batch as your FedEx and UPS PDFs. Accuracy is highest when the handwriting is reasonably legible and the photo is well-lit, but the system doesn't require machine-printed text.

What if carriers use completely different terminology for the same charge?

This is the core advantage of semantic extraction over template-based OCR. When you define a column as "Fuel Surcharge," the AI looks for the concept — a fuel-related surcharge on the invoice — not a specific label. Whether a carrier calls it "FSC," "Fuel Fee," "Diesel Surcharge," or "Charge Code 050," the AI maps the value to your defined column because it understands what the term means in context. No per-carrier template or mapping table required.

Can I set up the batch to run on a recurring monthly schedule?

ImageToTable.ai doesn't have a scheduled automation feature — each batch is initiated manually by uploading files and defining columns. However, you can save your column definitions as a preset (a saved column template) so that each month you simply select the preset, upload the new batch of invoices, and run the extraction with the same structure. The preset ensures consistency month-over-month, which is what makes the carrier scorecard data comparable across periods.

What happens when the AI can't find a field on a particular invoice?

The system leaves the cell empty and flags it for review. This is most common when a carrier invoice genuinely doesn't include a field you asked for — for example, a parcel carrier invoice that has no NMFC Class because parcel shipments don't use NMFC classification. Empty cells in your output spreadsheet are easy to spot and typically require no action beyond confirming the field doesn't apply to that carrier. For fields that should be present but weren't extracted, you can manually enter the value in the output Excel file.

Can I use the Collection Link feature to have carriers upload invoices directly?

Yes. ImageToTable.ai's Collection Link generates a shareable URL that you can send to carriers or freight brokers. They open the link, enter a verification code, and upload their invoice PDFs — no account or login required on their end. The files appear in your processing queue automatically. For logistics teams that chase carriers for missing invoices at month-end, this eliminates the email-back-and-forth that eats into the three-day reconciliation window.

Does batch processing work with the Google Sheets add-on?

Yes. The Google Sheets add-on supports the same batch upload and custom column extraction workflow directly inside Google Sheets. If your logistics team already tracks freight spend in Sheets, you can upload carrier invoices through the sidebar, define your columns, and have the extracted data appended directly to your existing spreadsheet — no file export step needed.

📮 contact email: [email protected]