Подготовьте запрос
Для расчета landed cost API требуется несколько входных данных, которые мы организовали в рабочие процессы. После завершения вы сможете сделать один запрос, чтобы получить landed cost на основе места назначения, товаров в корзине и деталей доставки.
Каждый рабочий процесс имеет свои обязательные входные данные. GraphQL позволяет передавать больше данных, чем необходимо, но только определенные поля обязательны для возврата landed cost. Эти поля четко обозначены в нашей справке API, чтобы увидеть все возможные поля.
Обратите внимание, что некоторые поля условно обязательны, если вы хотите, чтобы ваш расчет был гарантированным.
Ниже мы описали все поля, необходимые для расчета гарантированной landed cost. Убедитесь, что эта информация включена перед отправкой вашего запроса.
Обязательные входные данные для гарантированных расчетов
partyCreateWorkflowInputpartyCreateWorkflowInput определяет вовлеченные стороны и их местоположения. Просмотрите полную схему в нашей GraphQL API справке. Обязательные поля:
locationadministrativeAreaCode: Код штата или провинции, состоящий из двух букв. Требуется только для CA и BR.countryCode: Двухбуквенный ISO код страны.line1: Первая строка адреса.postalCode: Почтовый индекс или ZIP-код адреса.
personemail: Адрес электронной почты человека.firstName: Имя человека.lastName: Фамилия человека.phone: Номер телефона человека.
typeDESTINATION: Информация оlocationиpersonдля места назначения отправления.ORIGIN: Информация оlocationдля места отправления.person, связанный с местом отправления, не требуется.
itemCreateWorkflowInputitemCreateWorkflowInput перечисляет товары в корзине. Существует множество необязательных полей (все возможности смотрите в нашей справке API), но ниже перечислены обязательные поля.
amount: Стоимость одной единицы товара, отправляемого, до умножения на количество. Обратите внимание, что это отличается от почтового определения почтового предмета. Еслиquantityтовара равен 1, это общая стоимость товара. Еслиquantityтовара больше 1, API умножитamountтовара наquantityтовара, чтобы получить общую стоимость для позиции. Не указывайте общую цену всех единиц товара вamount.currencyCode: Код валюты для суммы товара.quantity: Количество товара. API умножитamountтовара наquantityтовара, чтобы получить общую стоимость для позиции.countryOfOrigin: Страна, где был произведен товар.- Одно из следующих (в зависимости от вашего предпочтения ключа товара. Ваш ключ товара связывает информацию, хранящуюся в Каталоге, с товаром в корзине и используется при создании этикеток.)
productId: Идентификатор товара.sku: Артикул товара.
measurements (WEIGHT, LENGTH, WIDTH, HEIGHT) обязательны только в том случае, если вы хотите упаковать ваши товары при получении оценки доставки.
cartonsCreateWorkflowInputcartonsCreateWorkflowInput требует только сам ввод. Просмотрите полную схему в нашей GraphQL API справке, чтобы увидеть все значения, которые могут быть переданы. Важно передать размеры и вес коробки, если Zonos рассчитывает стоимость доставки.
shipmentRatingCreateWorkflowInputЭтот рабочий процесс используется, когда вы уже знаете службу доставки и стоимость; если вы хотите, чтобы Zonos рассчитал эти расходы для услуг, которые вы включили, замените этот рабочий процесс на shipmentRatingCalculateWorkflow.
shipmentRatingCreateWorkflowInput передает стоимость доставки. Просмотрите полную схему в нашей GraphQL API справке. Обязательные поля:
amount: Стоимость доставки.currencyCode: Код валюты стоимости доставки.serviceLevelCode: Код, указывающий уровень сервиса доставки, используемого в оценке доставки.
landedCostWorkFlowInputlandedCostWorkFlowInput определяет предпочтения для расчета landed cost. Просмотрите полную схему в нашей GraphQL API справке. Обязательные поля:
calculationMethod: Указывает ваше предпочтение по способу доставки: DDP (предоплаченные пошлины и налоги) или DAP (пошлины и налоги оплачиваются при доставке, или если применяется схема возврата, они возвращаются через налоговый идентификатор).- Если вы используете нашу гарантию landed cost, это значение всегда должно быть
DDP_PREFERRED, что обеспечит DDP котировку, когда это возможно, и DAP котировку, если DDP не разрешен. ИспользованиеDAPвместо этого может привести к тому, что стоимость доставки больше не будет гарантирована, так как это обычно приводит к оплате пошлин и налогов при доставке.
- Если вы используете нашу гарантию landed cost, это значение всегда должно быть
endUse: Указывает, продаются ли товары другой компании (FOR_RESALE) или для конечного использования потребителем (NOT_FOR_RESALE).tariffRate: Указывает метод, который Zonos должен использовать для расчета тарифных ставок для этой котировки, в случае если существует диапазон тарифных ставок, которые могут быть применены. *При использовании нашей гарантии landed cost это всегда должно бытьZONOS_PREFERRED.
Добавьте рассчитанную стоимость доставки: Если вы хотите, чтобы Zonos рассчитал стоимость доставки для вас, замените
shipmentRatingCreateWorkflowнаshipmentRatingCalculateWorkflow. ДобавьтеcartonizeWorkflow, если вы хотите, чтобы Zonos сортировал ваши товары в коробки перед тем, как найти стоимость доставки (используется для объемного веса).
Код HS и варианты доставки
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 Catalog, чтобы узнать, есть ли у вас сохраненный код HS для вашего товара. Если его нет, мы вызовем Classify, чтобы сгенерировать классификацию для расчета вашей landed cost на основе следующих полей деталей продукта в itemCreateWorkflow: description, category и material. Если ваши поля деталей продукта недостаточно подробны для генерации классификации на основе оценки уверенности Classify's, будет использован умолчательный код HS, назначенный вашему магазину.
Стоимость доставки
Как уровень сервиса доставки, так и его стоимость влияют на пошлины, налоги и сборы и, следовательно, обязательны. Zonos может рассчитать стоимость доставки, или вы можете передать это нам.
Чтобы Zonos рассчитал стоимость доставки, используйте shipmentRatingCalculateWorkflow. Варианты доставки, возвращенные в ответе на расчет доставки, будут соответствовать serviceLevels, которые вы назначили профилям доставки в Dashboard.
Устранение неполадок: Если вы ожидаете
serviceLevelв ответе, но он не отображается, пожалуйста, убедитесь, чтоserviceLevelвключен и поддерживается выбранным вамиmethod.
Добавьте cartonizeWorkflow (который не имеет входных данных), если вы хотите, чтобы Zonos сортировал ваши товары в коробки перед тем, как найти стоимость доставки (используется для объемного веса.
Если вы знаете serviceLevel и amount для отправки, вы можете передать их в части запроса shipmentRatingCreateWorkflow. Мы будем использовать эти значения для расчета любых связанных сборов перевозчика и вернем их в ответе.
Запросите landed cost через API
Как только у вас есть необходимые входные данные, отправьте мутацию GraphQL на конечную точку API, используя выбранную вами клиентскую библиотеку или инструмент. Вот несколько примеров того, как вы можете структурировать мутацию.
Используйте этот запрос, когда вы хотите, чтобы Zonos рассчитал стоимость доставки как часть запроса Landed Cost. Мы затем рассчитаем пошлины и налоги на доставку, если они взимаются страной назначения.
Мутация
mutation CalculateLandedCost(
$parties: [PartyCreateWorkflowInput!]!
$items: [ItemCreateWorkflowInput!]!
$landedCostConfig: LandedCostWorkFlowInput!
) {
partyCreateWorkflow(input: $parties) {
type
id
organization
}
itemCreateWorkflow(input: $items) {
id
amount
productId
}
cartonizeWorkflow {
id
type
items {
item {
id
}
}
}
shipmentRatingCalculateWorkflow {
id
amount
}
landedCostCalculateWorkflow(input: $landedCostConfig) {
id
duties {
amount
currency
note
}
taxes {
amount
currency
note
}
fees {
amount
currency
note
}
}
}
Переменные
{
"parties": [
{
"location": {
"administrativeArea": "Utah",
"administrativeAreaCode": "UT",
"countryCode": "US",
"line1": "345 N 2450 E",
"line2": "#151",
"locality": "St George",
"postalCode": "84790"
},
"type": "ORIGIN"
},
{
"location": {
"administrativeArea": "New South Wales",
"administrativeAreaCode": "NSW",
"countryCode": "AU",
"line1": "123 George Street",
"line2": "Apartment 5B",
"locality": "Sydney",
"postalCode": "2000"
},
"person": {
"email": "aussie.customer@gmail.com",
"firstName": "James",
"lastName": "Thompson",
"phone": "+61412345678",
"companyName": "Sydney Trading Co",
"metadata": { "key": "customer_type", "value": "premium" }
},
"type": "DESTINATION"
},
{
"type": "PAYOR",
"location": {
"administrativeArea": "Victoria",
"administrativeAreaCode": "VIC",
"countryCode": "AU",
"latitude": -37.8136,
"line1": "456 Collins Street",
"line2": "Suite 12",
"locality": "Melbourne",
"longitude": 144.9631,
"postalCode": "3000"
},
"person": {
"email": "billing@reallysilkstore.com.au",
"firstName": "Sarah",
"lastName": "Mitchell",
"phone": "+61398765432",
"companyName": "Really Silk Store",
"metadata": { "key": "billing_contact", "value": "primary" }
}
}
],
"items": [
{
"amount": 120,
"currencyCode": "USD",
"countryOfOrigin": "US",
"quantity": 1,
"productId": "productId1",
"hsCode": null,
"description": "leather wallet",
"measurements": [
{ "type": "WIDTH", "value": 1, "unitOfMeasure": "CENTIMETER" },
{ "type": "LENGTH", "value": 2, "unitOfMeasure": "CENTIMETER" },
{ "type": "HEIGHT", "value": 4, "unitOfMeasure": "CENTIMETER" },
{ "type": "WEIGHT", "value": 1, "unitOfMeasure": "POUND" }
]
},
{
"amount": 55,
"currencyCode": "USD",
"countryOfOrigin": "US",
"quantity": 1,
"productId": "productId2",
"hsCode": "6206.30",
"description": "t-shirt",
"measurements": [
{ "type": "WIDTH", "value": 4, "unitOfMeasure": "CENTIMETER" },
{ "type": "LENGTH", "value": 4, "unitOfMeasure": "CENTIMETER" },
{ "type": "HEIGHT", "value": 5, "unitOfMeasure": "CENTIMETER" },
{ "type": "WEIGHT", "value": 1.5, "unitOfMeasure": "POUND" }
]
}
],
"landedCostConfig": {
"calculationMethod": "DDP_PREFERRED",
"endUse": "NOT_FOR_RESALE",
"tariffRate": "ZONOS_PREFERRED"
}
}
Ответ
{
"data": {
"partyCreateWorkflow": [
{
"type": "ORIGIN",
"id": "party_01044774-758f-4021-b8dd-e17d97609647",
"organization": "organization_1ff864e0-58cf-4efa-9031-e8c323cf4c0e"
},
{
"type": "DESTINATION",
"id": "party_0m6wgfjmhbnf2",
"organization": "organization_1ff864e0-58cf-4efa-9031-e8c323cf4c0e"
},
{
"type": "PAYOR",
"id": "party_0m6wgfjn5bnfh",
"organization": "organization_1ff864e0-58cf-4efa-9031-e8c323cf4c0e"
}
],
"itemCreateWorkflow": [
{
"id": "item_0m6wgfjpfw9fz",
"amount": 120,
"productId": "productId1"
},
{
"id": "item_0m6wgfjpfw9g0",
"amount": 55,
"productId": "productId2"
}
],
"cartonizeWorkflow": [
{
"id": "carton_0m6wgfme53aqb",
"type": "PACKAGE",
"items": [
{
"item": {
"id": "item_0m6wgfjpfw9g0"
}
},
{
"item": {
"id": "item_0m6wgfjpfw9fz"
}
}
]
}
],
"shipmentRatingCalculateWorkflow": [
{
"id": "shipment_rating_0m6wgfmghvhh1",
"amount": 24.8864
}
],
"landedCostCalculateWorkflow": [
{
"id": "landed_cost_7730b476-1307-4d14-8f76-3b37bd162054",
"duties": [],
"taxes": [
{
"amount": 5.5,
"currency": "USD",
"note": null
},
{
"amount": 0.7822,
"currency": "USD",
"note": null
},
{
"amount": 12,
"currency": "USD",
"note": null
},
{
"amount": 1.7065,
"currency": "USD",
"note": null
}
],
"fees": [
{
"amount": 0,
"currency": "USD",
"note": null
},
{
"amount": 0.8,
"currency": "USD",
"note": null
},
{
"amount": 0,
"currency": "USD",
"note": null
}
]
}
]
},
"errors": []
}
Следующий шаг: Создание заказа
После того как вы рассчитаете landed cost и получите landedCostId из ответа API, вам следует создать заказ, чтобы завершить транзакцию в системе Zonos. Используйте мутацию orderCreate и передайте landedCostId из вашего запроса. Узнайте больше о создании заказов.
Запрос landed cost в Dashboard
Вы также можете рассчитывать стоимость доставки напрямую в Zonos Dashboard без использования API. Это полезно для тестирования расчетов, обучения вашей команды или получения быстрых котировок для запросов клиентов.
Dashboard использует те же конечные точки API, описанные выше, поэтому результаты будут совпадать с тем, что вы получите от прямых вызовов API. Это отличный способ проверить вашу интеграцию API или исследовать, как различные входные данные влияют на расчеты.
Использование калькулятора Dashboard
С помощью калькулятора landed cost в Dashboard вы можете получать котировки с рассчитанными тарифами на доставку, создавать котировки с известными затратами на доставку или обрабатывать несколько котировок оптом.
Используйте этот процесс, когда вы знаете уровень обслуживания и стоимость доставки для вашей отправки.
- Перейдите в Dashboard → Заказы → Котировки
- Нажмите Новая котировка
- По желанию — Измените местоположение вашего адреса отправления
- Выберите Страну назначения из выпадающего списка
- Введите сумму доставки
- Уровень обслуживания является необязательным; его добавление позволяет нам рассчитать применимые сборы перевозчика
- Добавьте детали товара для отправки
- Когда вы вводите описание, мы автоматически classify продукт и генерируем код HS
- Вы можете перезаписать сгенерированный код HS, если это необходимо
- Для нескольких товаров нажмите Сохранить и добавить другой. В противном случае нажмите Сохранить
- По желанию — Нажмите Дополнительные параметры, чтобы изменить:
- Тип продажи на Для перепродажи
- Режим доставки на Доставка с неоплаченными пошлинами
- Нажмите Получить котировку
- Чтобы внести изменения, нажмите Редактировать форму и измените любые детали
- Нажмите Получить котировку снова, чтобы обновить
Котировка landed cost появится справа, включая стоимость товара, доставки и импорта. Разверните котировку, чтобы увидеть подробные разбивки по товарам, доставке, пошлинам, налогам и сборам. Все котировки сохраняются на странице котировок для будущего использования.
Редактировать существующие котировки: Нажмите Котировать снова в правом верхнем углу, чтобы изменить существующую котировку, а не начинать с нуля.
Преимущества использования Dashboard
- Не требуется кодирования — Генерируйте котировки через удобный интерфейс
- Обучение команды — Помогите не техническим членам команды понять компоненты landed cost
- Проверка API — Убедитесь, что ваша интеграция API дает ожидаемые результаты
- Поддержка клиентов — Быстро генерируйте котировки для запросов клиентов
- Пакетная обработка — Эффективно обрабатывайте несколько расчетов (скоро)
Котировки Dashboard включают те же подробные разбивки, доступные через API, что делает его отличным дополнением к вашей автоматизированной интеграции.
Рассчитайте landed cost
Рассчитайте пошлины, налоги и сборы с помощью GraphQL.GraphQL
Zonos рассчитывает общую landed cost для международных отправлений, включая пошлины, налоги и любые дополнительные сборы, взимаемые таможней, брокерами или перевозчиками. В большинстве случаев мы гарантируем эти расчеты, оплачивая окончательный счет сами и взимая с вас ровно ту сумму, которую мы рассчитали. В некоторых случаях вы можете использовать нашу landed cost без гарантии, что означает, что вы берете на себя ответственность за любую разницу между нашим расчетом и фактическими сборами.