將美國銷售稅免稅證明同步至客戶檔案。
如果您銷售給轉售商、政府機關或非營利組織,這些買方會持有免稅證明,使他們在特定州免繳銷售稅。Zonos 會將這些證明儲存在客戶檔案中,以便在結帳時識別出享有免稅資格的買方。
豁免是按司法管轄區記錄的。在南卡羅來納州享有免稅資格的客戶,並不會自動在德克薩斯州也享有免稅資格,因此客戶持有證明的每個州都是一筆獨立的記錄,各自擁有自己的日期和證明編號。
豁免會附加至現有客戶,因此同步需要兩次呼叫:先建立客戶,再同步其證明。兩者都以您自己的客戶 ID 為索引鍵——也就是您在 Checkout 其他地方使用的相同 customerId。Zonos 從不要求您儲存內部 ID。
customerId
此功能僅適用於自訂 API 整合。
您現在就可以同步及管理豁免,這些記錄會儲存在客戶檔案中。從 landed cost 的稅金中扣除豁免的 功能即將推出,因此目前同步的豁免尚不會變更向購物者報價的稅金。現在就先同步,可確保該功能 推出時,您的證明已經就緒。
checkoutCustomerUpsert 會建立客戶檔案,如果該 customerId 已存在對應檔案,則會更新它。與 checkoutCustomerProfileAuthenticate 不同,此操作不需要購物者在場,因此您可以提前佈建您的客戶清單。完整的欄位行為請參閱在沒有購物者的情況下建立或更新檔案。
checkoutCustomerUpsert
checkoutCustomerProfileAuthenticate
mutation checkoutCustomerUpsert($input: CheckoutCustomerProfileInput!) {
checkoutCustomerUpsert(input: $input) {
email
name
phone
}
因為它是以 customerId 進行比對,重複呼叫只會更新同一筆檔案,而不會建立重複項目。您可以放心地在每次同步時,對整個客戶清單執行此操作。
checkoutCustomerTaxExemptionsSync 可一次接受多位客戶。每個項目都會取代該客戶完整的豁免集合。
checkoutCustomerTaxExemptionsSync
mutation checkoutCustomerTaxExemptionsSync(
$input: [CheckoutCustomerTaxExemptionSyncInput!]!
) {
checkoutCustomerTaxExemptionsSync(input: $input) {
accepted {
id
countryCode
administrativeArea
effectiveAt
expiresAt
exemptionReason
rejected {
code
message
省略 expiresAt 表示該證明沒有到期日。省略 exemptionReason 則預設為 UNSPECIFIED。
UNSPECIFIED
每次同步都遵循三項規則。
清單具有權威性。 taxExemptions 是客戶的完整集合,而非變更清單。任何已在記錄中、但未出現在清單裡的豁免都會被移除——這就是撤銷的證明停止生效的方式。傳送部分清單會在無聲無息間移除清單未列出的所有項目。
taxExemptions
每筆記錄都代表一項豁免。 沒有辦法記錄客戶在某處「不」享有免稅資格——請參閱下方的注意事項。
移除所有豁免即為傳送空清單。 若要清除客戶的證明,請以 "taxExemptions": [] 傳送。若在請求內容中完全省略該客戶,則其現有記錄將維持不變。
"taxExemptions": []
Zonos 沒有「不豁免」的記錄——司法管轄區不是在清單中,就是不在清單中。如果您的系統會將免稅 與非免稅的司法管轄區儲存在一起,請在同步前先篩選出免稅的項目。非免稅記錄與真正的證明無法 區分,因此會被接受而非拒絕,該客戶將被視為在該州享有免稅資格。
exemptionReason 說明客戶享有免稅資格的原因。此欄位為選填,預設為 UNSPECIFIED,但值得花心力提供——原因請見下方。
RESALE
FEDERAL_GOVERNMENT
STATE_LOCAL_GOVERNMENT
TRIBAL_GOVERNMENT
CHARITABLE
RELIGIOUS_ORGANIZATION
EDUCATIONAL_ORGANIZATION
DIRECT_PAY
OTHER
原因可分為兩大類,而這項區別十分重要。以身分為基礎的原因——政府、慈善、宗教、教育——無論買方購買什麼,都能使其享有免稅資格。以用途為基礎的原因,尤其是 RESALE,僅涵蓋符合資格的商品:轉售證明涵蓋買方將轉售的存貨,而不涵蓋同一筆訂單中的辦公家具。
如果未提供原因,Zonos 便無法區分這兩者,只能將整筆訂單視為免稅,而這對轉售證明來說是最難站得住腳的作法。如果您大部分的豁免都屬於轉售性質,將 RESALE 設為預設值、再個別列出例外情況,通常比逐一為每位客戶分類要省事得多。
exemptionReference 是印在客戶免稅文件上的編號。依州別及豁免類型不同,這可能是轉售或賣家許可證號碼、州免稅證明編號、直接繳稅許可證號碼,或聯邦稅籍編號。
exemptionReference
每筆記錄都必須提供此欄位。請完全依照證明上顯示的樣式儲存並傳送——格式因司法管轄區而異(SR EAA 12-345678、85-8012345678C-9、12-3456789),Zonos 除了去除前後的空白字元外,會保留您傳送的原始值。請勿變更大小寫,也不要移除連字號或空格。
SR EAA 12-345678
85-8012345678C-9
12-3456789
基於隱私考量,exemptionReference 可以傳送,但在讀回豁免資料時不會傳回,因為其中可能包含 聯邦稅籍編號。
記錄會逐筆進行驗證。遭拒絕的記錄會回報在 rejected 中,不會導致批次中其餘記錄失敗,也不會影響該司法管轄區已在記錄中的豁免。
rejected
UNKNOWN_CUSTOMER
UNKNOWN_JURISDICTION
INVALID_DATE_RANGE
MISSING_EXEMPTION_REFERENCE
DUPLICATE_JURISDICTION
未知的客戶會被拒絕而非自動建立,因此輸入錯誤的 customerId 會直接顯示在回應中,而不會建立一個永遠對應不到真實買方的檔案。
只有美國的行政區域會經過驗證。其他國家的行政區劃分則會依傳送內容原樣接受。
讀回客戶的豁免資料,以確認同步已成功套用:
query checkoutCustomerTaxExemptions($customerId: String!) {
checkoutCustomerTaxExemptions(customerId: $customerId) {
若要移除某位客戶的所有豁免——例如當他們關閉帳戶時——請使用 checkoutCustomerTaxExemptionsDelete。無論該客戶是否有任何豁免記錄,此操作都會回傳 SUCCESS,因此可以安全地重複呼叫。
checkoutCustomerTaxExemptionsDelete
SUCCESS
mutation checkoutCustomerTaxExemptionsDelete($customerId: String!) {
checkoutCustomerTaxExemptionsDelete(customerId: $customerId)
CheckoutCustomerProfileInput CheckoutCustomerTaxExemptionSyncInput
checkoutCustomerTaxExemptionsDelete checkoutCustomerTaxExemptionsSync checkoutCustomerUpsert
稅務豁免
稅務豁免
將美國銷售稅免稅證明同步至客戶檔案。
如果您銷售給轉售商、政府機關或非營利組織,這些買方會持有免稅證明,使他們在特定州免繳銷售稅。Zonos 會將這些證明儲存在客戶檔案中,以便在結帳時識別出享有免稅資格的買方。
豁免是按司法管轄區記錄的。在南卡羅來納州享有免稅資格的客戶,並不會自動在德克薩斯州也享有免稅資格,因此客戶持有證明的每個州都是一筆獨立的記錄,各自擁有自己的日期和證明編號。
豁免會附加至現有客戶,因此同步需要兩次呼叫:先建立客戶,再同步其證明。兩者都以您自己的客戶 ID 為索引鍵——也就是您在 Checkout 其他地方使用的相同
customerId。Zonos 從不要求您儲存內部 ID。此功能僅適用於自訂 API 整合。
您現在就可以同步及管理豁免,這些記錄會儲存在客戶檔案中。從 landed cost 的稅金中扣除豁免的 功能即將推出,因此目前同步的豁免尚不會變更向購物者報價的稅金。現在就先同步,可確保該功能 推出時,您的證明已經就緒。
建立或更新客戶
checkoutCustomerUpsert會建立客戶檔案,如果該customerId已存在對應檔案,則會更新它。與checkoutCustomerProfileAuthenticate不同,此操作不需要購物者在場,因此您可以提前佈建您的客戶清單。完整的欄位行為請參閱在沒有購物者的情況下建立或更新檔案。mutation checkoutCustomerUpsert($input: CheckoutCustomerProfileInput!) {checkoutCustomerUpsert(input: $input) {customerIdemailnamephone}}因為它是以
customerId進行比對,重複呼叫只會更新同一筆檔案,而不會建立重複項目。您可以放心地在每次同步時,對整個客戶清單執行此操作。同步稅務豁免
checkoutCustomerTaxExemptionsSync可一次接受多位客戶。每個項目都會取代該客戶完整的豁免集合。mutation checkoutCustomerTaxExemptionsSync($input: [CheckoutCustomerTaxExemptionSyncInput!]!) {checkoutCustomerTaxExemptionsSync(input: $input) {customerIdaccepted {idcountryCodeadministrativeAreaeffectiveAtexpiresAtexemptionReason}rejected {codemessageadministrativeAreaeffectiveAt}}}省略
expiresAt表示該證明沒有到期日。省略exemptionReason則預設為UNSPECIFIED。同步的運作方式
每次同步都遵循三項規則。
清單具有權威性。
taxExemptions是客戶的完整集合,而非變更清單。任何已在記錄中、但未出現在清單裡的豁免都會被移除——這就是撤銷的證明停止生效的方式。傳送部分清單會在無聲無息間移除清單未列出的所有項目。每筆記錄都代表一項豁免。 沒有辦法記錄客戶在某處「不」享有免稅資格——請參閱下方的注意事項。
移除所有豁免即為傳送空清單。 若要清除客戶的證明,請以
"taxExemptions": []傳送。若在請求內容中完全省略該客戶,則其現有記錄將維持不變。Zonos 沒有「不豁免」的記錄——司法管轄區不是在清單中,就是不在清單中。如果您的系統會將免稅 與非免稅的司法管轄區儲存在一起,請在同步前先篩選出免稅的項目。非免稅記錄與真正的證明無法 區分,因此會被接受而非拒絕,該客戶將被視為在該州享有免稅資格。
免稅原因
exemptionReason說明客戶享有免稅資格的原因。此欄位為選填,預設為UNSPECIFIED,但值得花心力提供——原因請見下方。RESALEFEDERAL_GOVERNMENTSTATE_LOCAL_GOVERNMENTTRIBAL_GOVERNMENTCHARITABLERELIGIOUS_ORGANIZATIONEDUCATIONAL_ORGANIZATIONDIRECT_PAYOTHERUNSPECIFIED原因可分為兩大類,而這項區別十分重要。以身分為基礎的原因——政府、慈善、宗教、教育——無論買方購買什麼,都能使其享有免稅資格。以用途為基礎的原因,尤其是
RESALE,僅涵蓋符合資格的商品:轉售證明涵蓋買方將轉售的存貨,而不涵蓋同一筆訂單中的辦公家具。如果未提供原因,Zonos 便無法區分這兩者,只能將整筆訂單視為免稅,而這對轉售證明來說是最難站得住腳的作法。如果您大部分的豁免都屬於轉售性質,將
RESALE設為預設值、再個別列出例外情況,通常比逐一為每位客戶分類要省事得多。免稅參考編號
exemptionReference是印在客戶免稅文件上的編號。依州別及豁免類型不同,這可能是轉售或賣家許可證號碼、州免稅證明編號、直接繳稅許可證號碼,或聯邦稅籍編號。每筆記錄都必須提供此欄位。請完全依照證明上顯示的樣式儲存並傳送——格式因司法管轄區而異(
SR EAA 12-345678、85-8012345678C-9、12-3456789),Zonos 除了去除前後的空白字元外,會保留您傳送的原始值。請勿變更大小寫,也不要移除連字號或空格。基於隱私考量,
exemptionReference可以傳送,但在讀回豁免資料時不會傳回,因為其中可能包含 聯邦稅籍編號。遭拒絕的記錄
記錄會逐筆進行驗證。遭拒絕的記錄會回報在
rejected中,不會導致批次中其餘記錄失敗,也不會影響該司法管轄區已在記錄中的豁免。UNKNOWN_CUSTOMERcustomerId。請先建立客戶UNKNOWN_JURISDICTIONadministrativeArea不是可識別的美國州、特區或領地INVALID_DATE_RANGEexpiresAt沒有晚於effectiveAtMISSING_EXEMPTION_REFERENCEexemptionReference為空DUPLICATE_JURISDICTION未知的客戶會被拒絕而非自動建立,因此輸入錯誤的
customerId會直接顯示在回應中,而不會建立一個永遠對應不到真實買方的檔案。只有美國的行政區域會經過驗證。其他國家的行政區劃分則會依傳送內容原樣接受。
讀回與移除
讀回客戶的豁免資料,以確認同步已成功套用:
query checkoutCustomerTaxExemptions($customerId: String!) {checkoutCustomerTaxExemptions(customerId: $customerId) {countryCodeadministrativeAreaeffectiveAtexpiresAtexemptionReason}}若要移除某位客戶的所有豁免——例如當他們關閉帳戶時——請使用
checkoutCustomerTaxExemptionsDelete。無論該客戶是否有任何豁免記錄,此操作都會回傳SUCCESS,因此可以安全地重複呼叫。mutation checkoutCustomerTaxExemptionsDelete($customerId: String!) {checkoutCustomerTaxExemptionsDelete(customerId: $customerId)}CheckoutCustomerProfileInput CheckoutCustomerTaxExemptionSyncInput
checkoutCustomerTaxExemptionsDelete checkoutCustomerTaxExemptionsSync checkoutCustomerUpsert
這個頁面有幫助嗎?