DOCS

Batch-afsendelse (konsolidering)

Batch-afsendelse (konsolidering)

Pak dagens Japan Post-pakker i én deferred-payment-afsendelseskvittering med konsolideringsflowet.

Dette dokument gennemgår det tretrinsflow, der opretter en Japan Post deferred-payment batch-afsendelse via Zonos GraphQL API: åbn en konsolidering, tilknyt n forsendelser til den, og luk den for at modtage Japan Posts afsendelseskvittering (manifestdokument).

Hvornår du skal bruge dette flow 

Japan Posts deferred-payment-program (後納) giver en forhandler mulighed for at afregne dagens porto i én transaktion ved dagens afslutning i stedet for pr. pakke ved indlevering. Forhandleren bringer dagens pakker til posthuset sammen med én afsendelseskvittering (差出票), der dækker op til 250 forsendelser. Portoen faktureres til forhandlerens forudregistrerede Later Pay Number.

Hvis du sender individuelle Japan Post-labels og betaler pakke for pakke ved skranken, behøver du ikke dette flow — kald enkeltforsendelseskæden direkte uden konsolidering.

Overblik 

1. shipmentConsolidationCreate            → open the batch (returns consolidation ID)
2. Attach shipments × n                   → create each shipment + label, attached to the batch
3. shipmentConsolidationUpdate(CLOSED)    → close the batch (returns the dispatch slip)

Der er to måder at tilknytte forsendelser til batchen på — brug den, der passer til din integration (eller kombiner dem):

  • Tilknyt ved labeloprettelse — send konsoliderings-ID'et fra trin 1 med i hvert shipmentCreateWorkflow-kald via feltet shipmentConsolidationId.
  • Tilknyt eksisterende forsendelser via ID — send shipmentIdsshipmentConsolidationCreate (for at starte batchen) eller på shipmentConsolidationUpdate (for at tilføje til en åben batch). Hver forsendelse skal allerede have sin Japan Post-label.

Uanset metode oprettes hver label med dit Later Pay Number indlejret, så Japan Post accepterer den på afsendelseskvitteringen, når trin 3 lukker batchen.

Hvorfor separate kald i stedet for én mutation? Trin 2.1, 2.2, ..., 2.n sker i løbet af forhandlerens dag — labels printes og pakker pakkes, efterhånden som ordrer kommer ind. Batchen kan ikke være ét enkelt round-trip på samme måde som enkeltforsendelseskæden: der er flere timers mellemrum mellem at åbne konsolideringen og lukke den.

Forudsætninger 

Før dette flow virker for en given Verified Account:

  • Din konto skal have et Japan Post deferred-payment Later Pay Number (後納お客様番号) gemt — en værdi med bindestreger som 1111111111-222222-3333333333-444444. Send den på shipmentConsolidationCreate via accountNumber (trin 1).
  • Din API-nøgle skal have SHIPMENT_WRITE plus de standardscopes, som workflowet pr. forsendelse kræver.

Endpoint og godkendelse 

Alle tre trin nedenfor er GraphQL-operationer sendt til samme endpoint. Hvad du sender i headers, afhænger af din opsætning — vælg din fane.

URL:

https://api.zonos.com/graphql

Headers:

Du sender dine egne ordrer under din egen Verified Account. Godkend som dig selv — ingen account key nødvendig.

credentialToken: {{YOUR_API_TOKEN}}

Hvor du finder den: Zonos Dashboard → SettingsIntegrations → sektionen Account Key. Kopiér tokenet på rækken API key; det er din credentialToken.

Eksempelanmodning 

Et kopier-og-tilpas-eksempel på at åbne en konsolidering — mutationen, dens variabler og svaret. Dette er det batch-specifikke kald, der starter flowet; tilknytning af forsendelser (trin 2) genbruger enkeltforsendelseseksemplet, og lukning af batchen (trin 3) returnerer manifestdokumentet. Hvert felt er beskrevet i trinene nedenfor.

1mutation ShipmentConsolidationCreate(
2$input: ShipmentConsolidationCreateInput!
3) {
4 shipmentConsolidationCreate(input: $input) {
5 id
6 status
7 accountNumber
8 carrierCode
9 }
10}

Trin 1: shipmentConsolidationCreate 

