DOCS

Pengecualian pajak

Sinkronkan sertifikat pengecualian pajak penjualan A.S. ke profil pelanggan.

Jika Anda menjual kepada reseller, lembaga pemerintah, atau organisasi nonprofit, pembeli tersebut memiliki sertifikat pengecualian yang membebaskan mereka dari pajak penjualan di negara bagian tertentu. Zonos menyimpan sertifikat tersebut pada profil pelanggan sehingga pembeli yang dikecualikan dapat dikenali saat checkout.

Pengecualian dicatat per yurisdiksi. Pelanggan yang dikecualikan di South Carolina tidak secara otomatis dikecualikan di Texas, jadi setiap negara bagian tempat pelanggan memiliki sertifikat adalah catatan terpisah dengan tanggal dan nomor sertifikatnya sendiri.

Pengecualian melekat pada pelanggan yang sudah ada, jadi sinkronisasi terdiri dari dua panggilan: buat pelanggan, lalu sinkronkan sertifikat mereka. Keduanya menggunakan kunci customerId milik Anda sendiri — customerId yang sama yang Anda gunakan di tempat lain dalam Checkout. Zonos tidak pernah mewajibkan Anda menyimpan ID internal.

Fitur ini hanya tersedia untuk integrasi API kustom.

Pengecualian belum diterapkan pada kutipan landed cost

Anda dapat menyinkronkan dan mengelola pengecualian hari ini, dan catatannya disimpan pada profil pelanggan. Mengurangi pengecualian dari pajak pada landed cost akan segera hadir, jadi pengecualian yang disinkronkan belum mengubah pajak yang dikutip kepada pembeli. Menyinkronkan sekarang berarti sertifikat Anda sudah siap saat fitur ini aktif nanti.

Buat atau perbarui pelanggan 

checkoutCustomerUpsert membuat profil pelanggan, atau memperbaruinya jika sudah ada untuk customerId tersebut. Berbeda dengan checkoutCustomerProfileAuthenticate, ini tidak mengharuskan pembeli hadir, sehingga Anda dapat menyiapkan daftar pelanggan Anda terlebih dahulu. Lihat buat atau perbarui profil tanpa pembeli untuk perilaku lengkap setiap field.

1mutation checkoutCustomerUpsert($input: CheckoutCustomerProfileInput!) {
2 checkoutCustomerUpsert(input: $input) {
3 customerId
4 email
5 name
6 phone
7 }
8}

Karena mutasi ini mencocokkan berdasarkan customerId, memanggilnya berulang kali akan memperbarui profil yang sama alih-alih membuat duplikat. Aman untuk dijalankan di seluruh daftar pelanggan Anda pada setiap sinkronisasi.

Sinkronkan pengecualian pajak 

checkoutCustomerTaxExemptionsSync menerima beberapa pelanggan sekaligus. Setiap entri menggantikan seluruh set pengecualian pelanggan tersebut.

1mutation checkoutCustomerTaxExemptionsSync(
2$input: [CheckoutCustomerTaxExemptionSyncInput!]!
3) {
4 checkoutCustomerTaxExemptionsSync(input: $input) {
5 customerId
6 accepted {
7 id
8 countryCode
9 administrativeArea
10 effectiveAt
11 expiresAt
12 exemptionReason
13 }
14 rejected {
15 code
16 message
17 administrativeArea
18 effectiveAt
19 }
20 }
21}

expiresAt yang dihilangkan berarti sertifikat tidak kedaluwarsa. exemptionReason yang dihilangkan akan menggunakan nilai default UNSPECIFIED.

Cara kerja sinkronisasi 

Tiga aturan mengatur setiap sinkronisasi.

Daftar bersifat otoritatif. taxExemptions adalah set lengkap pelanggan tersebut, bukan daftar perubahan. Pengecualian mana pun yang sudah tercatat tetapi tidak ada dalam daftar akan dihapus — begitulah cara sertifikat yang ditarik berhenti diberlakukan. Mengirim daftar parsial secara diam-diam menghapus semua yang tidak disertakan.

Setiap catatan adalah pengecualian. Tidak ada cara untuk mencatat bahwa pelanggan tidak dikecualikan di suatu tempat — lihat catatan di bawah.

Menghapus semua pengecualian berarti daftar kosong. Untuk menghapus sertifikat pelanggan, kirimkan "taxExemptions": []. Membiarkan pelanggan tersebut di luar payload sepenuhnya akan membiarkan catatan yang ada tidak berubah.

Kirim hanya yurisdiksi tempat pelanggan dikecualikan

Zonos tidak memiliki catatan "tidak dikecualikan" — suatu yurisdiksi ada dalam daftar atau tidak. Jika sistem Anda menyimpan yurisdiksi yang dikecualikan dan tidak dikecualikan bersama-sama, saring menjadi hanya yang dikecualikan sebelum menyinkronkan. Catatan yang tidak dikecualikan tidak dapat dibedakan dari sertifikat asli, sehingga akan diterima alih-alih ditolak, dan pelanggan akan dianggap dikecualikan di negara bagian tersebut.

Alasan pengecualian 

