Steuern für wiederkehrende Zahlungen erheben
So erheben und erklären Sie Steuern für wiederkehrende Zahlungen.
Um Steuern für wiederkehrende Zahlungen zu berechnen, bieten wir Stripe Tax und Tax Rates an.
Stripe Tax – Ein kostenpflichtiges Produkt, das Steuern für Ihre Transaktionen automatisch und ohne vordefinierte Steuersätze und -regeln berechnet. Gebühren werden erst dann fällig, wenn Sie mindestens einen Standort angegeben haben, an dem Sie zur Berechnung und Abführung von Steuern verpflichtet sind. Weitere Informationen finden Sie unter Stripe Tax.
Tax Rates – Eine kostenlose Funktion, mit der Sie beliebig viele Steuersätze definieren und auf Rechnungen, Abonnements und einmalige Zahlungen anwenden. Stripe erstellt oder unterhält keine Steuersätze für Sie. Weitere Informationen finden Sie unter Tax Rates und wie diese funktionieren.
Mit Stripe Tax können Sie den Steuerbetrag auf Ihre wiederkehrenden Zahlungen berechnen, wenn Sie Stripe Billing verwenden. Verwenden Sie die Standortdaten Ihrer Kundinnen und Kunden, um eine Vorschau des Steuerbetrags zu erhalten, bevor Sie ein Abonnement erstellen, und erstellen Sie es dann mit aktiviertem Stripe Tax, wenn Ihr Kunde/Ihre Kundin bereit ist, zu zahlen. Stripe Tax ist in Stripe Billing integriert und verarbeitet automatisch Steuerberechnungen mit Ihrem Preismodell, anteilmäßigen Verrechnungen, Rabatten, Testversionen usw.
Customer
Client
Server
Stripe
Go to your checkout page
Enter address information
Steuern und Gesamtsumme schätzen
POST /v1/invoices/create_
Return a preview invoice
Return taxes and total
Submit
Submit
POST /v1/customers/:id
Return the updated Customer
POST /v1/subscriptions
Return a new subscription
Return client secret
stripe.
Redirect to return_
In diesem Leitfaden wird davon ausgegangen, dass Sie Stripe Tax und Billing zum ersten Mal einrichten. Erfahren Sie, wie Sie bestehende Abonnements aktualisieren.
Wenn Sie Stripe Checkout verwenden, um neue Abonnements zu erstellen, informieren Sie sich darüber, wie Sie automatisch Steuern für Checkout-Sitzungen einziehen, oder sehen Sie sich das kurze Video unten an:
Stripe Tax aktivieren
Melden Sie sich an oder registrieren Sie sich bei Stripe, um Stripe Tax zu aktivieren.
Produkte und Preise aktualisieren (optional)
Stripe Tax verwendet Informationen, die zu Produkten und Preisen gespeichert sind, um Steuern zu berechnen, wie z. B. Steuercode und Steuerverhalten. Wenn Sie diese Konfigurationen nicht explizit angeben, verwendet Stripe Tax den in den Steuereinstellungen ausgewählten Standard-Steuercode.
Weitere Informationen finden Sie unter Produktsteuercodes und Steuerverhalten festlegen.
Steuern und Gesamtsumme schätzenServerseitig
Überprüfen Sie den automatic_tax.status der Rechnung. Wenn der Status requires_
ist, bedeutet dies, dass die Adressdaten ungültig oder unzureichend sind. Fordern Sie Ihre Kundinnen/Kunden in diesem Fall auf, ihre Adressdaten erneut einzugeben oder genaue Adressdaten anzugeben.
Die Rechnungssumme gibt an, wie viel Ihr Kunde/Ihre Kundin zahlt, und die Steuer ist die Summe aller Steuerbeträge auf der Rechnung. Eine Aufschlüsselung der Steuern finden Sie unter total_tax_amounts. Alle Beträge sind in Cent angegeben.
Keine Steuern
Wenn der Wert für tax
Null ist, stellen Sie sicher, dass Sie am Standort Ihres Kunden/Ihrer Kundin steuerlich registriert sind. Erfahren Sie, wie Sie sich für Sales Tax, Umsatzsteuer und GST registrieren, und erfahren Sie mehr über steuerfreie Beträge und die Umkehrung der Steuerschuldnerschaft.
Erfassung der KundendatenClientseitig
Nachdem Sie eine Schätzung der Steuern und der Gesamtsumme erhalten haben, beginnen Sie mit der Erfassung von Kundeninformationen, einschließlich der Versandadresse (falls zutreffend), der Rechnungsadresse und der Zahlungsdaten. Beachten Sie, dass Sie bei der Verwendung von Stripe Tax Zahlungsdetails ohne Intent erfassen. Im ersten Schritt erstellen Sie ein Elements-Objekt ohne Intent:
const stripe = Stripe(
); const elements = stripe.elements({ mode: 'subscription', currency: '{{CURRENCY}}', amount:"pk_test_TYooMQauvdEDq54NiTphI7jx", });{{TOTAL}}
Erstellen Sie als Nächstes ein Address Element und ein Payment Element und verbinden Sie beide:
const addressElement = elements.create('address', { mode: 'billing' // or 'shipping', if you are shipping goods }); addressElement.mount('#address-element'); const paymentElementOptions = { layout: 'accordion'}; const paymentElement = elements.create('payment', paymentElementOptions); paymentElement.mount('#payment-element');
Anschließend können Sie das Address Element auf Änderungsereignisse überwachen. Wenn sich die Adresse ändert, schätzen Sie die Steuern und die Gesamtsumme neu.
addressElement.on('change', function(event) { // Throttle your requests to avoid overloading your server or hitting // Stripe's rate limits. const { tax, total } = await updateEstimate(event.value.address); elements.update({ amount: total }); // Update your page to display the new tax and total to the user... });
Häufiger Fehler
Wenn Ihr Kunde/Ihre Kundin seine/ihre Adresse eingibt, löst das Adresselement für jeden Tastenanschlag ein change
-Ereignis aus. Um eine Überlastung Ihres Servers und das Erreichen der Ratenbegrenzungen von Stripe zu vermeiden, warten Sie einige Zeit nach dem letzten change
-Ereignis, bevor Sie die Steuern und die Summe neu schätzen.
Übermittlung handhabenClientseitig
Wenn Ihre Kundinnen/Kunden das Formular absenden, rufen Sie elements.submit() auf, um die Formularfelder zu validieren und alle für Wallets erforderlichen Daten zu erfassen. Sie müssen warten, bis das Promise dieser Funktion aufgelöst wurde, bevor Sie weitere Vorgänge ausführen.
document.querySelector("#form").addEventListener("submit", function(event) { // We don't want to let default form submission happen here, // which would refresh the page. event.preventDefault(); const { error: submitError } = await elements.submit(); if (submitError) { // Handle error... return; } const { value: customerDetails } = await addressElement.getValue(); // See the "Save customer details" section below to implement this // server-side. await
(customerDetails); // See the "Create subscription" section below to implement this server-side. const {saveCustomerDetails} = awaitclientSecret(); const { error: confirmError } = await stripe.confirmPayment({ elements, clientSecret, confirmParams: { return_url:createSubscription, }, }); if (confirmError) { // Handle error... return; } // Upon a successful confirmation, your user will be redirected to the // return_url you provide before the Promise ever resolves. });{{RETURN_URL}}
Kundendaten speichernServerseitig
Aktualisieren Sie Ihr Customer
-Objekt anhand der Angaben, die Sie von Ihren Kundinnen/Kunden erfasst haben, damit Stripe Tax den genauen Standort des Kunden/der Kundin bestimmen kann und genaue Ergebnisse erhält.
Regionale AspekteVereinigte Staaten
Wenn sich Ihr/e Kund/in in den USA befindet, geben Sie nach Möglichkeit eine vollständige Adresse an. Mit dem Begriff „dachgenau“ meinen wir, dass wir den Standort Ihres Kunden/Ihrer Kundin einem bestimmten Haus oder Gebäude zuordnen können. Dies bietet eine höhere Genauigkeit, wenn zwei nebeneinander liegende Häuser in derselben Straße aufgrund komplexer Zuständigkeitsgrenzen unterschiedlichen Steuersätzen unterliegen können.
Wenn Sie noch kein Customer
-Objekt erstellt haben (zum Beispiel bei der ersten Anmeldung Ihres Kunden/Ihrer Kundin auf Ihrer Website), können Sie jetzt eines erstellen.
Mit dem tax.validate_location-Enum-Wert können Sie sicherstellen, dass der Steuerstandort des Kunden/der Kundin als Erebnis dieses Vorgangs gültig wird oder (bleibt). Andernfalls lässt Stripe Ihre Anfrage mit dem Fehlercode customer_tax_location_invalid fehlschlagen. Dies ist wichtig, da Sie für einen Kunden/eine Kundin mit einem ungültigen Steuerstandort kein automatisch steueraktiviertes Abonnement erstellen können. Wenn Sie den automatic_tax.status Ihrer Rechnungen in der Vorschau wie zuvor beschrieben überprüft haben, wird diese zusätzliche Validierung nie fehlschlagen. Es empfiehlt sich jedoch tax[validate_
immer dann festzulegen, wenn Sie ein Customer
-Objekt erstellen oder aktualisieren.
Abonnement erstellenServerseitig
Erstellen Sie ein Abonnement mit aktivierten automatischen Steuern
Das latest_invoice.payment_intent.client_secret ist das Client-Geheimnis des Payment Intent der ersten (und der letzten) Rechnung des neuen Abonnements. Sie müssen das Client-Geheimnis an Ihr Frontend übergeben, um den Payment Intent bestätigen zu können.
Sicherheitshinweis
Sie dürfen das Client-Geheimnis weder speichern, noch protokollieren oder Personen außer dem Kunden/der Kundin selbst zugänglich machen. Vergewissern Sie sich, dass auf jeder Seite, die das Client-Geheimnis enthält, TLS aktiviert ist.
Wenn Ihr Kunde/Ihre Kundin über eine Standardzahlungsmethode verfügt, wird die erste Rechnung des Abonnements automatisch bezahlt. Sie können dies mit dem latest_invoice.status des Abonnements bestätigen. Wenn Sie die neuen Zahlungsdetails, die Sie von Ihrem Kunden/Ihrer Kundin erfasst haben in Ihrem Bezahlvorgang verwenden möchten, müssen Sie sicherstellen, dass die erste Rechnung nicht automatisch bezahlt wird. Übergeben Sie default_
für das payment_behavior, wenn Sie Ihr Abonnement erstellen, und bestätigen Sie den Payment Intent mit stripe.confirmPayment(), wie dargestellt. Weitere Informationen finden Sie unter Billing-Einzugsmethoden.
Webhooks verwenden
Wir empfehlen, Abonnement-Ereignisse mit Webhooks zu überwachen, da die meisten Abonnementaktivitäten asynchron erfolgen.
Wenn Sie mit der Verwendung von Stripe Tax beginnen, überwachen Sie unbedingt die invoice.finalization_failed-Ereignisse. Wenn der automatic_tax.status der Rechnung requires_
ist, bedeutet dies, dass die Adressdetails Ihres Kunden/Ihrer Kundin ungültig oder unzureichend sind. In diesem Fall kann Stripe die Steuern nicht berechnen, die Rechnung nicht finalisieren und die Zahlung nicht einziehen. Bitten Sie Ihren Kunden/Ihre Kundin, die Adressdetails erneut einzugeben oder eine genaue Adresse anzugeben.
See Using webhooks with subscriptions to learn more.
Um Steuern für ein Abonnement einzuziehen, legen Sie Steuersätze für das Abonnement oder Steuersätze für Rechnungen als Abonnementzyklen fest. Alternativ können Sie bei der Verwendung von Checkout die Steuersätze in den Checkout-Sitzungen festlegen, um Steuern in Abonnements auszuweisen.
Steuersätze für ein Abonnement festlegen Recommended
Sie können Steuern auf der Ebene des Abonnements und der Abonnement-Artikel erheben und bis zu fünf Steuersätze für jeden Abonnement-Artikel festlegen.
Wenn Rechnungen für Abonnements erstellt werden, werden die Steuersätze vom Abonnement in die Rechnung kopiert. Im folgenden Beispiel hat der erste Abonnement-Artikel zwei Steuersätze: 3 % und 5 %. Dadurch wird der Steuersatz von 1 % aus der Ebene des Abonnements überschrieben. Für den zweiten Artikel sind keine eigenen Steuersätze festgelegt, sodass automatisch der Steuersatz von 1 % aus der Ebene des Abonnements angewendet wird.
Abonnement-Artikel 1 | 3 % und 5 % | ➡️ | Rechnungsposten 1 | 3 % und 5 % |
Abonnement-Artikel 2 | (kein Steuersatz festgelegt) | ➡️ | Rechnungsposten 2 | (kein Steuersatz festgelegt) |
Abonnement | 1 % | ➡️ | Rechnung | 1 % |
Sie können Steuersätze festlegen, wenn Sie Abonnement-Artikel erstellen oder aktualisieren, indem Sie die Steuersatz-IDs übergeben. Im folgenden Beispiel wird ein bestehender Abonnement-Artikel mit zwei Steuersätzen aktualisiert:
Sie können Steuersätze auf Ebene des Abonnements festlegen, wenn Sie Abonnements erstellen oder aktualisieren. Legen Sie die anzuwendenden Steuersätze fest, indem Sie die Standard-Steuersatz-IDs übergeben. Im folgenden Beispiel wird ein bestehender Abonnement-Artikel mit zwei Steuersätzen aktualisiert:
Steuersätze bei jedem Abonnementzyklus dynamisch konfigurieren
Wenn Sie zusätzliche Rechnungsposten hinzufügen oder in so vielen Regionen verkaufen, dass sich die Steuersätze häufig ändern, können Sie die Steuersätze dynamisch berechne und der Rechnung des Abonnements bei der Erstellung zuweisen.
Wenn ein Abonnement verlängert und eine Rechnung erstellt wird, übermittelt Stripe das Webhook-Ereignis invoice.
. Stripe wartet etwa eine Stunde, bevor die Rechnung abgeschlossen und die Zahlung durchgeführt oder eine E-Mail gesendet wird. Während dieser Verzögerung liegt die Rechnung als draft vor und kann bearbeitet werden. Befolgen Sie die Schritte zum Zuweisen von Steuersätzen für diese Rechnung.
Wenn Sie anteilsmäßige Verrechnungen von Gutschriften haben, verwenden Sie den Parameter proration_
im Objekt (Invoice) Line Item, um auf die ursprünglichen Soll-Posten zu verweisen, für die die anteilsmäßige Verrechnung der Gutschrift gilt. Passen Sie anhand dieses Verweises die Steuerbeträge korrekt für die anteilsmäßigen Verrechnungen der Gutschrift an.
Steuersätze zum Checkout hinzufügen
Sie können Steuersätze, (Verkäufe, USt., GST und mehr) in Checkout-Sitzungen angeben, um Steuern auf Abonnements anzuwenden.
- Verwenden Sie feste Steuersätze, wenn Sie den exakten Steuersatz kennen, den Sie Ihrem Kunden/Ihrer Kundin berechnen müssen, bevor sie den Bezahlvorgang starten (wenn Sie beispielsweise nur an Kund/innen in Großbritannien verkaufen und immer 20 % Mehrwertsteuer berechnen).
- Mit der Prices API können Sie dynamische Steuersätze verwenden, wenn Sie weitere Informationen von Ihren Kund/innen benötigen (beispielsweise ihre Rechnungs- oder Versandadresse), bevor Sie den fälligen Steuersatz ermitteln. Mit dynamischen Steuersätzen erstellen Sie Steuersätze für verschiedene Regionen (beispielsweise einen Mehrwertsteuersatz von 20 % für Kund/innen in Großbritannien und einen Umsatzsteuersatz von 7,25 % für Kund/innen in Kalifornien, USA). Stripe versucht, den Standort Ihrer Kund/innen diesen Steuersätzen zuzuordnen.
Sie können die Datenexporte von Stripe verwenden, um die für die Überweisung erforderlichen regelmäßigen Berichte auszufüllen. Weitere Informationen finden Sie unter Steuerberichterstattung und Überweisung.