← Freight accessorial invoice auditor

How do I check a whole carrier invoice at once?

A partial review only ever finds what you already suspected. You open the invoice, look at the detention line that caught your eye, and never see the liftgate that was billed twice — because retyping every line into a spreadsheet is not worth an afternoon, so nobody does it.

The auditor now takes the carrier's own export. Load the file, confirm the columns, type your accessorial rates once, and the whole invoice is checked at once. The file is read inside your browser and never uploaded.

The four steps

  1. Export the invoice as CSV from the carrier portal or your TMS. A range copied out of a spreadsheet works too — paste it straight in, tabs and all.
  2. Check the guessed columns. Headings like Invoice Number, PRO Number, Charge Code, and Charge Amount are matched automatically, and every guess is shown in a dropdown you can correct.
  3. Type your rate card once — one CODE, amount per line, from the rate confirmation. This is the half the carrier's file cannot supply.
  4. Review what is flagged, then download the review CSV or copy the factual draft for the carrier.

A worked example

Six lines exported from a carrier portal:

Invoice Number,PRO Number,Charge Code,Charge Amount
INV-4471,PRO-77120,LINEHAUL,912.40
INV-4471,PRO-77120,FUEL,187.30
INV-4471,PRO-77120,LIFT,125.00
INV-4471,PRO-77120,LIFT,125.00
INV-4471,PRO-77120,DET,300.00
INV-4471,PRO-77120,RESI,45.00

…and a three-line rate card from the confirmation:

LIFT, 75
DET, 75
RESI, 45

With only import lines whose code is in my rate card ticked, line haul and fuel are skipped — and the page says so rather than quietly dropping them. That leaves 4 accessorial lines totalling $595.00, of which $325.00 is above the rate card across 3 flagged lines:

Line Billed Rate card Above Flag
LIFT$125.00$75.00$50.00Over expected
LIFT$125.00$75.00$50.00Over expected, possible duplicate
DET$300.00$75.00$225.00Over expected
RESI$45.00$45.00$0.00—

Those figures are recomputed from the same code the page runs, by a test that fails if this write-up and the tool ever disagree.

What it will not do

What a rate card looks like

Commas, spaces, colons, and equals signs all work, so a block pasted out of a confirmation usually needs no editing. Lines starting with # are ignored. A line that is not a code and an amount is reported back to you rather than skipped:

# LTL accessorials, 2026 confirmation
LIFT, 75
DET 75
RESI: $45.00
LUMPER = 90

Rates that are not flat

Detention, storage, driver assist, and reweigh are rarely a single number. They are a rate per unit, usually past a free allowance and often under a cap — and they are the lines most worth checking, because the quantity is the part carriers and shippers disagree about. Write the rule the way the confirmation states it:

DET 65/hr after 2 hours, max 325
STO $40 per day after 1 day
REWEIGH 4.50/cwt min 45
DRIVER ASSIST 35/hour, not to exceed 140
SORT 1.25/piece

Units understood are hour, minute, day, cwt, pallet, piece, mile, stop, and unit. Order does not matter: max 325 after 2 reads the same as after 2, max 325. The rate-card box reads every per-unit rule back to you in its own words, so you can see the allowance was understood as an allowance rather than folded into the rate.

A per-unit rule needs a quantity column mapped — hours, days, or weight. Map it in the same step where you map the amount column; headings like Detention Hours, Storage Days, and Billed Weight are guessed for you. If the quantity is in minutes and the rate is per hour, that one conversion is done and stated on the line. Any other mismatch — pallets against a per-hundredweight rate — is refused rather than guessed.

On a line billed $300.00 for detention with 5 hours on dock, against DET 65/hr after 2 hours, max 325, the expected amount is $195.00 and the line shows $105.00 above the rate card. The review queue, the CSV, and the dispute draft all carry the reason — 3 hours past 2 free × $65.00/hour — because a credit request that quotes the contract term is something the carrier's rating desk can check, and a bare expected figure is not.

If a per-unit code has no quantity, the line imports with the expected amount blank and the reason shown. It is never priced at zero: a $0.00 expectation would report the whole billed line as recoverable, which is a much more expensive kind of wrong than a gap you can see.

Complementary to the multi-line accessorial auditor (the review queue itself), the detention clock (one line against dock time), fuel percent versus linehaul, and who holds the cash (eat it, bill the customer, or review for a credit). This page is only about getting a whole invoice into the queue.

Common questions

How do I check a whole carrier invoice at once?

Export the invoice from the carrier portal or your TMS as CSV, load it into the auditor, confirm the guessed columns, and type your accessorial contract rates once as CODE, amount lines. Every imported line is then compared against your rate card. On a six-line example invoice, skipping line haul and fuel leaves four accessorial lines totalling $595.00, of which $325.00 is above the rate card — including a $125.00 liftgate billed twice.

Is my invoice uploaded anywhere?

No. The file is read inside your browser with the standard local file reader. There is no server, no account, no cookie, and no analytics vendor. Closing the tab discards everything you loaded.

What if my export does not say what I expected to pay?

It will not — a carrier invoice states what it billed, never what you expected. That is what the rate card is for: type each accessorial code and its contracted amount once and the importer applies it to every matching line. Lines whose code is not in your rate card still import and are still checked for duplicates, missing codes, and unreadable amounts.

How do I find a duplicate freight charge?

Import the whole invoice rather than the lines you already suspect. A line repeating the same invoice, reference, code, and amount is flagged as a possible duplicate, with no rate card needed. Double-billed accessorials are the finding a partial review misses, because nobody retypes the lines they are not already suspicious of.