• Blog
  • How to Run an Invoice Audit: A Step-by-Step Checklist for Freight and 3PL Invoices (2026)

How to Run an Invoice Audit: A Step-by-Step Checklist for Freight and 3PL Invoices (2026)

How to Run an Invoice Audit - step-by-step checklist

An invoice audit is a line-level review that tests every billed charge against the rate agreement and the shipment record before payment is released.

Key Takeaways

  • Pull five artifacts before you open the first invoice: the signed rate agreement with all amendments, the accessorial schedule, the fuel table with effective dates, the shipment records for the period, and the open dispute log. A review missing any one of them produces opinions instead of findings.
  • Match duplicates on shipment attributes, not invoice numbers. Carriers resubmit the same charge under a pro number and then a bill of lading number, and the second submission clears because the document ID is new.
  • A finding survives carrier pushback only when it carries three fields: the contract clause that governs the charge, the amount you expected, and the variance in dollars. Capture all three at the moment of discovery, not when the dispute is filed.
  • Dispute windows are set in your carrier and provider contracts, not by industry convention. Read the exact number of days out of each agreement and build the tracker around the shortest one.
  • FreightOptics recovers 4 to 8% on freight audit and up to 9% on parcel, and produces a timestamped audit trail your Finance team can hand to an auditor.

Most billing errors are not hidden. They sit in plain text on invoices nobody had time to open. Freight, parcel, and warehouse bills arrive in different formats on different cycles, the rate agreement lives in a folder someone else owns, and the payment run does not wait. So the review gets skipped, and the variance lands in the accrual. This article is the procedure, not the theory: what to pull, how to decide which invoices to review, the tests to run line by line, how to write a finding that holds up, how to file and track the dispute, and how to confirm the credit actually arrived.

Assign the Work Before You Open a Single Invoice

Three groups touch this process, and the review stalls when the split is informal.

Logistics and Operations run the execution. They pull the invoices, hold the shipment and receipt records, confirm whether an accessorial event actually happened, and work the exception queue. When a carrier claims a liftgate was required, Operations is the only group that can say whether the delivery site had a dock.

Finance owns documentation and dispute tracking. They set the materiality threshold, hold the close calendar, decide when a variance becomes an accrual adjustment, and keep the dispute log current so recoveries reconcile against the general ledger.

Procurement owns the contract language. They produce the governing clause for any charge under challenge and carry findings into the next negotiation.

Name a single person per group before the cycle starts. More findings are lost in the handoff between these three groups than are lost on the merits of the charge.

Build the Source File: What to Pull and Where It Lives

Everything in this section is a prerequisite. Collect it once per cycle and store it in one place with a fixed folder structure so the next reviewer does not repeat the work.

Artifact Owner What it is used for Common failure
Signed rate agreement plus every amendment Procurement Establishes the authorized rate for each lane, mode, and service level Amendments live in email and never reach the reviewer
Accessorial and charge-code schedule Procurement Defines which codes may be billed and under what trigger Codes appear on invoices that are absent from the schedule
Fuel surcharge table with effective dates Procurement Sets the correct index and the date range it applies to Expired tables stay in the carrier’s billing system for quarters
Invoice files for the period Finance The population under review Parcel arrives weekly, freight arrives daily, warehouse invoices arrive monthly as PDFs
Shipment and receipt records Operations Confirms weight, dimensions, lane, service date, and delivery outcome Records sit in a system the AP reviewer cannot access
Prior dispute log and credit status Finance Prevents re-disputing a settled item and catches credits never applied Tracked in a personal spreadsheet

If warehouse invoices arrive as PDFs with no line-item detail behind the totals, note it now. That gap determines how much of the third-party logistics provider review you can actually complete by hand.

Decide What to Review: Sampling Rules That Match Your Volume

Reviewing every invoice is correct at low volume and wasteful at high volume. Pick the method before the cycle starts, write it down, and apply it consistently so results stay comparable month over month.

Review the full population when invoice volume is low enough that one analyst can clear it inside the payment cycle, when a carrier or provider is new, in the first 90 days after a rate agreement changes, or immediately after a carrier notifies you of a billing platform migration. System changes are the single most reliable predictor of duplicate charges, because the second submission carries a new reference number.

Sample by risk when volume exceeds what the payment window allows. Build the sample in three layers:

  1. Full review above the threshold. Set a dollar amount with Finance and review 100% of invoices above it. Every high-value invoice gets opened.
  2. Full review of flagged conditions regardless of amount. Any invoice carrying a charge code absent from the schedule, a vague fee label, a rebilled carrier charge, a monthly minimum, or a first-time accessorial goes into the review pile no matter how small.
  3. Fixed random slice below the threshold. Take a set percentage of the remainder, chosen the same way every cycle. This layer measures the error rate you are not otherwise seeing. If the slice returns findings at a materially higher rate than the flagged pile, the threshold is set too high.

