Prepare la entrada de la mutación
Calcular un landed cost a través de la API GraphQL implica múltiples pasos; hemos organizado estos pasos en flujos de trabajo. Al final, tendrá todo lo que necesita para hacer una llamada y obtener un landed cost basado en el destino de envío, los artículos en el carrito y el envío.
Cada flujo de trabajo necesita datos de entrada específicos. GraphQL le permite incluir más información de la necesaria; consulte nuestra referencia de API completa para ver todos los campos posibles. Los campos requeridos están marcados como tales en nuestra referencia de API, pero esta marca solo se aplica a los campos que son necesarios para la funcionalidad. Se requieren algunos campos adicionales al usar nuestra garantía.
A continuación, hemos enumerado todos los campos requeridos para calcular un coste de importación garantizado landed cost. Asegúrese de tener esta información lista.
Entradas requeridas para cálculos garantizados
partyCreateWorkflowInput
El partyCreateWorkflowInput
identifica a las partes involucradas y sus ubicaciones. Vea el esquema completo en nuestra referencia de API GraphQL. Los campos requeridos son:
location
administrativeAreaCode
: El código del estado o provincia, en dos letras. Solo requerido para CA y BR.countryCode
: El código ISO de dos letras del país.line1
: La primera línea de la dirección.postalCode
: El código postal o ZIP de la dirección.
person
email
: La dirección de correo electrónico de la persona.firstName
: El nombre de la persona.lastName
: El apellido de la persona.phone
: El número de teléfono de la persona.
type
DESTINATION
: La información delocation
yperson
para el destino de envío.ORIGIN
: La información delocation
para el origen del envío. Laperson
asociada con el origen del envío no es requerida.
itemCreateWorkflowInput
El itemCreateWorkflowInput
enumera los artículos en el carrito. Hay muchos campos opcionales (vea todas las posibilidades en nuestra referencia de API), pero los campos a continuación son requeridos.
amount
: El precio del artículo.currencyCode
: El código de moneda para el monto del artículo.quantity
: La cantidad del artículo.- Uno de los siguientes (cualquiera que se establezca como su preferencia de clave de artículo. Su clave de artículo conecta la información almacenada en el Catálogo con el artículo en el carrito y se utiliza durante la creación de etiquetas.)
productId
: El ID del producto del artículo.sku
: El SKU del artículo.
Las measurements
(WEIGHT
, LENGTH
, WIDTH
, HEIGHT
) solo son requeridas si desea cartonizar sus artículos al obtener una calificación de envío.
shipmentRatingCreateWorkflowInput
Este flujo de trabajo se utiliza cuando ya conoce el servicio de envío y el costo; si desea que Zonos calcule estos costos para los servicios que ha habilitado, reemplace este flujo de trabajo y use el shipmentRatingCalculateWorkflow
en su lugar.
El shipmentRatingCreateWorkflowInput
comunica el costo de envío. Vea el esquema completo en nuestra referencia de API GraphQL. Los campos requeridos son:
amount
: El costo de envío.currencyCode
: El código de moneda del costo de envío.serviceLevelCode
: El código que indica el nivel de servicio de envío utilizado en la calificación de envío.
landedCostWorkflowInput
El landedCostWorkflowInput
dicta las preferencias para el cálculo de landed cost. Vea el esquema completo en nuestra referencia de API GraphQL. Los campos requeridos son:
calculationMethod
: Indica su preferencia sobre cómo planea enviar: DDP (aranceles e impuestos prepagados) o DAP (ya sea que los aranceles e impuestos se paguen a la entrega, o si se aplica un esquema de remesas, se remiten a través de un ID fiscal).- Si utiliza nuestra garantía de landed cost, este valor debe ser siempre
DDP_PREFERRED
, que proporcionará una cotización DDP cuando sea posible y una cotización DAP si no se permite una DDP. UsarDAP
en su lugar puede resultar en que los costos de importación ya no estén garantizados, ya que esto generalmente resulta en aranceles e impuestos pagados a la entrega.
- Si utiliza nuestra garantía de landed cost, este valor debe ser siempre
endUse
: Indica si los bienes se venden a otra empresa (FOR_RESALE
) o para uso final con un consumidor (NOT_FOR_RESALE
).tariffRate
: Indica el método que Zonos debe usar para calcular las tarifas arancelarias para esta cotización, en caso de que haya un rango de tarifas arancelarias que podrían aplicarse. *Al usar nuestra garantía de landed cost, esto debe ser siempreZONOS_PREFERRED
.
Agregar envío calculado: Si desea que Zonos calcule el costo de envío por usted, reemplace el
shipmentRatingCreateWorkflow
con elshipmentRatingCalculateWorkflow
. Agregue elcartonizeWorkflow
si desea que Zonos clasifique sus artículos en cartones antes de encontrar el costo de envío (utilizado para peso dimensional).
Opciones al calcular un landed cost
GraphQL te da la flexibilidad para personalizar la solicitud según tu preferencia. Hay un par de opciones sobre cómo incluir los códigos HS y los costos de envío en la solicitud.
Códigos HS
Los códigos HS impactan las tasas de aranceles y, por lo tanto, son necesarios. Puedes pasar el código HS para cada artículo o dejar que Classify los genere.
Zonos recomienda encarecidamente usar códigos HS específicos del producto, ya que conduce a una cotización de landed cost más precisa. Si conoces tus códigos HS, pasa el hsCode
para cada item
durante el itemCreateWorkflow
.
Si pasas un código HS, Zonos lo validará en tiempo real al obtener una cotización de landed cost. Si el código HS que proporcionaste es inválido (es decir, no existe), Zonos re-classify tu artículo en tiempo real y usará el nuevo código HS válido en lugar del que proporcionaste.
Si necesitas ayuda para generar códigos HS para tus productos, aprende sobre Zonos Classify y cómo solicitar una clasificación.
Si no pasas un hsCode
a Zonos, primero verificaremos el Catálogo de Zonos para ver si tienes un código HS almacenado para tu artículo. Si no lo tienes, llamaremos a Classify para generar una clasificación que impulse tu cálculo de landed cost basado en los siguientes campos de detalle del producto del itemCreateWorkflow
: description
, category
y material
. Si los campos de detalle de tu producto no son lo suficientemente detallados para generar una clasificación basada en la puntuación de confianza de Classify's, se usará el código HS predeterminado asignado a tu tienda.
Por defecto, si no proporcionas un hsCode
y llamamos a Classify, el hsCode
generado por Classify no se devolverá en la respuesta, ya que solo se utilizará internamente para generar tu landed cost. Sin embargo, si tienes una suscripción a Classify, devolveremos el código HS de Classify's en tu respuesta de landed cost.
Costo de envío
Tanto el nivel de servicio de envío como su costo impactan los aranceles, impuestos y tarifas y, por lo tanto, son necesarios. Zonos puede calcular el envío o puedes pasárnoslo.
Para que Zonos calcule los costos de envío, usa el shipmentRatingCalculateWorkflow
. Las opciones de envío devueltas en la respuesta de envío calculado se correlacionarán con los serviceLevels
que has asignado a los perfiles de envío en el Tablero.
Solución de problemas: Si esperas un
serviceLevel
en la respuesta pero no aparece, asegúrate de que elserviceLevel
esté habilitado y sea compatible con elmethod
que seleccionaste.
Agrega el cartonizeWorkflow
(que no tiene entradas) si deseas que Zonos ordene tus artículos en cajas antes de encontrar el costo de envío (usado para el peso dimensional.
Si conoces el serviceLevel
y el amount
para un envío, puedes pasarlos en la parte shipmentRatingCreateWorkflow
de la solicitud. Usaremos esos valores para calcular cualquier tarifa de transportista asociada y devolverlas en la respuesta.
Enviar la mutación
Una vez que tengas los datos de entrada requeridos, envía la mutación GraphQL al punto final de la API utilizando tu biblioteca o herramienta cliente elegida. Aquí hay algunos ejemplos de cómo puedes estructurar la mutación.
Mutación
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
}
}
}
Respuesta
{
"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"
}
]
}
]
}
}
Calcule un landed cost
Calcule aranceles, impuestos y tarifas con GraphQL.GraphQL
Zonos calcula el total de landed cost para envíos, que incluye aranceles, impuestos y cualquier tarifa adicional que puedan cobrar las aduanas, los agentes de aduanas o los transportistas. A menudo garantizamos estos cálculos pagando nosotros mismos la factura de aranceles, impuestos y tarifas mientras le cobramos exactamente lo que calculamos. En raras ocasiones, nuestros cálculos pueden usarse sin nuestra garantía, donde usted asume cualquier diferencia entre nuestro cálculo y la factura de aranceles e impuestos.