DOCS

Beräkna landed cost - GraphQL

Beräkna en landed cost

Beräkna avgifter, skatter och avgifter med GraphQL.

GraphQL

Zonos beräknar den totala landed cost för internationella försändelser—inklusive avgifter, skatter och eventuella ytterligare avgifter som tas ut av tull, mäklare eller transportörer. I de flesta fall garanterar vi dessa beräkningar genom att betala den slutliga räkningen själva och ta ut exakt det vi beräknade. I vissa fall kan du använda vår landed cost utan garanti, vilket innebär att du tar ansvar för eventuell skillnad mellan vår beräkning och de faktiska avgifterna.

Förbered förfrågan 

Att beräkna en landed cost API kräver flera indata, som vi har organiserat i arbetsflöden. När du är klar kan du göra en enda förfrågan för att returnera en landed cost baserat på leveransdestination, artiklar i kundvagnen och fraktinformation.

Varje arbetsflöde har sina egna nödvändiga indata. GraphQL tillåter dig att skicka mer data än nödvändigt, men endast vissa fält är obligatoriska för att returnera en landed cost. Dessa är tydligt markerade i vår API-referens för att se alla möjliga fält.

Observera att vissa fält är villkorligt obligatoriska om du vill att din beräkning ska vara garanterad.

Nedan har vi sammanställt alla fält som krävs för att beräkna en garanterad landed cost. Se till att denna information ingår innan du gör din förfrågan.

Obligatoriska indata för garanterade beräkningar

partyCreateWorkflowInput

partyCreateWorkflowInput identifierar de involverade parterna och deras platser. Se hela schemat i vår GraphQL API referens. Obligatoriska fält är:

  • location
    • administrativeAreaCode: Koden för delstat eller provins, i två bokstäver. Endast obligatorisk för CA och BR.
    • countryCode: Den två bokstäver ISO-koden för landet.
    • line1: Den första raden av adressen.
    • postalCode: Postnumret eller postkoden för adressen.
  • person
    • email: E-postadressen till personen.
    • firstName: Förnamnet på personen.
    • lastName: Efternamnet på personen.
    • phone: Telefonnummer till personen.
  • type
    • DESTINATION: Informationen om location & person för leveransdestinationen.
    • ORIGIN: Informationen om location för avsändningsursprunget. person kopplad till avsändningsursprunget är inte obligatorisk.
itemCreateWorkflowInput

itemCreateWorkflowInput listar artiklarna i kundvagnen. Det finns många valfria fält (se alla möjligheter i vår API-referens), men fälten nedan är obligatoriska.

  • amount: Värdet av en enhet av produkten som skickas, innan den multipliceras med kvantitet. Observera att detta skiljer sig från den postala definitionen av en post. Om artikelns quantity är 1, är detta den totala kostnaden för artikeln. Om artikelns quantity är >1, kommer API:et att multiplicera artikelns amount med artikelns quantity för att få den totala kostnaden för linjeartikeln. Sätt inte det totala priset för alla enheter av artikeln i amount.
  • currencyCode: Valutakoden för artikelns belopp.
  • quantity: Antalet av artikeln. API:et kommer att multiplicera artikelns amount med artikelns quantity för att få den totala kostnaden för linjeartikeln.
  • countryOfOrigin: Landet där artikeln tillverkades.
  • Ett av följande (vilket som helst som ställts in som din artikelnyckelpreferens. Din artikelnyckel kopplar information som lagras i Katalog till artikeln i kundvagnen och används vid etikett skapande.)
    • productId: Artikelns produkt-ID.
    • sku: Artikelns SKU.

measurements (WEIGHT, LENGTH, WIDTH, HEIGHT) är endast obligatoriska om du vill kartongisera dina artiklar när du får en fraktbedömning.

cartonsCreateWorkflowInput

cartonsCreateWorkflowInput kräver endast själva indata. Se hela schemat i vår GraphQL API referens för att se alla värden som kan skickas. Det är viktigt att ange dimensionerna och vikten av kartongen om Zonos beräknar fraktkostnaden.

shipmentRatingCreateWorkflowInput

Detta arbetsflöde används när du redan känner till fraktjänsten och kostnaden; om du vill att Zonos ska beräkna dessa kostnader för tjänster du har aktiverat, byt ut detta arbetsflöde och använd istället shipmentRatingCalculateWorkflow.

