DOCS

Skattebefrielser

Synkronisera amerikanska skattebefrielseintyg till en kundprofil.

Om ni säljer till återförsäljare, myndigheter eller ideella organisationer innehar dessa köpare befrielseintyg som befriar dem från omsättningsskatt i specifika delstater. Zonos lagrar dessa intyg mot en kundprofil så att en befriad köpare kan identifieras i Checkout.

Befrielser registreras per jurisdiktion. En kund som är skattebefriad i South Carolina är inte automatiskt befriad i Texas, så varje delstat kunden innehar ett intyg för är en separat post med egna datum och intygsnummer.

Befrielser kopplas till en befintlig kund, så synkronisering sker i två anrop: skapa kunden och synkronisera sedan deras intyg. Båda är kopplade till ert eget kund-ID — samma customerId som ni använder på andra ställen i Checkout. Zonos kräver aldrig att ni lagrar ett internt ID.

Den här funktionen är endast tillgänglig för anpassade API-integrationer.

Befrielser tillämpas ännu inte på landed cost-offerter

Ni kan synkronisera och hantera befrielser redan idag, och posterna lagras mot kundprofilen. Att dra av en befrielse från skatten på en landed cost kommer snart, så en synkroniserad befrielse ändrar ännu inte den skatt en köpare offereras. Att synkronisera nu innebär att era intyg redan finns på plats när det sker.

Skapa eller uppdatera kunden 

checkoutCustomerUpsert skapar en kundprofil, eller uppdaterar den om en redan finns för det customerId. Till skillnad från checkoutCustomerProfileAuthenticate kräver detta inte att köparen är närvarande, så ni kan förbereda er kundlista i förväg. Se skapa eller uppdatera en profil utan en köpare för det fullständiga fältbeteendet.

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

Eftersom den matchar på customerId uppdaterar upprepade anrop samma profil istället för att skapa dubbletter. Det är säkert att köra mot hela er kundlista vid varje synkronisering.

Synkronisera skattebefrielser 

checkoutCustomerTaxExemptionsSync accepterar flera kunder samtidigt. Varje post ersätter kundens fullständiga uppsättning befrielser.

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}

Ett utelämnat expiresAt innebär att intyget inte upphör att gälla. Ett utelämnat exemptionReason blir som standard UNSPECIFIED.

Så fungerar synkroniseringen 

Tre regler styr varje synkronisering.

Listan är den auktoritativa källan. taxExemptions är kundens fullständiga uppsättning, inte en lista över ändringar. Varje befrielse som redan finns registrerad men som saknas i listan tas bort — så slutar ett återkallat intyg att gälla. Att skicka en ofullständig lista tar tyst bort allt den utelämnar.

Varje post är en befrielse. Det finns inget sätt att registrera att en kund inte är befriad någonstans — se anmärkningen nedan.

Att ta bort alla befrielser är en tom lista. För att rensa en kunds intyg skickar ni dem med "taxExemptions": []. Att utelämna kunden helt från nyttolasten lämnar deras befintliga poster orörda.

Skicka endast jurisdiktioner kunden är befriad i

Zonos har ingen post för "inte befriad" — en jurisdiktion finns antingen med i listan eller inte. Om ert system lagrar befriade och icke-befriade jurisdiktioner tillsammans, filtrera fram de befriade innan ni synkroniserar. En icke-befriad post går inte att skilja från ett riktigt intyg och accepteras därför i stället för att avvisas, och kunden kommer att behandlas som befriad i den delstaten.

Befrielseorsaker 

exemptionReason beskriver varför kunden är befriad. Fältet är valfritt och standardvärdet är UNSPECIFIED, men det är värt besväret att ange det — se nedan.

Värde↕Gäller för↕
RESALEVaror köpta för återförsäljning snarare än konsumtion
FEDERAL_GOVERNMENTEn amerikansk federal myndighet eller departement
STATE_LOCAL_GOVERNMENTEn delstatlig myndighet, ett county, en kommun eller ett skoldistrikt
TRIBAL_GOVERNMENTEn federalt erkänd stam eller stammedlem
CHARITABLEEn välgörenhetsorganisation
RELIGIOUS_ORGANIZATIONEn kyrka eller annan religiös organisation
EDUCATIONAL_ORGANIZATIONEn skola eller ett universitet
DIRECT_PAYEn köpare som innehar ett direktbetalningstillstånd och redovisar skatten själv
OTHERAllt annat, inklusive utländsk diplomat, jordbruksproduktion, industriproduktion och direktreklam
UNSPECIFIEDIngen orsak angiven

Orsakerna delas in i två grupper, och skillnaden spelar roll. Entitetsbaserade orsaker — myndighet, välgörenhet, religion, utbildning — befriar köparen oavsett vad de köper. Användningsbaserade orsaker, framför allt RESALE, omfattar bara varor som kvalificerar sig: ett återförsäljningsintyg täcker lager köparen ska sälja vidare, inte kontorsmöblerna på samma order.

Utan en orsak kan Zonos inte skilja de två åt och kan bara befria hela ordrar, vilket är svårast att försvara för återförsäljningsintyg. Om de flesta av era befrielser gäller återförsäljning är det oftast betydligt mindre arbete att skicka RESALE som standard med undantag listade individuellt än att klassificera varje kund.

Intygsreferens 

exemptionReference är numret som står tryckt på kundens befrielsedokumentation. Beroende på delstat och typ av befrielse kan det vara ett återförsäljnings- eller säljartillståndsnummer, ett delstatligt befrielseintygsnummer, ett direktbetalningstillståndsnummer eller ett federalt skatte-ID.

Det krävs för varje post. Lagra och skicka det exakt som det står på intyget — format varierar kraftigt mellan jurisdiktioner (SR EAA 12-345678, 85-8012345678C-9, 12-3456789), och Zonos bevarar värdet som det skickas, bortsett från att omgivande blanksteg trimmas bort. Ändra inte versaler/gemener och ta inte bort bindestreck eller mellanslag.

Av integritetsskäl kan exemptionReference skickas men returneras inte vid inläsning av befrielser, eftersom det kan innehålla ett federalt skatte-ID.

Avvisade poster 

Poster valideras en i taget. En avvisad post rapporteras i rejected och gör inte att resten av batchen misslyckas, och den påverkar inte heller den befrielse som redan finns registrerad för den jurisdiktionen.

Kod↕Orsak↕
UNKNOWN_CUSTOMERIngen kund matchar customerId. Skapa kunden först
UNKNOWN_JURISDICTIONadministrativeArea är inte en erkänd amerikansk delstat, distrikt eller territorium
INVALID_DATE_RANGEexpiresAt ligger inte efter effectiveAt
MISSING_EXEMPTION_REFERENCEexemptionReference är tom
DUPLICATE_JURISDICTIONTvå poster i samma nyttolast delar land, område och startdatum. Den första behålls

Okända kunder avvisas i stället för att skapas, så ett felstavat customerId syns i svaret istället för att skapa en profil som aldrig matchar en verklig köpare.

Endast amerikanska administrativa områden valideras. Underindelningar i andra länder accepteras som de skickas.

Läsa av och ta bort 

Läs av en kunds befrielser för att bekräfta att en synkronisering har gått igenom:

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

För att ta bort alla befrielser för en kund — till exempel när de avslutar sitt konto — använd checkoutCustomerTaxExemptionsDelete. Den returnerar SUCCESS oavsett om kunden hade några befrielser eller inte, så det är säkert att anropa den mer än en gång.

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

Var den här sidan till hjälp?