DOCS

Calculate landed cost graphql

/

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.

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 de location y person para el destino de envío.
    • ORIGIN: La información de location para el origen del envío. La person 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. Usar DAP 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.
  • 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 siempre ZONOS_PREFERRED.

Agregar envío calculado: Si desea que Zonos calcule el costo de envío por usted, reemplace el shipmentRatingCreateWorkflow con el shipmentRatingCalculateWorkflow. Agregue el cartonizeWorkflow 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.

Pasar códigos HS para cada artículo

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.

Generar códigos HS con Classify

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.

Calcular el envío

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 el serviceLevel esté habilitado y sea compatible con el method 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.

Pasar costos de envío

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.

Envío calculado
Envío manual

Mutación

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
{
  "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"
          }
        ]
      }
    ]
  }
}

¿Fue útil esta página?