shipmentRatingCreateWorkflowInput kommunicerar fraktkostnaden. Se hela schemat i vår GraphQL API referens. Obligatoriska fält är:

  • amount: Fraktkostnaden.
  • currencyCode: Valutakoden för fraktkostnaden.
  • serviceLevelCode: Koden som anger fraktjänstens servicenivå som används i fraktbedömningen.
landedCostWorkFlowInput

landedCostWorkFlowInput dikterar preferenser för landed cost beräkningen. Se hela schemat i vår GraphQL API referens. Obligatoriska fält är:

  • calculationMethod: Anger din preferens för hur du planerar att skicka: DDP (förbetalda avgifter och skatter) eller DAP (antingen avgifter och skatter betalas vid leverans, eller om ett remitteringssystem gäller, betalas de via ett skatte-ID).
    • Om du använder vår landed cost garanti, bör detta värde alltid vara DDP_PREFERRED, vilket ger en DDP-offert när det är möjligt och en DAP-offert om en DDP inte är tillåten. Att använda DAP istället kan resultera i att landed costs inte längre garanteras, eftersom detta vanligtvis resulterar i avgifter och skatter som betalas vid leverans.
  • endUse: Anger om varorna säljs till ett annat företag (FOR_RESALE) eller för slutbruk med en konsument (NOT_FOR_RESALE).
  • tariffRate: Anger metoden som Zonos bör använda för att beräkna tullsatserna för denna offert, om det finns ett intervall av tullsatser som kan tillämpas. *När du använder vår landed cost garanti, bör detta alltid vara ZONOS_PREFERRED.

Lägg till beräknad frakt: Om du vill att Zonos ska beräkna fraktkostnaden för dig, ersätt shipmentRatingCreateWorkflow med shipmentRatingCalculateWorkflow. Lägg till cartonizeWorkflow om du vill att Zonos ska sortera dina artiklar i kartonger innan du hittar fraktkostnaden (används för dimensionell vikt).

HS-kod och fraktalternativ

GraphQL ger dig flexibiliteten att anpassa begäran efter dina önskemål. Det finns ett par alternativ för hur du inkluderar HS-koder och fraktkostnader i begäran.

HS-koder

HS-koder påverkar tullsatser och är därför nödvändiga. Du kan ange HS-koden för varje artikel eller låta Classify generera dem.

Ange HS-koder för varje artikel

Zonos rekommenderar starkt att använda produkt-specifika HS-koder eftersom det leder till en mer exakt landed cost offert. Om du känner till dina HS-koder, ange hsCode för varje item under itemCreateWorkflow.

Om du anger en HS-kod, kommer Zonos att validera den i realtid när du får en landed cost offert. Om HS-koden du angav är ogiltig (vilket betyder att den inte existerar), kommer Zonos att re-classify din artikel i realtid och använda den nya, giltiga HS-koden istället för den du angav.

Om du behöver hjälp med att generera HS-koder för dina produkter, lär dig om Zonos Classify och hur du begär en klassificering.

Generera HS-koder med Classify

Om du inte anger Zonos en hsCode, kommer vi först att kontrollera Zonos Katalog för att se om du har en HS-kod lagrad för din artikel. Om du inte har det, kommer vi att kalla Classify för att generera en klassificering som driver din landed cost beräkning baserat på följande itemCreateWorkflow produktdetaljfält: description, category, och material. Om dina produktdetaljfält inte är tillräckligt detaljerade för att generera en klassificering baserat på Classify's confidence scoring, kommer den standard HS-kod som tilldelats din butik att användas.

Fraktkostnad

Både fraktservicenivån och dess kostnad påverkar tullar, skatter och avgifter och är därför nödvändiga. Zonos kan beräkna frakt eller så kan du ange detta till oss.

Beräkna frakt

För att låta Zonos beräkna fraktkostnader, använd shipmentRatingCalculateWorkflow. Fraktalternativen som returneras i det beräknade fraktsvaret kommer att korrelera med de serviceLevels du har tilldelat fraktprofiler i Dashboard.

Felsökning: Om du förväntar dig en serviceLevel i svaret men den inte visas, vänligen säkerställ att serviceLevel är aktiverad och stöds av den method du valt.