Åbner konsolideringen. Carrier-koden låser batchen til Japan Post; alle medlemsforsendelser skal bruge Japan Post-serviceniveauer. Hvis du allerede har labeled forsendelser klar, start batchen med deres ID'er via shipmentIds — ellers opret den tom og tilknyt forsendelser i trin 2.

Mutation:

mutation {
  shipmentConsolidationCreate(
    input: {
      carrierCode: JAPAN_POST
      accountNumber: "1111111111-222222-3333333333-444444"
      name: "Tokyo dispatch — 2026-05-01"
      externalId: "merchant-batch-20260501-001"
      shipmentIds: ["shipment_01hxa...", "shipment_01hxb..."]
    }
  ) {
    id
    status
    accountNumber
    carrierCode
    shipments {
      id
    }
  }
}
FieldNotes
carrierCodePåkrævet. Brug JAPAN_POST.
accountNumberLater Pay Number med bindestreger. Format valideres ved oprettelse — ugyldige værdier afvises med det samme i stedet for ved lukning. Hvis udeladt, bruges standardkontonummeret gemt på din Japan Post-konto.
nameValgfrit. Læsbart navn til dine optegnelser. Standard er konsolideringens genererede ID.
externalIdValgfrit. Dit interne batch-ID; standard er konsolideringens genererede ID, hvis udeladt.
shipmentIdsValgfrit. ID'er på indledende forsendelser, der skal tilknyttes. Lad være tom for at åbne batchen først og tilknytte forsendelser, når deres labels oprettes i trin 2.
shipmentIdForældet — brug shipmentIds i stedet.

Response:

{
  "data": {
    "shipmentConsolidationCreate": {
      "id": "shco_01hjk...",
      "status": "OPEN",
      "accountNumber": "1111111111-222222-3333333333-444444",
      "carrierCode": "JAPAN_POST",
      "shipments": [
        { "id": "shipment_01hxa..." },
        { "id": "shipment_01hxb..." }
      ]
    }
  }
}

Gem id (f.eks. shco_01HJK...) — du bruger den til alt nedenfor. status er OPEN indtil trin 3.

Trin 2: Tilknyt forsendelser 

For hver pakke, du skal sende i dag, kør det fulde kædede enkeltforsendelsesworkflow for at oprette forsendelsen og dens label. Tilknyt derefter forsendelsen til batchen med en af metoderne nedenfor.

Option A: Tilknyt ved labeloprettelse

Send konsoliderings-ID'et i det sidste shipmentCreateWorkflow-trin i kæden. Alle foregående mutationer i kæden er identiske med enkeltforsendelsesworkflowet.

De relevante felter på shipmentCreateWorkflow:

shipmentCreateWorkflow(
  input: {
    serviceLevel: "japan_post.air.ems_merchandise"
    shipmentConsolidationId: "shco_01hjk..."
    generateLabel: true
  }
) {
  id
  trackingDetails {
    number
  }
  shipmentCartons {
    label {
      labelImage
    }
  }
}
FieldNotes
shipmentConsolidationIdID'et fra trin 1. Fortæller platformen „tilknyt denne forsendelse til den batch". Dette er det eneste felt, der adskiller en konsolideringsbundet forsendelse fra en selvstændig.
serviceLevelSkal være et Japan Post-serviceniveau (japan_post.*). Blanding af carriers i én konsolidering understøttes ikke.

Option B: Tilknyt eksisterende forsendelser via ID

Hvis dine forsendelser allerede er oprettet og labeled, tilføj dem til den åbne batch med shipmentIdsshipmentConsolidationUpdate:

mutation {
  shipmentConsolidationUpdate(
    input: {
      id: "shco_01hjk..."
      shipmentIds: ["shipment_01hxd...", "shipment_01hxe..."]
    }
  ) {
    id
    status
    shipments {
      id
    }
  }
}

Udelad status i input, mens du stadig tilføjer forsendelser — batchen forbliver OPEN. Hver forsendelse skal bruge et Japan Post-serviceniveau og have sin label (trackingnummer), før batchen lukkes i trin 3.

Hvad tilknytning betyder for labelen