Record the sample size, the method, and the population count each cycle. Without those three numbers, you cannot tell whether a drop in findings means cleaner invoices or a smaller sample.

Run the Line-Level Checks

These are the tests. Run them in order on each invoice in the review pile. Every test has a defined fail condition, so two reviewers reach the same conclusion on the same invoice.

  1. Rate match. Compare the billed linehaul or base rate to the agreement for that exact lane, mode, and service level. Fail if the rate is correct for the carrier but wrong for this lane.
  2. Weight and tier. Recalculate the billable weight and confirm the charge sits in the right weight break. A correct per-hundredweight rate applied at the wrong tier still overcharges.
  3. Service level. Confirm the service billed matches the service requested on the shipment record. Fail if an expedited rate appears on a standard-service shipment.
  4. Date and effective period. Check the ship date against the effective dates of both the rate agreement and the fuel table. Fail if the charge uses a table that expired before the shipment moved.
  5. Accessorial to event. For each accessorial, find the operational event that triggered it in the shipment or receipt record. No event, no charge. Detention, liftgate, residential delivery, after-hours receiving, and address correction are where this test earns its time.
  6. Charge code authorization. Confirm every code on the invoice appears in the schedule. An unrecognized code is a finding on its own, before you evaluate the amount.
  7. Duplicate check on attributes. Query prior payments on the combination of weight, origin, destination, service date, and amount. Ignore the invoice number. This is the test that catches resubmissions after a billing platform change.
  8. Vague fee labels. For any charge labeled “miscellaneous handling,” “service surcharge,” or “fuel recovery adjustment,” require three things before approval: the contract clause or tariff section that authorizes it, the shipment data that triggered it, and the calculation that produces the invoiced amount. Missing any one, hold the line item and dispute it.
  9. Math. Re-add the invoice. Confirm the line items sum to the total and that discounts apply to the correct base.
  10. Post-approval changes. Compare the approved version to the version in the payment run. Amended invoices and credit adjustments pushed in after sign-off bypass the review entirely unless the versions are compared. Any difference routes the invoice back through the checks above.

Test 10 is the one most teams have no control for. If your accounts payable system does not version-lock an approved invoice, add a manual comparison step for anything above the materiality threshold until it does.

Adjust the Checks by Invoice Type

Freight audit, parcel audit, and third-party logistics provider audit are three different reviews. The tests above apply to all three, but each carries checks the others do not.

Review type What you are auditing Checks unique to it
Freight audit Carrier invoices for LTL (Less Than Truckload) and FTL (Full Truckload) movements Freight class and NMFC code, reweigh and reclassification charges, minimum charge application, detention and reconsignment against dock records
Parcel audit Small package carrier invoices Zone assignment, dimensional divisor and billable weight, contracted discount against published rate, residential and delivery area surcharges, service performance against the guarantee terms in your agreement
3PL audit Warehouse and fulfillment provider invoices Storage billed on the correct period basis, monthly minimums applied when actual volume already exceeded them, pick and pack unit counts against receipt records, supplies charges, markup on rebilled carrier freight

The warehouse review is the one that usually gets deferred, because the invoice is a total with no structure underneath it. FreightOptics 3PL Audit extracts pick, pack, storage, supplies, rebills, and minimums into structured records and validates each charge against the rate agreement, which turns that PDF into something a reviewer can actually test.

Write the Finding So It Holds Up

A carrier or provider will argue with a variance and concede to a citation. Capture the same fields on every finding, at the moment you find it, in one shared log rather than in reviewer notes.

Field What goes in it
Invoice number and date As printed on the document
Shipment reference Pro number, bill of lading, or receipt ID
Charge code and description Exactly as billed, including vague labels
Amount billed The line item as invoiced
Amount expected What the agreement produces for this shipment
Variance Billed minus expected, in dollars
Contract basis Section or clause number that governs the charge
Evidence attached Shipment record, dock log, rate table screenshot, prior payment record
Error category Rate, tier, accessorial, duplicate, unauthorized code, math, post-approval edit
Reviewer and date Who found it and when

Two fields do most of the work later. Contract basis is what ends the argument. Error category is what lets Finance report by root cause instead of by invoice, and root cause is what changes carrier behavior at renewal.

Price every finding in dollars even when the amount is small. A $40 charge appearing on 60 invoices a quarter is a $9,600 annual problem, and it will never look like one on a single invoice.

File the Dispute and Track It to Resolution

