List Purchase Order Duty Estimates
GET/api/purchase-orders/:purchase_order/duty-estimates
Returns the estimated customs duty for each product line of a purchase order (the order is treated as one customs entry), with a summary: rate date, destination country, who clears import, currencies and totals.
purchase-orders:readGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Estimates are recalculated automatically when the order, its products, duty rates or customs jurisdictions change. When estimates are out of date, orders of up to 200 lines are recalculated before responding; larger orders return the stored values with stale: true and recalculation_queued: true.
Line status: estimated, overridden, seller_clears (DDP), de_minimis, missing_hs_code, missing_origin, missing_destination, no_rate. flags are informational (e.g. origin_assumed_from_supplier, missing_weight, transport_mode_unknown, no_incoterm_assumed_buyer). Money is in your base currency unless suffixed _duty_currency; customs_value is in the duty currency.
Authentication: Requires Bearer token (scope purchase-orders:read, permission purchase_orders.show).
tenant_has_duty_rates is true when the account has set up at least one duty rate (archived included) — useful for deciding whether to show duty at all. duty_capitalised_at_receipt is true when estimated customs duty is added to inventory cost at receipt and trued up when the Customs Duty bill arrives (Landed Cost Estimates settings).
Each estimate line carries destination_warehouse ({id, name}) — the warehouse the destination country is read from, so a missing_destination line can link to the warehouse whose address needs a country.
Request
Responses
- 200
- 401
- 403
- 404
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Not Found
Response Headers
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.