Skip to content
Parser BlogLogistics10 min readAll posts

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.

Illustrative
Illustrative share of disputable demurrage and detention charges by cause. Numbers are examples, not measured results.

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

Since May 2024, invoices from ocean carriers and marine terminal operators covered by the Federal Maritime Commission's demurrage and detention billing rule must carry the information needed to check them, among other things the bill of lading and container numbers, the free time allowed, the start and end dates of free time and of the charges, the applicable rates, and a contact for disputes. They must be issued within 30 days of when charges were last incurred. Read the current rule text for the full list: if an invoice leaves out what you need to rebuild the charge, that is itself a reason to question it.

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.

Exampledd-audit.json — example result for one containerjson
{  "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.

Illustrative
Illustrative billed versus supported amount per charge for the example container, in US dollars. Numbers are examples, not measured results.

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.

Frequently asked questions

FAQ
  • Demurrage is charged when a loaded import container stays inside the terminal past its free time, or an export container sits there too long before loading. Detention is charged when the container is outside the terminal, in the importer or trucker's possession, past its free time before the empty is returned. Some carriers bill both under one combined free time.

  • The invoice itself, the bill of lading for the container numbers, the arrival notice or discharge record for when the container became available, the gate-out and empty gate-in records or equipment interchange receipts for the actual movements, and the tariff or service contract that sets free time and rate tiers.

  • For ocean carriers and marine terminal operators covered by the US Federal Maritime Commission billing rule, the billed party has at least 30 calendar days from the invoice date to request a mitigation, refund or waiver, and the billing party generally has 30 days from when charges were last incurred to issue the invoice. Check the current rule text and your contract for the exact terms that apply.

  • Free time can be counted in calendar or working days, can start on discharge or on availability, can exclude weekends and holidays or not, and can differ between demurrage and detention. A one-day difference in where the clock starts moves every chargeable day into a higher rate tier, so small counting errors become large amounts.

More
The newest other posts

More from the blog.

Solutions
Where Parser fits

Related solutions.

  • Logistics & freight

    Bills of lading, freight invoices, rate confirmations and delivery receipts, read into shipment fields.

    Fields bol_number shipper consignee gross_weight_lb

    Logistics & freight, see industry
  • Invoice processing

    Vendor, tax ID, line items, taxes and due date from invoices and bills.

    Fields vendor tax_id line_items total

    Invoice processing, see use case

Your documents are different?

You define the fields in an extraction template. In the demo we process your documents live — no slides, no fluff.

30 minutes · no commitment