LandIT™ — Duties & Taxes
The LandIT™ API provides landed cost calculations, returning duty and tax estimates based on shipment parameters. It enables users to query tax and duty amounts for international shipments before they are sent, using HS6 commodity codes and product descriptions.
This API is intended for users who have already classified their products with valid HS6 codes prior to making a calculation request. The accuracy of results depends on good product descriptions that match the provided HS6 codes.
The shippingValue field should be populated with the shipping rate returned by the APC Rate API prior to making a LandIT™ calculation request.
Authentication
LandIT uses a separate authentication method from the other APC APIs. Include the API key issued to you by APC in the dtKey header on every request.
dtKey: your-base64-encoded-key
POST /api/system/duties-taxes/combined-call-hs6
Returns a landed cost calculation with duty and tax amounts for one or more products shipping to an international destination.
- URL:
https://parcelconnect.apc-pli.com/api/system/duties-taxes/combined-call-hs6
Request
- cURL
- Node.js
- Python
curl -X POST \
-H "Content-Type: application/json" \
-H "dtKey: {{dtKey}}" \
"https://parcelconnect.apc-pli.com/api/system/duties-taxes/combined-call-hs6" \
-d '{
"sourceCountry": "US",
"destinationCountry": "CH",
"destinationIp": "192.168.0.0",
"overrideTranslation": false,
"convertCurrency": true,
"shippingValue": 39.805,
"grossWeight": 14.99,
"sourcePostalCode": "07073",
"firstName": "John",
"middleName": "James",
"lastName": "Doe",
"street": "MIA STURMLIN",
"city": "SEMPACH",
"state": "LU",
"countryCode": "US",
"postalCode": "6204",
"isPostal": false,
"isGift": false,
"ignoreDeminimis": false,
"currentCartValue": 0,
"products": [
{
"hs6Code": "392620",
"description": "Good Game Hoodie (Black) - XLarge / Black",
"originatingCountry": "US",
"value": 174.0,
"qty": 1.0,
"volumeWeight": 700
}
]
}'
// Requires Node.js 18+ (built-in fetch).
const body = {
sourceCountry: "US",
destinationCountry: "CH",
destinationIp: "192.168.0.0",
overrideTranslation: false,
convertCurrency: true,
shippingValue: 39.805,
grossWeight: 14.99,
sourcePostalCode: "07073",
firstName: "John",
middleName: "James",
lastName: "Doe",
street: "MIA STURMLIN",
city: "SEMPACH",
state: "LU",
countryCode: "US",
postalCode: "6204",
isPostal: false,
isGift: false,
ignoreDeminimis: false,
currentCartValue: 0,
products: [
{
hs6Code: "392620",
description: "Good Game Hoodie (Black) - XLarge / Black",
originatingCountry: "US",
value: 174.0,
qty: 1.0,
volumeWeight: 700,
},
],
};
const res = await fetch(
"https://parcelconnect.apc-pli.com/api/system/duties-taxes/combined-call-hs6",
{
method: "POST",
headers: {
"Content-Type": "application/json",
dtKey: process.env.APC_DT_KEY,
},
body: JSON.stringify(body),
}
);
const data = await res.json();
console.log("Total duty + tax:", data.totalDutyTax);
import os
import requests
body = {
"sourceCountry": "US",
"destinationCountry": "CH",
"destinationIp": "192.168.0.0",
"overrideTranslation": False,
"convertCurrency": True,
"shippingValue": 39.805,
"grossWeight": 14.99,
"sourcePostalCode": "07073",
"firstName": "John",
"middleName": "James",
"lastName": "Doe",
"street": "MIA STURMLIN",
"city": "SEMPACH",
"state": "LU",
"countryCode": "US",
"postalCode": "6204",
"isPostal": False,
"isGift": False,
"ignoreDeminimis": False,
"currentCartValue": 0,
"products": [
{
"hs6Code": "392620",
"description": "Good Game Hoodie (Black) - XLarge / Black",
"originatingCountry": "US",
"value": 174.0,
"qty": 1.0,
"volumeWeight": 700,
}
],
}
resp = requests.post(
"https://parcelconnect.apc-pli.com/api/system/duties-taxes/combined-call-hs6",
headers={"dtKey": os.environ["APC_DT_KEY"]},
json=body,
)
resp.raise_for_status()
data = resp.json()
print("Total duty + tax:", data["totalDutyTax"])
Response
The amount of detail in the response depends on how your account is configured. Some accounts receive a basic response (landed-cost totals only); others additionally receive per-product duty/tax breakdowns, de-minimis values, and the deniedParties and prohibitedRestricted screening objects shown below. If a field documented below is absent from your response, your account is configured for a lower detail tier — contact APC if you need it changed.
{
"requestId": "eb26e989-af42-40d4-9d4c-2d051aa7e434",
"landedCost": {
"requestId": "3366c0b9-64ba-4ffa-984a-a890eadcba49",
"sourceCountry": "US",
"sourceCurrency": "USD",
"destinationCountry": "CH",
"destinationIP": null,
"destinationCurrency": "CHF",
"convertCurrency": true,
"vwUnitsMetric": true,
"shippingValue": {
"sourceValue": 39.81,
"destinationValue": 31.51
},
"products": [
{
"hs6code": "392620",
"commodityCode": "3926200000",
"sourceCommodityCode": "3926204050",
"percentageDutyRate": 0.0,
"volumetricDutyRate": 0.0,
"itemDutyRate": 0.0,
"additionalDutyRate": null,
"taxRate": 0.081,
"dutyValue": { "sourceValue": 0.0, "destinationValue": 0.0 },
"taxValue": { "sourceValue": 17.32, "destinationValue": 13.71 },
"value": { "sourceValue": 174, "destinationValue": 137.74 },
"apcDescription": null,
"description": "Good Game Hoodie (Black) - XLarge / Black",
"originatingCountry": null,
"productTotal": { "sourceValue": 231.13, "destinationValue": 182.97 }
}
],
"dutyDeminimisValue": { "sourceValue": 6.32, "destinationValue": 5.0 },
"taxDeminimisValue": { "sourceValue": 6.32, "destinationValue": 5.0 },
"totalTax": { "sourceValue": 17.32, "destinationValue": 13.71 },
"totalDuty": { "sourceValue": 0.0, "destinationValue": 0.0 },
"productRawTotal": { "sourceValue": 174, "destinationValue": 137.74 },
"calculatedTotal": { "sourceValue": 231.13, "destinationValue": 182.97 },
"grossWeight": 14.99,
"isError": false,
"errorCode": 0,
"notes": "",
"generatedDate": "2026-03-26T16:17:38Z"
},
"deniedParties": {
"requestId": "87fd5afd-c6c6-4dfe-96dd-5217ba25d143",
"scoreCalculated": 45,
"listsMatched": 5,
"generatedDate": "2026-03-26T16:17:38Z",
"matches": [],
"isError": false,
"errorCode": 0,
"notes": ""
},
"prohibitedRestricted": {
"requestId": "6f5d557a-5fa7-4a8d-b883-46e2d19b5fa5",
"sourceCountry": "US",
"destinationCountry": "CH",
"products": [
{
"hs6code": "392620",
"commodityCode": "3926200000",
"exportCode": [],
"transportCode": [],
"importCode": [],
"description": "Good Game Hoodie (Black) - XLarge / Black"
}
],
"isError": false,
"errorCode": 0,
"notes": "",
"generatedDate": "2026-03-26T16:17:38Z"
},
"totalShippingDutyTax": 57.125,
"totalDutyTax": 17.32
}
Request body parameters
All fields are case-sensitive.
| Field | Type | Required | Description |
|---|---|---|---|
sourceCountry | string | Yes | ISO 3166 2-character code for the origin country (e.g., US) |
destinationCountry | string | Yes | ISO 3166 2-character code for the destination country (e.g., CH). Set to "IP" if using destinationIp instead. |
shippingValue | decimal | Yes | Transportation cost, without currency symbol. This value should be the shipping rate returned by the APC Rate API. In destination currency by default, or source currency if convertCurrency is true. |
products | array | Yes | Array of product objects. See Product Fields below. |
grossWeight | decimal | No | Total consignment weight in grams, excluding reusable packaging. Required for Switzerland. |
destinationIp | string | No | IP address of the customer in the destination country. If used, destinationCountry must be set to "IP". |
overrideTranslation | boolean | No | If true, system assumes all descriptions are in English and skips translation. Defaults to false. |
convertCurrency | boolean | No | If true, all monetary values are assumed to be in the source country's currency. Defaults to false (destination currency). |
ignoreDeminimis | boolean | No | If true, de minimis threshold is ignored. Overrides currentCartValue. Defaults to false. |
currentCartValue | decimal | No | Current cart value for de minimis purposes. Only used when ignoreDeminimis is false. |
sourcePostalCode | string | Conditional | Postal code of the origin. Mandatory for United Kingdom (error code 90 if missing). |
postalCode | string | Conditional | Destination postal code. Mandatory for USA, Canada, Spain, and United Kingdom (error code 90 if missing). |
countryCode | string | No | ISO 3166 2-character origin country code. Used for denied party screening. |
firstName | string | No | First name of the person being screened. |
middleName | string | No | Middle name(s) of the person being screened. |
lastName | string | No | Last name of the person being screened. |
street | string | No | Street address of the person being screened. |
city | string | No | City of the person being screened. |
state | string | No | State or county of the person being screened. |
isPostal | boolean | No | true = Postal, false = Courier. Defaults to false. |
isGift | boolean | No | Whether items are a gift. May raise de minimis threshold. Only applicable to postal services. |
Product fields
Each object in the products array accepts the following fields:
| Field | Type | Required | Description |
|---|---|---|---|
hs6Code | string | Yes | 6-digit HS commodity code. A matching description must also be provided. |
description | string | Yes | Plain-text product description. A matching hs6Code must also be provided. |
value | decimal | Yes | Unit price, without currency symbol. Currency follows convertCurrency setting. |
qty | decimal | No | Quantity of items. Defaults to 1. |
originatingCountry | string | No | ISO 3166 2-character code for where the item was manufactured. Overrides sourceCountry for duty rate calculations on this item. |
volumeWeight | decimal | No | Weight in grams or volume in milliliters, for destinations where duty is volumetric. Note: for shipments to Switzerland this value is currently overridden to 1 by the API. |
Response fields — top level
| Field | Type | Description |
|---|---|---|
requestId | string | Unique identifier for this calculation. Required for daily reporting. |
landedCost | object | Container for all landed cost calculation details. |
deniedParties | object | Denied party screening results. Contains matches against international sanctions and export control lists. |
prohibitedRestricted | object | Prohibited and restricted goods screening results per product. |
totalShippingDutyTax | decimal | Total duty and tax including shipping value, in the source currency. |
totalDutyTax | decimal | Total duty and tax on products only (excluding shipping), in the source currency. |
Response fields — landedCost object
| Field | Type | Description |
|---|---|---|
requestId | string | Unique identifier for the landed cost sub-request. |
sourceCountry | string | Origin country code (echoed from request). |
sourceCurrency | string | Currency code of the source country (e.g., USD). |
destinationCountry | string | Destination country code (echoed from request). |
destinationIP | string | null | Resolved destination IP, if provided. |
destinationCurrency | string | Currency code of the destination country (e.g., CHF). |
convertCurrency | boolean | Whether currency conversion was applied. |
vwUnitsMetric | boolean | Whether volume/weight units are metric. |
shippingValue | object | Shipping cost with sourceValue and destinationValue. |
products | array | Array of per-product calculation results. |
dutyDeminimisValue | object | De minimis threshold for duty: sourceValue and destinationValue. |
taxDeminimisValue | object | De minimis threshold for tax: sourceValue and destinationValue. |
totalTax | object | Total tax amount: sourceValue and destinationValue. |
totalDuty | object | Total duty amount: sourceValue and destinationValue. |
productRawTotal | object | Sum of raw product values: sourceValue and destinationValue. |
calculatedTotal | object | Total calculated cost (products + duties/taxes): sourceValue and destinationValue. |
grossWeight | decimal | Gross weight echoed from request. |
isError | boolean | false on success. |
errorCode | integer | 0 on success. Non-zero indicates an error. |
notes | string | Additional notes or warnings from the calculation engine. |
generatedDate | string | ISO 8601 timestamp of when the calculation was generated. |
Response fields — products[] (response)
| Field | Type | Description |
|---|---|---|
hs6code | string | The HS6 code used for calculation. |
commodityCode | string | Full commodity code resolved from the HS6 code (destination country). |
sourceCommodityCode | string | Full commodity code resolved from the HS6 code (source country). |
percentageDutyRate | decimal | Ad valorem (percentage-based) duty rate applied. |
volumetricDutyRate | decimal | Weight or volume-based duty rate applied. |
itemDutyRate | decimal | Per-item duty rate applied. |
additionalDutyRate | decimal | null | Any additional duty rate, if applicable. |
taxRate | decimal | Tax rate applied to the product. |
dutyValue | object | Calculated duty for this product: sourceValue and destinationValue. |
taxValue | object | Calculated tax for this product: sourceValue and destinationValue. |
value | object | Product unit value: sourceValue and destinationValue. |
apcDescription | string | null | APC-standardized description, if available. |
description | string | Product description echoed from request. |
originatingCountry | string | null | Country of origin used in calculation. |
productTotal | object | Total cost for this product including duties/taxes: sourceValue and destinationValue. |
Response fields — deniedParties object
| Field | Type | Description |
|---|---|---|
requestId | string | Unique identifier for the denied party screening sub-request. |
scoreCalculated | integer | Highest match score across all screened lists. |
listsMatched | integer | Number of sanctions/export-control lists that returned potential matches. |
matches | array | Array of individual match objects with details such as scoreCalculated, nameMatch, addressMatch, listsMatched, and matchType. |
isError | boolean | false on success. |
errorCode | integer | 0 on success. |
generatedDate | string | ISO 8601 timestamp. |
Response fields — prohibitedRestricted object
| Field | Type | Description |
|---|---|---|
requestId | string | Unique identifier for the prohibited/restricted screening sub-request. |
sourceCountry | string | Origin country code. |
destinationCountry | string | Destination country code. |
products | array | Array of product objects with hs6code, commodityCode, exportCode, transportCode, importCode, description, and apcUUID. |
isError | boolean | false on success. |
errorCode | integer | 0 on success. |
generatedDate | string | ISO 8601 timestamp. |
Value objects
Used across multiple monetary fields:
| Field | Type | Description |
|---|---|---|
sourceValue | decimal | Amount in the source country's currency. |
destinationValue | decimal | Amount in the destination country's currency. |