DOCS

Belastingvrijstellingen

Synchroniseer Amerikaanse omzetbelastingvrijstellingscertificaten met een klantprofiel.

Als u verkoopt aan wederverkopers, overheidsinstanties of non-profitorganisaties, beschikken die kopers over vrijstellingscertificaten waarmee ze zijn vrijgesteld van omzetbelasting in bepaalde staten. Zonos slaat deze certificaten op bij een klantprofiel, zodat een vrijgestelde koper bij checkout kan worden herkend.

Vrijstellingen worden per rechtsgebied vastgelegd. Een klant die is vrijgesteld in South Carolina is niet automatisch vrijgesteld in Texas, dus elke staat waarvoor de klant een certificaat heeft, is een apart record met eigen datums en certificaatnummer.

Vrijstellingen worden gekoppeld aan een bestaande klant, dus synchroniseren gebeurt in twee calls: eerst maakt u de klant aan, daarna synchroniseert u de certificaten. Beide zijn gekoppeld aan uw eigen klant-ID — dezelfde customerId die u elders in Checkout gebruikt. Zonos vereist nooit dat u een intern ID opslaat.

Deze functie is alleen beschikbaar voor aangepaste API-integraties.

Vrijstellingen worden nog niet toegepast op landed cost-offertes

U kunt vrijstellingen vandaag al synchroniseren en beheren, en de records worden opgeslagen bij het klantprofiel. Het aftrekken van een vrijstelling van de belasting op landed cost komt binnenkort beschikbaar, dus een gesynchroniseerde vrijstelling verandert de belasting die aan een shopper wordt voorgeschoteld nog niet. Door nu al te synchroniseren, staan uw certificaten al klaar zodra dit wel het geval is.

Klant aanmaken of bijwerken 

checkoutCustomerUpsert maakt een klantprofiel aan, of werkt dit bij als er al een profiel bestaat voor die customerId. In tegenstelling tot checkoutCustomerProfileAuthenticate is het hierbij niet vereist dat de shopper aanwezig is, zodat u uw klantenlijst vooraf kunt voorbereiden. Zie een profiel aanmaken of bijwerken zonder shopper voor het volledige veldgedrag.

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

Omdat er wordt gematcht op customerId, wordt bij herhaaldelijk aanroepen hetzelfde profiel bijgewerkt in plaats van dat er duplicaten worden aangemaakt. Het is veilig om dit bij elke synchronisatie voor uw volledige klantenlijst uit te voeren.

Belastingvrijstellingen synchroniseren 

checkoutCustomerTaxExemptionsSync accepteert meerdere klanten tegelijk. Elke invoer vervangt de volledige set vrijstellingen van die klant.

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}

Als expiresAt wordt weggelaten, betekent dit dat het certificaat niet verloopt. Als exemptionReason wordt weggelaten, wordt standaard UNSPECIFIED gebruikt.

Hoe synchroniseren werkt 

Drie regels gelden voor elke synchronisatie.

De lijst is leidend. taxExemptions is de volledige set van de klant, niet een lijst met wijzigingen. Elke vrijstelling die al is geregistreerd maar ontbreekt in de lijst, wordt verwijderd — zo stopt een ingetrokken certificaat met geldig te zijn. Het versturen van een gedeeltelijke lijst verwijdert stilzwijgend alles wat erin ontbreekt.

Elk record is een vrijstelling. Er is geen manier om vast te leggen dat een klant ergens niet is vrijgesteld — zie de opmerking hieronder.

Alle vrijstellingen verwijderen is een lege lijst. Om de certificaten van een klant te wissen, verstuurt u deze met "taxExemptions": []. Als u de klant volledig weglaat uit de payload, blijven de bestaande records ongewijzigd.

Verstuur alleen rechtsgebieden waarin de klant is vrijgesteld

Zonos heeft geen record voor „niet vrijgesteld” — een rechtsgebied staat wel of niet in de lijst. Als uw systeem vrijgestelde en niet-vrijgestelde rechtsgebieden samen opslaat, filtert u vóór het synchroniseren op de vrijgestelde gebieden. Een niet-vrijgesteld record is niet te onderscheiden van een echt certificaat, dus het wordt geaccepteerd in plaats van afgewezen, en de klant wordt in die staat als vrijgesteld behandeld.

Vrijstellingsredenen 

exemptionReason beschrijft waarom de klant is vrijgesteld. Het veld is optioneel en standaard is dit UNSPECIFIED, maar het is de moeite waard om dit toch op te geven — zie hieronder.

