Building a Demurrage and Detention Dispute File
Start documenting demurrage delays the day cargo discharges, not when the invoice arrives.

Demurrage and detention disputes get decided on paper, and the paper has to exist before the invoice does. That's the whole argument. If your dispute file starts the day a $2,400 line item shows up on a carrier invoice, you've already lost most of the evidence that would have reversed it.
Why the Paper Trail Starts at Vessel Discharge
I've sat across from carrier reps who wouldn't budge on a charge until someone produced a timestamp. Not an explanation. Not a story about how the trucker showed up "around 3pm" or how the port was "basically closed" that day. A timestamp.
The FMC's 2024 interpretive rule on demurrage and detention billing actually helps here, more than most people in this industry give it credit for. It requires invoices to include the container number, the exact date range charges apply to, and the applicable rate, and it requires billing parties to retain the records that support those charges. What that does, practically, is put the documentation burden on the carrier first. Your job stops being "prove you're right" and becomes "prove their data doesn't match reality." That's a much easier position to argue from, but only if you've got your own timeline to hold up against theirs.
So the file starts at discharge. Not three weeks later when someone on the accounting side flags an invoice that looks off. Every day a container sits past discharge, somebody on the forwarding desk should be writing down what happened and why, even when it looks like nothing happened. Especially then, actually, because "nothing happened" is exactly the kind of gap that turns into a charge nobody can explain later.
The Terminal Side: Availability, Not Just Discharge Date
Here's the mistake I see constantly, even from desks that should know better: treating "discharged from vessel" and "available for pickup" as the same event. They are not the same event, and every terminal operator knows it, even if their tariff language is written to blur the line.
A box can come off the vessel Tuesday and sit in the terminal operating system as unavailable until Thursday. Could be a hold. Could be a customs exam flag. Could just be yard congestion, the container buried six deep in a stack nobody's touching until the crane schedule opens up. Free time under most carrier tariffs starts ticking from discharge regardless. Detention liability, if you're the shipper, should only start making sense once the box was actually retrievable. That's the gap the dispute file has to capture: pull the terminal's own availability screen, save it as a screenshot or PDF with a timestamp baked in, and show exactly when the hold cleared or the container moved somewhere a trucker could reach it.
Port systems like PortOptimizer at Virginia or eModal at LA and Long Beach hold this history, but only for a while. Pull it same day. These platforms are built to show current status, not archives, and asking for a two-month-old snapshot after the fact usually gets you a shrug. A desk that checks availability status every morning at 8am on every open container, before anyone's thinking about disputes, ends up with a record nobody can poke holes in. A desk that waits ends up reconstructing guesses.
Customs holds get their own entry, always. If CBP pulls a container for exam, that's a delay the shipper had no hand in and no way around. CBP's own exam data shows these holds running anywhere from a few days to over a week, depending on whether it's a quick VACIS scan or a full tailgate exam where they're unloading the whole container by hand. That distinction matters for the file. Attach the actual CBP hold notice, dated, as its own line, rather than folding it into a vague note about "delays at the port."
The Carrier Side: Appointment Requests and Chassis Availability
Terminal records prove whether the box was reachable. Carrier records prove the trucker actually tried to reach it and got blocked by something that had nothing to do with the shipper.
Every appointment request through Track & Trace or a carrier's booking tool leaves a trail: when it was requested, what date was asked for, whether it got confirmed or bounced, sometimes a reason code attached to the rejection. When a terminal won't give same-day appointments and pushes you three days out, that's the terminal's congestion problem, not yours. Screenshot the confirmation the moment it comes through, because plenty of carrier portals purge appointment history on a rolling 30 to 60 day window, and disputes rarely resolve that fast.
Chassis shortages get the same treatment, and honestly this is the one that trips up newer desks the most. If a trucker rolls up and there's no chassis on the lot, that gets logged, usually by the pool provider, whether it's TRAC, DCLI, or Flexi-Van, and often by the terminal too as a "no chassis available" exception right there on the gate transaction. Get that record. Of everything in a detention file, it's usually the single strongest piece, because it shows a physical, documented attempt to get the box that failed for reasons entirely outside anyone's control on the shipper's side.
Building the Timeline That Actually Convinces Someone
None of these documents do much on their own. A terminal screenshot proves one fact. A rejected appointment proves another. The thing that actually reverses a charge is a timeline that lines every piece up against the free-time clock and shows, day by day, exactly where the delay sat.
Format doesn't matter much. Some desks run it in a plain spreadsheet, date, event, source document, one line of notes. Others build it inside a TMS like Cargowise, tagging events straight to the container record. What matters is the arithmetic being undeniable: of nine free days, four got lost to a CBP exam, two to a terminal appointment backlog, one to a chassis shortage. That leaves maybe two days the shipper's actually responsible for, not nine.
Carriers argue with vague claims all day long. They have a much harder time arguing with a dated CBP hold notice sitting next to a dated availability log sitting next to a dated appointment rejection, all pointing at the same seven-day stretch.
Timing the Dispute Itself
Most carrier tariffs give you a window to file, often 30 days from the invoice date, though it varies and you need to check the actual bill of lading terms rather than assume. Miss that window and it doesn't matter how good your evidence is. The dispute gets closed on procedure before anyone even looks at the documents.
Which is really the whole case for building the file early. Wait for the invoice, and you're already behind: eModal and PortOptimizer don't hold old snapshots forever, chassis exception logs age out of the system, and CBP hold notices get harder to pull the further you get from the exam date.
What This Means for How a Forwarding Desk Should Operate
Log status daily. Every container, discharge to gate-out, not just the ones that look headed for trouble. Most boxes move clean and that log never gets looked at again, which is fine, delete it. But the ones that don't move clean are exactly where a same-day timestamp, taken before anyone had any idea a charge was coming, ends up being the entire difference between a reversed invoice and a paid one.
The FMC's rule gives shippers real leverage now. It puts a documentation burden on the carrier that wasn't nearly as explicit before 2024. That leverage only means something if your side of the record is just as solid, though. A file built from memory and a handful of forwarded emails loses to a system-generated invoice almost every time I've seen it go to a dispute. A file built from timestamped terminal data, saved appointment confirmations, and dated hold notices puts both sides on the same footing, and in this business, equal footing is usually all it takes.


