DOCS

Steuerbefreiungen

Synchronisieren Sie US-Steuerbefreiungsbescheinigungen mit einem Kundenprofil.

Wenn Sie an Wiederverkäufer, Regierungsbehörden oder gemeinnützige Organisationen verkaufen, besitzen diese Käufer Befreiungsbescheinigungen, die sie in bestimmten Bundesstaaten von der Umsatzsteuer befreien. Zonos speichert diese Bescheinigungen bei einem Kundenprofil, damit ein befreiter Käufer beim Checkout erkannt werden kann.

Befreiungen werden pro Rechtsgebiet erfasst. Ein Kunde, der in South Carolina befreit ist, ist nicht automatisch auch in Texas befreit. Jeder Bundesstaat, für den der Kunde eine Bescheinigung besitzt, ist daher ein eigener Datensatz mit eigenen Daten und einer eigenen Bescheinigungsnummer.

Befreiungen werden an einen bestehenden Kunden angehängt, daher erfolgt die Synchronisierung in zwei Aufrufen: Zuerst wird der Kunde angelegt, dann werden seine Bescheinigungen synchronisiert. Beide Aufrufe verwenden Ihre eigene Kunden-ID als Schlüssel – dieselbe customerId, die Sie auch an anderer Stelle in Checkout verwenden. Zonos verlangt niemals, dass Sie eine interne ID speichern.

Diese Funktion steht nur für individuelle API-Integrationen zur Verfügung.

Befreiungen werden noch nicht auf Landed-Cost-Angebote angewendet

Sie können Befreiungen schon heute synchronisieren und verwalten, und die Datensätze werden beim Kundenprofil gespeichert. Der Abzug einer Befreiung von der Steuer auf einen Landed Cost folgt in Kürze; eine synchronisierte Befreiung ändert die einem Käufer angezeigte Steuer also noch nicht. Wenn Sie jetzt schon synchronisieren, liegen Ihre Bescheinigungen bereits vor, sobald diese Funktion eingeführt wird.

Kunden anlegen oder aktualisieren 

checkoutCustomerUpsert legt ein Kundenprofil an oder aktualisiert es, falls für diese customerId bereits eines existiert. Anders als checkoutCustomerProfileAuthenticate erfordert dies nicht, dass der Käufer anwesend ist, sodass Sie Ihre Kundenliste im Voraus anlegen können. Das vollständige Feldverhalten finden Sie unter Profil ohne Käufer anlegen oder aktualisieren.

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

Da die Zuordnung über customerId erfolgt, aktualisiert ein wiederholter Aufruf dasselbe Profil, statt Duplikate zu erzeugen. Sie können ihn bei jeder Synchronisierung gefahrlos für Ihre gesamte Kundenliste ausführen.

Steuerbefreiungen synchronisieren 

checkoutCustomerTaxExemptionsSync akzeptiert mehrere Kunden gleichzeitig. Jeder Eintrag ersetzt den vollständigen Satz an Befreiungen dieses Kunden.

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}

Ein ausgelassenes expiresAt bedeutet, dass die Bescheinigung nicht abläuft. Ein ausgelassenes exemptionReason wird standardmäßig auf UNSPECIFIED gesetzt.

Funktionsweise der Synchronisierung 

Drei Regeln gelten für jede Synchronisierung.

Die Liste ist maßgeblich. taxExemptions ist der vollständige Satz an Befreiungen des Kunden, keine Liste von Änderungen. Jede bereits vorhandene Befreiung, die in der Liste fehlt, wird entfernt – so hört eine widerrufene Bescheinigung auf, berücksichtigt zu werden. Das Senden einer unvollständigen Liste entfernt stillschweigend alles, was darin fehlt.

Jeder Datensatz ist eine Befreiung. Es gibt keine Möglichkeit zu erfassen, dass ein Kunde irgendwo nicht befreit ist – siehe den Hinweis unten.

Das Entfernen aller Befreiungen erfolgt über eine leere Liste. Um die Bescheinigungen eines Kunden zu löschen, senden Sie ihn mit "taxExemptions": []. Wird der Kunde ganz aus der Nutzlast ausgelassen, bleiben seine bestehenden Datensätze unverändert.

Senden Sie nur Rechtsgebiete, in denen der Kunde befreit ist

Zonos kennt keinen Datensatz für „nicht befreit“ – ein Rechtsgebiet steht entweder in der Liste oder nicht. Wenn Ihr System befreite und nicht befreite Rechtsgebiete gemeinsam speichert, filtern Sie vor der Synchronisierung auf die befreiten. Ein nicht befreiter Datensatz ist von einer echten Bescheinigung nicht zu unterscheiden und wird daher akzeptiert statt abgelehnt, sodass der Kunde in diesem Bundesstaat als befreit behandelt wird.

Befreiungsgründe 

exemptionReason beschreibt, warum der Kunde befreit ist. Das Feld ist optional und ist standardmäßig UNSPECIFIED, aber es lohnt sich, es anzugeben – siehe unten.

