DOCS

Calculate landed cost graphql

/

Calculez un landed cost

Calculez les droits, taxes et frais avec GraphQL.

GraphQL

Zonos calcule le total du landed cost pour les expéditions, ce qui inclut les droits, taxes et tous les frais supplémentaires que les douanes, courtiers ou transporteurs peuvent facturer. Nous garantissons souvent ces calculs en payant nous-mêmes la facture de droits, taxes et frais tout en vous facturant exactement ce que nous calculons. Dans de rares cas, nos calculs peuvent être utilisés sans notre garantie, où vous assumez toute différence entre notre calcul et la facture de droits et taxes.

Préparez l'entrée de mutation 

Calculer un landed cost via l'API GraphQL implique plusieurs étapes ; nous avons organisé ces étapes en flux de travail. À la fin, vous aurez tout ce dont vous avez besoin pour effectuer un appel afin d'obtenir un landed cost basé sur la destination d'expédition, les articles dans le panier et l'expédition.

Chaque flux de travail nécessite des données d'entrée spécifiques. GraphQL vous permet d'inclure plus d'informations que nécessaire ; veuillez vous référer à notre référence API complète pour voir tous les champs possibles. Les champs requis sont marqués comme tels dans notre référence API, mais cette marque ne s'applique qu'aux champs qui sont requis pour la fonctionnalité. Quelques champs supplémentaires sont requis lors de l'utilisation de notre garantie.

Ci-dessous, nous avons listé tous les champs requis pour calculer un garanti landed cost. Assurez-vous d'avoir ces informations prêtes.

Entrées requises pour les calculs garantis

partyCreateWorkflowInput

Le partyCreateWorkflowInput identifie les parties impliquées et leurs emplacements. Consultez le schéma complet dans notre référence API GraphQL. Les champs requis sont :

  • location
    • administrativeAreaCode: Le code de l'état ou de la province, en deux lettres. Uniquement requis pour CA et BR.
    • countryCode: Le code ISO à deux lettres du pays.
    • line1: La première ligne de l'adresse.
    • postalCode: Le code postal ou le code ZIP de l'adresse.
  • person
    • email: L'adresse e-mail de la personne.
    • firstName: Le prénom de la personne.
    • lastName: Le nom de famille de la personne.
    • phone: Le numéro de téléphone de la personne.
  • type
    • DESTINATION: Les informations location & person pour la destination d'expédition.
    • ORIGIN: Les informations location pour l'origine d'expédition. La person associée à l'origine d'expédition n'est pas requise.
itemCreateWorkflowInput

Le itemCreateWorkflowInput liste les articles dans le panier. Il existe de nombreux champs optionnels (voir toutes les possibilités dans notre référence API), mais les champs ci-dessous sont requis.

  • amount: Le prix de l'article.
  • currencyCode: Le code de la devise pour le montant de l'article.
  • quantity: La quantité de l'article.
  • L'un des éléments suivants (selon ce qui est défini comme votre préférence de clé d'article. Votre clé d'article connecte les informations stockées dans le Catalogue à l'article dans le panier et est utilisée lors de la création de l'étiquette.)
    • productId: L'ID produit de l'article.
    • sku: Le SKU de l'article.

Les measurements (WEIGHT, LENGTH, WIDTH, HEIGHT) ne sont requis que si vous souhaitez cartoniser vos articles lors de l'obtention d'une évaluation d'expédition.

shipmentRatingCreateWorkflowInput

Ce flux de travail est utilisé lorsque vous connaissez déjà le service d'expédition et le coût ; si vous souhaitez que Zonos calcule ces coûts pour les services que vous avez activés, remplacez ce flux de travail par le shipmentRatingCalculateWorkflow à la place.

Le shipmentRatingCreateWorkflowInput communique le coût d'expédition. Consultez le schéma complet dans notre référence API GraphQL. Les champs requis sont :

  • amount: Le coût d'expédition.
  • currencyCode: Le code de la devise du coût d'expédition.
  • serviceLevelCode: Le code indiquant le niveau de service d'expédition utilisé dans l'évaluation d'expédition.
landedCostWorkflowInput

Le landedCostWorkflowInput dicte les préférences pour le calcul du landed cost. Consultez le schéma complet dans notre référence API GraphQL. Les champs requis sont :

  • calculationMethod: Indique votre préférence pour la manière dont vous prévoyez d'expédier : DDP (droits et taxes prépayés) ou DAP (soit les droits et taxes sont payés à la livraison, soit s'il existe un régime de remise, ils sont remis via un identifiant fiscal).
    • Si vous utilisez notre garantie de landed cost, cette valeur doit toujours être DDP_PREFERRED, ce qui fournira un devis DDP lorsque cela est possible et un devis DAP si un DDP n'est pas autorisé. Utiliser DAP à la place peut entraîner des coûts de livraison qui ne sont plus garantis, car cela entraîne généralement des droits et taxes payés à la livraison.
  • endUse: Indique si les biens sont vendus à une autre entreprise (FOR_RESALE) ou pour un usage final avec un consommateur (NOT_FOR_RESALE).
  • tariffRate: Indique la méthode que Zonos doit utiliser pour calculer les taux tarifaires pour ce devis, dans le cas où il existe une gamme de taux tarifaires qui pourraient être appliqués. *Lors de l'utilisation de notre garantie de landed cost, cela doit toujours être ZONOS_PREFERRED.

