How it works
When you pass an inclusive price with the appropriate reverseAmountDetails
configuration, Zonos will:
- Analyze the inclusive price and specified parameters.
- Determine which components (duties, taxes, fees) need to be reversed out.
- Calculate the base price by removing these components.
- Return both the base price and details about the components that were reversed.
Reverse Inclusive Pricing is only available for merchants who are integrated with the Zonos API and are using the shipmentRatingCreateWorkflow
.
Implementation
To use reverse inclusive pricing, you'll need to include the reverseAmountDetails
object in your itemCreateWorkflow
input of the landed cost request.
Configuring the request
When passing reverseAmountDetails
in the request, there is flexibility as to what can be passed, when it is required, and what the behavior of the request will be. If the reverseAmountDetails
array in the `itemCreateWorkflow is not passed, a normal landed cost calculation will be performed.
reverseInclusivePriceType
Specifies which components are included in the price. Available options:
TAX
: Only tax is included in the price.DUTY
: Only duty is included in the price.DUTY_TAX
: Both duty and tax are included in the price.TAX_FEE
: Tax and fees are included in the price.DUTY_FEE
: Duty and fees are included in the price.DUTY_TAX_FEE
: Duty, tax, and fees are included in the price.
taxRateCountry
Specifies the country whose tax rate is included in the price. This is an optional parameter:
- If not specified for tax-inclusive types, the system assumes the origin country's tax rate is included.
- Value should be a valid ISO country code.
dutyRateCountry
Specifies the country whose duty rate is included in the price. This is an optional parameter:
- If not specified for duty-inclusive types, the system assumes the destination country's duty rate is included.
- Value should be a valid ISO country code.
serviceLevelCodes
Required only when the reverseInclusivePriceType
contains FEE
:
- Specifies which shipping service level's fees are included in the price.
- Value should be an array of service level codes.
reverseInclusivePriceStatus
Indicates the status of the reverse price calculation. In the response, this will be one of:
APPLIED
: The reverse calculation was successfully applied.NOT_APPLIED_UNDER_DE_MINIMIS
: The calculation was not applied because the value is under the de minimis threshold.NOT_APPLIED_NEGATIVE_VALUE
: The calculation was not applied because it would result in a negative value.
Send the mutation
Once you have the required input data, send the GraphQL mutation to the API endpoint using your chosen client library 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
feeType
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 out of a price.COMING SOON
Zonos now gives merchants the ability to pass an inclusive price in an API request and have the base price calculated by reversing out the duties, taxes, and fees that are included in the price.
This feature is particularly useful for merchants who operate in markets where prices are typically displayed with taxes and duties included, but need to calculate the base for customs documentation.