DOCS

Bereken landed cost - GraphQL

Bereken een landed cost

Bereken douanerechten, belastingen en vergoedingen met GraphQL.

GraphQL

Zonos berekent de totale landed cost voor internationale zendingen, inclusief douanerechten, belastingen en eventuele extra vergoedingen die door de douane, makelaars of vervoerders in rekening worden gebracht. In de meeste gevallen garanderen we deze berekeningen door de uiteindelijke rekening zelf te betalen en u precies te berekenen wat we hebben berekend. In sommige gevallen kunt u onze landed cost gebruiken zonder garantie, wat betekent dat u verantwoordelijk bent voor eventuele verschillen tussen onze berekening en de werkelijke kosten.

Bereid de aanvraag voor 

Het berekenen van een landed cost API vereist verschillende invoer, die we hebben georganiseerd in workflows. Zodra dit is voltooid, kunt u een enkele aanvraag indienen om een landed cost te retourneren op basis van de verzendbestemming, artikelen in de winkelwagentje en verzenddetails.

Elke workflow heeft zijn eigen vereiste invoer. GraphQL stelt u in staat om meer gegevens door te geven dan nodig is, maar alleen bepaalde velden zijn vereist om een landed cost te retourneren. Deze zijn duidelijk gemarkeerd in onze API-referentie om alle mogelijke velden te zien.

Houd er rekening mee dat sommige velden voorwaardelijk vereist zijn als u wilt dat uw berekening gegarandeerd is.

Hieronder hebben we alle velden uiteengezet die vereist zijn om een gegarandeerde landed cost te berekenen. Zorg ervoor dat deze informatie is opgenomen voordat u uw aanvraag indient.

Vereiste invoer voor gegarandeerde berekeningen

partyCreateWorkflowInput

De partyCreateWorkflowInput identificeert de betrokken partijen en hun locaties. Bekijk het volledige schema in onze GraphQL API referentie. Vereiste velden zijn:

  • location
    • administrativeAreaCode: De staat of provinciecode, in twee letters. Alleen vereist voor CA en BR.
    • countryCode: De tweeletterige ISO-code van het land.
    • line1: De eerste regel van het adres.
    • postalCode: De postcode of ZIP-code van het adres.
  • person
    • email: Het e-mailadres van de persoon.
    • firstName: De voornaam van de persoon.
    • lastName: De achternaam van de persoon.
    • phone: Het telefoonnummer van de persoon.
  • type
    • DESTINATION: De location & person informatie voor de verzendbestemming.
    • ORIGIN: De location informatie voor de verzend oorsprong. De person die aan de verzend oorsprong is gekoppeld, is niet vereist.
itemCreateWorkflowInput

De itemCreateWorkflowInput geeft de artikelen in het winkelwagentje weer. Er zijn veel optionele velden (zie alle mogelijkheden in onze API-referentie), maar de onderstaande velden zijn vereist.

  • amount: De waarde van een enkele eenheid van het product dat wordt verzonden, voordat deze wordt vermenigvuldigd met de hoeveelheid. Let op dat dit verschilt van de postdefinitie van een postitem. Als de quantity van het item 1 is, is dit de totale kosten van het item. Als de quantity van het item >1 is, zal de API het item amount vermenigvuldigen met de quantity van het item om de totale kosten voor het lijnitem te krijgen. Zet de totale prijs van alle eenheden van het item niet in de amount.
  • currencyCode: De valutacode voor het itembedrag.
  • quantity: De hoeveelheid van het item. De API zal het item amount vermenigvuldigen met de quantity van het item om de totale kosten voor het lijnitem te krijgen.
  • countryOfOrigin: Het land waar het item is vervaardigd.
  • Een van de volgende (wat is ingesteld als uw item key preference. Uw item key verbindt informatie die in de Catalogus is opgeslagen met het item in het winkelwagentje en wordt gebruikt tijdens het aanmaken van labels.)
    • productId: De product-ID van het item.
    • sku: De SKU van het item.

De measurements (WEIGHT, LENGTH, WIDTH, HEIGHT) zijn alleen vereist als u uw artikelen wilt cartoniseren bij het verkrijgen van een verzendbeoordeling.

cartonsCreateWorkflowInput

De cartonsCreateWorkflowInput vereist alleen de invoer zelf. Bekijk het volledige schema in onze GraphQL API referentie om alle waarden te zien die kunnen worden doorgegeven. Het is belangrijk om de afmetingen en het gewicht van de doos door te geven als Zonos de verzendkosten berekent.

shipmentRatingCreateWorkflowInput

Dit workflow wordt gebruikt wanneer u al weet welke verzendservice en kosten; als u wilt dat Zonos deze kosten voor de ingeschakelde services berekent, vervang dan deze workflow door de shipmentRatingCalculateWorkflow.

