Sincronizza i certificati di esenzione dall'imposta sulle vendite statunitense con un profilo cliente.
Se vendi a rivenditori, enti governativi o organizzazioni no profit, questi acquirenti possiedono certificati di esenzione che li esentano dall'imposta sulle vendite in stati specifici. Zonos archivia questi certificati in relazione a un profilo cliente in modo che un acquirente esente possa essere riconosciuto al momento del checkout.
Le esenzioni vengono registrate per giurisdizione. Un cliente esente in South Carolina non è automaticamente esente in Texas, quindi ogni stato per cui il cliente possiede un certificato costituisce un record separato con proprie date e numero di certificato.
Le esenzioni si applicano a un cliente esistente, quindi la sincronizzazione richiede due chiamate: creare il cliente, poi sincronizzare i suoi certificati. Entrambe utilizzano come chiave il tuo stesso ID cliente — lo stesso customerId che usi altrove in Checkout. Zonos non richiede mai di archiviare un ID interno.
Le esenzioni non sono ancora applicate ai preventivi di landed cost
Puoi sincronizzare e gestire le esenzioni fin da ora, e i record vengono archiviati nel
profilo cliente. La detrazione di un'esenzione dall'imposta su un landed cost sarà disponibile
a breve, quindi un'esenzione sincronizzata non modifica ancora l'imposta preventivata a un
acquirente. Sincronizzare ora significa che i tuoi certificati sono già pronti quando questo
avverrà.
checkoutCustomerUpsert crea un profilo cliente, oppure lo aggiorna se ne esiste già uno per quel customerId. A differenza di checkoutCustomerProfileAuthenticate, questa mutazione non richiede la presenza dell'acquirente, quindi puoi predisporre in anticipo l'elenco dei tuoi clienti. Consulta creare o aggiornare un profilo senza un acquirente per il comportamento completo dei campi.
Poiché la corrispondenza avviene su customerId, chiamarla ripetutamente aggiorna lo stesso profilo invece di creare duplicati. È sicuro eseguirla su tutto il tuo elenco clienti a ogni sincronizzazione.
L'elenco è autoritativo.taxExemptions rappresenta l'insieme completo delle esenzioni del cliente, non un elenco di modifiche. Qualsiasi esenzione già registrata ma assente dall'elenco viene rimossa — è così che un certificato revocato smette di essere applicato. L'invio di un elenco parziale rimuove silenziosamente tutto ciò che ne è escluso.
Ogni record è un'esenzione. Non esiste un modo per registrare che un cliente non è esente in un determinato luogo — vedi la nota qui sotto.
Rimuovere tutte le esenzioni equivale a un elenco vuoto. Per cancellare i certificati di un cliente, inviali con "taxExemptions": []. Omettere completamente il cliente dal payload lascia invariati i suoi record esistenti.
Invia solo le giurisdizioni in cui il cliente è esente
Zonos non prevede un record "non esente" — una giurisdizione è presente nell'elenco oppure non lo è.
Se il tuo sistema archivia insieme giurisdizioni esenti e non esenti, filtra quelle esenti prima
della sincronizzazione. Un record non esente è indistinguibile da un certificato reale, quindi
viene accettato anziché rifiutato, e il cliente verrà considerato esente in quello stato.
exemptionReason descrive il motivo per cui il cliente è esente. È facoltativo e ha come valore predefinito UNSPECIFIED, ma specificarlo vale lo sforzo — vedi sotto.
Valore↕
Si applica a↕
RESALE
Beni acquistati per la rivendita anziché per il consumo
FEDERAL_GOVERNMENT
Un'agenzia o un dipartimento federale statunitense
STATE_LOCAL_GOVERNMENT
Un'agenzia statale, una contea, un comune o un distretto scolastico
TRIBAL_GOVERNMENT
Una tribù riconosciuta a livello federale o un membro di una tribù
CHARITABLE
Un'organizzazione benefica no profit
RELIGIOUS_ORGANIZATION
Una chiesa o un'altra organizzazione religiosa
EDUCATIONAL_ORGANIZATION
Una scuola o un'università
DIRECT_PAY
Un acquirente titolare di un permesso di pagamento diretto che versa autonomamente l'imposta
OTHER
Qualsiasi altro caso, inclusi diplomatico straniero, produzione agricola, produzione industriale e vendita per corrispondenza
UNSPECIFIED
Nessun motivo indicato
I motivi si dividono in due gruppi, e la differenza è rilevante. I motivi basati sull'entità — governativo, benefico, religioso, educativo — esentano l'acquirente indipendentemente da ciò che acquista. I motivi basati sull'uso, in primis RESALE, coprono solo i beni idonei: un certificato di rivendita copre l'inventario che l'acquirente rivenderà, non i mobili da ufficio nello stesso ordine.
Senza un motivo, Zonos non può distinguere i due casi e può solo esentare interi ordini, il che è più difficile da giustificare per i certificati di rivendita. Se la maggior parte delle tue esenzioni riguarda la rivendita, inviare RESALE come valore predefinito con le eccezioni elencate singolarmente comporta di solito molto meno lavoro rispetto a classificare ogni cliente.
exemptionReference è il numero stampato sulla documentazione di esenzione del cliente. A seconda dello stato e del tipo di esenzione, può trattarsi di un numero di permesso di rivendita o di venditore, di un numero di certificato di esenzione statale, di un numero di permesso di pagamento diretto o di un codice fiscale federale.
È obbligatorio per ogni record. Archivialo e invialo esattamente come appare sul certificato — i formati variano notevolmente a seconda della giurisdizione (SR EAA 12-345678, 85-8012345678C-9, 12-3456789), e Zonos conserva il valore così come inviato, salvo la rimozione degli spazi bianchi circostanti. Non modificare la capitalizzazione né rimuovere trattini e spazi.
Per motivi di privacy, exemptionReference può essere inviato ma non viene restituito quando si
leggono le esenzioni, poiché potrebbe contenere un codice fiscale federale.
I record vengono convalidati singolarmente. Un record rifiutato viene segnalato in rejected e non fa fallire il resto del batch, né altera l'esenzione già registrata per quella giurisdizione.
Codice↕
Causa↕
UNKNOWN_CUSTOMER
Nessun cliente corrisponde a customerId. Crea prima il cliente
UNKNOWN_JURISDICTION
administrativeArea non è uno stato, distretto o territorio statunitense riconosciuto
INVALID_DATE_RANGE
expiresAt non è successivo a effectiveAt
MISSING_EXEMPTION_REFERENCE
exemptionReference è vuoto
DUPLICATE_JURISDICTION
Due record nello stesso payload condividono paese, area e data di decorrenza. Il primo viene mantenuto
I clienti sconosciuti vengono rifiutati anziché creati, così un customerId digitato in modo errato emerge nella risposta invece di creare un profilo che non corrisponderà mai a un acquirente reale.
Vengono convalidate solo le aree amministrative statunitensi. Le suddivisioni di altri paesi vengono accettate così come inviate.
Per rimuovere ogni esenzione di un cliente — ad esempio quando chiude il proprio account — usa checkoutCustomerTaxExemptionsDelete. Restituisce SUCCESS indipendentemente dal fatto che il cliente avesse o meno esenzioni, quindi è sicuro chiamarla più di una volta.
Esenzioni fiscali
Esenzioni fiscali
Sincronizza i certificati di esenzione dall'imposta sulle vendite statunitense con un profilo cliente.
Se vendi a rivenditori, enti governativi o organizzazioni no profit, questi acquirenti possiedono certificati di esenzione che li esentano dall'imposta sulle vendite in stati specifici. Zonos archivia questi certificati in relazione a un profilo cliente in modo che un acquirente esente possa essere riconosciuto al momento del checkout.
Le esenzioni vengono registrate per giurisdizione. Un cliente esente in South Carolina non è automaticamente esente in Texas, quindi ogni stato per cui il cliente possiede un certificato costituisce un record separato con proprie date e numero di certificato.
Le esenzioni si applicano a un cliente esistente, quindi la sincronizzazione richiede due chiamate: creare il cliente, poi sincronizzare i suoi certificati. Entrambe utilizzano come chiave il tuo stesso ID cliente — lo stesso
customerIdche usi altrove in Checkout. Zonos non richiede mai di archiviare un ID interno.Questa funzionalità è disponibile solo per le integrazioni API personalizzate.
Puoi sincronizzare e gestire le esenzioni fin da ora, e i record vengono archiviati nel profilo cliente. La detrazione di un'esenzione dall'imposta su un landed cost sarà disponibile a breve, quindi un'esenzione sincronizzata non modifica ancora l'imposta preventivata a un acquirente. Sincronizzare ora significa che i tuoi certificati sono già pronti quando questo avverrà.
Creare o aggiornare il cliente
checkoutCustomerUpsertcrea un profilo cliente, oppure lo aggiorna se ne esiste già uno per quelcustomerId. A differenza dicheckoutCustomerProfileAuthenticate, questa mutazione non richiede la presenza dell'acquirente, quindi puoi predisporre in anticipo l'elenco dei tuoi clienti. Consulta creare o aggiornare un profilo senza un acquirente per il comportamento completo dei campi.mutation checkoutCustomerUpsert($input: CheckoutCustomerProfileInput!) {checkoutCustomerUpsert(input: $input) {customerIdemailnamephone}}Poiché la corrispondenza avviene su
customerId, chiamarla ripetutamente aggiorna lo stesso profilo invece di creare duplicati. È sicuro eseguirla su tutto il tuo elenco clienti a ogni sincronizzazione.Sincronizzare le esenzioni fiscali
checkoutCustomerTaxExemptionsSyncaccetta più clienti alla volta. Ogni voce sostituisce l'intero insieme di esenzioni di quel cliente.mutation checkoutCustomerTaxExemptionsSync($input: [CheckoutCustomerTaxExemptionSyncInput!]!) {checkoutCustomerTaxExemptionsSync(input: $input) {customerIdaccepted {idcountryCodeadministrativeAreaeffectiveAtexpiresAtexemptionReason}rejected {codemessageadministrativeAreaeffectiveAt}}}Un
expiresAtomesso indica che il certificato non ha scadenza. UnexemptionReasonomesso ha come valore predefinitoUNSPECIFIED.Come funziona la sincronizzazione
Tre regole governano ogni sincronizzazione.
L'elenco è autoritativo.
taxExemptionsrappresenta l'insieme completo delle esenzioni del cliente, non un elenco di modifiche. Qualsiasi esenzione già registrata ma assente dall'elenco viene rimossa — è così che un certificato revocato smette di essere applicato. L'invio di un elenco parziale rimuove silenziosamente tutto ciò che ne è escluso.Ogni record è un'esenzione. Non esiste un modo per registrare che un cliente non è esente in un determinato luogo — vedi la nota qui sotto.
Rimuovere tutte le esenzioni equivale a un elenco vuoto. Per cancellare i certificati di un cliente, inviali con
"taxExemptions": []. Omettere completamente il cliente dal payload lascia invariati i suoi record esistenti.Zonos non prevede un record "non esente" — una giurisdizione è presente nell'elenco oppure non lo è. Se il tuo sistema archivia insieme giurisdizioni esenti e non esenti, filtra quelle esenti prima della sincronizzazione. Un record non esente è indistinguibile da un certificato reale, quindi viene accettato anziché rifiutato, e il cliente verrà considerato esente in quello stato.
Motivi di esenzione
exemptionReasondescrive il motivo per cui il cliente è esente. È facoltativo e ha come valore predefinitoUNSPECIFIED, ma specificarlo vale lo sforzo — vedi sotto.RESALEFEDERAL_GOVERNMENTSTATE_LOCAL_GOVERNMENTTRIBAL_GOVERNMENTCHARITABLERELIGIOUS_ORGANIZATIONEDUCATIONAL_ORGANIZATIONDIRECT_PAYOTHERUNSPECIFIEDI motivi si dividono in due gruppi, e la differenza è rilevante. I motivi basati sull'entità — governativo, benefico, religioso, educativo — esentano l'acquirente indipendentemente da ciò che acquista. I motivi basati sull'uso, in primis
RESALE, coprono solo i beni idonei: un certificato di rivendita copre l'inventario che l'acquirente rivenderà, non i mobili da ufficio nello stesso ordine.Senza un motivo, Zonos non può distinguere i due casi e può solo esentare interi ordini, il che è più difficile da giustificare per i certificati di rivendita. Se la maggior parte delle tue esenzioni riguarda la rivendita, inviare
RESALEcome valore predefinito con le eccezioni elencate singolarmente comporta di solito molto meno lavoro rispetto a classificare ogni cliente.Riferimento dell'esenzione
exemptionReferenceè il numero stampato sulla documentazione di esenzione del cliente. A seconda dello stato e del tipo di esenzione, può trattarsi di un numero di permesso di rivendita o di venditore, di un numero di certificato di esenzione statale, di un numero di permesso di pagamento diretto o di un codice fiscale federale.È obbligatorio per ogni record. Archivialo e invialo esattamente come appare sul certificato — i formati variano notevolmente a seconda della giurisdizione (
SR EAA 12-345678,85-8012345678C-9,12-3456789), e Zonos conserva il valore così come inviato, salvo la rimozione degli spazi bianchi circostanti. Non modificare la capitalizzazione né rimuovere trattini e spazi.Per motivi di privacy,
exemptionReferencepuò essere inviato ma non viene restituito quando si leggono le esenzioni, poiché potrebbe contenere un codice fiscale federale.Record rifiutati
I record vengono convalidati singolarmente. Un record rifiutato viene segnalato in
rejectede non fa fallire il resto del batch, né altera l'esenzione già registrata per quella giurisdizione.UNKNOWN_CUSTOMERcustomerId. Crea prima il clienteUNKNOWN_JURISDICTIONadministrativeAreanon è uno stato, distretto o territorio statunitense riconosciutoINVALID_DATE_RANGEexpiresAtnon è successivo aeffectiveAtMISSING_EXEMPTION_REFERENCEexemptionReferenceè vuotoDUPLICATE_JURISDICTIONI clienti sconosciuti vengono rifiutati anziché creati, così un
customerIddigitato in modo errato emerge nella risposta invece di creare un profilo che non corrisponderà mai a un acquirente reale.Vengono convalidate solo le aree amministrative statunitensi. Le suddivisioni di altri paesi vengono accettate così come inviate.
Rilettura e rimozione
Leggi le esenzioni di un cliente per confermare che una sincronizzazione sia andata a buon fine:
query checkoutCustomerTaxExemptions($customerId: String!) {checkoutCustomerTaxExemptions(customerId: $customerId) {countryCodeadministrativeAreaeffectiveAtexpiresAtexemptionReason}}Per rimuovere ogni esenzione di un cliente — ad esempio quando chiude il proprio account — usa
checkoutCustomerTaxExemptionsDelete. RestituisceSUCCESSindipendentemente dal fatto che il cliente avesse o meno esenzioni, quindi è sicuro chiamarla più di una volta.mutation checkoutCustomerTaxExemptionsDelete($customerId: String!) {checkoutCustomerTaxExemptionsDelete(customerId: $customerId)}CheckoutCustomerProfileInput CheckoutCustomerTaxExemptionSyncInput
checkoutCustomerTaxExemptionsDelete checkoutCustomerTaxExemptionsSync checkoutCustomerUpsert
Questa pagina è stata utile?