Container demurrage or detention calculator
Container demurrage or detention calculator: from the start date (discharge or gate-out), end date (gate-out or empty return), free days and the carrier's tiered daily rates you supply (e.g. 1-4:75,5-8:150,9+:250), returns chargeable days, the day-by-day tier split and the total per container and for all containers. Counts calendar days, start day included unless you say otherwise. Carrier tariffs are not looked up.
Answeringour last check, 2026-10-24
1 of 1checks answered this week
31 msmedian answer time
$0.002listed price per call
$0.002price it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
GET https://api.tradeenergy-api.workers.dev/api/logistics/demurrage-detention
| Category | Everything else |
|---|---|
| Provider host | api.tradeenergy-api.workers.dev |
| Networks | eip155:10, eip155:137, eip155:143, eip155:42161, eip155:42220, eip155:480, eip155:5042, eip155:8453, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp, stellar:pubnet, xrpl:0 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 2 from 2 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-10-24 | valid payment request | 402 | $0.002 | 31 ms |
Example input (from the provider)
{
"method": "GET",
"queryParams": {
"containers": "2",
"currency": "USD",
"end": "2026-10-20",
"freeDays": "7",
"rates": "1-4:75,5-8:150,9+:250",
"start": "2026-10-01"
},
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"properties": {
"containers": {
"description": "Number of containers, default 1",
"type": "string"
},
"countStartDay": {
"description": "true (default) counts the start date as day 1; false starts on the next day",
"type": "string"
},
"currency": {
"description": "Currency label for the output, default USD",
"type": "string"
},
"end": {
"description": "End date YYYY-MM-DD: gate-out full (demurrage) or empty return (detention) (required)",
"type": "string"
},
"freeDays": {
"description": "Free days granted, 0-60 (required)",
"type": "string"
},
"rates": {
"description": "Tiers after free time, 'from-to:rate' comma separated, last open-ended with '+', e.g. 1-4:75,5-8:150,9+:250 (required)",
"type": "string"
},
"start": {
"description": "Start date YYYY-MM-DD: discharge (demurrage) or gate-out full (detention) (required)",
"type": "string"
}
},
"required": [
"start",
"end",
"freeDays",
"rates"
],
"type": "object"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}