Uanset hvilken option du bruger, når en Japan Post-forsendelse er del af en konsolidering:

  • Forsendelsen har et trackingnummer som sædvanligt.
  • Forsendelseslabel-PDF'en inkluderer ikke kunde-/posthuskvitteringskopierne. Disse kvitteringer udskydes til trin 3, hvor de samles i afsendelseskvitteringsdokumentet for hele batchen.
  • Forsendelsen er knyttet til konsolideringen; du kan forespørge den igen via shipmentConsolidation(id: ...) for at se medlemmerne.

Gentag dette trin for hver pakke i dagens batch. Op til 250 forsendelser pr. konsolidering; forsøg på at lukke en større batch fejler med en tydelig valideringsfejl, før Japan Post kaldes.

Du kan også verificere batchindholdet før lukning:

query {
  shipmentConsolidation(id: "shco_01hjk...") {
    status
    shipments {
      id
      trackingDetails {
        number
      }
    }
  }
}

Hver forsendelse skal vise et trackingnummer her. Hvis en ikke gør, blev dens label aldrig oprettet — løs det før lukning. status er OPEN, indtil konsolideringen lukkes i trin 3.

Trin 3: shipmentConsolidationUpdate(status: CLOSED) 

Lukker batchen. Dette er kaldet, der beder Japan Post om at generere deferred-payment-afsendelseskvitteringen, der dækker alle medlemmers trackingnumre, og vedhæfter den resulterende PDF til konsolideringen.

GraphQL-operationen hedder CloseConsolidation for at beskrive hensigten med at lukke batchen. Den kører shipmentConsolidationUpdate-mutationen med status: CLOSED.

Mutation:

mutation CloseConsolidation {
  shipmentConsolidationUpdate(input: { id: "shco_01hjk...", status: CLOSED }) {
    id
    status
    statusTransitions {
      status
      changedAt
      note
    }
    customsDocuments {
      documentType
      fileUrl
    }
  }
}
FieldNotes
idKonsoliderings-ID'et fra trin 1.
statusSæt til CLOSED for at lukke batchen og producere afsendelseskvitteringen.
shipmentIdsValgfrit. Tilføjelse af forsendelser + lukning i samme kald understøttes — forsendelserne tilknyttes først, derefter lukkes batchen.

Ved en CLOSED-anmodning:

  1. Konsolideringen valideres: ≤250 forsendelser, og hvert medlem skal have et trackingnummer. Hvis en forsendelse mangler trackingnummer (labelen blev aldrig oprettet), afvises kaldet.
  2. Japan Post bedes om at generere en deferred-payment-afsendelseskvittering, der dækker alle medlemmers trackingnumre.
  3. Status går kortvarigt til MANIFEST_CREATED, mens kvitterings-PDF'en hentes, derefter til CLOSED, når dokumentet er vedhæftet.
  4. Afsendelseskvitterings-PDF'en (én fil med kvitteringen plus alle medlemmers kunde-/posthuskvitteringer) vedhæftes konsolideringen som en CustomsDocument med documentType: MANIFEST_DOCUMENT.

Response:

{
  "data": {
    "shipmentConsolidationUpdate": {
      "id": "shco_01hjk...",
      "status": "CLOSED",
      "statusTransitions": [
        {
          "status": "OPEN",
          "changedAt": "2026-05-01T08:00:00Z",
          "note": "Shipment batch created"
        },
        {
          "status": "MANIFEST_CREATED",
          "changedAt": "2026-05-01T17:30:12Z",
          "note": "Dispatch slip created with Japan Post"
        },
        {
          "status": "CLOSED",
          "changedAt": "2026-05-01T17:30:14Z",
          "note": "Dispatch slip downloaded and uploaded"
        }
      ],
      "customsDocuments": [
        {
          "documentType": "MANIFEST_DOCUMENT",
          "fileUrl": "https://customs-docs.zonos.com/.../japanpost-dispatch-slip.pdf"
        }
      ]
    }
  }
}

Hentning af dokumenterne

Afsendelseskvitteringen vedhæftes direkte til konsolideringen som en CustomsDocument med documentType: MANIFEST_DOCUMENT — hent fileUrl fra lukkesvaret ovenfor, eller forespørg den når som helst senere:

query {
  shipmentConsolidation(id: "shco_01hjk...") {
    status
    customsDocuments {
      documentType
      fileUrl
    }
  }
}

