Alur kerja CreateDeclarationShipment GraphQL membawa pengiriman Japan Post dari input mentah ke label yang dapat dicetak dalam satu perjalanan bolak-balik.
CreateDeclarationShipment merantai enam mutasi *Workflow menjadi satu permintaan GraphQL. Setiap langkah dibangun di atas data yang diberikan oleh langkah-langkah sebelumnya, dan semuanya disampaikan bersama-sama sehingga pengiriman lengkap dapat dibuat dalam satu perjalanan bolak-balik:
partyCreateWorkflow → jelaskan pihak asal + tujuan
itemCreateWorkflow → jelaskan item baris
cartonsCreateWorkflow → jelaskan kemasan fisik
shipmentRatingCreateWorkflow → catat kutipan tarif operator
landedCostCalculateWorkflow → hitung bea cukai / pajak / biaya
shipmentCreateWorkflow → buat pengiriman + label
Mutasi Workflow dirancang untuk dirantai: Anda tidak perlu mengalirkan ID dari satu langkah ke langkah berikutnya, dan Anda tidak perlu mengirim permintaan terpisah per langkah. Kirimkan seluruh dokumen, dapatkan Shipment akhir kembali.
Ketika serviceLevel pada langkah akhir adalah tingkat layanan Japan Post (japan_post.*), Zonos memanggil Japan Post Label API (kode 52) atas nama Anda menggunakan Nomor Pembayaran Kemudian Akun Terverifikasi Anda, menghasilkan label dan nomor pelacakan, membuat ID Deklarasi, dan menautkannya — semuanya di dalam langkah shipmentCreateWorkflow akhir itu.
Mengapa satu mutasi? Setiap langkah tergantung pada yang sebelumnya (biaya pendaratan membutuhkan item + pihak; label membutuhkan semuanya). Menggabungkannya ke dalam satu dokumen GraphQL menjaga data tetap konsisten dan menghindari lima perjalanan bolak-balik ekstra.
Permintaan dalam rantai ini semuanya menggunakan endpoint yang sama. Apa yang Anda sertakan di header tergantung pada setup Anda — pilih tab Anda.
URL:
https://api.zonos.com/graphql
Headers:
Anda mengirim pesanan Anda sendiri di bawah Akun Terverifikasi Anda sendiri. Autentikasi sebagai diri Anda sendiri — tidak ada kunci akun yang diperlukan.
credentialToken: {{YOUR_API_TOKEN}}
Di mana menemukannya: Zonos Dashboard → Settings → Integrations → bagian Account Key. Salin token pada baris API key; itu adalah credentialToken Anda.
Permintaan CreateDeclarationShipment lengkap yang dapat Anda salin dan sesuaikan — mutasi, variabelnya, dan respons — untuk satu paket Japan Post yang dikirim DDP ke A.S. Setiap input dipecah dalam bagian langkah demi langkah di bawah.
Kolom Status pada setiap tabel di bawah menggunakan istilah-istilah berikut:
Diperlukan — permintaan gagal tanpanya.
Diperlukan untuk label — opsional dalam skema GraphQL, tetapi diperlukan untuk menghasilkan label A.S. Japan Post yang valid.
Kondisional — diperlukan tergantung pada bidang lain (dicatat secara inline).
Direkomendasikan — opsional, tetapi mendorong bea cukai dan pajak yang akurat.
Opsional — tidak diperlukan.
1. partyCreateWorkflow
Membuat pihak-pihak yang terlibat dalam pengiriman — minimal ORIGIN (tempat pengiriman dikirim) dan DESTINATION (pembeli / penerima).
Bidang↕
Status↕
Catatan↕
type
Diperlukan
ORIGIN dan DESTINATION adalah dua yang dibutuhkan alur ini. Lainnya (CONSIGNEE, EXPORTER, IMPORTER_OF_RECORD, PAYOR, dll.) ada tetapi tidak digunakan di sini.
Respons mengembalikan ID Party yang dibuat dan bidang alamat yang diselesaikan.
2. itemCreateWorkflow
Membuat item baris yang membentuk pengiriman. Ini adalah SKU yang akan muncul pada faktur komersial dan mendorong perhitungan biaya pendaratan.
Bidang↕
Status↕
Catatan↕
currencyCode
Diperlukan
Mata uang harga unit.
quantity
Diperlukan
Jumlah unit item ini.
amount
Kondisional
Harga unit (bukan total). Diperlukan kecuali totalAmount disediakan.
totalAmount
Opsional
Alternatif untuk amount; amount diturunkan dari totalAmount / quantity.
hsCode
Direkomendasikan
Kode tarif Sistem Harmonis. Mendorong tarif bea cukai.
countryOfOrigin
Direkomendasikan
Kode ISO-2 tempat barang dibuat. Mendorong bea cukai / FTA.
name, description
Direkomendasikan
Nama produk + deskripsi menghadap pelanggan.
customsDescription
Opsional
Penggantian deskripsi bea cukai.
sku, productId
Opsional
Pengidentifikasi internal Anda.
measurements
Opsional
Berat / dimensi per unit.
Kode HS, negara asal, dan jumlah adalah tiga bidang yang paling mempengaruhi hasil bea cukai / pajak di langkah 5.
3. cartonsCreateWorkflow
Membuat paket fisik — kotak, polybag, atau surat yang akan menampung item.
Bidang↕
Status↕
Catatan↕
dimensionalUnit
Diperlukan
INCH atau CENTIMETER.
weight, weightUnit
Diperlukan untuk label
Japan Post memerlukan berat paket.
length, width, height
Opsional
Dimensi luar.
type
Opsional
Gaya kemasan (kotak, polybag, surat). Default ke PACKAGE.
Setiap karton menjadi satu paket pada label operator di langkah 6. Beberapa karton → pengiriman multi-piece dengan satu nomor pelacakan per karton.
4. shipmentRatingCreateWorkflow
Mencatat kutipan tarif yang dikenakan pedagang kepada pembeli untuk pengiriman.
Bidang↕
Status↕
Catatan↕
amount
Diperlukan
Apa yang dibayar pembeli untuk pengiriman. Berikan 0 jika gratis.
currencyCode
Diperlukan
Mata uang amount.
serviceLevelCode
Diperlukan
Kode layanan operator (misalnya japan_post.air.parcel). Lihat Tingkat layanan Japan Post untuk daftar lengkap.
displayName
Opsional
Nama yang mudah dibaca untuk tanda terima / faktur.
Ini adalah tarif yang dijumlahkan pembeli saat checkout. Ini masuk ke perhitungan biaya pendaratan sebagai subtotal "pengiriman" sehingga bea cukai dan pajak dihitung terhadap nilai CIF yang benar.
5. landedCostCalculateWorkflow
Menjalankan perhitungan bea cukai, pajak, dan biaya untuk negara tujuan. Menggunakan item, pihak, dan biaya pengiriman dari langkah-langkah sebelumnya.
Bidang↕
Status↕
Catatan↕
endUse
Diperlukan
NOT_FOR_RESALE atau FOR_RESALE. Beberapa tujuan menerapkan tarif berbeda untuk penggunaan akhir komersial vs pribadi.
tariffRate
Diperlukan
Default ke ZONOS_PREFERRED jika dihilangkan. Memberitahu Zonos sumber tarif / metodologi mana yang akan diterapkan.
calculationMethod
Direkomendasikan
DDP (pembeli prabayar) atau DDU (pembeli membayar di pintu). Gunakan DDP untuk prabayar. Mendorong apakah LandedCost.amountSubtotals menyertakan bea cukai / pajak.
currencyCode
Opsional
Mata uang subtotal biaya pendaratan dikembalikan.
arrivalDate
Opsional
Tarif FX dan jadwal tarif disematkan pada tanggal ini jika disediakan.
Respons mencakup amountSubtotals (duties, taxes, fees, shipping, landedCostTotal) — ini adalah angka yang Anda tampilkan kepada pembeli saat checkout dan yang dicetak pada faktur komersial.
6. shipmentCreateWorkflow
Langkah terminal — membuat entitas Shipment, menghasilkan label operator, dan (opsional) faktur komersial / slip kemasan.
Untuk Akun Terverifikasi Japan Post, ini juga tempat Zonos memanggil Japan Post Label API (kode 52) atas nama Anda, menyuntikkan Nomor Pembayaran Kemudian Anda, membuat ID Deklarasi, dan menautkan ID Deklarasi ke nomor pelacakan yang dikembalikan oleh Japan Post.
Bidang kunci:
Bidang↕
Status↕
Catatan↕
serviceLevel
Diperlukan untuk label
Layanan Japan Post untuk dikirim dengan (misalnya japan_post.air.ems_merchandise). Harus berupa tingkat layanan japan_post.*.
generateLabel
Opsional
Default ke true; harus true untuk mengembalikan label.
contentsType
Direkomendasikan
Mendorong perlakuan bea cukai. Salah satu dari SALE_OF_GOODS, ECOMMERCE_GOODS, COMMERCIAL_GOODS, COMMERCIAL_SAMPLE, RETURNED_GOODS, GIFT, DOCUMENTS, OTHER.
nonDelivery
Opsional
Apa yang harus dilakukan Japan Post jika paket tidak dapat dikirim. Lihat di bawah.
references
Opsional
Nomor referensi yang disediakan pedagang dicetak pada label dan faktur komersial. Lihat di bawah.
declaredValue / isDeclaredValue
Opsional
Nilai asuransi untuk pengiriman.
shipmentConsolidationId
Opsional
Digunakan ketika pengiriman ini adalah bagian dari pengiriman batch.
Pada contentsType, dua nilai paling umum untuk lalu lintas Akun Terverifikasi adalah ECOMMERCE_GOODS (dijual kepada konsumen, BtoC) dan COMMERCIAL_GOODS (dijual antar bisnis, BtoB). Nilai-nilai ini menentukan pkgType yang dikirim Zonos pada panggilan label Japan Post, sehingga pilihan tersebut mengubah apa yang dicetak pada deklarasi bea cukai — bukan sekadar label.
Sub-input nonDelivery
Memberitahu Japan Post apa yang harus dilakukan dengan paket jika tidak dapat dikirim — ditolak oleh penerima, ditolak di perbatasan, atau tidak dapat dikirim sesuai alamat.
option menerima persis empat nilai ini. Tidak ada nilai RETURN — gunakan RETURN_AFTER_RETENTION atau RETURN_IMMEDIATELY untuk memilih kapan paket dikembalikan.
option↕
Setara di Dashboard↕
Yang dilakukan Japan Post↕
RETURN_AFTER_RETENTION
Return
Menahan paket di kantor pos tujuan selama periode penahanannya, lalu mengembalikannya ke pengirim.
RETURN_IMMEDIATELY
Return
Mengembalikan paket ke pengirim segera, tanpa penahanan.
FORWARD
Redirection
Mengalihkan paket ke alamat lain. Berlaku biaya pos tambahan.
ABANDON
Renounce
Membuang paket di tujuan. Tidak ada yang dikembalikan dan tidak ada biaya pos pengembalian yang dikenakan.
API mengekspos kedua varian pengembalian secara terpisah; opsi Return pada Dashboard mencakup keduanya.
transportMethod menerima AIR atau MOST_ECONOMICAL, dan menentukan bagaimana paket yang dikembalikan melakukan perjalanan kembali. Ini hanya berlaku untuk dua opsi RETURN_* — Dashboard menampilkan bidang Return method yang sesuai hanya ketika Return dipilih.
Pemilih If undeliverable pada dialog Create label Dashboard menulis bidang yang sama ini, sehingga label yang dibuat di Dashboard dan label yang dibuat melalui API berperilaku identik.
Sub-input references
Bidang-bidang ini dicetak pada label operator dan / atau faktur komersial. Gunakan untuk menampilkan nomor PO, nomor lisensi, dan komentar teks bebas yang harus dilihat penerima atau otoritas bea cukai.
Bidang↕
Status↕
Catatan↕
Panjang↕
invoiceNumber
Opsional
Nomor faktur pedagang.
—
purchaseOrderNumber
Opsional
Nomor PO pedagang.
—
licenseNumber
Opsional
Nomor lisensi ekspor / impor.
—
certificateNumber
Opsional
Nomor sertifikat bea cukai.
—
paymentConditions
Opsional
Istilah pembayaran teks bebas ditampilkan pada faktur komersial.
Batasi hingga 200 karakter — nilai yang lebih panjang meluap pada faktur yang dicetak.
customsRemarks
Opsional
Komentar bea cukai teks bebas.
—
taxCode
Opsional
Kode pajak khusus dicetak pada label.
—
Respons
Bidang menarik pada Shipment yang dikembalikan adalah:
{
id
trackingDetails {
number
}
shipmentCartons {
label {
url
labelImage
}}}
trackingDetails.number adalah nomor pelacakan Japan Post.
Objek label dapat mengembalikan label dengan dua cara — minta mana pun yang sesuai dengan alur kerja Anda (atau keduanya):
Bidang↕
Mengembalikan↕
Gunakan ketika↕
url
Tautan yang dihosting ke file label yang dirender (PDF), siap untuk diunduh atau dicetak.
Anda ingin menyerahkan tautan — buka, email, atau ambil file nanti tanpa menyimpannya dalam payload.
labelImage
Gambar label yang dikodekan base64 (PNG/PDF/ZPL) inline dalam respons.
Anda menginginkan byte label langsung dalam respons untuk melampirkan pada alur kerja pemenuhan atau menyimpan ke WMS Anda.
Pilih hanya bidang yang Anda butuhkan. Meminta url membuat respons kecil; meminta labelImage mengembalikan label lengkap inline sehingga Anda tidak memerlukan perjalanan bolak-balik kedua untuk mengambilnya. Contoh di atas meminta url.
Kode tingkat layanan menggunakan titik, bukan garis bawah. Anda mungkin melihat bentuk garis bawah (japan_post_air_parcel) dalam pesan kesalahan dan referensi internal, tetapi itu bukan input yang valid.
Layanan udara
Kode↕
Layanan Japan Post↕
Jenis pos↕
japan_post.air.ems_documents
EMS (dokumen)
1-0
japan_post.air.ems_merchandise
EMS (barang dagangan)
1-1
japan_post.air.parcel
Paket internasional
1-5
japan_post.air.packet
International Air Packet
1-8
japan_post.air.small_packet
Paket kecil
1-9
japan_post.air.printed_matter_registered
Barang cetakan, terdaftar
1-A
japan_post.air.printed_matter
Barang cetakan
1-B
japan_post.air.letter_registered
Surat, terdaftar
1-C
japan_post.air.letter
Surat
1-D
Layanan permukaan
Kode↕
Layanan Japan Post↕
Jenis pos↕
japan_post.surface.parcel
Paket internasional
2-5
japan_post.surface.small_packet
Paket kecil
2-9
japan_post.surface.printed_matter
Barang cetakan
2-B
japan_post.surface.letter
Surat
2-D
Memilih di antara layanan serupa
Paket kecil vs. International Air Packet. Keduanya dibatasi hingga 2 kg. japan_post.air.packet adalah layanan paket kecil Japan Post yang dapat dilacak. japan_post.air.small_packet adalah setara yang tidak dapat dilacak. Jika Anda memerlukan pelacakan pada paket ringan, gunakan japan_post.air.packet.
Varian terdaftar. Untuk surat dan barang cetakan, pelacakan ditambahkan oleh versi terdaftar (書留) dari layanan tersebut. japan_post.air.printed_matter dan japan_post.air.letter tidak menyertakannya sendiri.
Kode yang tidak digunakan lagi
japan_post.air.epacket_light sebelumnya adalah International e-Packet Light. Japan Post mengganti nama layanan ini menjadi International Air Packet pada 1 Juni 2026, dan memperluasnya ke semua negara dan wilayah. Layanan itu sendiri tidak berubah.
Kode lama masih dapat digunakan sehingga integrasi yang ada tetap berfungsi, tetapi gunakan japan_post.air.packet untuk pekerjaan baru.
Kode mode transportasi
japan_post.air, japan_post.surface, japan_post.economy_air, dan japan_post.custom juga dapat digunakan, tetapi kode-kode ini mengidentifikasi mode transportasi atau fallback, bukan produk pos tertentu. Gunakan salah satu kode layanan di atas untuk pengiriman normal.
Validasi kode yang Anda kirim
serviceLevelCode yang tidak dikenali tidak memunculkan kesalahan. Permintaan mengembalikan HTTP 200 tanpa array errors, serviceLevel kembali sebagai null, dan biaya pengiriman hilang dari total biaya pendaratan — sehingga respons terlihat benar padahal jumlahnya salah.
Selalu pastikan bahwa shipmentRatingCreateWorkflow.serviceLevel tidak bernilai null sebelum mengandalkan totalnya.
Untuk mengambil daftar saat ini kapan saja:
{
serviceLevels(carrier:"carrier_00004c9b-9431-4518-bfbc-b9f8476335b1"){
code
name
}}
Kueri ini menggunakan ID operator. Memberikan kode operator japan_post mengembalikan daftar kosong tanpa kesalahan.
Kesalahan validasi (bidang yang diperlukan hilang, kode negara tidak valid, dll.) kembali dalam array errors GraphQL standar dan menghentikan sisa rantai.
Kesalahan Japan Post (kegagalan pembuatan label, alamat tidak valid, dll.) muncul sebagai kesalahan GraphQL pada shipmentCreateWorkflow. Jika diperlukan percobaan lagi, hubungi dukungan — jalur yang disarankan adalah mengirim ulang mutasi lengkap dengan input yang diperbaiki.
VALIDATION_INVALID_TYPE_VARIABLE
{"errors":[{"message":"invalid type for variable: 'shipmentInput'","extensions":{"name":"shipmentInput","code":"VALIDATION_INVALID_TYPE_VARIABLE"}}]}
Kesalahan ini menyebutkan seluruh variabel, bukan bidang yang sebenarnya salah. Ini hampir selalu berarti satu nilai enum di dalam variabel tersebut bukan anggota dari enum-nya — paling sering nonDelivery.option, contentsType, atau serviceLevel.
Ini bukan masalah tipe JSON. Memberi atau menghapus tanda kutip pada boolean dan angka Anda tidak akan mengubahnya, karena payload tidak pernah mencapai tahap itu — enum ditolak lebih dulu.
Untuk menemukan bidang yang salah, periksa setiap bidang bernilai enum dalam variabel tersebut terhadap nilai yang diterimanya:
Bidang↕
Nilai yang diterima↕
nonDelivery.option
RETURN_AFTER_RETENTION, RETURN_IMMEDIATELY, FORWARD, ABANDON — bukan RETURN
nonDelivery.transportMethod
AIR, MOST_ECONOMICAL
contentsType
SALE_OF_GOODS, ECOMMERCE_GOODS, COMMERCIAL_GOODS, COMMERCIAL_SAMPLE, RETURNED_GOODS, GIFT, DOCUMENTS, OTHER
serviceLevel
Kode tingkat layanan japan_post.*
Anggota enum lengkap untuk input apa pun tercantum pada halaman jenisnya di referensi API.
Setiap langkah diamankan secara independen. Kunci API Anda harus memegang cakupan penulisan untuk setiap entitas dalam rantai (ITEM_WRITE, CARTON_WRITE, SHIPMENT_RATING_WRITE, LANDED_COST_WRITE, SHIPMENT_WRITE). Peran pedagang standar pada Akun Terverifikasi memberikan semuanya.
Buat satu pengiriman
Buat satu pengiriman
Alur kerja
CreateDeclarationShipmentGraphQL membawa pengiriman Japan Post dari input mentah ke label yang dapat dicetak dalam satu perjalanan bolak-balik.CreateDeclarationShipmentmerantai enam mutasi*Workflowmenjadi satu permintaan GraphQL. Setiap langkah dibangun di atas data yang diberikan oleh langkah-langkah sebelumnya, dan semuanya disampaikan bersama-sama sehingga pengiriman lengkap dapat dibuat dalam satu perjalanan bolak-balik:Mutasi
Workflowdirancang untuk dirantai: Anda tidak perlu mengalirkan ID dari satu langkah ke langkah berikutnya, dan Anda tidak perlu mengirim permintaan terpisah per langkah. Kirimkan seluruh dokumen, dapatkanShipmentakhir kembali.Ketika
serviceLevelpada langkah akhir adalah tingkat layanan Japan Post (japan_post.*), Zonos memanggil Japan Post Label API (kode 52) atas nama Anda menggunakan Nomor Pembayaran Kemudian Akun Terverifikasi Anda, menghasilkan label dan nomor pelacakan, membuat ID Deklarasi, dan menautkannya — semuanya di dalam langkahshipmentCreateWorkflowakhir itu.Endpoint dan autentikasi
Permintaan dalam rantai ini semuanya menggunakan endpoint yang sama. Apa yang Anda sertakan di header tergantung pada setup Anda — pilih tab Anda.
URL:
Headers:
Anda mengirim pesanan Anda sendiri di bawah Akun Terverifikasi Anda sendiri. Autentikasi sebagai diri Anda sendiri — tidak ada kunci akun yang diperlukan.
Di mana menemukannya: Zonos Dashboard → Settings → Integrations → bagian Account Key. Salin token pada baris API key; itu adalah
credentialTokenAnda.Contoh permintaan
Permintaan
CreateDeclarationShipmentlengkap yang dapat Anda salin dan sesuaikan — mutasi, variabelnya, dan respons — untuk satu paket Japan Post yang dikirim DDP ke A.S. Setiap input dipecah dalam bagian langkah demi langkah di bawah.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}}}}Langkah demi langkah
Kolom
Statuspada setiap tabel di bawah menggunakan istilah-istilah berikut:1.
partyCreateWorkflowMembuat pihak-pihak yang terlibat dalam pengiriman — minimal
ORIGIN(tempat pengiriman dikirim) danDESTINATION(pembeli / penerima).typeORIGINdanDESTINATIONadalah dua yang dibutuhkan alur ini. Lainnya (CONSIGNEE,EXPORTER,IMPORTER_OF_RECORD,PAYOR, dll.) ada tetapi tidak digunakan di sini.location.countryCodelocation.line1,locality,administrativeAreaCode,postalCodeperson.firstName,lastName,phoneperson.companyName,emailContoh payload:
[ { "type": "DESTINATION", "location": { "countryCode": "US" }, "person": {} }, { "type": "ORIGIN", "location": { "countryCode": "JP" }, "person": {} } ]Respons mengembalikan ID
Partyyang dibuat dan bidang alamat yang diselesaikan.2.
itemCreateWorkflowMembuat item baris yang membentuk pengiriman. Ini adalah SKU yang akan muncul pada faktur komersial dan mendorong perhitungan biaya pendaratan.
currencyCodequantityamounttotalAmountdisediakan.totalAmountamount;amountditurunkan daritotalAmount / quantity.hsCodecountryOfOriginname,descriptioncustomsDescriptionsku,productIdmeasurementsKode HS, negara asal, dan jumlah adalah tiga bidang yang paling mempengaruhi hasil bea cukai / pajak di langkah 5.
3.
cartonsCreateWorkflowMembuat paket fisik — kotak, polybag, atau surat yang akan menampung item.
dimensionalUnitINCHatauCENTIMETER.weight,weightUnitlength,width,heighttypePACKAGE.Setiap karton menjadi satu paket pada label operator di langkah 6. Beberapa karton → pengiriman multi-piece dengan satu nomor pelacakan per karton.
4.
shipmentRatingCreateWorkflowMencatat kutipan tarif yang dikenakan pedagang kepada pembeli untuk pengiriman.
amount0jika gratis.currencyCodeamount.serviceLevelCodejapan_post.air.parcel). Lihat Tingkat layanan Japan Post untuk daftar lengkap.displayNameIni adalah tarif yang dijumlahkan pembeli saat checkout. Ini masuk ke perhitungan biaya pendaratan sebagai subtotal "pengiriman" sehingga bea cukai dan pajak dihitung terhadap nilai CIF yang benar.
5.
landedCostCalculateWorkflowMenjalankan perhitungan bea cukai, pajak, dan biaya untuk negara tujuan. Menggunakan item, pihak, dan biaya pengiriman dari langkah-langkah sebelumnya.
endUseNOT_FOR_RESALEatauFOR_RESALE. Beberapa tujuan menerapkan tarif berbeda untuk penggunaan akhir komersial vs pribadi.tariffRateZONOS_PREFERREDjika dihilangkan. Memberitahu Zonos sumber tarif / metodologi mana yang akan diterapkan.calculationMethodDDP(pembeli prabayar) atauDDU(pembeli membayar di pintu). GunakanDDPuntuk prabayar. Mendorong apakahLandedCost.amountSubtotalsmenyertakan bea cukai / pajak.currencyCodearrivalDateRespons mencakup
amountSubtotals(duties,taxes,fees,shipping,landedCostTotal) — ini adalah angka yang Anda tampilkan kepada pembeli saat checkout dan yang dicetak pada faktur komersial.6.
shipmentCreateWorkflowLangkah terminal — membuat entitas
Shipment, menghasilkan label operator, dan (opsional) faktur komersial / slip kemasan.Untuk Akun Terverifikasi Japan Post, ini juga tempat Zonos memanggil Japan Post Label API (kode 52) atas nama Anda, menyuntikkan Nomor Pembayaran Kemudian Anda, membuat ID Deklarasi, dan menautkan ID Deklarasi ke nomor pelacakan yang dikembalikan oleh Japan Post.
Bidang kunci:
serviceLeveljapan_post.air.ems_merchandise). Harus berupa tingkat layananjapan_post.*.generateLabeltrue; harustrueuntuk mengembalikan label.contentsTypeSALE_OF_GOODS,ECOMMERCE_GOODS,COMMERCIAL_GOODS,COMMERCIAL_SAMPLE,RETURNED_GOODS,GIFT,DOCUMENTS,OTHER.nonDeliveryreferencesdeclaredValue/isDeclaredValueshipmentConsolidationIdPada
contentsType, dua nilai paling umum untuk lalu lintas Akun Terverifikasi adalahECOMMERCE_GOODS(dijual kepada konsumen, BtoC) danCOMMERCIAL_GOODS(dijual antar bisnis, BtoB). Nilai-nilai ini menentukanpkgTypeyang dikirim Zonos pada panggilan label Japan Post, sehingga pilihan tersebut mengubah apa yang dicetak pada deklarasi bea cukai — bukan sekadar label.Sub-input
nonDeliveryMemberitahu Japan Post apa yang harus dilakukan dengan paket jika tidak dapat dikirim — ditolak oleh penerima, ditolak di perbatasan, atau tidak dapat dikirim sesuai alamat.
optionmenerima persis empat nilai ini. Tidak ada nilaiRETURN— gunakanRETURN_AFTER_RETENTIONatauRETURN_IMMEDIATELYuntuk memilih kapan paket dikembalikan.option↕RETURN_AFTER_RETENTIONRETURN_IMMEDIATELYFORWARDABANDONAPI mengekspos kedua varian pengembalian secara terpisah; opsi Return pada Dashboard mencakup keduanya.
transportMethodmenerimaAIRatauMOST_ECONOMICAL, dan menentukan bagaimana paket yang dikembalikan melakukan perjalanan kembali. Ini hanya berlaku untuk dua opsiRETURN_*— Dashboard menampilkan bidang Return method yang sesuai hanya ketika Return dipilih.{ "nonDelivery": { "option": "RETURN_AFTER_RETENTION", "transportMethod": "MOST_ECONOMICAL" } }Pemilih If undeliverable pada dialog Create label Dashboard menulis bidang yang sama ini, sehingga label yang dibuat di Dashboard dan label yang dibuat melalui API berperilaku identik.
Sub-input
referencesBidang-bidang ini dicetak pada label operator dan / atau faktur komersial. Gunakan untuk menampilkan nomor PO, nomor lisensi, dan komentar teks bebas yang harus dilihat penerima atau otoritas bea cukai.
invoiceNumberpurchaseOrderNumberlicenseNumbercertificateNumberpaymentConditionscustomsRemarkstaxCodeRespons
Bidang menarik pada
Shipmentyang dikembalikan adalah:{ id trackingDetails { number } shipmentCartons { label { url labelImage } } }trackingDetails.numberadalah nomor pelacakan Japan Post.Objek
labeldapat mengembalikan label dengan dua cara — minta mana pun yang sesuai dengan alur kerja Anda (atau keduanya):urllabelImagePilih hanya bidang yang Anda butuhkan. Meminta
urlmembuat respons kecil; memintalabelImagemengembalikan label lengkap inline sehingga Anda tidak memerlukan perjalanan bolak-balik kedua untuk mengambilnya. Contoh di atas memintaurl.Tingkat layanan Japan Post
Berikan salah satu kode ini sebagai
serviceLevelCodedishipmentRatingCreateWorkflow.Kode tingkat layanan menggunakan titik, bukan garis bawah. Anda mungkin melihat bentuk garis bawah (
japan_post_air_parcel) dalam pesan kesalahan dan referensi internal, tetapi itu bukan input yang valid.Layanan udara
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-DLayanan permukaan
japan_post.surface.parcel2-5japan_post.surface.small_packet2-9japan_post.surface.printed_matter2-Bjapan_post.surface.letter2-DMemilih di antara layanan serupa
Paket kecil vs. International Air Packet. Keduanya dibatasi hingga 2 kg.
japan_post.air.packetadalah layanan paket kecil Japan Post yang dapat dilacak.japan_post.air.small_packetadalah setara yang tidak dapat dilacak. Jika Anda memerlukan pelacakan pada paket ringan, gunakanjapan_post.air.packet.Varian terdaftar. Untuk surat dan barang cetakan, pelacakan ditambahkan oleh versi terdaftar (書留) dari layanan tersebut.
japan_post.air.printed_matterdanjapan_post.air.lettertidak menyertakannya sendiri.Kode yang tidak digunakan lagi
japan_post.air.epacket_lightsebelumnya adalah International e-Packet Light. Japan Post mengganti nama layanan ini menjadi International Air Packet pada 1 Juni 2026, dan memperluasnya ke semua negara dan wilayah. Layanan itu sendiri tidak berubah.Kode lama masih dapat digunakan sehingga integrasi yang ada tetap berfungsi, tetapi gunakan
japan_post.air.packetuntuk pekerjaan baru.Kode mode transportasi
japan_post.air,japan_post.surface,japan_post.economy_air, danjapan_post.customjuga dapat digunakan, tetapi kode-kode ini mengidentifikasi mode transportasi atau fallback, bukan produk pos tertentu. Gunakan salah satu kode layanan di atas untuk pengiriman normal.Validasi kode yang Anda kirim
serviceLevelCodeyang tidak dikenali tidak memunculkan kesalahan. Permintaan mengembalikan HTTP 200 tanpa arrayerrors,serviceLevelkembali sebagainull, dan biaya pengiriman hilang dari total biaya pendaratan — sehingga respons terlihat benar padahal jumlahnya salah.Selalu pastikan bahwa
shipmentRatingCreateWorkflow.serviceLeveltidak bernilai null sebelum mengandalkan totalnya.Untuk mengambil daftar saat ini kapan saja:
{ serviceLevels(carrier: "carrier_00004c9b-9431-4518-bfbc-b9f8476335b1") { code name } }Kueri ini menggunakan ID operator. Memberikan kode operator
japan_postmengembalikan daftar kosong tanpa kesalahan.Penanganan kesalahan
errorsGraphQL standar dan menghentikan sisa rantai.shipmentCreateWorkflow. Jika diperlukan percobaan lagi, hubungi dukungan — jalur yang disarankan adalah mengirim ulang mutasi lengkap dengan input yang diperbaiki.VALIDATION_INVALID_TYPE_VARIABLE{ "errors": [ { "message": "invalid type for variable: 'shipmentInput'", "extensions": { "name": "shipmentInput", "code": "VALIDATION_INVALID_TYPE_VARIABLE" } } ] }Kesalahan ini menyebutkan seluruh variabel, bukan bidang yang sebenarnya salah. Ini hampir selalu berarti satu nilai enum di dalam variabel tersebut bukan anggota dari enum-nya — paling sering
nonDelivery.option,contentsType, atauserviceLevel.Ini bukan masalah tipe JSON. Memberi atau menghapus tanda kutip pada boolean dan angka Anda tidak akan mengubahnya, karena payload tidak pernah mencapai tahap itu — enum ditolak lebih dulu.
Untuk menemukan bidang yang salah, periksa setiap bidang bernilai enum dalam variabel tersebut terhadap nilai yang diterimanya:
nonDelivery.optionRETURN_AFTER_RETENTION,RETURN_IMMEDIATELY,FORWARD,ABANDON— bukanRETURNnonDelivery.transportMethodAIR,MOST_ECONOMICALcontentsTypeSALE_OF_GOODS,ECOMMERCE_GOODS,COMMERCIAL_GOODS,COMMERCIAL_SAMPLE,RETURNED_GOODS,GIFT,DOCUMENTS,OTHERserviceLeveljapan_post.*Anggota enum lengkap untuk input apa pun tercantum pada halaman jenisnya di referensi API.
Izin
Setiap langkah diamankan secara independen. Kunci API Anda harus memegang cakupan penulisan untuk setiap entitas dalam rantai (
ITEM_WRITE,CARTON_WRITE,SHIPMENT_RATING_WRITE,LANDED_COST_WRITE,SHIPMENT_WRITE). Peran pedagang standar pada Akun Terverifikasi memberikan semuanya.Langkah selanjutnya
CartonCreateWorkflowInput ItemCreateWorkflowInput LandedCostWorkFlowInput PartyCreateWorkflowInput ShipmentCreateWorkflowInput ShipmentRatingCreateWorkflowInput
cartonsCreateWorkflow itemCreateWorkflow landedCostCalculateWorkflow partyCreateWorkflow shipmentCreateWorkflow shipmentRatingCreateWorkflow
Apakah halaman ini bermanfaat?