Ajouter l'expédition calculée : Si vous souhaitez que Zonos calcule le coût d'expédition pour vous, remplacez le shipmentRatingCreateWorkflow par le shipmentRatingCalculateWorkflow. Ajoutez le cartonizeWorkflow si vous souhaitez que Zonos trie vos articles en cartons avant de trouver le coût d'expédition (utilisé pour le poids dimensionnel).

Options lors du calcul d'un landed cost

GraphQL vous donne la flexibilité de personnaliser la requête selon vos préférences. Il existe quelques options pour inclure les codes HS et les coûts d'expédition dans la requête.

Codes HS

Les codes HS ont un impact sur les taux de droits et sont donc nécessaires. Vous pouvez passer le code HS pour chaque article ou laisser Classify les générer.

Passer les codes HS pour chaque article

Zonos recommande vivement d'utiliser des codes HS spécifiques aux produits car cela conduit à un devis de landed cost plus précis. Si vous connaissez vos codes HS, passez le hsCode pour chaque article lors du itemCreateWorkflow.

Si vous passez un code HS, Zonos le validera en temps réel lors de l'obtention d'un devis de landed cost. Si le code HS que vous avez fourni est invalide (ce qui signifie qu'il n'existe pas), Zonos va re-classify votre article en temps réel et utiliser le nouveau code HS valide à la place de celui que vous avez fourni.

Si vous avez besoin d'aide pour générer des codes HS pour vos produits, découvrez Zonos Classify et comment demander une classification.

Générer des codes HS avec Classify

Si vous ne passez pas à Zonos un hsCode, nous vérifierons d'abord dans Zonos Catalogue pour voir si vous avez un code HS stocké pour votre article. Si ce n'est pas le cas, nous appellerons Classify pour générer une classification pour alimenter votre calcul de landed cost en fonction des champs de détails du produit suivants de itemCreateWorkflow : description, catégorie et matériau. Si les champs de détails de votre produit ne sont pas assez détaillés pour générer une classification basée sur le score de confiance de Classify's, le code HS par défaut attribué à votre magasin sera utilisé.

Par défaut, si vous ne fournissez pas de hsCode et que nous appelons Classify, le hsCode généré par Classify ne sera pas renvoyé dans la réponse car il ne sera utilisé qu'en interne pour générer votre landed cost. Cependant, si vous avez un abonnement à Classify, nous renverrons le code HS de Classify's dans votre réponse de landed cost.

Coût d'expédition

Le niveau de service d'expédition et son coût ont un impact sur les droits, taxes et frais et sont donc nécessaires. Zonos peut calculer les frais d'expédition ou vous pouvez nous les transmettre.

Calculer les frais d'expédition

Pour que Zonos calcule les frais d'expédition, utilisez le shipmentRatingCalculateWorkflow. Les options d'expédition renvoyées dans la réponse d'expédition calculée seront en corrélation avec les niveaux de service que vous avez attribués aux profils d'expédition dans Dashboard.

Dépannage : Si vous attendez un niveau de service dans la réponse mais qu'il n'apparaît pas, veuillez vous assurer que le niveau de service est activé et est pris en charge par la méthode que vous avez sélectionnée.

Ajoutez le cartonizeWorkflow (qui n'a pas d'entrées) si vous souhaitez que Zonos trie vos articles dans des cartons avant de trouver le coût d'expédition (utilisé pour le poids dimensionnel.

Transmettre les coûts d'expédition

Si vous connaissez le niveau de service et le montant pour un envoi, vous pouvez les transmettre dans la partie shipmentRatingCreateWorkflow de la requête. Nous utiliserons ces valeurs pour calculer les éventuels frais de transport associés et les renvoyer dans la réponse.

Envoyer la mutation 

Une fois que vous avez les données d'entrée requises, envoyez la mutation GraphQL à l'endpoint API en utilisant votre bibliothèque client ou outil choisi. Voici quelques exemples de comment vous pouvez structurer la mutation.

Expédition calculée
Expédition manuelle

Mutation

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
    }
  }
}

Réponse

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"
          }
        ]
      }
    ]
  }
}

Cette page était-elle utile?


Des questions ?

Contactez-nous.