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 internationales, y compris les droits, taxes et tous les frais supplémentaires facturés par les douanes, les courtiers ou les transporteurs. Dans la plupart des cas, nous garantissons ces calculs en payant la facture finale nous-mêmes et en vous facturant exactement ce que nous avons calculé. Dans certains cas, vous pouvez utiliser notre landed cost sans garantie, ce qui signifie que vous assumez la responsabilité de toute différence entre notre calcul et les frais réels.

Préparez la demande 

Le calcul d'un landed cost via l'API nécessite plusieurs entrées, que nous avons organisées en flux de travail. Une fois complété, vous pourrez faire une seule demande pour retourner un landed cost basé sur la destination d'expédition, les articles dans le panier et les détails d'expédition.

Chaque flux de travail a ses propres entrées requises. GraphQL vous permet de passer plus de données que nécessaire, mais seuls certains champs sont requis pour retourner un landed cost. Ceux-ci sont clairement marqués dans notre référence API pour voir tous les champs possibles.

Notez que certains champs sont conditionnellement requis si vous souhaitez que votre calcul soit garanti.

Ci-dessous, nous avons décrit tous les champs requis pour calculer un landed cost garanti. Assurez-vous que ces informations sont incluses avant de faire votre demande.

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 référence. Les champs requis sont :

  • location
    • administrativeAreaCode: Le code de l'état ou de la province, en deux lettres. Requis uniquement 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: La valeur d'une unité unique du produit expédié, avant d'être multipliée par la quantité. Notez que cela diffère de la définition postale d'un article postal. Si la quantity de l'article est 1, c'est le coût total de l'article. Si la quantity de l'article est >1, l'API multipliera le amount de l'article par la quantity de l'article pour obtenir le total pour l'article. Ne mettez pas le prix total de toutes les unités de l'article dans le amount.
  • currencyCode: Le code de la devise pour le montant de l'article.
  • quantity: La quantité de l'article. L'API multipliera le amount de l'article par la quantity de l'article pour obtenir le total pour l'article.
  • countryOfOrigin: Le pays où l'article a été fabriqué.
  • L'un des éléments suivants (quel que soit celui 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 du 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 référence 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 référence. 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 référence. 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 des coûts de livraison non 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 une utilisation finale par 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).

Code SH et options d'expédition

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 coûts 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 d'alimenter 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é.

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 coûts 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 en 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.

Demander un landed cost via API 

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

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

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
{
  "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": []
}

Prochaine étape : Créer une commande

Après avoir calculé un landed cost et reçu le landedCostId de la réponse API, vous devez créer une commande pour finaliser la transaction dans le système Zonos. Utilisez la mutation orderCreate et passez le landedCostId de votre devis. En savoir plus sur la création de commandes.


Demander un landed cost dans le Dashboard 

Vous pouvez également calculer les coûts de livraison directement dans le Zonos Dashboard sans utiliser l'API. Cela est utile pour tester des calculs, former votre équipe ou obtenir des devis rapides pour les demandes des clients.

Le Dashboard utilise les mêmes points de terminaison API décrits ci-dessus, donc les résultats correspondront à ceux que vous obtiendriez à partir d'appels API directs. Cela en fait un excellent moyen de valider votre intégration API ou d'explorer comment différentes entrées affectent les calculs.

Utilisation de la calculatrice du Dashboard

Avec la calculatrice de landed cost dans le Dashboard, vous pouvez obtenir des devis avec des tarifs d'expédition calculés, créer des devis avec des coûts d'expédition connus, ou traiter plusieurs devis en masse.

Utilisez ce flux lorsque vous connaissez le niveau de service d'expédition et le coût pour votre envoi.

  1. Allez à DashboardOrdersQuotes
  2. Cliquez sur Nouveau devis
  3. Optionnel — Modifiez l'emplacement de votre adresse d'expédition
  4. Sélectionnez un Pays de destination dans le menu déroulant
  5. Entrez le montant d'expédition
    • Le niveau de service est optionnel ; l'ajouter nous permet de calculer les frais de transporteurs applicables
  6. Ajoutez les détails de l'article pour l'envoi
    • Lorsque vous entrez une description, nous classify automatiquement le produit et générons un code SH
    • Vous pouvez remplacer le code SH généré si nécessaire
    • Pour plusieurs articles, cliquez sur Enregistrer et ajouter un autre. Sinon, cliquez sur Enregistrer
  7. Optionnel — Cliquez sur Plus d'options pour changer :
    • Type de vente en Pour revente
    • Mode de livraison en Frais de livraison non payés
  8. Cliquez sur Obtenir un devis
    • Pour apporter des modifications, cliquez sur Modifier le formulaire et modifiez les détails
    • Cliquez à nouveau sur Obtenir un devis pour mettre à jour

Un devis de landed cost apparaîtra à droite, y compris les coûts de produit, d'expédition et d'importation. Développez le devis pour voir les détails des articles, des frais d'expédition, des droits, des taxes et des frais. Tous les devis sont enregistrés sur la page des devis pour référence future.

Modifier les devis existants : Cliquez sur Devis à nouveau en haut à droite pour modifier un devis existant plutôt que de repartir de zéro.

Avantages de l'utilisation du Dashboard

  • Aucun codage requis — Générez des devis via une interface conviviale
  • Formation de l'équipe — Aidez les membres de l'équipe non techniques à comprendre les composants de landed cost
  • Validation de l'API — Vérifiez que votre intégration API produit les résultats attendus
  • Support client — Générez rapidement des devis pour les demandes des clients
  • Traitement en masse — Gérez plusieurs calculs efficacement (bientôt disponible)

Les devis du Dashboard incluent les mêmes détails disponibles via l'API, ce qui en fait un excellent complément à votre intégration automatisée.

Cette page a-t-elle été utile?