DOCS

Opprett en enkelt forsendelse

CreateDeclarationShipment GraphQL-arbeidsflyten tar en Japan Post-forsendelse fra rå inndata til en utskrivbar etikett i én rundtur.

CreateDeclarationShipment kjeder sammen seks *Workflow-mutasjoner i én enkelt GraphQL-forespørsel. Hvert trinn bygger på dataene fra de foregående trinnene, og alle sendes inn sammen, slik at en komplett forsendelse kan opprettes i én rundtur:

partyCreateWorkflow            → beskriv opprinnelses- og destinasjonsparter
itemCreateWorkflow             → beskriv varelinjene
cartonsCreateWorkflow          → beskriv den fysiske emballasjen
shipmentRatingCreateWorkflow   → registrer transportørens fraktpristilbud
landedCostCalculateWorkflow    → beregn toll / avgifter / gebyrer
shipmentCreateWorkflow         → opprett forsendelsen + etikett

Workflow-mutasjonene er designet for å være kjedet: du trenger ikke å sende ID-er videre fra ett trinn til det neste, og du trenger ikke å sende en separat forespørsel per trinn. Send inn hele dokumentet, og få den endelige Shipment-en tilbake.

Når serviceLevel i det siste trinnet er et Japan Post-servicenivå (japan_post.*), kaller Zonos Japan Post Label API (kode 52) på dine vegne ved hjelp av Later Pay-numrene til din verifiserte konto, genererer etiketten og sporingsnummeret, oppretter deklarasjons-IDen, og kobler dem sammen – alt innenfor det siste shipmentCreateWorkflow-trinnet.

Hvorfor én mutasjon? Hvert trinn er avhengig av det forrige (landed cost trenger varene + partene; etiketten trenger alt). Å samle dem i ett enkelt GraphQL-dokument holder dataene konsistente og unngår fem ekstra rundturer.

Sender du til EU?

Arbeidsflyten er den samme for støttede destinasjoner i EU. Se Send til EU for IOSS- og mva-feltene som skal angis i landedCostCalculateWorkflow.

Endepunkt og autentisering 

Forespørslene i denne kjeden bruker alle det samme endepunktet. Hva du sender i headerne, avhenger av oppsettet ditt – velg fanen din.

URL:

https://api.zonos.com/graphql

Headere:

Du sender dine egne bestillinger under din egen verifiserte konto. Autentiser som deg selv – ingen kontonøkkel nødvendig.

credentialToken: {{YOUR_API_TOKEN}}

Hvor du finner den: Zonos Dashboard → Settings → Integrations → Account Key-seksjonen. Kopier tokenet på raden API key; det er din credentialToken.

Eksempelforespørsel 

En komplett CreateDeclarationShipment-forespørsel som du kan kopiere og tilpasse – mutasjonen, variablene og responsen – for én enkelt Japan Post-pakke sendt DDP til USA. Hver inndata er brutt ned i trinn-for-trinn-delen nedenfor.

1mutation CreateDeclarationShipment(
2$partyInput: [PartyCreateWorkflowInput!]!
3$itemInput: [ItemCreateWorkflowInput!]!
4$cartonInput: [CartonCreateWorkflowInput!]!
5$shipmentRatingInput: ShipmentRatingCreateWorkflowInput!
6$landedCostInput: LandedCostWorkFlowInput!
7$shipmentInput: ShipmentCreateWorkflowInput!
8) {
9 partyCreateWorkflow(input: $partyInput) {
10 id
11 type
12 location {
13 line1
14 locality
15 postalCode
16 countryCode
17 }
18 }
19 itemCreateWorkflow(input: $itemInput) {
20 id
21 name
22 sku
23 amount
24 currencyCode
25 hsCode
26 }
27 cartonsCreateWorkflow(input: $cartonInput) {
28 id
29 length
30 width
31 height
32 dimensionalUnit
33 weight
34 weightUnit
35 }
36 shipmentRatingCreateWorkflow(input: $shipmentRatingInput) {
37 id
38 amount
39 }
40 landedCostCalculateWorkflow(input: $landedCostInput) {
41 id
42 method
43 currencyCode
44 amountSubtotals {
45 duties
46 taxes
47 fees
48 shipping
49 landedCostTotal
50 }
51 }
52 shipmentCreateWorkflow(input: $shipmentInput) {
53 id
54 trackingDetails {
55 number
56 }
57 shipmentCartons {
58 label {
59 url
60 }
61 }
62 }
63}

Trinn for trinn 