De shipmentRatingCreateWorkflowInput communiceert de verzendkosten. Bekijk het volledige schema in onze GraphQL API referentie. Vereiste velden zijn:

  • amount: De verzendkosten.
  • currencyCode: De valutacode van de verzendkosten.
  • serviceLevelCode: De code die het verzendserviceniveau aangeeft dat is gebruikt in de verzendbeoordeling.
landedCostWorkFlowInput

De landedCostWorkFlowInput bepaalt de voorkeuren voor de landed cost berekening. Bekijk het volledige schema in onze GraphQL API referentie. Vereiste velden zijn:

  • calculationMethod: Geeft uw voorkeur aan voor hoe u van plan bent te verzenden: DDP (vooraf betaalde douanerechten en belastingen) of DAP (of douanerechten en belastingen worden betaald bij levering, of als er een terugbetalingsschema van toepassing is, worden ze betaald via een belasting-ID).
    • Als u onze landed cost garantie gebruikt, moet deze waarde altijd DDP_PREFERRED zijn, wat een DDP-offerte biedt wanneer mogelijk en een DAP-offerte als een DDP-offerte niet is toegestaan. Het gebruik van DAP in plaats daarvan kan ertoe leiden dat de landed costs niet langer gegarandeerd zijn, aangezien dit doorgaans resulteert in douanerechten en belastingen die bij levering worden betaald.
  • endUse: Geeft aan of de goederen worden verkocht aan een ander bedrijf (FOR_RESALE) of voor eindgebruik door een consument (NOT_FOR_RESALE).
  • tariffRate: Geeft de methode aan die Zonos moet gebruiken om de tariefpercentages voor deze offerte te berekenen, in het geval dat er een reeks tariefpercentages van toepassing kan zijn. *Bij het gebruik van onze landed cost garantie, moet dit altijd ZONOS_PREFERRED zijn.

Voeg berekende verzending toe: Als u wilt dat Zonos de verzendkosten voor u berekent, vervang dan de shipmentRatingCreateWorkflow door de shipmentRatingCalculateWorkflow. Voeg de cartonizeWorkflow toe als u wilt dat Zonos uw artikelen in dozen sorteert voordat u de verzendkosten vindt (gebruikt voor dimensiewaarde).

HS-code en verzendopties

GraphQL biedt je de flexibiliteit om de aanvraag naar jouw voorkeur aan te passen. Er zijn een paar opties voor hoe je HS-codes en verzendkosten in de aanvraag opneemt.

HS-codes

HS-codes beïnvloeden de douanerechten en zijn daarom vereist. Je kunt de HS-code voor elk item doorgeven of Classify deze laten genereren.

Geef HS-codes voor elk item door

Zonos raadt ten zeerste aan om productspecifieke HS-codes te gebruiken, omdat dit leidt tot een nauwkeuriger landed cost-offerte. Als je je HS-codes kent, geef dan de hsCode voor elk item door tijdens de itemCreateWorkflow.

Als je een HS-code doorgeeft, zal Zonos deze on-the-fly valideren bij het verkrijgen van een landed cost-offerte. Als de HS-code die je hebt opgegeven ongeldig is (wat betekent dat deze niet bestaat), zal Zonos je item on-the-fly her-classify classificeren en de nieuwe, geldige HS-code gebruiken in plaats van de door jou opgegeven.

Als je hulp nodig hebt bij het genereren van HS-codes voor je producten, leer dan over Zonos Classify en hoe je een classificatie kunt aanvragen.

Genereer HS-codes met Classify

Als je Zonos geen hsCode doorgeeft, zullen we eerst Zonos Catalogus controleren om te zien of je een HS-code voor je item hebt opgeslagen. Als je dat niet hebt, zullen we Classify aanroepen om een classificatie te genereren die je landed cost-berekening aandrijft op basis van de volgende itemCreateWorkflow productdetailvelden: description, category en material. Als je productdetailvelden niet gedetailleerd genoeg zijn om een classificatie te genereren op basis van Classify's confidence scoring, zal de standaard HS-code die aan je winkel is toegewezen, worden gebruikt.

Verzendkosten

Zowel het verzendserviceniveau als de kosten beïnvloeden de douanerechten, belastingen en vergoedingen en zijn daarom vereist. Zonos kan verzendkosten berekenen of je kunt deze aan ons doorgeven.

Bereken verzending

Om Zonos verzendkosten te laten berekenen, gebruik je de shipmentRatingCalculateWorkflow. De verzendopties die in de berekende verzendrespons worden geretourneerd, zullen overeenkomen met de serviceLevels die je hebt toegewezen aan verzendprofielen in Dashboard.

Probleemoplossing: Als je een serviceLevel in de respons verwacht maar deze niet verschijnt, zorg er dan voor dat het serviceLevel is ingeschakeld en wordt ondersteund door de method die je hebt geselecteerd.

