Query the Order object using the Admin GraphQL API and include the `duties` field on each line item to retrieve per-line duty amounts
Access `Order.currentTotalDutiesSet` for the current total duties charged (after any modifications) and `Order.originalTotalDutiesSet` for the original amount at order creation
Check the `Order.dutiesIncludedInSubtotal` boolean to understand whether duties were rolled into the subtotal or presented as a separate line
On each `Duty` object, read the `harmonizedSystemCode`, `price`, and `taxesIncluded` fields, plus the nested `taxes` array for VAT applied on top of duties
Use `Order.localizedFields` or the `localizationExtensions` connection on the order if you need locally required customs fields (e.g., tax IDs for EU/UK buyers)
Known gotchas
The `duties` field is only populated when the order was created with DDP duty collection enabled; DDU (Delivered Duty Unpaid) orders will have empty duties arrays
currentTotalDutiesSet reflects post-edit, post-refund values — always compare against originalTotalDutiesSet when doing financial reconciliation to avoid under-reporting
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp