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 informationslocation
&person
pour la destination d'expédition.ORIGIN
: Les informationslocation
pour l'origine d'expédition. Laperson
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 laquantity
de l'article est 1, c'est le coût total de l'article. Si laquantity
de l'article est >1, l'API multipliera leamount
de l'article par laquantity
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 leamount
.currencyCode
: Le code de la devise pour le montant de l'article.quantity
: La quantité de l'article. L'API multipliera leamount
de l'article par laquantity
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é. UtiliserDAP
à 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.
- Si vous utilisez notre garantie de landed cost, cette valeur doit toujours être
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 êtreZONOS_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 leshipmentRatingCalculateWorkflow
. Ajoutez lecartonizeWorkflow
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.
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.
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.
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 leserviceLevel
est activé et est pris en charge par lamethod
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.
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
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"
}
}
Réponse
{
"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.
- Allez à Dashboard → Orders → Quotes
- Cliquez sur Nouveau devis
- Optionnel — Modifiez l'emplacement de votre adresse d'expédition
- Sélectionnez un Pays de destination dans le menu déroulant
- Entrez le montant d'expédition
- Le niveau de service est optionnel ; l'ajouter nous permet de calculer les frais de transporteurs applicables
- 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
- Optionnel — Cliquez sur Plus d'options pour changer :
- Type de vente en Pour revente
- Mode de livraison en Frais de livraison non payés
- 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.
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.