A four-figure demurrage invoice lands. One 40-foot high-cube, one port, a number with a comma in it. The instinct in most ops teams is to argue the fault: the terminal was congested, the chassis pool was dry, the appointment system was down — none of it was ours. That argument almost never works, because fault is exactly the thing you can’t prove and the carrier won’t concede. Demurrage was never a fault charge; it’s a land-use meter, and “it was busy” is not a defense the tariff recognizes.
Here is what does work, and it starts with a fact about your carriers’ data that most importers never use against them. In Tradlinx’s normalized US-import event data as of mid-2026, Hapag-Lloyd is the one carrier among MSC, Maersk, CMA CGM, Hapag-Lloyd, and ONE where we consistently see a distinct availability-style event surfaced in the carrier event layer. For MSC, Maersk, CMA CGM, and ONE, terminal-side availability confirmation is much more often required after the carrier feed reports “discharged.” (That’s our own finding from normalizing these carriers’ US-import event feeds — verify against the lines, terminals, and data feeds you actually track; see the caveat in Lever 1.) Which means a carrier may bill from the event it can most cleanly see — discharge — while the event that actually matters to your free-time clock, the day the box was genuinely available to pick up, may sit in a terminal system instead. That blind spot is where over-billing can hide, and you cannot see it from a single feed. You see it only by laying the carrier’s “discharged” against the terminal’s “available” and diffing the two.
So the move is this: don’t argue the total — reconstruct the timeline the carrier can’t. A demurrage charge is only defensible if the carrier can tie every billed day to a specific, timestamped, administratively-available container event. The reconstruction — discharge → available-for-pickup → gate-out → empty-return, built from cross-carrier event data and reconciled line-by-line against the invoice the carrier was legally required to itemize — is what collapses a bill. Not the dollar figure. Not a fairness appeal. The second timeline.
And the day that often does not survive that diff is the one the carrier’s feed calls “discharged” while the terminal calls “not yet available.” The discharge timestamp the carrier proves in its sleep; it owns the terminal-handling record. What it may not cleanly prove is that every day after discharge was a day you could actually have taken the box — because for several major carrier feeds, availability must be confirmed from terminal-side data. This post is the repeatable method for finding the days the invoice cannot defend. You can run it by hand on one invoice today; the closing section is about why running it across a portfolio is a different problem.
The worked case: a bill that didn’t survive
Make it concrete. One 40HC, US import, discharged at a West Coast terminal. To put real mechanics on the page, this example uses an illustrative import schedule — 4 working free days, then a daily demurrage tier after free time expires. The dollars are deliberately generalized here because live carrier tariffs split rates, free-day counts, and counting rules by port, ramp, equipment type, movement type, and service-contract terms.
Treat these dollars as illustrative, not a quote. Carrier D&D tariffs are not one clean national schedule. Some ports, ramps, equipment types, and move types use different free-time allowances, different rate tiers, and different working-day/calendar-day logic. Your service contract can override the public tariff entirely. Pull the live tariff PDF and your own rate sheet before you file. Fee tiers are quarantined to this one illustrative example and appear nowhere in the reference table below — see why under Table A.
The invoice asserts, for a box discharged Friday 6 March 2026:
- Discharged: Fri 6 Mar (evening)
- Free time: 4 working days, billed as starting Mon 9 Mar
- Gated out: Tue 17 Mar
- Carrier’s basis: “Discharged 6 Mar; available to you from Mon 9 Mar; not gated out until 17 Mar.” Billed: demurrage days over free time.
The losing reply: “The terminal was slammed, we couldn’t get an appointment.” True, probably. Unprovable, and the carrier doesn’t care.
The winning reply reconstructs the box’s own timeline and reconciles it day by day:
| Event | Carrier’s invoice says | Container’s actual timeline says | Disputable? |
|---|---|---|---|
| Discharged from vessel | Fri 6 Mar (eve) | Fri 6 Mar — terminal discharge record agrees | No |
| Available for pickup | “From Mon 9 Mar” (stated or implied) | Wed 11 Mar — terminal’s availability log first posts the box as grounded and retrievable on Wednesday; before that it sat in a non-working stack or was not yet posted as available | Yes — the Mon→Wed gap |
| Free time | Mon 9 – Thu 12 Mar | Re-bases to first full day available = Wed 11 Mar onward | Shifts the whole clock |
| Gate-out | Tue 17 Mar | Tue 17 Mar — agrees | No |
The carrier started the clock from the first working day after discharge. But the terminal’s own availability log shows the box was not administratively available for pickup until Wednesday 11 March. Under a clock-start rule tied to availability, those earlier days were never chargeable. The evidence is the terminal’s availability timestamp, not your appointment screenshots — that’s the artifact the dispute rests on. Re-base the clock to 11 March and the chargeable-day count drops; because the surviving days now fall differently against the free-time allowance and the tier schedule, you re-count and re-tier rather than just lopping days off the front.
The recoverable amount depends on your contract; the principle does not. The bill could not survive its own timeline, and you proved it without ever arguing whose fault the congestion was. Below, the levers that get you there, in the order you should pull them.
Lever 0 — Read what the carrier was legally required to tell you
Before you reconstruct a single timestamp, check whether the invoice is even valid on its face. This is the fastest, most decisive lever, and the one most importers don’t know they’re holding.
Under the FMC’s detention-and-demurrage billing rule (46 CFR Part 541, in effect since 28 May 2024), a compliant invoice must contain a specific set of elements. The FMC states the consequence of omission bluntly: failing to include any of the required information in a D&D invoice eliminates any obligation of the billed party to pay the applicable charge. Not “weakens” — eliminates.
So Lever 0 is a checklist pass. Pull the invoice and run it against the §541.6 element list — Table B, immediately below. The single most useful field for the timeline audit is the one the rule requires the carrier to state explicitly: the container availability date for imports, alongside the allowed free time, the free-time start and end dates, the specific dates being charged, the invoice date, and the due date.
If the carrier billed you but failed to state the availability date — or stated a free-time start that contradicts the availability date it gave you — the invoice contradicts itself, and that’s your opening before you ever reach for terminal data. In the worked case, the carrier implied availability from Mon 9 Mar, but the required availability-date field, honestly populated, would have read Wed 11 Mar. A facial contradiction, visible without leaving the invoice.
Two surviving deadlines in the same rule, both in your favor:
- The carrier must issue the invoice within 30 calendar days of when the charge was last incurred. Miss it, and the billed party is not required to pay the charge.
- The billed party gets at least 30 calendar days from issuance to request mitigation, refund, or waiver, and the carrier must attempt to resolve within 30 days unless both sides agree to longer.
One caveat on this rule, because it changed in late 2025 — and it’s the only place this post will state it. One leg of Part 541 is gone: §541.4 — the provision on who may be billed (the “you can’t bill me, I’m not the contracting party” argument) — was challenged in World Shipping Council v. FMC (D.C. Cir., No. 24-1088). The opinion issued 23 September 2025; the removal became legally operative when the FMC amended the CFR, effective 29 December 2025 (Federal Register Doc. 2025-23920). Do not build the dispute on the now-vacated §541.4 restriction alone. Everything else in Part 541 survives and remains enforceable — the FMC’s own words: “All of the provisions of 46 C.F.R. 541 except for section 541.4 are and will remain fully applicable.” The invoice-content rules below, the 30-day issuance deadline, and the ≥30-day mitigation window all stand.
Table B — FMC §541.6 required-invoice-element checklist (post-2025, surviving law)
Sourcing note: the field names below track 46 CFR §541.6. When you file, quote the current text verbatim from eCFR (
ecfr.gov, Title 46 → Part 541 → §541.6) or the Federal Register print (89 FR 14330) — don’t paraphrase the field labels into a dispute letter.
| Required element (§541.6) | What to check / what its absence means |
|---|---|
| Identifying info (§541.6(a)) — bill of lading no., container no(s)., port(s) of discharge (imports), and the basis for why the billed party is liable | Wrong or missing container/B-L number = the invoice can’t be tied to your cargo. The field stating why you’re liable survives; what’s gone (with §541.4) is the separate rule restricting whom the carrier may bill. |
| Timing block (§541.6(b)) — invoice date; due date; allowed free time; free-time start and end dates; container availability date (imports); the specific dates being charged | The heart of the audit. A missing availability date, or a free-time start that contradicts the availability date, is a facial defect. Reconcile every dated field against your reconstructed timeline. |
| Rate / calculation basis (§541.6(c)) — total amount due, the per-day rate, and the tariff name and rule number, terminal schedule, service-contract number/section, or negotiated arrangement the rate rests on | No tariff/contract cite, or arithmetic that doesn’t reconcile to the dated days = unsupported total. “Per our tariff” with no rule number is a defect. |
| Dispute process (§541.6(d)) — contact for questions/mitigation; a digital means (URL/QR) to the documentation page; and the timeframes to request mitigation/refund/waiver and for resolution | Confirms your ≥30-day window and where to file. Its absence is itself a defect. |
| Certifications (§541.6(e)) — the billing party’s statement that the charge complies with FMC rules, and that its own performance did not cause or contribute to the charge | A missing certification is a required-element omission like any other. |
The operative rule, in one sentence: failing to include any required element in a D&D invoice eliminates the obligation to pay that charge. Check the boxes before you check the clock — a defective invoice can end the dispute on page one.
Lever 1 — Reconstruct the real timeline
This is the core move: build the container’s actual administrative sequence from event data, independent of what the invoice asserts. Four events define a demurrage/detention exposure window, and the industry has a shared vocabulary for the endpoints (DCSA Event Structure Definition defines discharge, gate-in, gate-out, and availability-style milestones such as available for pick-up):
- Discharge — the container is lifted off the vessel onto the terminal. The one timestamp the carrier proves trivially, because it owns the terminal-handling record. Don’t waste effort contesting it.
- Available for pickup — the container is grounded, cleared of terminal holds, and posted as retrievable. This is the event many carrier feeds do not surface consistently and the one your free-time clock may turn on. It typically has to be verified from terminal data, not just the carrier milestone feed. (Note: “available for pickup” exists in DCSA-style event vocabularies, but carrier feeds and terminal systems do not surface it uniformly, which is exactly why the field has to be audited.)
- Gate-out — the container physically leaves the terminal on a truck. This ends demurrage and starts detention/per-diem if the box is on the road past free time.
- Empty return — the container comes back empty, ending detention.
The disputable gap lives between events 1 and 2. The carrier’s feed reports “discharged” and the invoice may quietly assume “discharged ≈ available.” The terminal’s reality is that a box can sit discharged-but-not-available for days — held in a non-working stack, awaiting grounding, blocked behind a customs or CES hold, stuck behind an unavailable chassis, or refused at empty-return.
The structural fact stated up top is what makes this lever load-bearing, and it bears one honest caveat: in Tradlinx’s normalized US-import event data as of mid-2026, Hapag-Lloyd is the one carrier among these five where we consistently see a distinct availability-style event surfaced in the carrier event layer; for MSC, Maersk, CMA CGM, and ONE, terminal-side availability confirmation is much more often required. That is our own finding from normalizing these five carriers’ US-import event feeds — carriers revise feed behavior, so confirm it against the lines, terminals, and data sources you actually track. The asymmetry is the point: the carrier may bill from the event it can see most cleanly (discharge), while the event that matters to you (available) may live somewhere else. You close that blindness by sourcing the availability timestamp from terminal data and reconciling it against the carrier’s clock-start rule.
You catch the gap by laying the carrier’s milestone feed next to the terminal’s availability status and diffing them. One container, by hand, with the terminal’s website open in another tab — entirely doable. In the worked case: discharge Friday 6 March, carrier-implied availability Monday 9 March, terminal availability Wednesday 11 March — billed days with no defensible availability event behind them.
Lever 2 — Reconcile day by day (and don’t conflate two clocks)
Now lay the reconstructed timeline over the invoice and net out the disputable days. Two structural traps to avoid.
Trap 1: treating demurrage and detention as one clock. They are two different charges on two different clocks:
- Demurrage = the box sitting inside the terminal past free time (terminal land-use). Clock: discharge/availability → gate-out.
- Detention (per-diem) = the box outside the terminal, in your possession, past free time (the carrier’s equipment held too long). Clock: gate-out → empty return.
They start on different events, stop on different events, and are frequently billed on different bases. Some tariff sheets combine storage, demurrage, detention, equipment-use, or terminal charges in ways that make the invoice label less clean than the physical timeline. Merged or bundled billing may be allowed by the applicable tariff or contract; merged auditing is still a mistake. Split the window at gate-out and check each clock against its own free-time allowance. A day billed as demurrage after the box has already gated out should be challenged as a classification or calculation issue unless the applicable tariff or contract expressly treats it differently.
Trap 2: assuming every carrier counts a day the same way. It does not, and this is where most reconciliations go wrong. The single biggest mistake in a homemade demurrage tracker is a column that reads “weekends count: yes/no” — that column is false by construction, because the same carrier frequently counts free time on one basis and charges overage on another. Maersk is the cleanest example: free time accrues on a working-day basis (weekends and holidays at the location don’t burn free days), but the moment free time expires, charges flip to a calendar-day basis including closed days (effective 8 August 2024). The same Saturday is free if it falls inside your free time and billable if it falls after — same box, same contract.
So “does this carrier count weekends?” is the wrong question. The right questions are three:
- What event starts the clock (discharge? first working day after discharge? customs release? first full day available?),
- On what basis is free time measured (working-day vs. calendar-day), and
- On what basis are charges assessed after free time expires (calendar-day-including-closed-days, or gate-open-only).
Answer those three per carrier and the day-count reconciles itself. Which brings us to the table.
Table A — Per-carrier clock-and-counting matrix (US imports)
This is the artifact to bookmark. It’s split in two: Table A1 is the scan spine — the three questions that decide a day count. Table A2 is the verify layer — the carve-outs and overrides to check before you cite a row. Read A1 to reconcile the invoice; read A2 before you file.
The columns in A1 are built around the distinction that trips up most audits: free-time basis is not the same as post-expiry charge basis.
Standing caveat — read before you cite a row. These are published-tariff defaults as of the dates noted. Your service contract can override any cell — for a BCO or forwarder with negotiated rates, the contract usually wins over the public tariff. Carriers revise these on a roughly quarterly cycle; re-confirm the effective date at the time you file. A row here is a starting hypothesis, not gospel.
Table A1 — The counting spine
| Carrier | Clock-start event | Free-time basis | Post-expiry charge basis |
|---|---|---|---|
| MSC | First working day after the individual container’s discharge | Working-day, terminal-operation-keyed (open weekends/holidays can count if the terminal is operating) | Same terminal-operation keying — no charge for any full day the terminal is fully closed |
| Maersk | Day after discharge, per the pickup location’s schedule | Working-day (location’s calendar; weekends/holidays don’t burn free time) | Calendar-day, including closed days, once free time expires (eff. 8 Aug 2024) |
| CMA CGM | Port/ramp- and move-type-specific; commonly keyed to discharge / cargo availability | Often working-day on US import demurrage sheets — verify the named port/ramp and move type | Often calendar-day after expiry, including weekends and legal holidays |
| Hapag-Lloyd | Demurrage clock at customs release; detention free time begins the day after | Working-day | Calendar-day after free time (eff. 1 Sep 2024) |
| ONE | First full day available for pickup after discharge (terminal-set availability date) | Working-day — but includes Sat/Sun/holidays when the pickup/return facility is open | Calendar-day after free time (eff. 9 Sep 2024) — except California (gate-open days only) |
Found your carrier’s counting basis above? Before you calculate a disputed day, check the carve-out and override for that same carrier in Table A2.
Table A2 — Carve-outs and overrides (the verify layer)
| Carrier | Closed-terminal / congestion carve-out | Terminal / lane override flag |
|---|---|---|
| MSC | Yes — will not assess demurrage, detention, or per-diem “for any day in which a terminal is closed due to holidays, weekends, or other port closure events” (customer notice, eff. 27 Mar 2023) | Terminal-specific carve-outs reported. MSC’s current tariff effective date and lane-specific calendar-day treatment were not verifiable from primary sources at writing — treat the closed-terminal lever as the confirmed cell; confirm the rest against the live MSC tariff before citing. |
| Maersk | Limited — once past free time, the calendar-day basis means closed days are charged | Eff. 1 Jan 2026, per-diem rose across all US locations; reefer free time was cut specifically at Miami / Port Everglades (to 2 working days, tier 1). The working-free / calendar-charge basis and standard (non-reefer) allowances are unchanged. |
| CMA CGM | Limited; per-port and per-ramp variation | Rates, free-day counts, and counting basis vary by port/ramp group, equipment type, and movement type on the US sheet. Don’t use one CMA CGM row as a national rule; pull the specific tariff page and contract before citing. |
| Hapag-Lloyd | Partial — scheduled closures incl. weekends are chargeable; unscheduled congestion days are not | The trigger event itself is lane-specific (on some lanes a customs-removal-permit event, not plain discharge). In Tradlinx’s normalized event data, Hapag-Lloyd is the one carrier in this set where a discrete availability-style event consistently surfaces in the carrier event layer. |
| ONE | California exception — charges accrue only on days the pickup-facility gate is open; calendar-day elsewhere | Confirm against ONE’s current tariff before filing, especially where the pickup/return facility calendar differs from the port’s general working calendar. |
Deliberately not in these tables: point-in-time free-day counts and fee tiers. They decay on a roughly quarterly clock and are overridden by service contracts for exactly the reader this is written for. They appear only inside the illustrative worked case above and are flagged as non-quotable. When you run your own audit, pull the live tariff PDF and your own contract.
One idiosyncrasy per carrier — and the one audit action it implies:
- MSC — keys its clock to whether the terminal is operating, not to a fixed weekday rule. The reliable, verified lever: MSC won’t bill a day the terminal is fully closed. Action: check the port’s published closure calendar against your billed days.
- Maersk — the split basis is the trap: working-day free time, then calendar-days-including-weekends the moment it expires (since 8 Aug 2024). Action: find the first day after free-time expiry that falls on a weekend — that’s the day the basis silently flips and the cheap weekend disappears.
- CMA CGM — the US sheet is highly port/ramp- and movement-specific, and many import demurrage categories use working-day free time followed by calendar-day charging after free time expires. Action: do not rely on a generic CMA CGM rule; pull the exact port/ramp page, equipment type, move type, and service-contract term before calculating the disputed days.
- Hapag-Lloyd — the demurrage clock starts at customs release, not discharge — so a customs hold doesn’t just toll the clock, it can mean the clock hasn’t started. Action: in Tradlinx’s normalized event data, Hapag-Lloyd is the carrier in this set where the availability-style event is easiest to surface from the carrier layer; pull that event and reconcile it against the invoice.
- ONE — counts free days only when the gate is open (open weekends do burn free days), then runs calendar-day after free time (since 9 Sep 2024) except in California, where charges accrue only on gate-open days. Action: the availability date is terminal-set, so check the discharged-≠-available gap at the front of the clock first.

