3PL invoice audit guide

How to audit a 3PL invoice

A seven-step process for ecommerce finance and operations teams that need to know what was billed, what the contract supports, what the arithmetic says, and what still cannot be concluded.

Published by Auditario12 minute readUpdated 14 August 2026Evidence-first workflow

The short answer

To audit a 3PL invoice, compare every supported invoice line with the contract terms that governed the same service date and scope. Recalculate the expected charge with exact arithmetic, investigate plausible non-error explanations, record the dispute deadline, and keep unsupported or unresolved amounts out of any claim total.

A useful audit is reproducible. Another person should be able to follow the same invoice row, contract clause, input quantity, unit, formula, and evidence state and reach the same conclusion. That makes document identity and source coordinates as important as the final subtraction.

1. Collect the governing documents

Start with the invoice, but do not start calculating until you know which documents governed it. A rate card rarely stands alone. The signed master services agreement, statement of work, amendments, implementation schedules, pricing exhibits, written concessions, and later notices can change its meaning.

  • The complete invoice and itemized export. Keep the original PDF plus CSV or XLSX detail when available; summaries may hide shipment references, quantities, and reversals.
  • The signed agreement set. Include the MSA, SOW, rate cards, exhibits, amendments, and any document that establishes precedence.
  • Period evidence. For monthly tiers, minimums, storage age, or credits, gather sibling invoices, inventory statements, credit memos, and the relevant correspondence.
  • Operational records where the check requires them. Orders, shipments, receipts, returns, weights, zones, or carrier adjustments may be necessary to establish what actually happened.

Record a stable identifier for each source: filename, document version, effective date, and page, row, or cell. If a scan or export is incomplete, mark the limitation now rather than filling the gap from memory.

2. Set the audit scope and deadline

Define the provider, legal entity, facility, invoice number, billing period, currency, and included charge families. Then find the dispute-window clause and its anchor: invoice date, receipt date, or another contract event. “Usually 30 days” is not evidence for this invoice.

Keep three coverage numbers separate:

  1. Total billed spend in the scope.
  2. Evaluated spend supported by enough evidence to run a defined check.
  3. Unsupported spend that could not be priced or verified.
Coverage is not assurance. If 80% of spend can be evaluated, the remaining 20% is not therefore correct. It is an explicit coverage gap.

3. Normalize the invoice lines

Preserve each source row, then add normalized fields rather than overwriting the raw description. At minimum, capture the invoice line ID, service date, raw description, normalized charge family, quantity, unit of measure, billed rate, billed amount, currency, order or shipment reference, SKU or receipt-lot reference, and source coordinate.

Check whether the line ties arithmetically before comparing it with the contract. Quantity × rate may equal the billed amount even when the wrong rate was used. It may also be an unsafe formula when “quantity” actually represents a percentage, divisor, or other basis. Unit semantics must be plausible for the rule you apply.

Line-extension check displayed quantity × displayed unit rate = displayed amount

4. Map each line to the governing rate logic

Match the line to a contract rule with the same effective date, facility or channel scope, service category, unit, and pricing basis. Resolve amendments in their stated order of precedence. Never silently substitute the nearest description or the latest rate card.

A contract rule may be a flat fee, unit rate, first-and-additional structure, matrix, volume tier, minimum, aged-storage tier, percentage, cost-plus term, or external index. Each needs different inputs. Read the 3PL rate-card guide before turning prose into a formula.

  • Does the rule cover this service date and facility?
  • Do the invoice quantity and the contract rate use the same unit?
  • Did an amendment, concession, surcharge, or minimum override the apparent rate?
  • Does the calculation require a complete month, sibling invoice, external index, or operational fact that is not yet present?

5. Recalculate the expected charge

Use exact decimal arithmetic, not floating-point approximations, and apply the contract’s rounding rule at the correct stage. Store the inputs and formula beside the result. A basic variance is billed amount minus expected amount, but the expected amount must come from a source-backed rule.

Basic variance variance = billed amount − contract-supported expected amount
Synthetic example

An invented invoice line shows 6 each-picks at $0.35, or $2.10. Its invented governing rate card shows $0.30 per each-pick for the same date and scope, or $1.80. The arithmetic candidate is $2.10 − $1.80 = $0.30 for review.

That $0.30 is not automatically owed, claimable, submitted, credited, or recovered. The document version, unit, scope, amendments, dispute window, and publication policy still need to be resolved. See the detailed rate-mismatch check.

Test other patterns separately. A duplicate needs a unique economic identity, not merely the same description and amount. Storage needs quantity, unit, receipt lot, age, and period. A volume tier needs the complete measurement period. A missing credit needs the original promise and later ledger continuity. The billing-error library explains the evidence for each.

6. Resolve innocent explanations and evidence gaps

Before labeling a variance, actively test explanations that could make the charge correct. Examples include split shipments, delayed carrier adjustments, minimum charges, excluded services, tier aggregation across facilities, a later effective amendment, tax treatment, or a credit scheduled for a later statement.

Record each unresolved explanation as a blocker. Do not let a confident calculation erase uncertainty in the inputs. A mathematically exact result can still be review-only because its contract interpretation, operational event, dispute window, or parser layout is not established.

7. Build a reproducible review package

For every candidate, include the billed line, expected rule, source coordinates, exact formula, variance direction, evidence state, unresolved blockers, assumptions, deadline, and a specific next action. Keep underbilling and valid optimization opportunities visible rather than reporting only charges in the merchant’s favor.

A useful summary states:

  • the total billed and evaluated spend;
  • unsupported spend and why it was not evaluated;
  • review candidates by check and evidence state;
  • underbilling, time-barred items, and optimization opportunities separately;
  • the rate-card version and dispute-window basis used;
  • whether anything was approved, dispatched, acknowledged, or credited.

Use the printable 3PL invoice audit checklist to repeat this workflow, or inspect the synthetic sample audit to see how coverage and blockers stay visible.

Prelaunch

Auditario is prelaunch: secure document intake is not open, there are 0 certified publication cells, and $0 is presently claimable. The engine can produce deterministic candidates from synthetic fixtures, but current positive candidates remain review evidence rather than provider allegations. Read the methodology and current status.

Build a more explainable audit trail

Join the founding-audit waitlist with contact details only. No document intake or billing is active.

Join the waitlist