Status-kolonnen i hver tabell nedenfor bruker disse begrepene:

  • Påkrevd – forespørselen mislykkes uten det.
  • Påkrevd for etikett – valgfritt i GraphQL-skjemaet, men nødvendig for å produsere en gyldig Japan Post-etikett til USA.
  • Betinget – påkrevd avhengig av et annet felt (angitt i teksten).
  • Anbefalt – valgfritt, men gir mer nøyaktig toll og avgifter.
  • Valgfritt – ikke nødvendig.

1. partyCreateWorkflow

Oppretter partene som er involvert i forsendelsen – minst en ORIGIN (der forsendelsen sendes fra) og en DESTINATION (kjøperen / mottakeren).

Felt↕Status↕Merknader↕
typePåkrevdORIGIN og DESTINATION er de to denne flyten trenger. Andre (CONSIGNEE, EXPORTER, IMPORTER_OF_RECORD, PAYOR, osv.) finnes, men brukes ikke her.
location.countryCodePåkrevdISO-2-landskode.
location.line1, locality, administrativeAreaCode, postalCodePåkrevd for etikettAdressefelt som trengs for en gyldig etikett.
person.firstName, lastName, phonePåkrevd for etikettKontaktdetaljer som trengs for en gyldig etikett.
person.companyName, emailValgfritt

Eksempelpayload:

[
  { "type": "DESTINATION", "location": { "countryCode": "US" }, "person": {} },
  { "type": "ORIGIN", "location": { "countryCode": "JP" }, "person": {} }
]

Responsen returnerer de opprettede Party-IDene og de oppløste adressefeltene.

2. itemCreateWorkflow

Oppretter varelinjene som utgjør forsendelsen. Dette er SKU-ene som vises på handelsfakturaen og driver landed cost-beregningen.

Felt↕Status↕Merknader↕
currencyCodePåkrevdValuta for enhetsprisen.
quantityPåkrevdAntall enheter av denne varen.
amountBetingetEnhetspris (ikke totalbeløp). Påkrevd med mindre totalAmount er oppgitt.
totalAmountValgfrittAlternativ til amount; amount utledes fra totalAmount / quantity.
hsCodeAnbefaltHS-tollkode (Harmonized System). Styrer tollsatsene.
countryOfOriginAnbefaltISO-2-kode for hvor varen ble produsert. Styrer toll / frihandelsavtaler.
name, descriptionAnbefaltKundevendt produktnavn + beskrivelse.
customsDescriptionValgfrittOverstyring av tollbeskrivelse.
skuBetingetPåkrevd på forsendelser til USA fra 22. oktober 2026, med mindre du bruker en kanalintegrasjon. Må samsvare med SKU-en i Zonos-katalogen. Se nedenfor.
productIdValgfrittDin interne produkt-ID.
measurementsValgfrittVekt / dimensjoner per enhet.

HS-koden, opprinnelsesland og beløp er de tre feltene som har størst innvirkning på toll-/avgiftsutfallet i trinn 5.

Fra 22. oktober 2026: slik matcher Zonos varene dine

Fra 22. oktober 2026 registrerer Zonos hver postforsendelse til USA som en tolldeklarasjon ved hjelp av hver vares katalogoppføring (HS-kode, opprinnelsesland og PGA-opplysninger). Zonos finner denne oppføringen på én av to måter:

  • Med en kanalintegrasjon som synkroniserer ordrer og katalogvarer: legg til Japan Post-sporingsnummeret på ordren i kanalen din. Zonos synkroniserer det tilbake og bruker ordrens katalogvarer. Å sende sku anbefales, men er ikke påkrevd. Det fungerer som reserve hvis sporingsnummeret mangler på ordren eller ikke er synkronisert ennå (ordrer synkroniseres hver time).
  • Uten en kanalintegrasjon (katalogen er importert via CSV eller Catalog API): send sku på hver vare. Den må samsvare nøyaktig med varens SKU i Zonos-katalogen. Uten den kan ikke Zonos matche varen med PGA-dataene.

Sender du til EU? Du trenger også EU-produktidentifikatorer.

3. cartonsCreateWorkflow

Oppretter de fysiske pakkene – boksene, polyposene eller brevene som skal inneholde varene.

Felt↕Status↕Merknader↕
dimensionalUnitPåkrevdINCH eller CENTIMETER.
weight, weightUnitPåkrevd for etikettJapan Post krever pakkevekt.
length, width, heightValgfrittYtre dimensjoner.
typeValgfrittEmballasjetype (boks, polypose, brev). Standard er PACKAGE.

