Prepare la solicitud
Calcular un landed cost a través de la API requiere varias entradas, que hemos organizado en flujos de trabajo. Una vez completado, podrá hacer una única solicitud para devolver un landed cost basado en el destino de envío, los artículos en el carrito y los detalles de envío.
Cada flujo de trabajo tiene sus propias entradas requeridas. GraphQL le permite pasar más datos de los necesarios, pero solo ciertos campos son obligatorios para devolver un landed cost. Estos están claramente marcados en nuestra referencia de API para ver todos los campos posibles.
Tenga en cuenta que algunos campos son condicionalmente requeridos si desea que su cálculo esté garantizado.
A continuación, hemos esbozado todos los campos requeridos para calcular un landed cost garantizado. Asegúrese de que esta información esté incluida antes de hacer su solicitud.
Entradas requeridas para cálculos garantizados
partyCreateWorkflowInputEl partyCreateWorkflowInput identifica las partes involucradas y sus ubicaciones. Vea el esquema completo en nuestra referencia de API GraphQL referencia. Los campos requeridos son:
locationadministrativeAreaCode: 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.
personemail: 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.
typeDESTINATION: La información delocationypersonpara el destino de envío.ORIGIN: La información delocationpara el origen del envío. Lapersonasociada con el origen del envío no es requerida.
itemCreateWorkflowInputEl 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 obligatorios.
amount: El valor de una sola unidad del producto que se envía, antes de ser multiplicado por la cantidad. Tenga en cuenta que esto difiere de la definición postal de un artículo postal. Si laquantitydel artículo es 1, este es el costo total del artículo. Si laquantitydel artículo es >1, la API multiplicará elamountdel artículo por laquantitydel artículo para obtener el total para el artículo en línea. No ponga el precio total de todas las unidades del artículo en elamount.currencyCode: El código de moneda para el monto del artículo.quantity: La cantidad del artículo. La API multiplicará elamountdel artículo por laquantitydel artículo para obtener el total para el artículo en línea.countryOfOrigin: El país donde se fabricó el 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.
cartonsCreateWorkflowInputEl cartonsCreateWorkflowInput solo requiere la entrada en sí. Vea el esquema completo en nuestra referencia de API GraphQL referencia para ver todos los valores que se pueden pasar. Es importante pasar las dimensiones y el peso del cartón si Zonos está calculando el costo de envío.
shipmentRatingCreateWorkflowInputEste 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 utilice el shipmentRatingCalculateWorkflow en su lugar.
El shipmentRatingCreateWorkflowInput comunica el costo de envío. Vea el esquema completo en nuestra referencia de API GraphQL referencia. 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.
landedCostWorkFlowInputEl landedCostWorkFlowInput dicta las preferencias para el cálculo de landed cost. Vea el esquema completo en nuestra referencia de API GraphQL referencia. 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 siempre debe ser
DDP_PREFERRED, lo que proporcionará una cotización DDP cuando sea posible y una cotización DAP si no se permite una DDP. UsarDAPen su lugar puede resultar en que los costos de entrega 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 siempre debe ser
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 se puedan aplicar. *Al utilizar nuestra garantía de landed cost, esto siempre debe serZONOS_PREFERRED.
Agregar envío calculado: Si desea que Zonos calcule el costo de envío por usted, reemplace el
shipmentRatingCreateWorkflowcon elshipmentRatingCalculateWorkflow. Agregue elcartonizeWorkflowsi desea que Zonos clasifique sus artículos en cartones antes de encontrar el costo de envío (utilizado para peso dimensional).
Código HS y opciones de envío
GraphQL te brinda la flexibilidad para personalizar la solicitud según tus preferencias. Hay un par de opciones sobre cómo incluir códigos HS y costos de envío en la solicitud.
Códigos HS
Los códigos HS impactan las tasas de aranceles y, por lo tanto, son requeridos. Puedes pasar el código HS para cada artículo o dejar que Classify los genere.
Zonos recomienda encarecidamente utilizar códigos HS específicos para productos, ya que esto 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á al instante al obtener una cotización de landed cost. Si el código HS que proporcionaste es inválido (lo que significa que no existe), Zonos re-classify tu artículo al instante 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 a Zonos un hsCode, primero verificaremos Zonos Catalog 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 potencie tu cálculo de landed cost basado en los siguientes campos de detalle del producto en el 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 el puntaje de confianza de Classify's, se utilizará el código HS predeterminado asignado a tu tienda.
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 requeridos. Zonos puede calcular el envío o puedes pasarnos esta información.
Para que Zonos calcule los costos de envío, utiliza 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 Dashboard.
Solución de problemas: Si esperas un
serviceLevelen la respuesta pero no aparece, asegúrate de que elserviceLevelesté habilitado y sea compatible con elmethodque seleccionaste.
Agrega el cartonizeWorkflow (que no tiene entradas) si deseas que Zonos clasifique tus artículos en cartones antes de encontrar el costo de envío (utilizado para peso dimensional.
Si conoces el serviceLevel y el amount para un envío, puedes pasarlos en la parte de shipmentRatingCreateWorkflow de la solicitud. Usaremos esos valores para calcular cualquier tarifa asociada del transportista y devolveremos esos en la respuesta.
Solicitar un landed cost a través de la API
Una vez que tengas los datos de entrada requeridos, envía la mutación GraphQL al punto final de la API utilizando la biblioteca o herramienta de cliente que elijas. Aquí hay algunos ejemplos de cómo puedes estructurar la mutación.
Utiliza esta solicitud cuando estés haciendo que Zonos calcule el costo de envío como parte de la solicitud de Landed Cost. Luego calcularemos los aranceles e impuestos sobre el envío si son evaluados por el país de destino.
Mutación
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
}
}
}
Variables
{
"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"
}
}
Respuesta
{
"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": []
}
Siguiente paso: Crear un pedido
Después de calcular un landed cost y recibir el landedCostId de la respuesta de la API, debes crear un pedido para finalizar la transacción en el Zonos sistema. Utiliza la mutación orderCreate y pasa el landedCostId de tu cotización. Aprende más sobre crear pedidos.
Solicitar un landed cost en el Dashboard
También puedes calcular costos de importación directamente en el Zonos Dashboard sin usar la API. Esto es útil para probar cálculos, capacitar a tu equipo o obtener cotizaciones rápidas para consultas de clientes.
El Dashboard utiliza los mismos puntos finales de API descritos anteriormente, por lo que los resultados coincidirán con lo que obtendrías de llamadas directas a la API. Esto lo convierte en una excelente manera de validar tu integración de API o explorar cómo diferentes entradas afectan los cálculos.
Usando la calculadora del Dashboard
Con la calculadora de landed cost en el Dashboard, puedes obtener cotizaciones con tarifas de envío calculadas, crear cotizaciones con costos de envío conocidos o procesar múltiples cotizaciones en bloque.
Utiliza este flujo cuando conozcas el nivel de servicio de envío y el costo para tu envío.
- Ve a Dashboard → Orders → Cotizaciones
- Haz clic en Nueva cotización
- Opcional — Modifica la ubicación de tu dirección de envío
- Selecciona un País de destino del menú desplegable
- Ingresa el monto de envío
- El nivel de servicio es opcional; agregarlo nos permite calcular las tarifas aplicables del transportista
- Agrega los detalles del artículo para el envío
- Cuando ingresas una descripción, automáticamente classify el producto y generamos un código HS
- Puedes sobrescribir el código HS generado si es necesario
- Para múltiples artículos, haz clic en Guardar y agregar otro. De lo contrario, haz clic en Guardar
- Opcional — Haz clic en Más opciones para cambiar:
- Tipo de venta a Para reventa
- Modo de entrega a Derechos de entrega no pagados
- Haz clic en Obtener cotización
- Para hacer cambios, haz clic en Editar formulario y modifica cualquier detalle
- Haz clic en Obtener cotización nuevamente para actualizar
Una cotización de landed cost aparecerá a la derecha, incluyendo costos de producto, envío e importación. Expande la cotización para ver desgloses detallados de artículos, envío, derechos, impuestos y tarifas. Todas las cotizaciones se guardan en la página de cotizaciones para referencia futura.
Editar cotizaciones existentes: Haz clic en Cotizar nuevamente en la parte superior derecha para modificar una cotización existente en lugar de comenzar desde cero.
Beneficios de usar el Dashboard
- No se requiere codificación — Genera cotizaciones a través de una interfaz fácil de usar
- Capacitación del equipo — Ayuda a los miembros del equipo no técnicos a entender los componentes de landed cost
- Validación de API — Verifica que tu integración de API produzca resultados esperados
- Soporte al cliente — Genera rápidamente cotizaciones para consultas de clientes
- Procesamiento en bloque — Maneja múltiples cálculos de manera eficiente (próximamente)
Las cotizaciones del Dashboard incluyen los mismos desgloses detallados disponibles a través de la API, lo que lo convierte en un excelente complemento para tu integración automatizada.
Calcule un landed cost
Calcule aranceles, impuestos y tarifas con GraphQL.GraphQL
Zonos calcula el total de landed cost para envíos internacionales, incluidos aranceles, impuestos y cualquier tarifa adicional cobrada por aduanas, agentes o transportistas. En la mayoría de los casos, garantizamos estos cálculos pagando la factura final nosotros mismos y cobrando exactamente lo que calculamos. En algunos casos, puede utilizar nuestro landed cost sin garantía, lo que significa que asume la responsabilidad por cualquier diferencia entre nuestro cálculo y los cargos reales.