exemptionReason menjelaskan alasan pelanggan dikecualikan. Bersifat opsional dan menggunakan nilai default UNSPECIFIED, tetapi menyediakannya sepadan dengan usahanya — lihat di bawah.

Nilai↕Berlaku untuk↕
RESALEBarang yang dibeli untuk dijual kembali, bukan untuk dikonsumsi
FEDERAL_GOVERNMENTLembaga atau departemen federal A.S.
STATE_LOCAL_GOVERNMENTLembaga negara bagian, kabupaten, kota, atau distrik sekolah
TRIBAL_GOVERNMENTSuku yang diakui secara federal atau anggota suku
CHARITABLEOrganisasi nonprofit amal
RELIGIOUS_ORGANIZATIONGereja atau organisasi keagamaan lainnya
EDUCATIONAL_ORGANIZATIONSekolah atau universitas
DIRECT_PAYPembeli yang memiliki izin direct pay dan menyetorkan pajak sendiri
OTHERLainnya, termasuk diplomat asing, produksi pertanian, produksi industri, dan direct mail
UNSPECIFIEDTidak ada alasan yang diberikan

Alasan terbagi menjadi dua kelompok, dan perbedaannya penting. Alasan berbasis entitas — pemerintah, amal, keagamaan, pendidikan — mengecualikan pembeli terlepas dari apa yang mereka beli. Alasan berbasis penggunaan, terutama RESALE, hanya mencakup barang yang memenuhi syarat: sertifikat resale mencakup inventaris yang akan dijual kembali oleh pembeli, bukan furnitur kantor pada pesanan yang sama.

Tanpa alasan, Zonos tidak dapat membedakan keduanya dan hanya dapat mengecualikan seluruh pesanan, yang paling sulit dipertahankan untuk sertifikat resale. Jika sebagian besar pengecualian Anda bersifat resale, mengirim RESALE sebagai default dengan pengecualian yang dicantumkan secara individual biasanya jauh lebih sedikit pekerjaannya dibandingkan mengklasifikasikan setiap pelanggan.

Referensi pengecualian 

exemptionReference adalah nomor yang tercetak pada dokumen pengecualian pelanggan. Tergantung pada negara bagian dan jenis pengecualiannya, itu dapat berupa nomor izin resale atau seller's permit, nomor sertifikat pengecualian negara bagian, nomor izin direct pay, atau ID pajak federal.

Wajib diisi pada setiap catatan. Simpan dan kirimkan persis seperti tertera pada sertifikat — formatnya sangat bervariasi menurut yurisdiksi (SR EAA 12-345678, 85-8012345678C-9, 12-3456789), dan Zonos mempertahankan nilai tersebut apa adanya kecuali memangkas spasi di sekitarnya. Jangan mengubah kapitalisasi atau menghapus tanda hubung dan spasi.

Demi privasi, exemptionReference dapat dikirim tetapi tidak dikembalikan saat membaca kembali pengecualian, karena mungkin berisi ID pajak federal.

Catatan yang ditolak 

Catatan divalidasi satu per satu. Catatan yang ditolak dilaporkan dalam rejected dan tidak menggagalkan sisa batch, juga tidak mengganggu pengecualian yang sudah tercatat untuk yurisdiksi tersebut.

Kode↕Penyebab↕
UNKNOWN_CUSTOMERTidak ada pelanggan yang cocok dengan customerId. Buat pelanggan terlebih dahulu
UNKNOWN_JURISDICTIONadministrativeArea bukan negara bagian, distrik, atau teritori A.S. yang dikenali
INVALID_DATE_RANGEexpiresAt tidak setelah effectiveAt
MISSING_EXEMPTION_REFERENCEexemptionReference kosong
DUPLICATE_JURISDICTIONDua catatan dalam satu payload memiliki negara, area, dan tanggal efektif yang sama. Catatan pertama dipertahankan

Pelanggan yang tidak dikenal ditolak alih-alih dibuat, sehingga customerId yang salah ketik akan muncul dalam respons, bukan membuat profil yang tidak akan pernah cocok dengan pembeli asli.

Hanya area administratif A.S. yang divalidasi. Subdivisi negara lain diterima apa adanya.

Baca kembali dan hapus 

Baca pengecualian pelanggan untuk memastikan sinkronisasi berhasil:

1query checkoutCustomerTaxExemptions($customerId: String!) {
2 checkoutCustomerTaxExemptions(customerId: $customerId) {
3 countryCode
4 administrativeArea
5 effectiveAt
6 expiresAt
7 exemptionReason
8 }
9}

Untuk menghapus setiap pengecualian bagi seorang pelanggan — misalnya, ketika mereka menutup akun mereka — gunakan checkoutCustomerTaxExemptionsDelete. Ini mengembalikan SUCCESS baik pelanggan tersebut memiliki pengecualian atau tidak, sehingga aman untuk dipanggil lebih dari sekali.

1mutation checkoutCustomerTaxExemptionsDelete($customerId: String!) {
2 checkoutCustomerTaxExemptionsDelete(customerId: $customerId)
3}
Pesan demo

Apakah halaman ini bermanfaat?