Hver kartong blir én pakke på transportøretiketten i trinn 6. Flere kartonger → flerstykks forsendelse med ett sporingsnummer per kartong.

4. shipmentRatingCreateWorkflow

Registrerer fraktpristilbudet kjøpmannen belaster kjøperen for frakt.

Felt↕Status↕Merknader↕
amountPåkrevdDet kjøperen betaler for frakt. Send 0 hvis gratis.
currencyCodePåkrevdValuta for amount.
serviceLevelCodePåkrevdTransportørens servicekode (f.eks. japan_post.air.parcel). Se Japan Post-servicenivåer for hele listen.
displayNameValgfrittPent visningsnavn for kvitteringen / fakturaen.

Dette er taksten kjøperen fikk oppgitt i kassen. Den inngår i landed cost-beregningen som «shipping»-delsummen, slik at toll og avgifter beregnes mot riktig CIF-verdi.

5. landedCostCalculateWorkflow

Kjører beregningen av toll, avgifter og gebyrer for mottakerlandet. Bruker varene, partene og fraktkostnaden fra de foregående trinnene.

Felt↕Status↕Merknader↕
endUsePåkrevdNOT_FOR_RESALE eller FOR_RESALE. Enkelte mottakerland bruker ulike satser for kommersiell vs. personlig sluttbruk.
tariffRatePåkrevdStandard er ZONOS_PREFERRED hvis utelatt. Forteller Zonos hvilken tollkilde/-metodikk som skal brukes.
calculationMethodAnbefaltDDP (kjøper forhåndsbetaler) eller DDU (kjøper betaler ved levering). Bruk DDP for forhåndsbetalt. Styrer om LandedCost.amountSubtotals inkluderer toll/avgift.
currencyCodeValgfrittValutaen landed cost-delsummene returneres i.
arrivalDateValgfrittValutakurser og tollsatser låses til denne datoen hvis den oppgis.

Responsen inkluderer amountSubtotals (duties, taxes, fees, shipping, landedCostTotal) – dette er tallene du viser til kjøperen i kassen, og som skrives ut på handelsfakturaen.

6. shipmentCreateWorkflow

Det avsluttende trinnet – oppretter Shipment-enheten, genererer transportøretiketten, og (valgfritt) handelsfakturaen / pakkseddelen.

For Japan Post-verifiserte kontoer er dette også der Zonos kaller Japan Post Label API (kode 52) på dine vegne, setter inn dine Later Pay-numre, oppretter deklarasjons-IDen, og kobler deklarasjons-IDen til sporingsnummeret som returneres av Japan Post.

Nøkkelfelt:

Felt↕Status↕Merknader↕
serviceLevelPåkrevd for etikettJapan Post-tjenesten som skal brukes for forsendelsen (f.eks. japan_post.air.ems_merchandise). Må være et japan_post.*-servicenivå.
generateLabelValgfrittStandard er true; må være true for å returnere en etikett.
contentsTypeAnbefaltStyrer tollbehandlingen. En av SALE_OF_GOODS, ECOMMERCE_GOODS, COMMERCIAL_GOODS, COMMERCIAL_SAMPLE, RETURNED_GOODS, GIFT, DOCUMENTS, OTHER.
nonDeliveryValgfrittHva Japan Post skal gjøre hvis pakken ikke kan leveres. Se nedenfor.
referencesValgfrittReferansenumre oppgitt av kjøpmannen, trykt på etiketten og handelsfakturaen. Se nedenfor.
declaredValue / isDeclaredValueValgfrittForsikringsverdi for forsendelsen.
shipmentConsolidationIdValgfrittBrukes når denne forsendelsen er del av en batch-utsendelse.

For contentsType er de to vanligste verdiene for trafikk fra verifiserte kontoer ECOMMERCE_GOODS (solgt til en forbruker, B2C) og COMMERCIAL_GOODS (solgt mellom bedrifter, B2B). Disse styrer pkgType-en Zonos sender i Japan Post-etikettkallet, så valget endrer hva som skrives ut på tolldeklarasjonen – det er ikke bare en etikett.

nonDelivery-underinput

Forteller Japan Post hva som skal gjøres med pakken hvis den ikke kan leveres – nektet mottatt av mottakeren, avvist ved grensen, eller ikke leverbar til den oppgitte adressen.

option godtar nøyaktig disse fire verdiene. Det finnes ingen RETURN-verdi – bruk RETURN_AFTER_RETENTION eller RETURN_IMMEDIATELY for å velge når pakken kommer tilbake.