Wert↕Gilt für↕
RESALEWaren, die zum Weiterverkauf statt zum Verbrauch gekauft werden
FEDERAL_GOVERNMENTEine US-Bundesbehörde oder -abteilung
STATE_LOCAL_GOVERNMENTEine Landesbehörde, ein County, eine Gemeinde oder ein Schulbezirk
TRIBAL_GOVERNMENTEin föderal anerkannter Stamm oder ein Stammesmitglied
CHARITABLEEine gemeinnützige Organisation
RELIGIOUS_ORGANIZATIONEine Kirche oder andere religiöse Organisation
EDUCATIONAL_ORGANIZATIONEine Schule oder Universität
DIRECT_PAYEin Käufer, der eine Direktzahlungserlaubnis besitzt und die Steuer selbst abführt
OTHERAlles andere, einschließlich ausländischer Diplomaten, landwirtschaftlicher Produktion, industrieller Produktion und Direktversand
UNSPECIFIEDKein Grund angegeben

Gründe lassen sich in zwei Gruppen einteilen, und der Unterschied ist entscheidend. Entitätsbasierte Gründe – Regierung, gemeinnützig, religiös, Bildung – befreien den Käufer unabhängig davon, was er kauft. Nutzungsbasierte Gründe, allen voran RESALE, decken nur qualifizierende Waren ab: Eine Wiederverkaufsbescheinigung deckt Warenbestand ab, den der Käufer weiterverkauft, nicht die Büromöbel in derselben Bestellung.

Ohne einen Grund kann Zonos die beiden nicht unterscheiden und kann nur ganze Bestellungen befreien, was bei Wiederverkaufsbescheinigungen am schwersten zu rechtfertigen ist. Wenn die meisten Ihrer Befreiungen Wiederverkauf betreffen, ist es in der Regel deutlich weniger Aufwand, standardmäßig RESALE zu senden und Ausnahmen einzeln aufzulisten, als jeden Kunden einzeln zu klassifizieren.

Bescheinigungsreferenz 

exemptionReference ist die Nummer, die auf den Befreiungsunterlagen des Kunden aufgedruckt ist. Je nach Bundesstaat und Art der Befreiung kann das eine Wiederverkaufs- oder Verkäufergenehmigungsnummer, eine staatliche Befreiungsbescheinigungsnummer, eine Direktzahlungserlaubnisnummer oder eine Bundessteuernummer sein.

Sie ist bei jedem Datensatz erforderlich. Speichern und senden Sie sie genau so, wie sie auf der Bescheinigung erscheint – die Formate variieren stark je nach Rechtsgebiet (SR EAA 12-345678, 85-8012345678C-9, 12-3456789), und Zonos übernimmt den Wert unverändert, abgesehen vom Entfernen von umgebenden Leerzeichen. Ändern Sie weder die Groß-/Kleinschreibung noch entfernen Sie Bindestriche oder Leerzeichen.

Aus Datenschutzgründen kann exemptionReference gesendet, aber beim Auslesen von Befreiungen nicht zurückgegeben werden, da sie eine Bundessteuernummer enthalten kann.

Abgelehnte Datensätze 

Datensätze werden einzeln validiert. Ein abgelehnter Datensatz wird in rejected gemeldet und lässt den Rest des Batches nicht fehlschlagen, noch beeinträchtigt er die bereits für dieses Rechtsgebiet vorhandene Befreiung.

Code↕Ursache↕
UNKNOWN_CUSTOMERKeine Übereinstimmung mit customerId. Legen Sie den Kunden zuerst an
UNKNOWN_JURISDICTIONadministrativeArea ist kein anerkannter US-Bundesstaat, -Distrikt oder -Territorium
INVALID_DATE_RANGEexpiresAt liegt nicht nach effectiveAt
MISSING_EXEMPTION_REFERENCEexemptionReference ist leer
DUPLICATE_JURISDICTIONZwei Datensätze in einer Nutzlast teilen sich Land, Gebiet und Wirksamkeitsdatum. Der erste wird beibehalten

Unbekannte Kunden werden abgelehnt statt angelegt, sodass eine falsch geschriebene customerId in der Antwort auffällt, statt ein Profil zu erzeugen, das nie zu einem echten Käufer passt.

Nur US-Verwaltungsgebiete werden validiert. Untergliederungen anderer Länder werden so akzeptiert, wie sie gesendet werden.

Auslesen und Entfernen 

Lesen Sie die Befreiungen eines Kunden aus, um zu bestätigen, dass eine Synchronisierung erfolgreich war:

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

Um alle Befreiungen eines Kunden zu entfernen – zum Beispiel, wenn er sein Konto schließt – verwenden Sie checkoutCustomerTaxExemptionsDelete. Die Mutation gibt SUCCESS zurück, unabhängig davon, ob der Kunde Befreiungen hatte, und kann daher gefahrlos mehrfach aufgerufen werden.

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

War diese Seite hilfreich?