Voeg de cartonizeWorkflow (die geen invoer heeft) toe als je wilt dat Zonos je items sorteert in kartons voordat de verzendkosten worden berekend (gebruikt voor dimensiewaarde.

Geef verzendkosten door

Als je het serviceLevel en het amount voor een zending kent, kun je deze doorgeven in het shipmentRatingCreateWorkflow-gedeelte van de aanvraag. We zullen deze waarden gebruiken om eventuele bijbehorende vervoerskosten te berekenen en deze in de respons terug te geven.

Vraag een landed cost aan via API 

Zodra je de vereiste invoergegevens hebt, stuur je de GraphQL-mutatie naar het API-eindpunt met behulp van je gekozen clientbibliotheek of -tool. Hier zijn enkele voorbeelden van hoe je de mutatie kunt structureren.

Gebruik deze aanvraag wanneer je Zonos de verzendkosten laat berekenen als onderdeel van de Landed Cost-aanvraag. We zullen dan douanerechten en belastingen op verzending berekenen als deze door het bestemmingsland worden beoordeeld.

Mutatie

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

Variabelen

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

Antwoord

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

Volgende stap: Maak een bestelling

Nadat u een landed cost hebt berekend en de landedCostId uit de API-respons hebt ontvangen, moet u een bestelling maken om de transactie in het Zonos systeem af te ronden. Gebruik de orderCreate mutatie en geef de landedCostId van uw offerte door. Leer meer over het aanmaken van bestellingen.


Vraag een landed cost aan in Dashboard 

U kunt ook landed costs rechtstreeks in Zonos Dashboard berekenen zonder de API te gebruiken. Dit is handig voor het testen van berekeningen, het trainen van uw team of het snel verkrijgen van offertes voor klantvragen.

Dashboard gebruikt dezelfde API-eindpunten als hierboven beschreven, dus de resultaten zullen overeenkomen met wat u zou krijgen van directe API-oproepen. Dit maakt het een uitstekende manier om uw API-integratie te valideren of te verkennen hoe verschillende invoer de berekeningen beïnvloedt.

Gebruik van de Dashboard calculator

Met de landed cost calculator in Dashboard kunt u offertes krijgen met berekende verzendtarieven, offertes maken met bekende verzendkosten of meerdere offertes in bulk verwerken.

Gebruik deze stroom wanneer u het verzendniveau en de kosten voor uw zending kent.

  1. Ga naar DashboardOrdersOffertes
  2. Klik op Nieuwe offerte
  3. Optioneel — Wijzig de locatie van uw verzendadres
  4. Selecteer een Bestemmingsland uit de dropdown
  5. Voer het verzendbedrag in
    • Het serviceniveau is optioneel; door het toe te voegen kunnen we toepasselijke vervoerderskosten berekenen
  6. Voeg de artikelgegevens voor de zending toe
    • Wanneer u een beschrijving invoert, classificeren we automatisch het product en genereren een HS-code
    • U kunt de gegenereerde HS-code indien nodig overschrijven
    • Voor meerdere artikelen, klik op Opslaan en voeg een ander toe. Anders, klik op Opslaan
  7. Optioneel — Klik op Meer opties om te wijzigen:
    • Verkoop type naar Voor wederverkoop
    • Leveringsmodus naar Levering rechten onbetaald
  8. Klik op Offerte krijgen
    • Om wijzigingen aan te brengen, klik op Formulier bewerken en wijzig eventuele details
    • Klik opnieuw op Offerte krijgen om bij te werken

Een landed cost offerte verschijnt rechts, inclusief product-, verzend- en importkosten. Breid de offerte uit om gedetailleerde uitsplitsingen van artikelen, verzending, rechten, belastingen en kosten te zien. Alle offertes worden opgeslagen op de offertepagina voor toekomstige referentie.

Bestaande offertes bewerken: Klik rechtsboven op Opnieuw offreren om een bestaande offerte te wijzigen in plaats van opnieuw te beginnen.

Voordelen van het gebruik van Dashboard

  • Geen codering vereist — Genereer offertes via een gebruiksvriendelijke interface
  • Teamtraining — Help niet-technische teamleden de componenten van landed cost te begrijpen
  • API-validatie — Verifieer of uw API-integratie de verwachte resultaten oplevert
  • Klantenservice — Genereer snel offertes voor klantvragen
  • Bulkverwerking — Beheer meerdere berekeningen efficiënt (binnenkort beschikbaar)

Dashboard offertes bevatten dezelfde gedetailleerde uitsplitsingen die beschikbaar zijn via de API, waardoor het een uitstekende aanvulling is op uw geautomatiseerde integratie.

Was deze pagina nuttig?