Print PDF'en på fileUrl. Den indeholder:

  • Side 1: Deferred-payment-afsendelseskvitteringen — giv denne til posthuset.
  • Side 2+: Kunde-/posthuskvitteringer for hver pakke — én hæftes på hver pakke, den anden beholdes af posthuset.

Når den er printet, bring pakkerne + afsendelseskvitteringen + kvitteringerne til posthuset i én tur. Japan Post fakturerer dit Later Pay Number ved afslutningen af faktureringsperioden.

Sådan hænger det sammen 

En typisk dag for en forhandler, der sender 50 Japan Post-pakker, kan se sådan ud:

08:00 → shipmentConsolidationCreate(JAPAN_POST, accountNumber)  → shco_01HJK...
08:30 → CreateDeclarationShipment( ... shipmentConsolidationId: "shco_01HJK..." )    parcel 1
09:15 → CreateDeclarationShipment( ... shipmentConsolidationId: "shco_01HJK..." )    parcel 2
...
16:45 → CreateDeclarationShipment( ... shipmentConsolidationId: "shco_01HJK..." )    parcel 50
17:30 → shipmentConsolidationUpdate(id: "shco_01HJK...", status: CLOSED)
17:32 → Print PDF

Foretrækker du at batch'e ved dagens afslutning? Opret dagens labels uden konsoliderings-ID, åbn derefter konsolideringen én gang med alle shipmentIds-værdier (eller tilføj dem i bidder via shipmentConsolidationUpdate) og luk den i samme eller et opfølgende kald.

Hvis du sender på tværs af flere forretningsenheder / faktureringskonti, kør en separat konsolidering pr. konto — send et andet accountNumber på hvert shipmentConsolidationCreate og diriger forsendelser derefter. Sender du mere end 250 pakker på en dag? Åbn en anden konsolidering.

Fejlhåndtering 

Valideringsfejl (fanget før Japan Post kaldes)

  • accountNumber misformateret — afvist ved trin 1 (shipmentConsolidationCreate), før konsolideringen gemmes. Fejlmeddelelsen identificerer det problematiske segment.
  • >250 forsendelser — afvist ved trin 3, før Japan Post kaldes.
  • Medlemsforsendelse mangler trackingnummer — afvist ved trin 3. Betyder, at labeloprettelse tidligere fejlede stille; undersøg den berørte forsendelse via shipment(id: ...) { trackingDetails }.
  • Intet deferred-payment-nummer sat på konsolideringen — afvist ved trin 3. Send accountNumbershipmentConsolidationCreate, eller gem et standardkontonummer på din Japan Post-carrierkonto.

Japan Post API-fejl

Hvis Japan Post afviser anmodningen om afsendelseskvittering, viser lukke-mutationen carrierens fejlkode og -meddelelse som en GraphQL-fejl. De mest almindelige:

CodeBetydningHvad du skal tjekke
E034Deferred kundenumre mangleraccountNumber på konsolideringen.
E035Trackingnumre skal være 13 tegn adskilt af -Medlemsforsendelser har fejlformaterede trackingnumre.
E036Trackingnumre skal være alfanumeriskeSamme som ovenfor.
E037Ikke en gyldig deferred-forsendelseEt medlems label blev oprettet uden deferred-payment-kundenummer. Kontakt Zonos support.
E046Totalvægt påkrævetUpstream labeloprettelse var misformateret. Kontakt Zonos support.
50ParameterformatfejlOvertrædelse af feltlængde eller type på input.
51GodkendelsesfejlKontakt Zonos support.

Forsøg igen

Hvis lukkekaldet fejler efter Japan Post har accepteret anmodningen om afsendelseskvittering (dvs. under PDF-hentning), er det sikkert at prøve shipmentConsolidationUpdate(status: CLOSED) igen — platformen springer carrier-kaldet over og forsøger kun at hente og vedhæfte dokumentet igen.

Hvis lukningen fejler før Japan Post har accepteret anmodningen (valideringsfejl, E0xx, netværkstimeout), er der ikke ændret tilstand — ret årsagen og prøv igen.

GraphQL API ReferenceTypes, inputs, and operations used in this guide
Book en demo

Var denne side nyttig?