Findings that stay in a spreadsheet are not recoveries. Move each one through a defined sequence with a named owner at every step.

  1. Confirm the window. Read the dispute period out of the specific agreement before filing. Windows differ by carrier, by provider, and sometimes by charge type. Build your internal deadline inside the shortest one you have.
  2. Decide short-pay or pay-and-recover. Check whether the contract permits withholding the disputed amount. If it does, short-pay the line item and pay the balance on time. If it does not, pay in full and pursue the credit, and tell Finance so the receivable is recorded rather than forgotten.
  3. File through the carrier’s required channel. Portal, EDI, or email as the agreement specifies. Attach the evidence from the finding record. A dispute filed through the wrong channel restarts the clock.
  4. Log it the same day. Record the filing date, the channel, the claim or case number, the disputed amount, and the internal owner.
  5. Set the follow-up date. Assign a specific date, not a general intention. Most disputes stall because nobody owns the second contact.
  6. Age the queue weekly. Sort open disputes into 0 to 30 days, 31 to 60, and 61 or more. Anything past 60 goes to the account manager with the original evidence attached.
  7. Escalate on a schedule. Reviewer, then carrier account manager, then your own Procurement lead. Escalate on the calendar, not on frustration.
  8. Close with an outcome code. Approved in full, approved in part, denied with reason, or withdrawn. Code the denials as carefully as the wins, because a denial that cites contract language you disagree with is a renegotiation item.

Finance should be able to answer three questions from the log at any point in the month: what is open, what is aged past the window, and what has been approved but not yet credited.

Close the Loop: Confirm the Credit and Fix the Cause

The audit is not finished when the dispute is approved. It is finished when the money is in your account and the error stops repeating.

Verify the credit posted. Match each approved dispute to the credit memo and confirm it applied to the correct invoice. Credits get issued against the wrong account and get netted into an unrelated invoice regularly enough that the check is worth the minutes.

Reconcile to the accrual. Finance updates the accrual with recovered amounts and writes off denials in the same close cycle the outcome landed in. Recoveries that arrive two months after the accrual was booked distort both periods.

Review recurrence by error category. Once a month, sort findings by category and by carrier rather than by invoice. A code that keeps appearing across facilities or lanes is a systemic billing configuration problem, and disputing each instance forever costs more than fixing it once. FreightOptics groups exceptions into a reviewable queue and shows recurring charge patterns by warehouse and charge type, so a code that bills twice as often at one facility is visible without a manual pivot.

Feed the results into the next negotiation. Bring the dispute log to carrier contract optimization work. Denied disputes point at ambiguous contract language. Approved disputes that keep recurring point at a carrier that has not fixed a billing table.

Recheck the sample design. If the random slice below your threshold keeps returning findings, lower the threshold. If it returns almost nothing across several cycles, raise it and spend the hours on the flagged pile instead.

Conclusion

The procedure is what makes this work repeatable: pull the same source file every cycle, sample the same way, run the same ten checks, and record the same fields on every finding. Operations confirms whether the event happened, Finance owns the log and the close, and Procurement produces the clause that ends the argument. Track disputes by age and close each one with an outcome code, because a denial you never coded is a negotiation point you will not have at renewal. Then check that the credit actually landed. Most billing losses trace back to ordinary charges that nobody had a documented reason to challenge, which is exactly what this procedure produces.

The Invoice Category Most Teams Never Audit

Carrier invoices get checked. 3PL warehouse invoices usually do not, because the charges arrive as a PDF with no line-item detail behind them. FreightOptics 3PL Audit rebuilds that detail and validates it against your rate agreement. Put your 3PL invoices through an audit

Frequently Asked Questions

How many invoices should we actually review?

Review 100% when volume fits inside your payment cycle, when a carrier or provider is new, for 90 days after a rate change, and right after a carrier migrates billing platforms. Above that volume, review every invoice over a materiality threshold Finance sets, every invoice carrying a flagged condition regardless of amount, and a fixed random slice of the rest.

Should we audit before or after paying the invoice?

Before, whenever the payment cycle allows it, because catching an error costs less than recovering one. Post-payment review still pays for itself on high-volume parcel and freight, where the payment deadline arrives faster than a reviewer can. Most teams run both: pre-payment checks on anything above the threshold, and a post-payment sweep for accrual reconciliation at close.

What counts as a red flag on an invoice?

A charge code that is not in your schedule, an accessorial with no matching event in the shipment record, a fuel surcharge using an expired table, a fee labeled “miscellaneous” with no clause behind it, a rate that is right for the carrier but wrong for the lane, and any invoice whose payment-run version differs from the approved version.

How do we catch duplicate invoices when the numbers are different?

Stop matching on the document ID. Query prior payments on the combination of weight, origin, destination, service date, and amount. Carriers resubmit under a pro number and then a bill of lading number, and duplicates spike during billing platform migrations, so treat any carrier system change notice as a reason to widen the match criteria.

What do we send the carrier when we dispute a charge?

The invoice number, the shipment reference, the charge code as billed, the amount billed against the amount you expected, the variance in dollars, the contract section that governs the charge, and the evidence behind it. File it through the channel the agreement specifies and inside the dispute window written into that contract. A variance sent without the governing clause attached gets argued; one that names the clause usually gets credited.

Talk to Us About Transportation Spend

You're Overpaying on Freight Transportation Costs.

Tell us where freight or parcel costs are rising or where the numbers do not add up.

See Where Your Freight Spend Is Going