Подготовьте входные данные для мутации
Расчет landed cost через GraphQL API включает несколько этапов; мы организовали эти этапы в рабочие процессы. В конце концов, у вас будет все необходимое, чтобы сделать один вызов для получения landed cost на основе места назначения, товаров в корзине и доставки.
Каждый рабочий процесс требует конкретных входных данных. GraphQL позволяет вам включать больше информации, чем требуется; пожалуйста, обратитесь к нашему полному API справочнику, чтобы увидеть все возможные поля. Обязательные поля отмечены как таковые в нашем API справочнике, но эта отметка применяется только к полям, которые необходимы для функциональности. Несколько дополнительных полей требуются при использовании нашей гарантии.
Ниже мы перечислили все обязательные поля для расчета гарантированной landed cost. Убедитесь, что у вас есть эта информация под рукой.
Обязательные входные данные для гарантированных расчетов
partyCreateWorkflowInput
partyCreateWorkflowInput
определяет вовлеченные стороны и их местоположения. Просмотрите полную схему в нашем GraphQL API справочнике. Обязательные поля:
location
administrativeAreaCode
: Код штата или провинции, состоящий из двух букв. Требуется только для CA и BR.countryCode
: Двухбуквенный ISO код страны.line1
: Первая строка адреса.postalCode
: Почтовый индекс или ZIP-код адреса.
person
email
: Адрес электронной почты человека.firstName
: Имя человека.lastName
: Фамилия человека.phone
: Номер телефона человека.
type
DESTINATION
: Информация оlocation
иperson
для места назначения отправления.ORIGIN
: Информация оlocation
для места отправления.person
, связанный с местом отправления, не требуется.
itemCreateWorkflowInput
itemCreateWorkflowInput
перечисляет товары в корзине. Существует множество необязательных полей (см. все возможности в нашем API справочнике), но ниже перечислены обязательные поля.
amount
: Цена товара.currencyCode
: Код валюты для суммы товара.quantity
: Количество товара.- Одно из следующих (в зависимости от вашего предпочтения ключа товара. Ваш ключ товара связывает информацию, хранящуюся в Каталоге, с товаром в корзине и используется при создании этикетки.)
productId
: Идентификатор товара.sku
: SKU товара.
measurements
(WEIGHT
, LENGTH
, WIDTH
, HEIGHT
) требуются только в том случае, если вы хотите упаковать ваши товары при получении оценки отправления.
cartonsCreateWorkflowInput
cartonsCreateWorkflowInput
требует только самих входных данных. Просмотрите полную схему в нашем GraphQL API справочнике, чтобы увидеть все значения, которые могут быть переданы. Важно передать размеры и вес коробки, если Zonos рассчитывает стоимость доставки.
shipmentRatingCreateWorkflowInput
Этот рабочий процесс используется, когда вы уже знаете службу доставки и стоимость; если вы хотите, чтобы Zonos рассчитал эти расходы для услуг, которые вы включили, замените этот рабочий процесс на shipmentRatingCalculateWorkflow
.
shipmentRatingCreateWorkflowInput
передает стоимость доставки. Просмотрите полную схему в нашем GraphQL API справочнике. Обязательные поля:
amount
: Стоимость доставки.currencyCode
: Код валюты стоимости доставки.serviceLevelCode
: Код, указывающий уровень сервиса доставки, используемый в оценке отправления.
landedCostWorkflowInput
landedCostWorkflowInput
определяет предпочтения для расчета landed cost. Просмотрите полную схему в нашем GraphQL API справочнике. Обязательные поля:
calculationMethod
: Указывает ваше предпочтение по способу доставки: DDP (предоплаченные пошлины и налоги) или DAP (пошлины и налоги оплачиваются при доставке, или если применяется схема возврата, они возвращаются через налоговый идентификатор).- Если вы используете нашу гарантию landed cost, это значение всегда должно быть
DDP_PREFERRED
, что обеспечит DDP котировку, когда это возможно, и DAP котировку, если DDP не разрешен. ИспользованиеDAP
вместо этого может привести к тому, что расчеты landed costs больше не будут гарантированы, так как это обычно приводит к оплате пошлин и налогов при доставке.
- Если вы используете нашу гарантию landed cost, это значение всегда должно быть
endUse
: Указывает, продаются ли товары другой компании (FOR_RESALE
) или для конечного использования потребителем (NOT_FOR_RESALE
).tariffRate
: Указывает метод, который Zonos должен использовать для расчета тарифных ставок для этой котировки, в случае если существует диапазон тарифных ставок, которые могут быть применены. *При использовании нашей гарантии landed cost, это всегда должно бытьZONOS_PREFERRED
.
Добавьте рассчитанную доставку: Если вы хотите, чтобы Zonos рассчитал стоимость доставки для вас, замените
shipmentRatingCreateWorkflow
наshipmentRatingCalculateWorkflow
. ДобавьтеcartonizeWorkflow
, если вы хотите, чтобы Zonos сортировал ваши товары в коробки перед тем, как найти стоимость доставки (используется для объемного веса).
Опции при расчете landed cost
GraphQL предоставляет вам гибкость в настройке запроса по вашему усмотрению. Существует несколько вариантов, как включить HS коды и стоимость доставки в запрос.
HS коды
HS коды влияют на ставки пошлин, поэтому они необходимы. Вы можете передать HS код для каждого товара или позволить Classify сгенерировать их.
Zonos настоятельно рекомендует использовать HS коды, специфичные для продукта, так как это приводит к более точной оценке landed cost. Если вы знаете свои HS коды, передайте hsCode
для каждого item
в процессе itemCreateWorkflow
.
Если вы передаете HS код, Zonos проверит его на лету при получении оценки landed cost. Если предоставленный вами HS код недействителен (то есть не существует), Zonos повторно-classify ваш товар на лету и использует новый, действительный HS код вместо вашего.
Если вам нужна помощь в генерации HS кодов для ваших продуктов, узнайте о Zonos Classify и как запросить классификацию.
Если вы не передаете Zonos hsCode
, мы сначала проверим Zonos Каталог, чтобы увидеть, есть ли у вас HS код, сохраненный для вашего товара. Если его нет, мы вызовем Classify для генерации классификации, чтобы обеспечить расчет вашего landed cost на основе следующих полей деталей продукта itemCreateWorkflow
: description
, category
и material
. Если ваши поля деталей продукта недостаточно подробны для генерации классификации на основе оценки уверенности Classify's, будет использован стандартный HS код, назначенный вашему магазину.
По умолчанию, если вы не предоставляете hsCode
и мы вызываем Classify, hsCode
, сгенерированный Classify, не будет возвращен в ответе, так как он будет использоваться только внутренне для генерации вашего landed cost. Однако, если у вас есть подписка на Classify, мы вернем HS код Classify's в вашем ответе landed cost.
Стоимость доставки
Как уровень сервиса доставки, так и ее стоимость влияют на пошлины, налоги и сборы, и поэтому они необходимы. Zonos может рассчитать доставку или вы можете передать это нам.
Чтобы Zonos рассчитал стоимость доставки, используйте shipmentRatingCalculateWorkflow
. Варианты доставки, возвращенные в ответе на расчет доставки, будут соответствовать serviceLevels
, которые вы назначили профилям доставки в Dashboard.
Устранение неполадок: Если вы ожидаете
serviceLevel
в ответе, но он не отображается, пожалуйста, убедитесь, чтоserviceLevel
включен и поддерживается выбранным вамиmethod
.
Добавьте cartonizeWorkflow
(который не имеет входных данных), если вы хотите, чтобы Zonos сортировал ваши товары в коробки перед определением стоимости доставки (используется для объемного веса.
Если вы знаете serviceLevel
и amount
для отправки, вы можете передать их в части запроса shipmentRatingCreateWorkflow
. Мы используем эти значения для расчета любых связанных сборов перевозчика и возвращаем их в ответе.
Отправка мутации
Как только у вас есть необходимые входные данные, отправьте мутацию GraphQL на конечную точку API, используя выбранную вами библиотеку клиента или инструмент. Вот несколько примеров того, как вы можете структурировать мутацию.
Используйте этот запрос, когда вы хотите, чтобы Zonos рассчитал стоимость доставки как часть запроса Landed Cost. Затем мы рассчитаем пошлины и налоги на доставку, если они взимаются страной назначения.
Мутация
mutation {
partyCreateWorkflow(
input: [
{
location: {
administrativeArea: "Utah"
administrativeAreaCode: "UT"
countryCode: US
line1: "345 N 2450 E"
line2: "#151"
locality: "St George"
postalCode: "84790"
}
type: ORIGIN
}
{
location: {
administrativeArea: "BC"
administrativeAreaCode: "BC"
countryCode: CA
line1: "27 Sussex Dr."
locality: "Victoria"
postalCode: "V8T 2V9"
}
person: {
email: "test@gmail.com"
firstName: "firstName"
lastName: "lastName"
phone: "5022303021"
companyName: "goProTest"
metadata: { key: "key", value: "value" }
}
type: DESTINATION
}
{
type: PAYOR
location: {
administrativeArea: "ON"
administrativeAreaCode: "ON"
countryCode: CA
latitude: 1.2
line1: "asdf"
line2: "asdf"
locality: "locality"
longitude: 3423.2
postalCode: "M4C 1A1"
}
person: {
email: "test@gmail.com"
firstName: "firstName"
lastName: "lastName"
phone: "5022303021"
companyName: "goProTest"
metadata: { key: "key", value: "value" }
}
}
]
) {
type
id
organization
}
itemCreateWorkflow(
input: [
{
amount: 69
currencyCode: USD
countryOfOrigin: US
quantity: 1
productId: "productId"
hsCode: "1006.30"
description: "description"
measurements: [
{ type: WIDTH, value: 2, unitOfMeasure: CENTIMETER }
{ type: WEIGHT, value: 2, unitOfMeasure: POUND }
]
}
{
amount: 62
currencyCode: CAD
countryOfOrigin: US
hsCode: "1006.30"
quantity: 1
productId: "productId2"
description: "description2"
measurements: [
{ type: WIDTH, value: 2, unitOfMeasure: CENTIMETER }
{ type: WEIGHT, value: 2, unitOfMeasure: POUND }
]
}
]
) {
id
amount
}
cartonizeWorkflow {
id
type
items {
item {
id
}
}
}
shipmentRatingCalculateWorkflow {
id
amount
}
landedCostCalculateWorkflow(
input: { endUse: FOR_RESALE, method: DAP, tariffRate: ZONOS_PREFERRED }
) {
id
duties {
amount
currency
}
taxes {
amount
currency
}
fees {
amount
currency
}
}
}
Ответ
{
"data": {
"partyCreateWorkflow": [
{
"type": "ORIGIN",
"id": "party_749959ae-b9ff-4de4-b4ac-59cc990c53ba",
"organization": "organization_dbb64939-12d7-4f12-98ea-7ae5b21acfd0"
},
{
"type": "DESTINATION",
"id": "party_cd7ff245-76b6-464f-a7bf-151ebe1f8833",
"organization": "organization_dbb64939-12d7-4f12-98ea-7ae5b21acfd0"
},
{
"type": "PAYOR",
"id": "party_00e63a9e-9735-44d9-b129-3b3e76c5df25",
"organization": "organization_dbb64939-12d7-4f12-98ea-7ae5b21acfd0"
}
],
"itemCreateWorkflow": [
{
"id": "item_eb27f071-de8b-4578-9db9-ae69aaf9be3e",
"amount": 69
},
{
"id": "item_fffa8ba8-cc8d-4e13-bed6-55044a71c115",
"amount": 62
}
],
"cartonizeWorkflow": [
{
"id": "carton_b34b29c1-ce27-464b-b91b-df8e4a696312",
"type": "PACKAGE",
"items": [
{
"item": {
"id": "item_eb27f071-de8b-4578-9db9-ae69aaf9be3e"
}
},
{
"item": {
"id": "item_fffa8ba8-cc8d-4e13-bed6-55044a71c115"
}
}
]
}
],
"shipmentRatingCalculateWorkflow": [
{
"id": "shipment_rating_96787309-9510-43cc-b4fa-c341ff80f4cc",
"amount": 173.2
},
{
"id": "shipment_rating_b0ccb109-7794-4c7c-b5cc-e2cfbbc5c8ac",
"amount": 190.1
}
],
"landedCostCalculateWorkflow": [
{
"id": "landed_cost_74d3ce11-bff2-4326-9e6f-368e03ac88b4",
"duties": [
{
"amount": 0.0,
"currency": "USD"
},
{
"amount": 0.0,
"currency": "USD"
}
],
"taxes": [
{
"amount": 3.45,
"currency": "USD"
},
{
"amount": 3.1,
"currency": "USD"
},
{
"amount": 0.0,
"currency": "USD"
},
{
"amount": 0.0,
"currency": "USD"
}
],
"fees": [
{
"amount": 0.13,
"currency": "USD"
},
{
"amount": 1.44,
"currency": "USD"
}
]
},
{
"id": "landed_cost_7bbfd354-028c-457f-8c8e-c81bb8fa09a0",
"duties": [
{
"amount": 0.0,
"currency": "USD"
},
{
"amount": 0.0,
"currency": "USD"
}
],
"taxes": [
{
"amount": 3.45,
"currency": "USD"
},
{
"amount": 3.1,
"currency": "USD"
},
{
"amount": 0.0,
"currency": "USD"
},
{
"amount": 0.0,
"currency": "USD"
}
],
"fees": [
{
"amount": 0.13,
"currency": "USD"
},
{
"amount": 1.44,
"currency": "USD"
}
]
}
]
}
}
Рассчитайте landed cost
Рассчитайте пошлины, налоги и сборы с помощью GraphQL.GraphQL
Zonos рассчитывает общую landed cost для отправлений, которая включает пошлины, налоги и любые дополнительные сборы, которые могут взимать таможня, брокеры или перевозчики. Мы часто гарантируем эти расчеты, оплачивая сами пошлину, налог и сбор, взимая с вас ровно ту сумму, которую мы рассчитали. В редких случаях наши расчеты могут использоваться без нашей гарантии, когда вы берете на себя любую разницу между нашим расчетом и счетом на пошлину и налог.