Skip to content
NexumLab

Three-way matching carrier invoices against rate confirmations

Cedarline's billing team reconciled thousands of carrier invoices by hand every week. We built a matching pipeline with an exception queue that only shows the invoices that genuinely need a person.

Client
Cedarline Logistics
Industry
Freight brokerage, 88 staff
Engagement
10 weeks, then ongoing monitoring
Published

Note.Client name is anonymized and figures are illustrative until publication is approved. Replace with a signed engagement before launch.

1,940
Invoices matched per week without review
94%
Of volume cleared without a human touch
71%
Smaller weekly exception queue

Business context

Cedarline Logistics brokers freight between shippers and independent carriers. Revenue depends on the spread between what a shipper pays and what a carrier charges, so every invoice has to be matched back to the agreed rate before it is approved for payment.

The bottleneck

Carrier invoices arrived by email, often as a PDF photo of a paper document. Billing staff compared each invoice against the rate confirmation in the management system, line by line, then corrected mismatches by hand.

At peak volume that was more than 2,000 invoices a week handled by five people. Accessorial charges such as waiting time or detention were the worst: they were legitimate but impossible to verify quickly, so staff either approved them to keep carriers moving or pushed them into a queue that never emptied.

What existed before

  • Three-way matching done manually in spreadsheets
  • No consistent rule for which accessorial charges were acceptable
  • Exception queue that grew faster than it was worked
  • Carrier payment delays that damaged relationships

Solution architecture

Invoices are ingested from email and parsed into line items. Each line is matched against the rate confirmation, the load record, and the accessorial policy for that customer.

Deterministic rules handle the parts that are genuinely deterministic: mileage rates, fuel surcharge tables, and per-stop fees. A reasoning step handles the parts that are not, such as reading a scanned invoice with an unusual layout or interpreting a detention note.

The output is one of three states: matched, matched with an adjusted amount, or exception. Only the exceptions reach a person, and each one arrives with the specific disagreement spelled out.

Agent behaviour

  • Read scanned and phone-photographed invoices without requiring carriers to change format.
  • Normalize line item descriptions to the brokerage's own chart of charge codes.
  • Propose an adjustment amount for a line that does not match, with the reasoning attached.
  • Never approve an adjustment above the threshold the finance team set.

Rollout

  • Week 1 to 2: Shadowing the billing team and capturing the rules they apply without writing them down.
  • Week 3 to 6: Building the matcher and running it silently against eight weeks of historical invoices.
  • Week 7 to 8: Routing exceptions to a queue while matched invoices continued through the old process.
  • Week 9 to 10: Turning on automatic approval within thresholds and reviewing every single rejection daily.

Before and after

StepBeforeAfter
IntakeManual download and re-keyParsed from the carrier email
MatchingLine by line in a spreadsheetRules first, reasoning for the rest
ExceptionsEverything unclearOnly genuine disagreements
ApprovalAll invoices reviewedMatched invoices approved within threshold

Business result

By the end of the rollout the pipeline was matching 1,940 invoices a week with no human review, about 94% of total volume. The weekly exception queue dropped by 71%, which meant the billing team could actually finish it.

Carrier payment time improved by two days on average, which reduced the number of carriers declining future loads.

Lessons learned

  • Rules first, language models second. Most of the value came from a fuel surcharge table, not from reasoning.
  • Thresholds have to live with finance, in writing, from the first week. The agent approves nothing the finance team has not explicitly allowed.
  • Scanning quality was the real ceiling. We added a retry path with a sharper image request instead of accepting bad reads.

Start a project

Tell us what you are building or fixing.

hello@nexumlab.com

Include what you are building, your timeline and a rough budget. We reply within one business day. No forms, no chat widget, no sales sequence.

Write the email