Waarde↕Van toepassing op↕
RESALEGoederen die zijn gekocht om door te verkopen in plaats van te consumeren
FEDERAL_GOVERNMENTEen Amerikaanse federale instantie of afdeling
STATE_LOCAL_GOVERNMENTEen staatsinstantie, county, gemeente of schooldistrict
TRIBAL_GOVERNMENTEen federaal erkende stam of stamlid
CHARITABLEEen liefdadige non-profitorganisatie
RELIGIOUS_ORGANIZATIONEen kerk of andere religieuze organisatie
EDUCATIONAL_ORGANIZATIONEen school of universiteit
DIRECT_PAYEen koper met een direct-pay-vergunning die zelf belasting afdraagt
OTHERAl het overige, waaronder buitenlandse diplomaten, landbouwproductie, industriële productie en direct mail
UNSPECIFIEDGeen reden opgegeven

Redenen vallen in twee groepen uiteen, en dat verschil is belangrijk. Entiteitsgebaseerde redenen — overheid, liefdadigheid, religieus, onderwijs — stellen de koper vrij ongeacht wat ze kopen. Gebruiksgebaseerde redenen, met RESALE voorop, dekken alleen kwalificerende goederen: een wederverkoopcertificaat dekt voorraad die de koper zal doorverkopen, niet het kantoormeubilair op dezelfde bestelling.

Zonder een reden kan Zonos geen onderscheid maken tussen de twee en kan alleen de hele bestelling worden vrijgesteld, wat het lastigst te verantwoorden is bij wederverkoopcertificaten. Als de meeste van uw vrijstellingen wederverkoop betreffen, is het meestal veel minder werk om RESALE als standaard te versturen en uitzonderingen afzonderlijk te vermelden dan om elke klant individueel te classificeren.

Vrijstellingsreferentie 

exemptionReference is het nummer dat op de vrijstellingsdocumenten van de klant staat vermeld. Afhankelijk van de staat en het type vrijstelling kan dit een wederverkoop- of verkopersvergunningsnummer zijn, een staatsvrijstellingscertificaatnummer, een direct-pay-vergunningsnummer of een federaal belastingnummer.

Dit veld is verplicht bij elk record. Sla het op en verstuur het exact zoals het op het certificaat staat — de indeling verschilt sterk per rechtsgebied (SR EAA 12-345678, 85-8012345678C-9, 12-3456789), en Zonos behoudt de waarde zoals verzonden, afgezien van het verwijderen van omliggende spaties. Wijzig geen hoofdlettergebruik en verwijder geen streepjes of spaties.

Om privacyredenen kan exemptionReference wel worden verstuurd, maar wordt deze niet teruggegeven bij het opvragen van vrijstellingen, omdat het veld een federaal belastingnummer kan bevatten.

Afgewezen records 

Records worden één voor één gevalideerd. Een afgewezen record wordt gerapporteerd in rejected en zorgt er niet voor dat de rest van de batch mislukt, en het heeft ook geen invloed op de vrijstelling die al voor dat rechtsgebied is geregistreerd.

Code↕Oorzaak↕
UNKNOWN_CUSTOMERGeen enkele klant komt overeen met customerId. Maak eerst de klant aan
UNKNOWN_JURISDICTIONadministrativeArea is geen herkende Amerikaanse staat, district of territorium
INVALID_DATE_RANGEexpiresAt ligt niet na effectiveAt
MISSING_EXEMPTION_REFERENCEexemptionReference is leeg
DUPLICATE_JURISDICTIONTwee records in dezelfde payload delen hetzelfde land, gebied en dezelfde ingangsdatum. Het eerste record wordt behouden

Onbekende klanten worden afgewezen in plaats van aangemaakt, zodat een verkeerd getypte customerId zichtbaar wordt in de response in plaats van dat er een profiel wordt aangemaakt dat nooit bij een echte koper past.

Alleen Amerikaanse administratieve gebieden worden gevalideerd. Onderverdelingen van andere landen worden geaccepteerd zoals verzonden.

Terugkoppelen en verwijderen 

Lees de vrijstellingen van een klant uit om te bevestigen dat een synchronisatie is geslaagd:

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

Gebruik checkoutCustomerTaxExemptionsDelete om alle vrijstellingen van een klant te verwijderen — bijvoorbeeld wanneer deze het account sluit. Deze mutatie retourneert SUCCESS, ongeacht of de klant vrijstellingen had, dus u kunt deze veilig meerdere keren aanroepen.

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

Was deze pagina nuttig?