How does it work?
To reverse duties, taxes, or fees from an inclusive price, you’ll use the reverseAmountDetails
configuration in your API request. This object tells Zonos which components are included in your input price and should be removed to calculate the true base price for customs.
When you send an inclusive price with the respective reverseAmountDetails
configuration, Zonos will:
- Analyze the inclusive price and specified parameters.
- Determine which components (duties, taxes, fees) to reverse.
- Calculate the base price by removing these components.
- Return both the adjusted base price and a breakdown of the reversed amounts.
API guide
To integrate reverse inclusive pricing into your workflow, include the reverseAmountDetail
object in the itemCreateWorkflow
request.
Configuring the request
Passing reverseAmountDetail
tells Zonos to reverse out duties, taxes, and/or fees. If this configuration is not passed, the standard landed cost calculation will be performed.
itemReverseAmountType
Defines which components are included in the price. You can choose from:
TAX
: Only tax is included.DUTY
: Only duty is included.DUTY_TAX
: Duty and tax are included.TAX_FEE
: Tax and fees are included.DUTY_FEE
: Duty and fees are included.DUTY_TAX_FEE
: Duty, tax, and fees are all included.
taxRateCountry
Indicates the country whose tax rate is included in the price. This is optional.
- If not specified, the system defaults to the destination country’s tax rate.
- Value should be a valid ISO country code.
dutyRateCountry
Indicates the country whose duty rate is included in the price. This is optional.
- If not specified, the system defaults to the destination country’s tax rate.
- Value should be a valid ISO country code.
serviceLevelCodes
This is required only if itemReverseAmountType
includes FEE
.
- Specifies which shipping service level fees are included in the price.
- Value should be an array of service level codes.
status
(response only)Indicates the result of the reverse calculation. This field is returned in the response:
APPLIED
: The reverse calculation was successfully applied.NOT_APPLIED_UNDER_DE_MINIMIS
: No calculation applied because the value is below the de minimis threshold.NOT_APPLIED_NEGATIVE_VALUE
: Calculation was skipped to avoid a negative value.
API example
Once you’ve prepared the required input, send the GraphQL mutation to the API using your preferred client or tool.
Mutation
mutation {
partyCreateWorkflow(
input: [
{ type: ORIGIN, location: { countryCode: US } }
{
type: DESTINATION
location: { countryCode: CA, administrativeAreaCode: "AB" }
}
]
) {
id
}
itemCreateWorkflow(
input: [
{
productId: "product-1"
hsCode: "9503.00.9079"
countryOfOrigin: US
amount: 100
quantity: 1
currencyCode: USD
reverseAmountDetail: { type: DUTY_TAX, taxRateCountry: CA }
}
]
) {
id
amount
currencyCode
quantity
hsCode
countryOfOrigin
reverseAmountDetail {
originalAmount
amount
status
type
dutyRateCountry
taxRateCountry
taxRate
dutyRate
feeAmount
}
}
cartonsCreateWorkflow(
input: {
length: 8
width: 4
height: 2
dimensionalUnit: INCH
weight: 1
weightUnit: POUND
}
) {
id
}
shipmentRatingCreateWorkflow(
input: {
amount: "30.00"
currencyCode: USD
serviceLevelCode: "ups.worldwide_expedited"
}
) {
id
}
landedCostCalculateWorkflow(input: { calculationMethod: DDP_PREFERRED }) {
id
amountSubtotals {
items
shipping
duties
taxes
fees
}
duties {
amount
currency
note
}
fees {
amount
currency
type
note
}
taxes {
amount
currency
}
method
}
}
Response
{
"data": {
"partyCreateWorkflow": [
{ "id": "party_cc85f44d-567a-4cb0-984f-17a0e2d97f78" },
{ "id": "party_0kcf5m0x404q6" }
],
"itemCreateWorkflow": [
{
"id": "item_0kcf5rsa420zy",
"amount": 95.0,
"currencyCode": "USD",
"quantity": 1,
"hsCode": "9503.00.9079",
"countryOfOrigin": "US",
"reverseAmountDetail": [
{
"originalAmount": 100,
"amount": 95.0,
"status": "APPLIED",
"type": "DUTY_TAX",
"dutyRateCountry": "CA",
"taxRateCountry": "CA",
"taxRate": 0.05,
"dutyRate": null,
"feeAmount": null
}
]
}
],
"cartonsCreateWorkflow": [{ "id": "carton_0kcf5rth4057g" }],
"shipmentRatingCreateWorkflow": {
"id": "shipment_rating_0kcf5rtpc057t"
},
"landedCostCalculateWorkflow": [
{
"id": "lc-6bfd94d67d2e43e5b5cf1143d56ca01e",
"amountSubtotals": {
"items": 95.0,
"shipping": 30.0,
"duties": 0.0,
"taxes": 5.2,
"fees": 9.5
},
"duties": [],
"fees": [
{
"amount": 7.16,
"currency": "USD",
"feeType": "ADVANCEMENT",
"type": "ADVANCEMENT",
"note": null
},
{
"amount": 1.77,
"currency": "USD",
"feeType": "BROKERAGE_FEE",
"type": "BROKERAGE_FEE",
"note": null
},
{
"amount": 0.57,
"currency": "USD",
"feeType": "CURRENCY_CONVERSION_FEE",
"type": "CURRENCY_CONVERSION_FEE",
"note": null
}
],
"taxes": [
{ "amount": 4.75, "currency": "USD" },
{ "amount": 0.36, "currency": "USD" },
{ "amount": 0.09, "currency": "USD" }
],
"method": "DDP"
}
]
}
}
Reverse inclusive pricing
Reverse duties, taxes, and fees from your inclusive price via API.
COMING SOON
Zonos' Reverse Inclusive Pricing lets you send an inclusive price—one that already includes duties, taxes, and/or fees—and receive the base price in return for customs documentation. This allows you to display all-in pricing to shoppers while still declaring a clean, non-inclusive base price for the commercial invoice. This solution is ideal for markets where inclusive pricing is expected or required, helping you support global pricing strategies and maintain customs accuracy and compliance.