Lägg till cartonizeWorkflow (som inte har några indata) om du vill att Zonos ska sortera dina artiklar i kartonger innan fraktkostnaden beräknas (används för dimensional weight.

Ange fraktkostnader

Om du känner till serviceLevel och amount för en försändelse, kan du ange dessa i shipmentRatingCreateWorkflow delen av begäran. Vi kommer att använda dessa värden för att beräkna eventuella associerade fraktavgifter och returnera dessa i svaret.

Begär en landed cost via API 

När du har den nödvändiga indata, skicka GraphQL-mutation till API-slutpunkten med hjälp av ditt valda klientbibliotek eller verktyg. Här är några exempel på hur du kan strukturera mutation.

Använd denna begäran när du låter Zonos beräkna fraktkostnaden som en del av Landed Cost begäran. Vi kommer då att beräkna tullar och skatter på frakt om de bedöms av destinationslandet.

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

Variabler

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

Svar

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

Nästa steg: Skapa en beställning

Efter att du har beräknat en landed cost och fått landedCostId från API-svaret, bör du skapa en beställning för att slutföra transaktionen i Zonos-systemet. Använd mutationerna orderCreate och skicka in landedCostId från din offert. Lär dig mer om att skapa beställningar.


Begär en landed cost i Dashboard 

Du kan också beräkna landed costs direkt i Zonos Dashboard utan att använda API:et. Detta är användbart för att testa beräkningar, träna ditt team eller få snabba offerter för kundförfrågningar.

Dashboard använder samma API-slutpunkter som beskrivs ovan, så resultaten kommer att matcha vad du skulle få från direkta API-anrop. Detta gör det till ett utmärkt sätt att validera din API-integration eller utforska hur olika indata påverkar beräkningarna.

Använda Dashboard-kalkylatorn

Med landed cost-kalkylatorn i Dashboard kan du få offerter med beräknade fraktkostnader, skapa offerter med kända fraktkostnader eller bearbeta flera offerter i bulk.

Använd detta flöde när du känner till frakttjänstnivån och kostnaden för din försändelse.

  1. Gå till DashboardOrdersQuotes
  2. Klicka på Ny offert
  3. Valfritt — Ändra platsen för din avsändaradress
  4. Välj ett Destination land från rullgardinsmenyn
  5. Ange fraktbeloppet
    • Tjänstnivån är valfri; att lägga till den gör att vi kan beräkna tillämpliga fraktavgifter
  6. Lägg till artikeluppgifterna för försändelsen
    • När du anger en beskrivning klassificerar vi automatiskt classify produkten och genererar en HS-kod
    • Du kan skriva över den genererade HS-koden om det behövs
    • För flera artiklar, klicka på Spara och lägg till en annan. Annars, klicka på Spara
  7. Valfritt — Klicka på Fler alternativ för att ändra:
    • Försäljningstyp till För vidareförsäljning
    • Leveransläge till Leveransavgifter obetalda
  8. Klicka på Få offert
    • För att göra ändringar, klicka på Redigera formulär och ändra eventuella detaljer
    • Klicka på Få offert igen för att uppdatera

En landed cost-offert kommer att visas till höger, inklusive produkt-, frakt- och importkostnader. Expandera offerten för att se detaljerade uppdelningar av artiklar, frakt, tullar, skatter och avgifter. Alla offerter sparas på offertsidan för framtida referens.

Redigera befintliga offerter: Klicka på Offert igen i det övre högra hörnet för att ändra en befintlig offert istället för att börja om från början.

Fördelar med att använda Dashboard

  • Ingen kodning krävs — Generera offerter genom ett användarvänligt gränssnitt
  • Teamträning — Hjälp icke-tekniska teammedlemmar att förstå landed cost-komponenter
  • API-validering — Verifiera att din API-integration ger förväntade resultat
  • Kundsupport — Snabbt generera offerter för kundförfrågningar
  • Bulkbehandling — Hantera flera beräkningar effektivt (kommer snart)

Dashboard-offerter inkluderar samma detaljerade uppdelningar som finns tillgängliga via API:et, vilket gör det till ett utmärkt komplement till din automatiserade integration.

Var den här sidan till hjälp?