Der GraphQL-Workflow CreateDeclarationShipment führt eine Japan Post-Sendung von den Rohdaten bis zum druckbaren Etikett in einem Round-Trip.
CreateDeclarationShipment verknüpft sechs *Workflow-Mutationen zu einer einzigen GraphQL-Anfrage. Jeder Schritt baut auf den Daten der vorherigen Schritte auf, und alle werden gemeinsam übermittelt, sodass eine vollständige Sendung in einem Round-Trip erstellt werden kann:
partyCreateWorkflow → Absender- und Empfängerparteien beschreiben
itemCreateWorkflow → Positionen beschreiben
cartonsCreateWorkflow → die physische Verpackung beschreiben
shipmentRatingCreateWorkflow → das Carrier-Tarifangebot erfassen
landedCostCalculateWorkflow → Zölle / Steuern / Gebühren berechnen
shipmentCreateWorkflow → die Sendung + das Etikett erstellen
Die Workflow-Mutationen sind für die Verkettung konzipiert: Sie müssen keine IDs von einem Schritt in den nächsten durchreichen und müssen keinen separaten Request pro Schritt senden. Reichen Sie das gesamte Dokument ein und erhalten Sie die finale Shipment zurück.
Wenn der serviceLevel im letzten Schritt ein Japan Post-Servicelevel ist (japan_post.*), ruft Zonos in Ihrem Namen die Japan Post Label API (Code 52) mit den Later Pay Numbers Ihres Verified Accounts auf, generiert das Etikett und die Sendungsnummer, erstellt die Declaration ID und verknüpft sie — alles innerhalb des abschließenden Schritts shipmentCreateWorkflow.
Warum eine Mutation? Jeder Schritt hängt vom vorherigen ab (Landed Cost benötigt die Positionen + Parteien; das Etikett benötigt alles). Die Bündelung in einem einzigen GraphQL-Dokument hält die Daten konsistent und vermeidet fünf zusätzliche Round-Trips.
Die Anfragen in dieser Kette nutzen alle denselben Endpoint. Was Sie in den Headern übergeben, hängt von Ihrem Setup ab — wählen Sie Ihren Tab.
URL:
https://api.zonos.com/graphql
Header:
Sie versenden Ihre eigenen Bestellungen unter Ihrem eigenen Verified Account. Authentifizieren Sie sich als sich selbst — kein Account Key erforderlich.
credentialToken: {{YOUR_API_TOKEN}}
Wo Sie ihn finden: Zonos Dashboard → Settings → Integrations → Abschnitt Account Key. Kopieren Sie den Token in der Zeile API key; das ist Ihr credentialToken.
Eine vollständige CreateDeclarationShipment-Anfrage zum Kopieren und Anpassen — die Mutation, ihre Variablen und die Antwort — für ein einzelnes Japan Post-Paket, das per DDP in die USA versendet wird. Jede Eingabe wird im Abschnitt Schritt für Schritt unten erläutert.
Die Spalte Status in jeder Tabelle unten verwendet diese Begriffe:
Erforderlich — die Anfrage schlägt ohne dieses Feld fehl.
Erforderlich für Etikett — im GraphQL-Schema optional, aber erforderlich für ein gültiges Japan Post-US-Etikett.
Bedingt — abhängig von einem anderen Feld erforderlich (im Text vermerkt).
Empfohlen — optional, beeinflusst aber die Genauigkeit von Zöllen und Steuern.
Optional — nicht erforderlich.
1. partyCreateWorkflow
Erstellt die an der Sendung beteiligten Parteien — mindestens eine ORIGIN (Versandursprung) und eine DESTINATION (Käufer / Empfänger).
Feld↕
Status↕
Hinweise↕
type
Erforderlich
ORIGIN und DESTINATION sind die beiden, die dieser Ablauf benötigt. Weitere (CONSIGNEE, EXPORTER, IMPORTER_OF_RECORD, PAYOR usw.) existieren, werden hier aber nicht verwendet.
Die Antwort gibt die erstellten Party-IDs und aufgelösten Adressfelder zurück.
2. itemCreateWorkflow
Erstellt die Positionen, aus denen die Sendung besteht. Das sind die SKUs, die auf der Handelsrechnung erscheinen und die Landed-Cost-Berechnung steuern.
Feld↕
Status↕
Hinweise↕
currencyCode
Erforderlich
Währung des Stückpreises.
quantity
Erforderlich
Anzahl der Einheiten dieser Position.
amount
Bedingt
Stückpreis (nicht Gesamtbetrag). Erforderlich, sofern totalAmount nicht angegeben ist.
totalAmount
Optional
Alternative zu amount; amount wird aus totalAmount / quantity abgeleitet.
hsCode
Empfohlen
Harmonized-System-Zolltarifnummer. Bestimmt die Zollsätze.
countryOfOrigin
Empfohlen
ISO-2-Code des Herstellungslandes. Bestimmt Zoll / FTA.
name, description
Empfohlen
Kundenorientierte Produktbezeichnung und Beschreibung.
customsDescription
Optional
Überschreibung der Zollbeschreibung.
sku, productId
Optional
Ihre internen Kennungen.
measurements
Optional
Gewicht / Abmessungen pro Einheit.
Der HS-Code, das Herstellungsland und der Betrag sind die drei Felder, die das Zoll-/Steuerergebnis in Schritt 5 am stärksten beeinflussen.
3. cartonsCreateWorkflow
Erstellt die physischen Pakete — die Kartons, Polybeutel oder Briefe, die die Positionen enthalten.
Jeder Karton wird in Schritt 6 zu einem Paket auf dem Carrier-Etikett. Mehrere Kartons → Mehrstück-Sendung mit einer Sendungsnummer pro Karton.
4. shipmentRatingCreateWorkflow
Erfasst das Tarifangebot, das der Händler dem Käufer für den Versand berechnet.
Feld↕
Status↕
Hinweise↕
amount
Erforderlich
Was der Käufer für den Versand zahlt. Übergeben Sie 0 bei Gratisversand.
currencyCode
Erforderlich
Währung von amount.
serviceLevelCode
Erforderlich
Carrier-Servicecode (z. B. japan_post.air.parcel). Die vollständige Liste finden Sie unter Japan Post-Servicelevel.
displayName
Optional
Anzeigename für Quittung / Rechnung.
Das ist der Tarif, der dem Käufer beim Checkout angeboten wurde. Er fließt als Teilposten „Versand“ in die Landed-Cost-Berechnung ein, damit Zölle und Steuern gegen den korrekten CIF-Wert berechnet werden.
5. landedCostCalculateWorkflow
Führt die Berechnung von Zöllen, Steuern und Gebühren für das Zielland durch. Nutzt die Positionen, Parteien und Versandkosten aus den vorherigen Schritten.
Feld↕
Status↕
Hinweise↕
endUse
Erforderlich
NOT_FOR_RESALE oder FOR_RESALE. Einige Zielländer wenden unterschiedliche Sätze für gewerbliche und private Endnutzung an.
tariffRate
Erforderlich
Standardmäßig ZONOS_PREFERRED, wenn weggelassen. Teilt Zonos mit, welche Zolltarifquelle/-methodik angewendet wird.
calculationMethod
Empfohlen
DDP (Käufer zahlt im Voraus) oder DDU (Käufer zahlt bei Zustellung). Verwenden Sie DDP für Vorauszahlung. Steuert, ob LandedCost.amountSubtotals Zoll/Steuer enthält.
currencyCode
Optional
Währung, in der die Landed-Cost-Teilbeträge zurückgegeben werden.
arrivalDate
Optional
Wechselkurse und Zolltarife werden an dieses Datum gebunden, sofern angegeben.
Die Antwort enthält amountSubtotals (duties, taxes, fees, shipping, landedCostTotal) — das sind die Werte, die Sie dem Käufer beim Checkout anzeigen und die auf der Handelsrechnung gedruckt werden.
6. shipmentCreateWorkflow
Der abschließende Schritt — erstellt die Shipment-Entität, generiert das Carrier-Etikett und (optional) die Handelsrechnung / den Packzettel.
Für Japan Post Verified Accounts ruft Zonos hier auch in Ihrem Namen die Japan Post Label API (Code 52) auf, bindet Ihre Later Pay Numbers ein, erstellt die Declaration ID und verknüpft die Declaration ID mit der von Japan Post zurückgegebenen Sendungsnummer.
Wichtige Felder:
Feld↕
Status↕
Hinweise↕
serviceLevel
Erforderlich für Etikett
Das Japan Post-Servicelevel für den Versand (z. B. japan_post.air.ems_merchandise). Muss ein japan_post.*-Servicelevel sein.
generateLabel
Optional
Standardmäßig true; muss true sein, um ein Etikett zurückzugeben.
contentsType
Empfohlen
Bestimmt die Zollbehandlung. Einer von SALE_OF_GOODS, ECOMMERCE_GOODS, COMMERCIAL_GOODS, COMMERCIAL_SAMPLE, RETURNED_GOODS, GIFT, DOCUMENTS, OTHER.
nonDelivery
Optional
Was Japan Post tun soll, wenn das Paket nicht zugestellt werden kann. Siehe unten.
references
Optional
Vom Händler bereitgestellte Referenznummern auf Etikett und Handelsrechnung. Siehe unten.
declaredValue / isDeclaredValue
Optional
Versicherungswert der Sendung.
shipmentConsolidationId
Optional
Wird verwendet, wenn diese Sendung Teil eines Batch-Versands ist.
Bei contentsType sind ECOMMERCE_GOODS (Verkauf an einen Verbraucher, BtoC) und COMMERCIAL_GOODS (Verkauf zwischen Unternehmen, BtoB) die beiden häufigsten Werte für Verified-Account-Traffic. Sie legen den pkgType fest, den Zonos beim Japan Post-Label-Aufruf übermittelt — die Wahl ändert also, was auf der Zollerklärung gedruckt wird, und ist nicht nur eine Frage des Etiketts.
nonDelivery-Untereingabe
Teilt Japan Post mit, was mit dem Paket geschehen soll, wenn es nicht zugestellt werden kann — vom Empfänger abgelehnt, an der Grenze zurückgewiesen oder unter der angegebenen Adresse nicht zustellbar.
option akzeptiert genau diese vier Werte. Es gibt keinen Wert RETURN — verwenden Sie RETURN_AFTER_RETENTION oder RETURN_IMMEDIATELY, um festzulegen, wann das Paket zurückkommt.
option↕
Dashboard-Entsprechung↕
Was Japan Post tut↕
RETURN_AFTER_RETENTION
Return
Hält das Paket für die Aufbewahrungsfrist bei der Zielpost zurück und sendet es dann an den Absender zurück.
RETURN_IMMEDIATELY
Return
Sendet das Paket sofort an den Absender zurück, ohne Aufbewahrungsfrist.
FORWARD
Redirection
Leitet das Paket an eine andere Adresse weiter. Es fällt zusätzliches Porto an.
ABANDON
Renounce
Entsorgt das Paket am Zielort. Es wird nichts zurückgesendet, und es fällt kein Rücksendeporto an.
Die API bietet beide Rücksendevarianten separat an; die Return-Option im Dashboard deckt beide ab.
transportMethod akzeptiert AIR oder MOST_ECONOMICAL und legt fest, wie ein zurückgesendetes Paket transportiert wird. Es gilt nur für die beiden RETURN_*-Optionen — das Dashboard zeigt das passende Feld Return method nur an, wenn Return ausgewählt ist.
Die Auswahl If undeliverable im Dashboard-Dialog Create label schreibt dasselbe Feld, sodass ein im Dashboard erstelltes Etikett und ein über die API erstelltes Etikett sich identisch verhalten.
references-Untereingabe
Diese Felder werden auf dem Carrier-Etikett und/oder der Handelsrechnung gedruckt. Nutzen Sie sie, um Bestellnummern, Lizenznummern und Freitextbemerkungen anzuzeigen, die der Empfänger oder die Zollbehörde sehen muss.
Feld↕
Status↕
Hinweise↕
Länge↕
invoiceNumber
Optional
Händler-Rechnungsnummer.
—
purchaseOrderNumber
Optional
Händler-Bestellnummer.
—
licenseNumber
Optional
Export-/Importlizenznummer.
—
certificateNumber
Optional
Zollzertifikatsnummer.
—
paymentConditions
Optional
Freitext-Zahlungsbedingungen auf der Handelsrechnung.
Auf 200 Zeichen begrenzen — längere Werte überlaufen auf der gedruckten Rechnung.
customsRemarks
Optional
Freitext-Zollbemerkungen.
—
taxCode
Optional
Individueller Steuercode auf dem Etikett.
—
Antwort
Die relevanten Felder der zurückgegebenen Shipment sind:
{
id
trackingDetails {
number
}
shipmentCartons {
label {
url
labelImage
}}}
trackingDetails.number ist die Japan Post-Sendungsnummer.
Das label-Objekt kann das Etikett auf zwei Arten zurückgeben — fordern Sie an, was zu Ihrem Workflow passt (oder beides):
Feld↕
Gibt zurück↕
Verwenden, wenn↕
url
Einen gehosteten Link zur gerenderten Etikettendatei (PDF), bereit zum Download oder Druck.
Sie einen Link weitergeben möchten — öffnen, per E-Mail senden oder die Datei später abrufen, ohne sie in der Payload zu halten.
labelImage
Das Base64-kodierte Etikettenbild (PNG/PDF/ZPL) inline in der Antwort.
Sie die Etikettenbytes direkt in der Antwort benötigen, um sie an einen Fulfillment-Workflow anzuhängen oder in Ihrem WMS zu speichern.
Fordern Sie nur die Felder an, die Sie benötigen. url hält die Antwort klein; labelImage gibt das vollständige Etikett inline zurück, sodass kein zweiter Round-Trip zum Abruf nötig ist. Das Beispiel oben fordert url an.
Servicelevel-Codes verwenden Punkte, keine Unterstriche. Die Unterstrich-Form (japan_post_air_parcel) begegnet Ihnen möglicherweise in Fehlermeldungen und internen Referenzen, ist aber keine gültige Eingabe.
Luftpost-Services
Code↕
Japan Post-Service↕
Sendungsart↕
japan_post.air.ems_documents
EMS (Dokumente)
1-0
japan_post.air.ems_merchandise
EMS (Waren)
1-1
japan_post.air.parcel
Internationales Paket
1-5
japan_post.air.packet
International Air Packet
1-8
japan_post.air.small_packet
Small Packet
1-9
japan_post.air.printed_matter_registered
Drucksache, eingeschrieben
1-A
japan_post.air.printed_matter
Drucksache
1-B
japan_post.air.letter_registered
Brief, eingeschrieben
1-C
japan_post.air.letter
Brief
1-D
Seepost-Services
Code↕
Japan Post-Service↕
Sendungsart↕
japan_post.surface.parcel
Internationales Paket
2-5
japan_post.surface.small_packet
Small Packet
2-9
japan_post.surface.printed_matter
Drucksache
2-B
japan_post.surface.letter
Brief
2-D
Wahl zwischen ähnlichen Services
Small Packet vs. International Air Packet. Beide sind auf 2 kg begrenzt. japan_post.air.packet ist Japan Posts nachverfolgbarer Small-Packet-Service. japan_post.air.small_packet ist das nicht nachverfolgbare Äquivalent. Wenn Sie für ein leichtes Paket eine Sendungsverfolgung benötigen, verwenden Sie japan_post.air.packet.
Eingeschriebene Varianten. Bei Briefen und Drucksachen wird die Sendungsverfolgung durch die eingeschriebene (書留) Version des Service hinzugefügt. japan_post.air.printed_matter und japan_post.air.letter enthalten sie nicht von sich aus.
Veraltete Codes
japan_post.air.epacket_light war International e-Packet Light. Japan Post hat den Service am 1. Juni 2026 in International Air Packet umbenannt und auf alle Länder und Regionen ausgeweitet. Der Service selbst ist unverändert.
Der alte Code funktioniert weiterhin, sodass bestehende Integrationen nicht betroffen sind — verwenden Sie für neue Implementierungen jedoch japan_post.air.packet.
Transportart-Codes
japan_post.air, japan_post.surface, japan_post.economy_air und japan_post.custom funktionieren ebenfalls, kennzeichnen aber eine Transportart oder einen Fallback und kein bestimmtes Postprodukt. Verwenden Sie für normale Sendungen einen der oben genannten Servicecodes.
Den gesendeten Code validieren
Ein nicht erkannter serviceLevelCodelöst keinen Fehler aus. Die Anfrage liefert HTTP 200 ohne errors-Array zurück, serviceLevel kommt als null zurück, und der Versand entfällt aus dem Landed-Cost-Gesamtbetrag — die Antwort sieht also korrekt aus, während die Beträge falsch sind.
Stellen Sie immer sicher, dass shipmentRatingCreateWorkflow.serviceLevel nicht null ist, bevor Sie sich auf die Summen verlassen.
So rufen Sie die aktuelle Liste jederzeit ab:
{
serviceLevels(carrier:"carrier_00004c9b-9431-4518-bfbc-b9f8476335b1"){
code
name
}}
Diese Abfrage nimmt die Carrier-ID entgegen. Die Übergabe des Carrier-Codes japan_post liefert eine leere Liste ohne Fehler zurück.
Validierungsfehler (fehlende Pflichtfelder, ungültige Ländercodes usw.) werden im standardmäßigen GraphQL-errors-Array zurückgegeben und brechen den Rest der Kette ab.
Japan Post-Fehler (Fehler bei der Etikettenerstellung, ungültige Adresse usw.) werden als GraphQL-Fehler bei shipmentCreateWorkflow ausgegeben. Wenn ein erneuter Versuch nötig ist, wenden Sie sich an den Support — der empfohlene Weg ist, die vollständige Mutation mit korrigierten Eingaben erneut einzureichen.
VALIDATION_INVALID_TYPE_VARIABLE
{"errors":[{"message":"invalid type for variable: 'shipmentInput'","extensions":{"name":"shipmentInput","code":"VALIDATION_INVALID_TYPE_VARIABLE"}}]}
Dieser Fehler benennt die gesamte Variable, nicht das eigentlich fehlerhafte Feld. Meist bedeutet er, dass ein Enum-Wert innerhalb dieser Variable kein gültiges Mitglied seines Enums ist — am häufigsten bei nonDelivery.option, contentsType oder serviceLevel.
Es ist kein JSON-Typisierungsproblem. Das Setzen oder Entfernen von Anführungszeichen bei Booleans und Zahlen ändert daran nichts, da der Payload gar nicht so weit kommt — das Enum wird zuerst abgelehnt.
Um das fehlerhafte Feld zu finden, prüfen Sie jedes Enum-Feld in der Variable gegen seine zulässigen Werte:
Feld↕
Zulässige Werte↕
nonDelivery.option
RETURN_AFTER_RETENTION, RETURN_IMMEDIATELY, FORWARD, ABANDON — kein RETURN
nonDelivery.transportMethod
AIR, MOST_ECONOMICAL
contentsType
SALE_OF_GOODS, ECOMMERCE_GOODS, COMMERCIAL_GOODS, COMMERCIAL_SAMPLE, RETURNED_GOODS, GIFT, DOCUMENTS, OTHER
serviceLevel
Ein japan_post.*-Servicelevel-Code
Die vollständigen Enum-Werte für jede Eingabe finden Sie auf der jeweiligen Typseite in der API-Referenz.
Jeder Schritt ist unabhängig abgesichert. Ihr API-Schlüssel muss den Schreibbereich für jede Entität in der Kette haben (ITEM_WRITE, CARTON_WRITE, SHIPMENT_RATING_WRITE, LANDED_COST_WRITE, SHIPMENT_WRITE). Die Standard-Händlerrolle auf einem Verified Account gewährt alle diese Berechtigungen.
Einzelne Sendung erstellen
Einzelne Sendung erstellen
Der GraphQL-Workflow
CreateDeclarationShipmentführt eine Japan Post-Sendung von den Rohdaten bis zum druckbaren Etikett in einem Round-Trip.CreateDeclarationShipmentverknüpft sechs*Workflow-Mutationen zu einer einzigen GraphQL-Anfrage. Jeder Schritt baut auf den Daten der vorherigen Schritte auf, und alle werden gemeinsam übermittelt, sodass eine vollständige Sendung in einem Round-Trip erstellt werden kann:Die
Workflow-Mutationen sind für die Verkettung konzipiert: Sie müssen keine IDs von einem Schritt in den nächsten durchreichen und müssen keinen separaten Request pro Schritt senden. Reichen Sie das gesamte Dokument ein und erhalten Sie die finaleShipmentzurück.Wenn der
serviceLevelim letzten Schritt ein Japan Post-Servicelevel ist (japan_post.*), ruft Zonos in Ihrem Namen die Japan Post Label API (Code 52) mit den Later Pay Numbers Ihres Verified Accounts auf, generiert das Etikett und die Sendungsnummer, erstellt die Declaration ID und verknüpft sie — alles innerhalb des abschließenden SchrittsshipmentCreateWorkflow.Endpoint und Authentifizierung
Die Anfragen in dieser Kette nutzen alle denselben Endpoint. Was Sie in den Headern übergeben, hängt von Ihrem Setup ab — wählen Sie Ihren Tab.
URL:
Header:
Sie versenden Ihre eigenen Bestellungen unter Ihrem eigenen Verified Account. Authentifizieren Sie sich als sich selbst — kein Account Key erforderlich.
Wo Sie ihn finden: Zonos Dashboard → Settings → Integrations → Abschnitt Account Key. Kopieren Sie den Token in der Zeile API key; das ist Ihr
credentialToken.Beispielanfrage
Eine vollständige
CreateDeclarationShipment-Anfrage zum Kopieren und Anpassen — die Mutation, ihre Variablen und die Antwort — für ein einzelnes Japan Post-Paket, das per DDP in die USA versendet wird. Jede Eingabe wird im Abschnitt Schritt für Schritt unten erläutert.mutation CreateDeclarationShipment($partyInput: [PartyCreateWorkflowInput!]!$itemInput: [ItemCreateWorkflowInput!]!$cartonInput: [CartonCreateWorkflowInput!]!$shipmentRatingInput: ShipmentRatingCreateWorkflowInput!$landedCostInput: LandedCostWorkFlowInput!$shipmentInput: ShipmentCreateWorkflowInput!) {partyCreateWorkflow(input: $partyInput) {idtypelocation {line1localitypostalCodecountryCode}}itemCreateWorkflow(input: $itemInput) {idnameskuamountcurrencyCodehsCode}cartonsCreateWorkflow(input: $cartonInput) {idlengthwidthheightdimensionalUnitweightweightUnit}shipmentRatingCreateWorkflow(input: $shipmentRatingInput) {idamount}landedCostCalculateWorkflow(input: $landedCostInput) {idmethodcurrencyCodeamountSubtotals {dutiestaxesfeesshippinglandedCostTotal}}shipmentCreateWorkflow(input: $shipmentInput) {idtrackingDetails {number}shipmentCartons {label {url}}}}Schritt für Schritt
Die Spalte
Statusin jeder Tabelle unten verwendet diese Begriffe:1.
partyCreateWorkflowErstellt die an der Sendung beteiligten Parteien — mindestens eine
ORIGIN(Versandursprung) und eineDESTINATION(Käufer / Empfänger).typeORIGINundDESTINATIONsind die beiden, die dieser Ablauf benötigt. Weitere (CONSIGNEE,EXPORTER,IMPORTER_OF_RECORD,PAYORusw.) existieren, werden hier aber nicht verwendet.location.countryCodelocation.line1,locality,administrativeAreaCode,postalCodeperson.firstName,lastName,phoneperson.companyName,emailBeispiel-Payload:
[ { "type": "DESTINATION", "location": { "countryCode": "US" }, "person": {} }, { "type": "ORIGIN", "location": { "countryCode": "JP" }, "person": {} } ]Die Antwort gibt die erstellten
Party-IDs und aufgelösten Adressfelder zurück.2.
itemCreateWorkflowErstellt die Positionen, aus denen die Sendung besteht. Das sind die SKUs, die auf der Handelsrechnung erscheinen und die Landed-Cost-Berechnung steuern.
currencyCodequantityamounttotalAmountnicht angegeben ist.totalAmountamount;amountwird austotalAmount / quantityabgeleitet.hsCodecountryOfOriginname,descriptioncustomsDescriptionsku,productIdmeasurementsDer HS-Code, das Herstellungsland und der Betrag sind die drei Felder, die das Zoll-/Steuerergebnis in Schritt 5 am stärksten beeinflussen.
3.
cartonsCreateWorkflowErstellt die physischen Pakete — die Kartons, Polybeutel oder Briefe, die die Positionen enthalten.
dimensionalUnitINCHoderCENTIMETER.weight,weightUnitlength,width,heighttypePACKAGE.Jeder Karton wird in Schritt 6 zu einem Paket auf dem Carrier-Etikett. Mehrere Kartons → Mehrstück-Sendung mit einer Sendungsnummer pro Karton.
4.
shipmentRatingCreateWorkflowErfasst das Tarifangebot, das der Händler dem Käufer für den Versand berechnet.
amount0bei Gratisversand.currencyCodeamount.serviceLevelCodejapan_post.air.parcel). Die vollständige Liste finden Sie unter Japan Post-Servicelevel.displayNameDas ist der Tarif, der dem Käufer beim Checkout angeboten wurde. Er fließt als Teilposten „Versand“ in die Landed-Cost-Berechnung ein, damit Zölle und Steuern gegen den korrekten CIF-Wert berechnet werden.
5.
landedCostCalculateWorkflowFührt die Berechnung von Zöllen, Steuern und Gebühren für das Zielland durch. Nutzt die Positionen, Parteien und Versandkosten aus den vorherigen Schritten.
endUseNOT_FOR_RESALEoderFOR_RESALE. Einige Zielländer wenden unterschiedliche Sätze für gewerbliche und private Endnutzung an.tariffRateZONOS_PREFERRED, wenn weggelassen. Teilt Zonos mit, welche Zolltarifquelle/-methodik angewendet wird.calculationMethodDDP(Käufer zahlt im Voraus) oderDDU(Käufer zahlt bei Zustellung). Verwenden SieDDPfür Vorauszahlung. Steuert, obLandedCost.amountSubtotalsZoll/Steuer enthält.currencyCodearrivalDateDie Antwort enthält
amountSubtotals(duties,taxes,fees,shipping,landedCostTotal) — das sind die Werte, die Sie dem Käufer beim Checkout anzeigen und die auf der Handelsrechnung gedruckt werden.6.
shipmentCreateWorkflowDer abschließende Schritt — erstellt die
Shipment-Entität, generiert das Carrier-Etikett und (optional) die Handelsrechnung / den Packzettel.Für Japan Post Verified Accounts ruft Zonos hier auch in Ihrem Namen die Japan Post Label API (Code 52) auf, bindet Ihre Later Pay Numbers ein, erstellt die Declaration ID und verknüpft die Declaration ID mit der von Japan Post zurückgegebenen Sendungsnummer.
Wichtige Felder:
serviceLeveljapan_post.air.ems_merchandise). Muss einjapan_post.*-Servicelevel sein.generateLabeltrue; musstruesein, um ein Etikett zurückzugeben.contentsTypeSALE_OF_GOODS,ECOMMERCE_GOODS,COMMERCIAL_GOODS,COMMERCIAL_SAMPLE,RETURNED_GOODS,GIFT,DOCUMENTS,OTHER.nonDeliveryreferencesdeclaredValue/isDeclaredValueshipmentConsolidationIdBei
contentsTypesindECOMMERCE_GOODS(Verkauf an einen Verbraucher, BtoC) undCOMMERCIAL_GOODS(Verkauf zwischen Unternehmen, BtoB) die beiden häufigsten Werte für Verified-Account-Traffic. Sie legen denpkgTypefest, den Zonos beim Japan Post-Label-Aufruf übermittelt — die Wahl ändert also, was auf der Zollerklärung gedruckt wird, und ist nicht nur eine Frage des Etiketts.nonDelivery-UntereingabeTeilt Japan Post mit, was mit dem Paket geschehen soll, wenn es nicht zugestellt werden kann — vom Empfänger abgelehnt, an der Grenze zurückgewiesen oder unter der angegebenen Adresse nicht zustellbar.
optionakzeptiert genau diese vier Werte. Es gibt keinen WertRETURN— verwenden SieRETURN_AFTER_RETENTIONoderRETURN_IMMEDIATELY, um festzulegen, wann das Paket zurückkommt.option↕RETURN_AFTER_RETENTIONRETURN_IMMEDIATELYFORWARDABANDONDie API bietet beide Rücksendevarianten separat an; die Return-Option im Dashboard deckt beide ab.
transportMethodakzeptiertAIRoderMOST_ECONOMICALund legt fest, wie ein zurückgesendetes Paket transportiert wird. Es gilt nur für die beidenRETURN_*-Optionen — das Dashboard zeigt das passende Feld Return method nur an, wenn Return ausgewählt ist.{ "nonDelivery": { "option": "RETURN_AFTER_RETENTION", "transportMethod": "MOST_ECONOMICAL" } }Die Auswahl If undeliverable im Dashboard-Dialog Create label schreibt dasselbe Feld, sodass ein im Dashboard erstelltes Etikett und ein über die API erstelltes Etikett sich identisch verhalten.
references-UntereingabeDiese Felder werden auf dem Carrier-Etikett und/oder der Handelsrechnung gedruckt. Nutzen Sie sie, um Bestellnummern, Lizenznummern und Freitextbemerkungen anzuzeigen, die der Empfänger oder die Zollbehörde sehen muss.
invoiceNumberpurchaseOrderNumberlicenseNumbercertificateNumberpaymentConditionscustomsRemarkstaxCodeAntwort
Die relevanten Felder der zurückgegebenen
Shipmentsind:{ id trackingDetails { number } shipmentCartons { label { url labelImage } } }trackingDetails.numberist die Japan Post-Sendungsnummer.Das
label-Objekt kann das Etikett auf zwei Arten zurückgeben — fordern Sie an, was zu Ihrem Workflow passt (oder beides):urllabelImageFordern Sie nur die Felder an, die Sie benötigen.
urlhält die Antwort klein;labelImagegibt das vollständige Etikett inline zurück, sodass kein zweiter Round-Trip zum Abruf nötig ist. Das Beispiel oben forderturlan.Japan Post-Servicelevel
Geben Sie einen dieser Codes als
serviceLevelCodeinshipmentRatingCreateWorkflowan.Servicelevel-Codes verwenden Punkte, keine Unterstriche. Die Unterstrich-Form (
japan_post_air_parcel) begegnet Ihnen möglicherweise in Fehlermeldungen und internen Referenzen, ist aber keine gültige Eingabe.Luftpost-Services
japan_post.air.ems_documents1-0japan_post.air.ems_merchandise1-1japan_post.air.parcel1-5japan_post.air.packet1-8japan_post.air.small_packet1-9japan_post.air.printed_matter_registered1-Ajapan_post.air.printed_matter1-Bjapan_post.air.letter_registered1-Cjapan_post.air.letter1-DSeepost-Services
japan_post.surface.parcel2-5japan_post.surface.small_packet2-9japan_post.surface.printed_matter2-Bjapan_post.surface.letter2-DWahl zwischen ähnlichen Services
Small Packet vs. International Air Packet. Beide sind auf 2 kg begrenzt.
japan_post.air.packetist Japan Posts nachverfolgbarer Small-Packet-Service.japan_post.air.small_packetist das nicht nachverfolgbare Äquivalent. Wenn Sie für ein leichtes Paket eine Sendungsverfolgung benötigen, verwenden Siejapan_post.air.packet.Eingeschriebene Varianten. Bei Briefen und Drucksachen wird die Sendungsverfolgung durch die eingeschriebene (書留) Version des Service hinzugefügt.
japan_post.air.printed_matterundjapan_post.air.letterenthalten sie nicht von sich aus.Veraltete Codes
japan_post.air.epacket_lightwar International e-Packet Light. Japan Post hat den Service am 1. Juni 2026 in International Air Packet umbenannt und auf alle Länder und Regionen ausgeweitet. Der Service selbst ist unverändert.Der alte Code funktioniert weiterhin, sodass bestehende Integrationen nicht betroffen sind — verwenden Sie für neue Implementierungen jedoch
japan_post.air.packet.Transportart-Codes
japan_post.air,japan_post.surface,japan_post.economy_airundjapan_post.customfunktionieren ebenfalls, kennzeichnen aber eine Transportart oder einen Fallback und kein bestimmtes Postprodukt. Verwenden Sie für normale Sendungen einen der oben genannten Servicecodes.Den gesendeten Code validieren
Ein nicht erkannter
serviceLevelCodelöst keinen Fehler aus. Die Anfrage liefert HTTP 200 ohneerrors-Array zurück,serviceLevelkommt alsnullzurück, und der Versand entfällt aus dem Landed-Cost-Gesamtbetrag — die Antwort sieht also korrekt aus, während die Beträge falsch sind.Stellen Sie immer sicher, dass
shipmentRatingCreateWorkflow.serviceLevelnichtnullist, bevor Sie sich auf die Summen verlassen.So rufen Sie die aktuelle Liste jederzeit ab:
{ serviceLevels(carrier: "carrier_00004c9b-9431-4518-bfbc-b9f8476335b1") { code name } }Diese Abfrage nimmt die Carrier-ID entgegen. Die Übergabe des Carrier-Codes
japan_postliefert eine leere Liste ohne Fehler zurück.Fehlerbehandlung
errors-Array zurückgegeben und brechen den Rest der Kette ab.shipmentCreateWorkflowausgegeben. Wenn ein erneuter Versuch nötig ist, wenden Sie sich an den Support — der empfohlene Weg ist, die vollständige Mutation mit korrigierten Eingaben erneut einzureichen.VALIDATION_INVALID_TYPE_VARIABLE{ "errors": [ { "message": "invalid type for variable: 'shipmentInput'", "extensions": { "name": "shipmentInput", "code": "VALIDATION_INVALID_TYPE_VARIABLE" } } ] }Dieser Fehler benennt die gesamte Variable, nicht das eigentlich fehlerhafte Feld. Meist bedeutet er, dass ein Enum-Wert innerhalb dieser Variable kein gültiges Mitglied seines Enums ist — am häufigsten bei
nonDelivery.option,contentsTypeoderserviceLevel.Es ist kein JSON-Typisierungsproblem. Das Setzen oder Entfernen von Anführungszeichen bei Booleans und Zahlen ändert daran nichts, da der Payload gar nicht so weit kommt — das Enum wird zuerst abgelehnt.
Um das fehlerhafte Feld zu finden, prüfen Sie jedes Enum-Feld in der Variable gegen seine zulässigen Werte:
nonDelivery.optionRETURN_AFTER_RETENTION,RETURN_IMMEDIATELY,FORWARD,ABANDON— keinRETURNnonDelivery.transportMethodAIR,MOST_ECONOMICALcontentsTypeSALE_OF_GOODS,ECOMMERCE_GOODS,COMMERCIAL_GOODS,COMMERCIAL_SAMPLE,RETURNED_GOODS,GIFT,DOCUMENTS,OTHERserviceLeveljapan_post.*-Servicelevel-CodeDie vollständigen Enum-Werte für jede Eingabe finden Sie auf der jeweiligen Typseite in der API-Referenz.
Berechtigungen
Jeder Schritt ist unabhängig abgesichert. Ihr API-Schlüssel muss den Schreibbereich für jede Entität in der Kette haben (
ITEM_WRITE,CARTON_WRITE,SHIPMENT_RATING_WRITE,LANDED_COST_WRITE,SHIPMENT_WRITE). Die Standard-Händlerrolle auf einem Verified Account gewährt alle diese Berechtigungen.Nächste Schritte
CartonCreateWorkflowInput ItemCreateWorkflowInput LandedCostWorkFlowInput PartyCreateWorkflowInput ShipmentCreateWorkflowInput ShipmentRatingCreateWorkflowInput
cartonsCreateWorkflow itemCreateWorkflow landedCostCalculateWorkflow partyCreateWorkflow shipmentCreateWorkflow shipmentRatingCreateWorkflow
War diese Seite hilfreich?