Container Demurrage and Detention Invoices: How to Audit Free Time, Dates and Rates Before You Pay
A container that sits a few days too long at the port, or comes back empty a few days late, turns into an invoice weeks later. Demurrage and detention invoices are easy to pay and hard to check: they arrive as PDFs from carriers and terminals, they bill days rather than services, and every day depends on dates that live in other documents. This post explains where D&D charges go wrong, which documents prove what actually happened, and how to rebuild each charge from your own records before the dispute window closes.
In brief
- A demurrage or detention charge is only as correct as the dates behind it: when the container was available, when it left the terminal, and when the empty came back.
- Most disputable charges come from a handful of causes: free time counted wrong, gate dates that disagree with the interchange receipts, the wrong rate tier, and days when the container could not be moved.
- Auditing a D&D invoice means rebuilding the charge from your own documents, the arrival notice, the gate-in and gate-out records and the contract free time, and comparing it line by line.
- Dispute windows are short, so extracting invoices and gate records into fields the day they arrive is what turns a stack of PDFs into disputes filed on time.
Two charges, one clock
Demurrage and detention both charge for keeping a container longer than the free time allows, but they run in different places. Demurrage runs while the container is inside the terminal: a loaded import waiting to be picked up, or an export waiting to be loaded. Detention runs while the container is outside the terminal, in the hands of the importer, the exporter or their trucker, until the empty or loaded box is returned. Some carriers bill them separately, each with its own free time; others give one combined free time that covers both.
The arithmetic is simple. Free time is a number of days agreed in the tariff or in your service contract. Once it runs out, each extra day is charged at a daily rate, and the rate usually climbs in tiers the longer the container stays. What makes the charge hard to check is not the arithmetic but the inputs: when exactly the clock started, when it stopped, which days count, and which tier each day falls into. Those inputs are scattered across the arrival notice, the terminal's gate records, the trucker's interchange receipts and the contract, and the invoice only shows the result.
3
dates every charge depends on: available, gate out, empty returned
5
documents to rebuild a charge: invoice, B/L, arrival notice, EIRs, contract
30
calendar days, at least, to dispute under the FMC billing rule
Where D&D invoices go wrong
Free time counted from the wrong day
Free time can start on the discharge date or on the date the container was actually available, and it can be counted in calendar days or working days, with or without weekends and holidays. If the contract says five working days from availability and the invoice counts five calendar days from discharge, every chargeable day shifts, and some of them move into a higher tier.
Gate dates that disagree with the interchange records
The equipment interchange receipt, or EIR, is the record created when a container passes the terminal gate, out full or back in empty. When the invoice shows a later gate-out or a later empty return than the EIR, the extra days are not supported. This happens more often than it should when records from different systems are merged, or when the wrong container on a multi-container bill of lading is used.
The wrong rate or tier
A charge billed at the general tariff instead of the contract rate, or with every day at the top tier instead of stepping through the tiers, is a pricing error even when the day count is correct.
Days the container could not be moved
A container on a customs or carrier hold, a terminal closed for weather, or no pickup appointments available: if the box could not be retrieved or returned, charging for those days is commonly disputable, and the FMC has said that D&D should work as an incentive to move cargo, not as a penalty when cargo cannot move. Whether those days come off depends on the facts and the terms, so keep the evidence.
The wrong party, or the same days twice
An invoice addressed to a party that did not contract for the carriage, or two invoices covering overlapping days for the same container, round out the usual list.
Free time counted wrong
Gate dates differ from EIR
Wrong rate or tier
Container not available
Billed to wrong party
Duplicate line
The documents that prove what happened
Auditing a D&D invoice means rebuilding the charge yourself and comparing. For each container you need five things, and each one answers a single question.
- The invoice. Invoice number and date, bill of lading, container number, and for each line the charge type, the from and to dates, the days, the rate and the amount.
- The bill of lading. Which containers belong to the shipment and who the parties are, so the charge is matched to the right box and the right billed party.
- The arrival notice or discharge record. When the vessel discharged and when the container became available for pickup: the start of the demurrage clock.
- The gate records or EIRs. The full gate-out, which stops demurrage and starts detention, and the empty gate-in, which stops detention.
- The tariff or service contract. Free days for each charge, how they are counted, and the rate for each tier.
What the FMC billing rule requires on the invoice
Rebuild the charge, then compare line by line
1. Collect and split the paperwork
D&D invoices arrive by email from carriers and terminals, arrival notices from the forwarder, EIRs from the trucker or the terminal portal. They often come bundled: a monthly statement with dozens of containers, or a trucker sending every interchange receipt for a week in one PDF. Split and classify them first, so each invoice line and each gate record can be tied to one container.
2. Extract the dates and amounts into fields
The audit runs on a small set of fields: container number, bill of lading, charge type, from and to dates, days, rate, amount, and the availability and gate dates from the supporting documents. Define them once, with types and which are required, as described in the post on designing extraction schemas, so every carrier's layout comes out in the same shape.
3. Recalculate and decide
Start the clock at availability, apply the contract free time with the contract's counting rule, stop demurrage at the full gate-out, run detention to the empty gate-in, and price each chargeable day at its tier. Compare with the invoice. Lines that match go to payment; lines that do not become a dispute with the difference and the evidence already attached.
{ "invoice": { "invoice_number": "DD-2026-0918", "invoice_date": "2026-09-30", "bill_of_lading": "BL-EXAMPLE-44821", "container": "ABCU1234567", "lines": [ { "type": "demurrage", "from": "2026-09-06", "to": "2026-09-11", "days": 6, "amount": 1100.00 }, { "type": "detention", "from": "2026-09-13", "to": "2026-09-15", "days": 3, "amount": 525.00 } ], "total": 1625.00 }, "evidence": { "available_for_pickup": "2026-09-01", "gate_out_full": "2026-09-09", "gate_in_empty": "2026-09-15" }, "contract": { "demurrage": { "free_days": 5, "count": "calendar", "tiers": [ { "days": "1-4", "rate": 150.00 }, { "days": "5-8", "rate": 250.00 } ] }, "detention": { "free_days": 4, "count": "calendar", "rate": 125.00 } }, "checks": [ { "rule": "demurrage_days_match_gate_out", "billed": 6, "supported": 4, "result": "fail" }, { "rule": "demurrage_amount_by_tier", "billed": 1100.00, "expected": 600.00, "result": "fail" }, { "rule": "detention_days_match_empty_return", "billed": 3, "supported": 3, "result": "pass" }, { "rule": "detention_rate_matches_contract", "billed": 175.00, "expected": 125.00, "result": "fail" }, { "rule": "invoice_issued_within_30_days", "result": "pass" } ], "expected_total": 975.00, "disputed_amount": 650.00, "dispute_deadline": "2026-10-30"}In this example free time counts five calendar days from availability on September 1, so it covers September 1 to 5. The EIR shows the container left full on September 9, which makes four chargeable demurrage days, all in the first tier: 4 at 150 is 600. The invoice ran demurrage to September 11, six days, pushing two of them into the 250 tier for 1,100. Detention runs from the gate-out: four free days cover September 9 to 12, and the empty came back on the 15th, so three days at the contract rate of 125 is 375, not the 525 billed at 175. The expected total is 975 against 1,625 billed, and the 650 difference goes into a dispute filed well before the deadline.
BilledSupported
Demurrage
Detention
Disputes are a race against the calendar
The hardest part of D&D is not the calculation, it is time. Invoices arrive in batches, often weeks after the container moved, and the window to request a refund or waiver is short. When the audit depends on someone opening each PDF, finding the matching EIR in a trucker's email and checking the contract by hand, invoices are paid by default because the deadline passed before anyone looked.
So track the deadline as a field. Record the invoice date and the dispute deadline the day the invoice arrives, sort the queue by deadline rather than by amount, and send each dispute with the recalculation and the supporting gate records attached. Keep the records of holds, closures and missing appointments next to the container, because those are the days that are easiest to recover and hardest to prove later.
D&D also connects to the rest of the import file. The containers on the invoice should match the bill of lading and packing list for the shipment, and once the cargo moves inland, the drayage and trucking bills go through the same kind of freight invoice audit, with the proof of delivery as the final record. A container whose dates agree across every document is one nobody has to argue about.
Measure what you recover, and what you miss
Track the share of D&D invoices audited before their dispute deadline, the amount disputed and recovered by cause, and the days from invoice received to audit complete. If one carrier's invoices fail the same check every month, that is a conversation about their billing, not a stream of individual disputes. On the extraction side, measure field-level accuracy on a labeled set of your own invoices and EIRs, with most of the attention on dates and container numbers: a gate date read one day off changes the answer.
Before you automate: a short checklist
- Load free time, counting rules and rate tiers for each carrier contract.
- Route every D&D invoice, arrival notice and EIR into one intake.
- Split batched statements and receipts so each record maps to one container.
- Extract container, B/L, charge type, dates, days, rate and amount from every invoice line.
- Extract availability, full gate-out and empty gate-in dates from the supporting records.
- Recalculate each charge and compare days, tier and amount line by line.
- Record the dispute deadline on arrival and work the queue by deadline.
- Keep evidence of holds, closures and missing appointments with the container.
Where extraction fits
A D&D audit is only as fast as the step where someone reads the invoice and the gate records. Parser extracts demurrage and detention invoices, arrival notices and interchange receipts into structured JSON against the template you define, through upload, email or the API, so each container's dates and amounts land in your audit as fields, the matching lines go to payment, and only the charges your own records do not support reach your team.