將美國銷售稅免稅證明同步至客戶資料。
如果您銷售對象包括經銷商、政府機構或非營利組織,這些買家持有免稅證明,可豁免其在特定州的銷售稅。Zonos 會將這些證明儲存至客戶資料,以便在結帳時識別享有免稅資格的購物者。
豁免會按司法管轄區記錄。在南卡羅來納州享有免稅資格的客戶,並不會自動在德州享有免稅資格,因此客戶持有證明的每個州都是獨立的記錄,各自擁有自己的日期與證明編號。
豁免會附加至現有客戶,因此同步分為兩次呼叫:先建立客戶,再同步其證明。兩者都以您自己的客戶 ID 為鍵——即您在 Checkout 其他地方使用的同一個 customerId。Zonos 從不要求您儲存內部 ID。
customerId
此功能僅適用於自訂 API 整合。
您現在即可同步及管理豁免,這些記錄會儲存至客戶資料。從著陸成本的稅金中扣除豁免的 功能即將推出,因此目前同步的豁免尚不會改變購物者收到的報價稅金。現在進行同步, 代表功能上線時您的證明已經就緒。
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 是客戶免稅文件上列印的編號。依州別與豁免類型而定,這可能是轉售或賣家許可證編號、州免稅證明編號、直接繳稅許可證編號,或聯邦稅務 ID。
exemptionReference
每筆記錄都必須提供此欄位。請完全依照證明上的顯示方式儲存並傳送此編號——格式依司法管轄區而有很大差異(SR EAA 12-345678、85-8012345678C-9、12-3456789),Zonos 除了去除前後空白外,會原樣保留傳送的值。請勿變更大小寫或移除連字號與空格。
SR EAA 12-345678
85-8012345678C-9
12-3456789
出於隱私考量,讀取豁免記錄時不會回傳 exemptionReference,因為其中可能包含 聯邦稅務 ID,但仍可傳送此欄位。
記錄會逐一驗證。被拒絕的記錄會回報於 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 整合。
您現在即可同步及管理豁免,這些記錄會儲存至客戶資料。從著陸成本的稅金中扣除豁免的 功能即將推出,因此目前同步的豁免尚不會改變購物者收到的報價稅金。現在進行同步, 代表功能上線時您的證明已經就緒。
建立或更新客戶
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是客戶免稅文件上列印的編號。依州別與豁免類型而定,這可能是轉售或賣家許可證編號、州免稅證明編號、直接繳稅許可證編號,或聯邦稅務 ID。每筆記錄都必須提供此欄位。請完全依照證明上的顯示方式儲存並傳送此編號——格式依司法管轄區而有很大差異(
SR EAA 12-345678、85-8012345678C-9、12-3456789),Zonos 除了去除前後空白外,會原樣保留傳送的值。請勿變更大小寫或移除連字號與空格。出於隱私考量,讀取豁免記錄時不會回傳
exemptionReference,因為其中可能包含 聯邦稅務 ID,但仍可傳送此欄位。被拒絕的記錄
記錄會逐一驗證。被拒絕的記錄會回報於
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
這個頁面有幫助嗎?