option↕Dashboard-ekvivalent↕Hva Japan Post gjør↕
RETURN_AFTER_RETENTIONReturnHolder pakken hos mottakerpostkontoret i oppbevaringsperioden, og returnerer den deretter til avsenderen.
RETURN_IMMEDIATELYReturnReturnerer pakken til avsenderen umiddelbart, uten oppbevaringsperiode.
FORWARDRedirectionOmdirigerer pakken til en annen adresse. Tilleggsporto påløper.
ABANDONRenounceKasserer pakken på bestemmelsesstedet. Ingenting returneres, og det belastes ingen returporto.

API-et eksponerer begge returvariantene separat; Dashboard-alternativet Return dekker begge.

transportMethod godtar AIR eller MOST_ECONOMICAL, og angir hvordan en returnert pakke fraktes tilbake. Det gjelder kun for de to RETURN_*-alternativene – Dashboard viser det tilhørende Return method-feltet bare når Return er valgt.

{
  "nonDelivery": {
    "option": "RETURN_AFTER_RETENTION",
    "transportMethod": "MOST_ECONOMICAL"
  }
}

Velgeren If undeliverable i Dashboard-dialogen Create label skriver til det samme feltet, slik at en etikett opprettet i Dashboard og en etikett opprettet via API-et oppfører seg identisk.

references-underinput

Disse feltene skrives ut på transportøretiketten og/eller handelsfakturaen. Bruk dem til å vise PO-numre, lisensnumre og fritekstmerknader som mottakeren eller tollmyndighetene må se.

Felt↕Status↕Merknader↕Lengde↕
invoiceNumberValgfrittKjøpmannens fakturanummer.—
purchaseOrderNumberValgfrittKjøpmannens PO-nummer.—
licenseNumberValgfrittEksport-/importlisensnummer.—
certificateNumberValgfrittTollsertifikatnummer.—
paymentConditionsValgfrittFritekst betalingsvilkår vist på handelsfakturaen.Begrens til 200 tegn – lengre verdier flyter over på den utskrevne fakturaen.
customsRemarksValgfrittFritekst tollmerknader.—
taxCodeValgfrittEgendefinert skattekode trykt på etiketten. For EU-forsendelser med ditt eget IOSS-nummer oppgir du IOSS-nummeret her. Se Send til EU.—

Respons

De interessante feltene på den returnerte Shipment-en er:

{
  id
  trackingDetails {
    number
  }
  shipmentCartons {
    label {
      url
      labelImage
    }
  }
}

trackingDetails.number er Japan Post-sporingsnummeret.

label-objektet kan returnere etiketten på to måter – be om den som passer arbeidsflyten din (eller begge):

Felt↕Returnerer↕Bruk når↕
urlEn hostet lenke til den genererte etikettfilen (PDF), klar til nedlasting eller utskrift.Du vil sende videre en lenke – åpne den, send den på e-post, eller hent filen senere uten å beholde den i payloaden.
labelImageDet base64-kodede etikettbildet (PNG/PDF/ZPL) inline i responsen.Du vil ha etikettbytene direkte i responsen for å legge dem til en oppfyllelsesarbeidsflyt eller lagre dem i WMS-et ditt.

Velg bare feltene du trenger. Å be om url holder responsen liten; å be om labelImage returnerer hele etiketten inline, slik at du ikke trenger en ekstra rundtur for å hente den. Eksempelet over ber om url.

Japan Post-servicenivåer 

Send en av disse kodene som serviceLevelCode i shipmentRatingCreateWorkflow.

Servicenivåkoder bruker punktum, ikke understrek. Du kan se understrek-formen (japan_post_air_parcel) i feilmeldinger og interne referanser, men den er ikke gyldig input.

Luftpost

Kode↕Japan Post-tjeneste↕Posttype↕
japan_post.air.ems_documentsEMS (dokumenter)1-0
japan_post.air.ems_merchandiseEMS (varer)1-1
japan_post.air.parcelInternasjonal pakke1-5
japan_post.air.packetInternational Air Packet1-8
japan_post.air.small_packetLiten pakke1-9
japan_post.air.printed_matter_registeredTrykksaker, rekommandert1-A
japan_post.air.printed_matterTrykksaker1-B
japan_post.air.letter_registeredBrev, rekommandert1-C
japan_post.air.letterBrev1-D

Overflatepost

Kode↕Japan Post-tjeneste↕Posttype↕
japan_post.surface.parcelInternasjonal pakke2-5
japan_post.surface.small_packetLiten pakke2-9
japan_post.surface.printed_matterTrykksaker2-B
japan_post.surface.letterBrev2-D