Lever 3 — Why those days are disputable, in one rule
You now have a reconstructed timeline showing days the box was discharged-but-unavailable. The legal hook is the FMC’s Incentive Principle (46 CFR 545.5, Docket 19-05, eff. 18 May 2020): demurrage and detention are reasonable only insofar as they incentivize cargo movement and equipment return, and the FMC’s corollary is explicit — importers and truckers “should not be penalized by demurrage and detention practices when circumstances are such that they cannot retrieve containers from, or return containers to, marine terminals.”
That is the legal language for “discharged-but-not-available.” You don’t win by citing the principle; you win by showing the days and letting the principle classify them. So map it straight onto your reconstruction: every day the timeline shows the box un-gettable — no terminal appointment, a customs or CES hold in force, no chassis, an empty-return refusal — is a day the Incentive Principle says shouldn’t carry a charge. Note the link to the controllable/uncontrollable split below: a customs exam is an uncontrollable input, but it feeds this same timeline, and a hold-induced unavailability day is a disputable day. (A CBP exam runs the demurrage clock; the hold-day mechanics in our customs-hold posts feed straight into this audit.)
Controllable vs. uncontrollable: stop fighting the wrong thing
The reason the “it wasn’t our fault” reply fails is that it’s an argument about an uncontrollable. Sort your dispute into two columns and spend energy only on the left one.
| Fight this (controllable — you can prove it) | Don’t fight this (uncontrollable — you can’t, and it’s a trap) |
|---|---|
| The timeline reconstruction: discharged-≠-available days, the gate-out split, the empty-return refusal. Documented, timestamped, decisive. | Whose fault the congestion was. You can’t prove it and the carrier won’t concede it. |
| Invoice-element compliance (§541.6): missing availability date, no tariff-rule cite, no certification, no dispute-process statement. | General “the market was bad” appeals. True, and irrelevant to a specific billed day. |
| Counting-basis errors: calendar-day charging applied where the tariff says working-day (or a fully-closed terminal day billed); demurrage billed for days after gate-out without tariff or contract support. | The published rate itself, if it’s the contracted rate. You don’t argue the rate — you argue which days it applies to. |
| Incentive-Principle days: box on the ground but un-gettable (no appointment, customs/CES hold, no chassis). | Who-can-be-billed arguments based only on the old §541.4 restriction — vacated, effective 29 Dec 2025. |
| The 30/30 timing windows: late issuance, or a denied dispute window. Procedural and clean. | Macro port conditions. Peak-season tightness is real but not a line you contest on a single invoice. |
And while we’re being operator-to-operator honest, name what the carriers do badly, by name. The recurring failures that create these disputes are billing design, not accident:
- They bill from a date the invoice may not cleanly evidence. In Tradlinx’s normalized US-import data, carrier feeds for MSC, Maersk, CMA CGM, and ONE often require terminal-side confirmation to prove the actual availability date after discharge. Hapag-Lloyd is the one carrier in this set where we consistently see a discrete availability-style event in the carrier event layer. The asymmetry favors the billing party until you instrument it.
- Calendar-day assessment that closes the weekend gap the moment free time expires — Maersk’s 8-Aug-2024 switch, Hapag-Lloyd’s 1-Sep-2024 switch, ONE’s 9-Sep-2024 switch, and many CMA CGM US import categories where working-day free time is followed by calendar-day charging. The “free” weekend at the end of free time quietly isn’t.
- Bundled or inconsistently labeled D&D charges that obscure where the box physically was. If storage, demurrage, detention, or equipment-use charges are grouped under one invoice logic, the only safe audit is still the physical sequence: available → gate-out → empty-return.
The audit is how you push back on the design.
Doing this once is feasible. Doing it every time is the problem.
Everything above, you can run by hand on a single invoice: pull the B/L, find the terminal’s availability date, diff it against the carrier’s discharge milestone, walk the §541.6 checklist, split the two clocks. One box, one afternoon. The math is checkable and the levers are real.
The trouble is that disputes don’t arrive one at a time, and they don’t arrive on one carrier. They arrive as a stack across MSC, Maersk, CMA CGM, Hapag-Lloyd, and ONE — and the diff you just ran by hand gets structurally harder at volume for the exact reasons this post opened with: each line counts days on a different basis, several carrier feeds require terminal-side confirmation for the availability event you need, and each requires you to reconstruct that date from a different terminal’s data. Running the discharged-≠-available diff once is an audit; running it across every invoice, across every carrier, at the moment each bill lands, is a process — and a process needs the second timeline to already exist before the invoice shows up.
That’s the workflow Tradlinx Ocean Visibility is built for. It captures container-level events across carriers, normalizes them into one event layer so “discharged” on one line reconciles against terminal-side availability and downstream movement events, and flags the divergence as an exception the moment it appears — so the discharged-≠-available gap is sitting in front of you, per box, before you ever open the invoice. The manual method in this post is the proof of concept; multi-carrier event normalization plus exception management is how you turn it into a standing diff instead of an analyst’s lost week. The dispute-winning second timeline stops being something you reconstruct after the bill and becomes something you already have.
Related reading
- Port-level surcharge breakdown 2025 — a different mechanism: negotiating the cost of a surcharge, not reconciling the days of a demurrage clock. Read it for rate strategy; read this one for invoice disputes.
- CBP customs-hold posts (evidence checklist & escalation path · how to get a hold released) — a customs exam is an uncontrollable input that runs the demurrage clock; the hold-day mechanics there feed directly into Lever 1 and Lever 3 of this audit.
Scope, so you know what this post owns: this is the post on the per-carrier counting-basis divergence and the discharged-≠-available reconciliation method — the multi-carrier event-diff. The customs-hold post owns the agency-hold dispute; the surcharge post owns cost negotiation. The wedge here, that no other post covers, is auditing the timeline across carriers that each count days differently — which requires the normalized event layer to even see the gap.
Need help interpreting this disruption or your shipment?
For a quick question, chat with Tradlinx on WhatsApp. For a deeper discussion, book a time below.
Prefer email? Contact us directly at min.so@tradlinx.com (Americas), sondre.lyndon@tradlinx.com (Europe), or henry.jo@tradlinx.com (EMEA/Asia).




Leave a Reply