Steuern für wiederkehrende Zahlungen erheben
So erheben und erklären Sie Steuern für wiederkehrende Zahlungen.
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.
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.