Velge mellom lignende tjenester

Liten pakke vs. International Air Packet. Begge er begrenset til 2 kg. japan_post.air.packet er Japan Posts sporede tjeneste for små pakker. japan_post.air.small_packet er den usporede tilsvarende tjenesten. Hvis du trenger sporing på en lett pakke, bruk japan_post.air.packet.

Rekommanderte varianter. For brev og trykksaker legges sporing til av den rekommanderte (書留) versjonen av tjenesten. japan_post.air.printed_matter og japan_post.air.letter inkluderer den ikke i seg selv.

Utfasede koder

japan_post.air.epacket_light var International e-Packet Light. Japan Post ga tjenesten nytt navn til International Air Packet 1. juni 2026, og utvidet den til å gjelde alle land og regioner. Selve tjenesten er uendret.

Den gamle koden fungerer fortsatt, slik at eksisterende integrasjoner fortsetter å virke, men bruk japan_post.air.packet for nytt arbeid.

Transportmodus-koder

japan_post.air, japan_post.surface, japan_post.economy_air og japan_post.custom fungerer også, men de identifiserer en transportmodus eller en reserveløsning i stedet for et spesifikt postprodukt. Bruk en av servicekodene over for vanlige forsendelser.

Valider koden du sender

En ukjent serviceLevelCode gir ikke en feilmelding. Forespørselen returnerer HTTP 200 uten errors-matrise, serviceLevel kommer tilbake som null, og frakt faller ut av landed cost-totalen – slik at responsen ser riktig ut mens beløpene er feil.

Kontroller alltid at shipmentRatingCreateWorkflow.serviceLevel ikke er null, før du stoler på totalene.

For å hente den gjeldende listen når som helst:

{
  serviceLevels(carrier: "carrier_00004c9b-9431-4518-bfbc-b9f8476335b1") {
    code
    name
  }
}

Denne spørringen tar transportørens ID. Å sende transportørkoden japan_post returnerer en tom liste uten feil.

Feilhåndtering 

  • Valideringsfeil (manglende påkrevde felt, ugyldige landskoder, osv.) kommer tilbake i den vanlige GraphQL errors-matrisen og avbryter resten av kjeden.
  • Japan Post-feil (feil ved etikettgenerering, ugyldig adresse, osv.) vises som GraphQL-feil på shipmentCreateWorkflow. Hvis et nytt forsøk er nødvendig, kontakt kundestøtte – den anbefalte fremgangsmåten er å sende inn hele mutasjonen på nytt med korrigert input.

VALIDATION_INVALID_TYPE_VARIABLE

{
  "errors": [
    {
      "message": "invalid type for variable: 'shipmentInput'",
      "extensions": {
        "name": "shipmentInput",
        "code": "VALIDATION_INVALID_TYPE_VARIABLE"
      }
    }
  ]
}

Denne feilen navngir hele variabelen, ikke feltet som faktisk er feil. Den betyr nesten alltid at én enum-verdi inne i variabelen ikke er medlem av enumen sin – oftest nonDelivery.option, contentsType, eller serviceLevel.

Det er ikke et JSON-typeproblem. Å sette eller fjerne anførselstegn rundt boolske verdier og tall endrer ikke noe, fordi payloaden aldri kommer så langt – enumen avvises først.

For å finne det feilaktige feltet, sjekk hvert enum-felt i variabelen mot dets godkjente verdier:

Felt↕Godkjente verdier↕
nonDelivery.optionRETURN_AFTER_RETENTION, RETURN_IMMEDIATELY, FORWARD, ABANDON – ingen RETURN
nonDelivery.transportMethodAIR, MOST_ECONOMICAL
contentsTypeSALE_OF_GOODS, ECOMMERCE_GOODS, COMMERCIAL_GOODS, COMMERCIAL_SAMPLE, RETURNED_GOODS, GIFT, DOCUMENTS, OTHER
serviceLevelEn japan_post.*-servicenivåkode

Alle enum-medlemmene for en input er oppført på typesiden i API-referansen.

Tillatelser 

Hvert trinn er sikret uavhengig. API-nøkkelen din må ha skrivetilgang for hver enhet i kjeden (ITEM_WRITE, CARTON_WRITE, SHIPMENT_RATING_WRITE, LANDED_COST_WRITE, SHIPMENT_WRITE). Standard kjøpmannsrolle på en verifisert konto gir alle disse.

Neste steg 

Bestill en demo

Var denne siden nyttig?