DOCS

Calculez le 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, les courtiers ou les 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 nécessaires au fonctionnement. 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 des 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.

cartonsCreateWorkflowInput

Le cartonsCreateWorkflowInput nécessite uniquement l'entrée elle-même. Consultez le schéma complet dans notre référence API GraphQL pour voir toutes les valeurs qui peuvent être passées. Il est important de passer les dimensions et le poids du carton si Zonos calcule le coût 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, si un régime de remise s'applique, ils sont remboursés 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 devis DDP n'est pas autorisé. Utiliser DAP à la place peut entraîner une non-garantie des coûts de livraison, 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 offre la flexibilité de personnaliser la demande selon vos préférences. Il existe plusieurs options pour inclure les codes SH et les frais d'expédition dans la demande.

Codes SH

Les codes SH impactent les taux de droits et sont donc requis. Vous pouvez passer le code SH pour chaque article ou laisser Classify les générer.

Passer les codes SH pour chaque article

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

Si vous passez un code SH, Zonos le validera en temps réel lors de l'obtention d'un devis landed cost. Si le code SH que vous avez fourni est invalide (c'est-à-dire qu'il n'existe pas), Zonos re-classify votre article en temps réel et utilisera le nouveau code SH valide au lieu de celui que vous avez fourni.

Si vous avez besoin d'aide pour générer des codes SH pour vos produits, apprenez-en plus sur Zonos Classify et comment demander une classification.

Générer des codes SH avec Classify

Si vous ne passez pas Zonos un hsCode, nous vérifierons d'abord Zonos Catalog pour voir si vous avez un code SH enregistré pour votre article. Si ce n'est pas le cas, nous appellerons Classify pour générer une classification afin de soutenir votre calcul landed cost basé sur les champs de détails de produit suivants dans le itemCreateWorkflow : description, category, et material. Si vos champs de détails de produit ne sont pas suffisamment détaillés pour générer une classification basée sur le score de confiance de Classify's, le code SH 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 retourné 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 retournerons le code SH de Classify's dans votre réponse landed cost.

Coût d'expédition

Le niveau de service d'expédition et son coût impactent les droits, taxes et frais et sont donc requis. Zonos peut calculer les frais d'expédition ou vous pouvez nous les transmettre.

Calculer l'expédition

Pour que Zonos calcule les frais d'expédition, utilisez le shipmentRatingCalculateWorkflow. Les options d'expédition retournées dans la réponse d'expédition calculée correspondront aux serviceLevels que vous avez assignés aux profils d'expédition dans Dashboard.

Dépannage : Si vous vous attendez à un serviceLevel dans la réponse mais qu'il n'apparaît pas, veuillez vous assurer que le serviceLevel est activé et est pris en charge par la method 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.

Passer les coûts d'expédition

Si vous connaissez le serviceLevel et le amount pour un envoi, vous pouvez les passer dans la portion shipmentRatingCreateWorkflow de la demande. Nous utiliserons ces valeurs pour calculer les frais de transporteur associés et les retourner 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 ou outil client choisi. Voici quelques exemples de la façon dont vous pouvez structurer la mutation.

Utilisez cette demande lorsque vous demandez à Zonos de calculer le coût d'expédition dans le cadre de la demande Landed Cost. Nous calculerons ensuite les droits et taxes sur l'expédition s'ils sont évalués par le pays de destination.

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?