Guides

How to dispute 3PL charges (and actually get the credit)

The dispute window, the evidence and the letter decide whether a wrong 3PL charge comes back. Find the error, prove it from the contract, write the dispute, track the credit.

To dispute a 3PL charge and actually get the credit: find your dispute window before anything else, pick the charges you can prove wrong from your contract, attach the evidence for each one - the contract text, your own record, and the arithmetic - send one letter that lists them all, and then track the credit until it appears. A dispute is won on proof and deadlines, not on how wrong the bill feels.

Step 1: Find your dispute window first

Most 3PL contracts give you a fixed number of days from the invoice date to dispute a charge - 30 days is common, some allow 60 or 90, and after the window the charge stands even if it is plainly wrong. Find the clause before you audit anything, and work to that date, not to the end of the month. How minimums, peak windows and dispute windows interact is covered in minimums, peak windows and dispute windows.

Step 2: Dispute only what you can prove

A 3PL credit team approves disputes they can verify in their own system in a few minutes. That means charges in one of these positions:

  • Billed twice - the same order, delivery or fee appears more than once.
  • Priced above your rate card - the contract says one price, the invoice used another.
  • Not in your contract at all - a fee type your agreement never mentions.
  • Arithmetic that does not add up - quantity times rate is not the billed amount.
  • Billed outside its rules - a peak surcharge outside the peak window, a minimum top-up larger than the shortfall.
  • Billed for something that never happened - an order your store never shipped, a delivery that arrived once.

Charges that are merely expensive, or that you cannot tie to a contract line, go in a separate "please explain" list. Mixing them into the dispute weakens the ones you can prove. If you have not checked yet, seven billing errors you can find from the invoice alone is the fastest pass.

Step 3: Build the evidence for each line

For every disputed charge, three things:

  1. The contract text. Quote the sentence or rate-card row with the agreed price, and name the document and page or section it comes from.
  2. Your record. The order, receiving or inventory record that shows what actually happened.
  3. The arithmetic. What was billed, what should have been billed, and the difference - shown, not asserted.
Disputed charge Billed Per contract Difference Evidence
Extra item picks, order #84112 3 picks at $0.65 $0.50 per extra pick, rate card p.2 $0.45 Invoice line 1187; order export row for #84112 shows 3 items

A table like this, one row per charge, is the whole dispute. Everything else is covering letter.

Step 4: Send one letter, listing every charge

Send the dispute as a single message to the contact and address your contract names for billing disputes, before the window closes. Keep it short and factual:

Subject: Billing dispute - invoice [number], [month]

Under clause [x] of our agreement, disputes are raised within [n] days of the invoice date; this dispute is within that window.

The charges in the attached table do not match our rate card dated [date]. Each row shows the amount billed, the amount per the agreement, the difference, and the evidence.

Total disputed: $[amount]. Please credit this amount and confirm when the credit will appear. If any row is refused, please reply with the contract clause that supports the charge as billed.

That last sentence matters. A refusal that has to name a clause either produces the clause - and you learn something real about your contract - or produces the credit.

Step 5: Track the credit until it lands

A promised credit is not a credit. Note the date it was promised, the amount, and which invoice it should appear on, then check that invoice when it arrives. Credits are promised in an email thread and quietly missing from the next bill often enough that the check is worth the minute it takes. Keep a register: charge, amount, date disputed, date promised, date it appeared. If it has not appeared by the invoice it was promised on, re-send the original dispute and the promise in one message.

If the 3PL refuses

Ask, in writing, for the specific clause and calculation behind the charge as billed. If they cannot produce either, escalate to your account manager with the same table and the refusal attached. If the amount justifies it, your contract's notice and termination provisions are the remaining leverage - a documented pattern of billing outside the rate card is also the strongest material you can take into a renewal negotiation or a move to another 3PL.

Doing this every month

The work above is an afternoon for one invoice, and it repeats every month, which is why it stops happening. Feeproof runs the checks for you: every billed amount gets a status you can verify, the dispute letter is drafted from the findings with the evidence attached, deadlines are tracked, and promised credits are kept in a register so a missing one is flagged. The first audit is free, and the same three sources - your invoice, your contract, your orders - are all it needs.

Frequently asked questions

What are the most common 3PL billing errors ecommerce brands face?

The most frequent errors are duplicate charges for the same order, rates billed above confirmed contract tiers, arithmetic calculation mismatches, recurring surcharges not listed in the agreement, and dimensional weight creep where packaging bulges inflate billable weight.

How much money can an ecommerce brand recover from a 3PL invoice audit?

Brands typically uncover between 2% and 8% of their total monthly fulfillment and shipping spend in erroneous or uncontracted charges, averaging over $1,800 per month for growing merchants.

Does Feeproof take a percentage cut of the money recovered?

No. Unlike legacy audit firms that take 25% to 50% of your recovered credits, Feeproof operates on a flat monthly SaaS subscription ($0 to $299/mo). You keep 100% of all recovered funds.