# Ein Abonnement per BACS-Lastschriftverfahren einrichten Erfahren Sie, wie Sie ein Abonnement per Bacs-Lastschriftverfahren erstellen und abrechnen können. Sehen Sie sich das [Beispiel auf GitHub](https://github.com/stripe-samples/checkout-single-subscription) an oder sehen Sie sich die [Demo](https://checkout.stripe.dev/checkout) an. Verwenden Sie diesen Leitfaden, um ein *Abonnement* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis) mit [BACS-Lastschrift](https://docs.stripe.com/payments/payment-methods/bacs-debit.md) als Zahlungsmethode und *Checkout* (A low-code payment integration that creates a customizable form for collecting payments. You can embed Checkout directly in your website, redirect customers to a Stripe-hosted payment page, or create a customized checkout page with Stripe Elements) einzurichten. ## Stripe einrichten [Serverseitig] Zunächst benötigen Sie ein Stripe-Konto. [Registrieren Sie sich jetzt](https://dashboard.stripe.com/register). Nutzen Sie unsere offiziellen Bibliotheken für den Zugriff auf die Stripe-API über Ihre Anwendung: #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ## Wiederkehrende Produkte und Preise erstellen > Die Prices API bietet einen einheitlichen Rahmen für die Erstellung von einmaligen Käufen und Abonnements mit Stripe. Bestehende Integrationen ohne Prices API werden weiterhin [unterstützt](https://support.stripe.com/questions/prices-api-and-existing-checkout-integrations). Es gibt jedoch einige Checkout-Funktionen, die nur Prices unterstützen. Lesen Sie den [Migrationsleitfaden](https://docs.stripe.com/payments/checkout/migrating-prices.md), wenn Sie auf die Prices API umsteigen möchten. Um Checkout zu verwenden, müssen Sie zuerst ein *Produkt* (Products represent what your business sells—whether that's a good or a service) und einen *Preis* (Prices define how much and how often to charge for products. This includes how much the product costs, what currency to use, and the interval if the price is for subscriptions) erstellen. Verschiedene physische Waren oder Dienstleistungsebenen müssen durch Produkte dargestellt werden. Die Preisgestaltung ist durch einen oder mehrere Preise dargestellt. Sie können beispielsweise ein Software-*Produkt* erstellen, das vier *Preise* hat: 10 USD/Monat, 100 USD/Jahr, 9 GBP/Monat und 90 GBP/Jahr. Auf diese Weise können Sie Preise ändern und hinzufügen, ohne die Details der zugrunde liegenden Produkte ändern zu müssen. Sie können ein Produkt oder einen Preis [über die API](https://docs.stripe.com/api/prices.md) oder über das [Stripe-Dashboard](https://dashboard.stripe.com/products) erstellen. Wenn Ihr Preis beim Bezahlvorgang ermittelt wird (der/die Kund/in legt beispielsweise einen Spendenbetrag fest), oder wenn Sie es vorziehen, Preise nicht im Voraus zu erstellen, können Sie [Preise inline](https://docs.stripe.com/billing/subscriptions/bacs-debit.md#creating-prices-inline) bei der Erstellung der Checkout-Sitzung erstellen. #### Dashboard Stellen Sie vor dem Konfigurieren von Produkten sicher, dass Sie sich in einer Sandbox befinden. Definieren Sie als Nächstes die Waren und Dienstleistungen, die Sie verkaufen möchten. So erstellen Sie ein neues Produkt und einen neuen Preis: - Gehen Sie im Dashboard zum Bereich [Produkte](https://dashboard.stripe.com/products). - Klicken Sie auf **Produkt hinzufügen**. - Wählen Sie beim Festlegen des Preises „Wiederkehrend“ aus. - Preisplan konfigurieren Sie können für jedes wiederkehrende Produkt mehrere Preispläne mit unterschiedlichen Parametern definieren. Jeder Preis verfügt über eine generierte ID, die Sie im Bezahlvorgang als Referenz nutzen können. > In einer Sandbox erstellte Produkte können in den Live-Modus kopiert werden, sodass Sie sie nicht erneut erstellen müssen. Klicken Sie im Dashboard in der Detailansicht des Produkts oben rechts auf **In Live-Modus kopieren**. Dieser Schritt kann für jedes in einer Sandbox erstellte Produkt nur einmal vorgenommen werden. Spätere Aktualisierungen für das Test-Produkt werden im Live-Produkt nicht berücksichtigt. #### API Es ist nur das Feld `name` erforderlich, um ein [Produkt](https://docs.stripe.com/api/products.md) über die API zu erstellen. Informationen wie `name` des Produkts, `description` und `images`, die Sie angeben, werden Kundinnen und Kunden beim Bezahlvorgang angezeigt. ```curl curl https://api.stripe.com/v1/products \ -u "<>:" \ -d "name=Blue banana" ``` Erstellen Sie als Nächstes einen [Preis](https://docs.stripe.com/api/prices.md), um zu definieren, wie viel ein Produkt kostet und wie oft Sie diesen Preis berechnen möchten. Dazu gehören neben den Kosten auch die Währung und das Abrechnungsintervall. #### curl ```bash curl https://api.stripe.com/v1/prices \ -u <>: \ -d "product"="{{ PRODUCT_ID }}" \ -d "unit_amount"=1000 \ -d "currency"="gbp" \ -d "recurring[interval]=month" ``` Diese Preis-ID dient als Referenz für das Produkt, wenn Sie den Zahlungsvorgang mit Checkout starten. ## Checkout-Sitzung erstellen [Clientseitig] [Serverseitig] Fügen Sie Ihrer Website eine Schaltfläche zum Bezahlen hinzu, über die ein serverseitiger Endpoint aufgerufen wird, um eine Checkout-Sitzung zu erstellen. ```html Checkout
``` ### Checkout-Sitzungsparameter Eine vollständige Liste der Parameter, die verwendet werden können, finden Sie unter [Checkout-Sitzung erstellen](https://docs.stripe.com/api/checkout/sessions/create.md). Erstellen Sie eine Checkout-Sitzung mit der ID eines bestehenden [Preises](https://docs.stripe.com/api/prices.md). Stellen Sie sicher, dass der Modus auf `subscription` gesetzt ist und dass Sie mindestens einen wiederkehrenden Preis übergeben. Zusätzlich zu wiederkehrenden Preisen können Sie auch einmalige Preise hinzufügen. Leiten Sie Ihre Kundinnen/Kunden nach dem Erstellen der Checkout-Sitzung zu der in der Antwort zurückgegebenen [URL](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-url) weiter. #### cURL ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \ -d "mode"="subscription" \ -d "success_url"="https://example.com/success?session_id={CHECKOUT_SESSION_ID}" \ ``` Wenn Ihre Kundinnen und Kunden ihre Zahlung erfolgreich abgeschlossen haben, werden Sie an die `success_url` weitergeleitet. Hierbei handelt es sich um eine Seite auf Ihrer Website, auf der sie darüber informiert werden, dass ihre Zahlung erfolgreich durchgeführt wurde. Stellen Sie die Sitzungs-ID auf Ihrer Erfolgsseite zur Verfügung, indem Sie die Vorlagenvariable `{CHECKOUT_SESSION_ID}` wie im obigen Beispiel in die `success_url` einfügen. Checkout-Sitzungen laufen standardmäßig 24 Stunden nach Erstellung ab. Aktivieren Sie im [Dashboard](https://dashboard.stripe.com/settings/payment_methods) die Zahlungsmethoden, die Sie von Ihren Kundinnen und Kunden akzeptieren möchten. Checkout unterstützt [mehrere Zahlungsmethoden](https://docs.stripe.com/payments/payment-methods/payment-method-support.md#product-support). > Verlassen Sie sich beim Erkennen von initiierten Zahlungen nicht allein auf die Weiterleitung auf die `success_url`: > > - Böswillige Nutzer/innen könnten, ohne zu bezahlen, direkt auf die `success_url` zugreifen und sich so unberechtigt Zugang zu Waren und Dienstleistungen verschaffen. - Nach einer erfolgreichen Zahlung schließen Kundinnen und Kunden möglicherweise ihren Browser-Tab, bevor sie zur `success_url` weitergeleitet werden. ## Bestätigen, dass die Zahlung erfolgreich durchgeführt wurde Wenn Ihre Kund/innen ihre Zahlung erfolgreich abschließen, werden sie von Stripe an die URL weitergeleitet, die Sie im `success_url`-Parameter angegeben haben. Hierbei handelt es sich in der Regel um eine Seite auf Ihrer Website, auf der Ihre Kund/innen darüber informiert werden, dass ihre Zahlung erfolgreich durchgeführt wurde. Bei handelt es sich jedoch um eine Zahlungsmethode mit verzögerter Benachrichtigung, was bedeutet, dass Geldmittel nicht sofort verfügbar sind. Deshalb sollten Sie mit der *Ausführung* (Fulfillment is the process of providing the goods or services purchased by a customer, typically after payment is collected) der Bestellung warten, bis das Geld auf Ihrem Konto ist. Nach erfolgreicher Zahlung ändert sich der zugrunde liegende *PaymentIntent* (The Payment Intents API tracks the lifecycle of a customer checkout flow and triggers additional authentication steps when required by regulatory mandates, custom Radar fraud rules, or redirect-based payment methods)-Status von `„processing`“ in `„succeeded“`. Sie können auf verschiedene Weise bestätigen, dass die Zahlung erfolgreich ist: #### Dashboard Erfolgreiche Zahlungen werden in der [Zahlungsliste](https://dashboard.stripe.com/payments) des Dashboards angezeigt. Wenn Sie auf eine Zahlung klicken, gelangen Sie zur Seite mit den Zahlungsdetails. Der Abschnitt **Checkout-Übersicht** enthält Abrechnungsinformationen und die Liste der gekauften Artikel, die Sie zur manuellen Ausführung der Bestellung verwenden können. ![](https://b.stripecdn.com/docs-statics-srv/assets/source.16d3029596357c80a8efdbbfe106108a.png) > Durch Senden von E-Mail-Benachrichtigungen über erfolgreich abgeschlossene Kundenzahlungen kann Stripe Ihnen helfen, den Überblick über eingehende Zahlungen zu behalten. Verwenden Sie das Dashboard, um [E-Mail-Benachrichtigungen zu konfigurieren](https://dashboard.stripe.com/settings/user). #### Webhooks Wir senden die folgenden Checkout-Ereignisse, wenn sich der Zahlungsstatus ändert: | Ereignisname | Beschreibung | Nächste Schritte | | -------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | | [checkout.session.completed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.completed) | Die Kundin/der Kunde hat die Lastschriftzahlung nach Übermittlung des Checkout-Formulars erfolgreich autorisiert. | Warten Sie, bis die Zahlung erfolgt oder fehlschlägt. | | [checkout.session.async_payment_succeeded](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_succeeded) | Die verzögerte Zahlungsmethode war letztendlich erfolgreich. | Wickeln Sie die Bestellung der Kundin/des Kunden ab. | | [checkout.session.async_payment_failed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_failed) | Die verzögerte Zahlungsmethode ist letztendlich fehlgeschlagen. | Senden Sie der Kundin/dem Kunden eine E-Mail und bitten Sie sie/ihn, die Zahlung erneut zu versuchen. | | [invoice.paid](https://docs.stripe.com/api/events/types.md#event_types-invoice.paid) | Die Zahlung der Kundin/des Kunden war erfolgreich. | Wickeln Sie die Bestellung der Kundin/des Kunden ab. | | [invoice.payment_failed](https://docs.stripe.com/api/events/types.md#event_types-invoice.payment_failed) | Die Zahlung der Kundin/des Kunden wurde abgelehnt oder ist aus einem anderen Grund fehlgeschlagen. | Fordern Sie den/die Kund/in per E-Mail auf, die Zahlung erneut zu versuchen. | Ihr Webhook-Code muss alle diese Checkout-Ereignisse verarbeiten können. Jede Webhook-Nutzlast in Checkout beinhaltet das [Session-Objekt von Checkout](https://docs.stripe.com/api/checkout/sessions.md) und Rechnungs-Webhooks enthalten das [Invoice](https://docs.stripe.com/api/invoices/object.md)-Objekt. Beide enthalten Informationen über die *Kunden/Kundinnen* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) und den *PaymentIntent* (The Payment Intents API tracks the lifecycle of a customer checkout flow and triggers additional authentication steps when required by regulatory mandates, custom Radar fraud rules, or redirect-based payment methods). Stripe sendet den Webhook `checkout.session.completed` an Ihren Server, bevor Ihre Kund/innen weitergeleitet werden. Ihre Annahme des Webhooks (ein beliebiger `2xx`-Statuscode) löst die Weiterleitung der Kund/innen an die `success_url` aus. Wenn Stripe innerhalb von 10 Sekunden nach erfolgreicher Zahlung keine volle Empfangsbestätigung erhält, werden Ihre Kund/innen automatisch zur `success_url`-Seite weitergeleitet. Wir empfehlen die [Verwendung von Webhooks](https://docs.stripe.com/webhooks.md), um den Erfolg der Zahlung zu bestätigen und die gekauften Waren zu versenden bzw. Dienstleistungen zu erbringen. Nachfolgend finden Sie ein Beispiel für einen Webhook-Endpoint, der den Erfolg oder Misserfolg einer Zahlung handhabt: #### Ruby ```ruby # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. # Find your keys at https://dashboard.stripe.com/apikeys. client = Stripe::StripeClient.new('<>') # You can find your endpoint's secret in your webhook settings endpoint_secret = 'whsec_...' # Using Sinatra post '/webhook' do payload = request.body.read event = nil # Verify webhook signature and extract the event # See https://stripe.com/docs/webhooks#verify-events for more information. sig_header = request.env['HTTP_STRIPE_SIGNATURE'] begin event = Stripe::Webhook.construct_event( payload, sig_header, endpoint_secret ) rescue JSON::ParserError => e # Invalid payload status 400 return rescue Stripe::SignatureVerificationError => e # Invalid signature status 400 return end case event['type'] when 'checkout.session.completed' session = event['data']['object'] subscription_id = session.subscription # Find the subscription or save it to your database. # invoice.paid may have fired before this so there # could already be a subscription. find_or_create_subscription(subscription_id) when 'invoice.paid' invoice = event['data']['object'] subscription_id = invoice.parent.subscription_details.subscription # Find the subscription or save it to your database. # checkout.session.completed may not have fired yet # so we may need to create the subscription. subscription = find_or_create_subscription(subscription_id) # Fulfill the purchase fulfill_order(invoice) # Record that the subscription has been paid for # this payment period. invoice.paid will fire every # time there is a payment made for this subscription. record_as_paid_for_this_period(subscription) when 'invoice.payment_failed' invoice = event['data']['object'] # Send an email to the customer asking them to retry their payment email_customer_about_failed_payment(invoice) end status 200 end ``` Sie können Informationen über die Kund/innen, Zahlungen oder Abonnements abrufen, indem Sie die `Kunden`-, `PaymentIntent`- oder `Abo`-Objekte abrufen, auf die von den Eigenschaften `Kunde/Kundin`, `payment_intent` und `Abo` in der Webhook-Nutzlast verwiesen wird. ### Posten aus einem Webhook abrufen Checkout-Webhooks geben standardmäßig keine `line_items` zurück. Um die mit der Checkout-Sitzung erstellten Posten abzurufen, führen Sie eine zusätzliche Anfrage mit der ID der Checkout-Sitzung durch: #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions/{{CHECKOUT_SESSION_ID}}/line_items \ -u <>: ``` #### Stripe-CLI ```bash stripe get /v1/checkout/sessions/{{CHECKOUT_SESSION_ID}}/line_items ``` ### Webhooks lokal testen Verwenden Sie die [Stripe-CLI](https://docs.stripe.com/stripe-cli.md), um Webhooks lokal zu testen. Nach der Installation können Sie Ereignisse an Ihren Server weiterleiten: ```bash stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is '{{WEBHOOK_SIGNING_SECRET}}' (^C to quit) ``` Erfahren Sie mehr über die [Einrichtung von Webhooks](https://docs.stripe.com/webhooks.md). #### Drittanbieter-Plugins Sie können Plugins wie [[Zapier]](https://stripe.com/works-with/zapier) verwenden, um Ihre Systeme für die Bestellausführung automatisch mit Informationen aus Stripe-Zahlungen zu aktualisieren. Nachfolgend finden Sie einige Beispiele für unterstützte Automatisierungen mithilfe von Plugins: - Aktualisieren der zur Bestellungsverfolgung verwendeten Tabellen nach einer erfolgreichen Zahlung - Aktualisieren der Bestandsverwaltungssysteme nach einer erfolgreichen Zahlung - Auslösen von Benachrichtigungen an interne Kundenservice-Teams mittels E-Mail- oder Chat-Anwendungen ## Integration testen Es gibt mehrere [Testbankkontonummern](https://docs.stripe.com/keys.md#test-live-modes), die Sie in einer *Sandbox* (A sandbox is an isolated test environment that allows you to test Stripe functionality in your account without affecting your live integration. Use sandboxes to safely experiment with new features and changes) verwenden können. So können Sie sicherstellen, dass diese Integration bereit ist. | Bankleitzahl | Kontonummer | Beschreibung | | ------------ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 10-88-00 | 00012345 | Die Zahlung ist erfolgt und die Rechnung wird auf `paid` umgestellt. | | 10-88-00 | 90012345 | Die Zahlung erfolgt innerhalb von drei Minuten und die Rechnung wird auf `paid` umgestellt. | | 10-88-00 | 33333335 | Die Zahlung schlägt mit dem Fehlercode `debit_not_authorized` fehl und die Rechnung geht in den Status `offen` über. Das Mandat wechselt zu `inaktiv` und die PaymentMethod kann nicht erneut verwendet werden. | | 10-88-00 | 93333335 | Die Zahlung schlägt nach drei Minuten mit dem Fehlercode `debit_not_authorized` fehl und die Rechnung geht in den Status `offen` über. Das Mandat wechselt zu `inaktiv` und die PaymentMethod kann nicht erneut verwendet werden. | | 10-88-00 | 22222227 | Die Zahlung schlägt fehl, die Fehlerkennung `insufficient_funds` wird ausgegeben und die Rechnung wird auf `open` gestellt. Das Mandat bleibt `active` und die PaymentMethod kann erneut verwendet werden. | | 10-88-00 | 92222227 | Die Zahlung schlägt nach drei Minuten fehl, die Fehlerkennung `insufficient_funds` wird ausgegeben und die Rechnung wird auf `open` gestellt. Das Mandat bleibt `active` und die PaymentMethod kann erneut verwendet werden. | | 10-88-00 | 55555559 | Die Zahlung erfolgt innerhalb von drei Minuten und die Rechnung wechselt zu `paid`. Eine Zahlungsanfechtung wird jedoch sofort erstellt. | | 10-88-00 | 00033333 | Die Zahlungsmethode wurde erfolgreich erstellt, das Mandat wird jedoch von der Kundenbank verweigert und sofort deaktiviert. | | 10-88-00 | 00044444 | Die Anfrage zur Einrichtung eines BACS-Lastschriftverfahrens wird aufgrund einer ungültigen Kontonummer sofort abgelehnt. Die Kundin/der Kunde wird aufgefordert, ihre/seine Angaben vor dem Absenden zu prüfen. Zahlungsdaten werden nicht erfasst. | Sie können die oben aufgeführten Kontonummern nach Belieben testen. Da die Verarbeitung von Zahlungen per Bacs-Lastschriftverfahren mehrere Tage in Anspruch nimmt, verwenden Sie bitte die Testkontonummern. Bei diesen ist eine dreiminütige Verzögerung eingebaut, um tatsächliche Zahlungen möglichst exakt nachzubilden. > Standardmäßig sendet Stripe den Kundinnen und Kunden bei der erstmaligen Erfassung ihrer Zahlungsinformationen sowie bei jeder Kontobelastung automatisch [E-Mails](https://docs.stripe.com/payments/payment-methods/bacs-debit.md#debit-notifications). Diese Benachrichtigungen werden nicht in Sandboxes gesendet. ## Optional: Einmalige Einrichtungsgebühr hinzufügen [Serverseitig] Zusätzlich zur Übergabe von wiederkehrenden Preisen können Sie im Modus `subscription` einmalige Preise hinzufügen. Diese werden nur auf der ersten *Rechnung* (Invoices are statements of amounts owed by a customer. They track the status of payments from draft through paid or otherwise finalized. Subscriptions automatically generate invoices, or you can manually create a one-off invoice) angezeigt, die durch das Abonnement erstellt wird. Dies ist nützlich, um Einrichtungsgebühren oder andere einmalige Gebühren in Verbindung mit einem Abonnement hinzuzufügen. #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"="bacs_debit" \ -d "line_items[0][price]"="{{RECURRING_PRICE_ID}}" \ -d "line_items[0][quantity]"=1 \ -d "line_items[1][price]"="{{ONE_TIME_PRICE_ID}}" \ -d "line_items[1][quantity]"=1 \ -d "mode"="subscription" \ -d "success_url"="https://example.com/success?session_id={CHECKOUT_SESSION_ID}" ``` ## Optional: Preise und Produkte inline erstellen [Serverseitig] Zusätzlich zur Übergabe vorhandener Preis-IDs können Sie Ihren Artikelpreis auch bei der Erstellung der Checkout-Sitzung festlegen. Definieren Sie zuerst ein [Produkt](https://docs.stripe.com/api/products.md). Erstellen Sie dann mithilfe der Produkt-ID eine Checkout-Sitzung, indem Sie sie in [price_data](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items-price_data) mit den Details `unit_amount`, `currency` und `recurring` details übergeben: #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"=bacs_debit \-d line_items[0][price_data][unit_amount]=5000 \ -d line_items[0][price_data][currency]=gbp\ -d line_items[0][price_data][product]="{{PRODUCT_ID}}" \ -d line_items[0][price_data][recurring][interval]=month \ -d line_items[0][quantity]=1 \ -d mode=subscription \ -d success_url="https://example.com/success?session_id={CHECKOUT_SESSION_ID}" \ ``` Wenn Sie auch Produkte inline erstellen müssen, haben Sie mit [product_data](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items-price_data-product_data) hierzu zu Möglichkeit: #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"=bacs_debit \-d "line_items[][price_data][currency]"=gbp\ -d "line_items[][price_data][product_data][name]"=T-shirt \ -d "line_items[][price_data][unit_amount]"=2000 \ -d "line_items[][quantity]"=1 \ -d "mode"="subscription" \ -d success_url="https://example.com/success?session_id={CHECKOUT_SESSION_ID}" \ ``` ## Optional: Bestehende Kund/innen [Serverseitig] Wenn Sie bereits ein *Kunden* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments)-Objekt für einen Kunden oder eine Kundin erstellt haben, können Sie mit dem Argument [Kunde/Kundin](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer) die Kunden-ID beim Erstellen einer Bezahlvorgang übergeben. Dadurch wird sichergestellt, dass alle während der Sitzung erstellten Objekte dem richtigen Kundenobjekt zugeordnet werden. Wenn Sie eine Kunden-ID übergeben, verwendet Stripe auch die im Customer-Objekt gespeicherte E-Mail-Adresse, um das entsprechende Feld auf der Checkout-Seite vorab auszufüllen. Wenn Kund/innen ihre E-Mail-Adresse auf der Checkout-Seite ändern, wird diese nach erfolgreicher Zahlung im Customer-Objekt aktualisiert. #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "customer"="{{CUSTOMER_ID}}" \ -d "payment_method_types[]"="bacs_debit" \ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \ -d "mode"="subscription" \ -d "success_url"="https://example.com/success" ``` ## Optional: Kundendaten vorab angeben [Serverseitig] Wenn Sie die E-Mail-Adresse Ihrer Kundin/Ihres Kunden bereits erfasst haben und sie in einer Checkout-Sitzung vorab angeben möchten, übergeben Sie [customer_email](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer_email) beim Erstellen der Checkout-Sitzung. #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \-d customer_email="customer@example.com" \ -d "payment_method_types[]"=bacs_debit \ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \ -d mode=subscription \ -d success_url="https://example.com/success" \ ``` ## Optional: Testzeiträume handhaben [Serverseitig] Mit [trial_end](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-subscription_data-trial_end) oder [trial_period_days](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-subscription_data-trial_period_days) können Sie in der Checkout-Sitzung die Dauer des Testzeitraums angeben. In diesem Beispiel verwenden wir `trial_period_days`, um eine Checkout-Sitzung für ein Abonnement mit einem Testzeitraum von 30 Tagen zu erstellen. #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"=bacs_debit \ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \-d "subscription_data[trial_period_days]"=30 \ -d mode=subscription \ -d success_url="https://example.com/success?session_id={CHECKOUT_SESSION_ID}" \ ``` Checkout zeigt die folgenden Informationen automatisch für Abonnements mit Testzeiträumen an: - Testzeitraum - Häufigkeit und Höhe der Zahlungen nach Ablauf des Testzeitraums Weitere Informationen zu Compliance-Anforderungen finden Sie in den Anleitungen zum [Verwalten von Compliance-Anforderungen](https://docs.stripe.com/billing/subscriptions/trials/manage-trial-compliance.md) oder in den [Support](https://support.stripe.com/questions/2020-visa-trial-subscription-requirement-changes-guide)-Anleitungen. ## Optional: Steuersätze [Serverseitig] Sie können [Steuersätze](https://docs.stripe.com/billing/taxes/tax-rates.md), (Verkäufe, USt., GST und mehr) in Checkout-Sitzungen angeben, um Steuern auf *Abonnements* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis) 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* (Prices define how much and how often to charge for products. This includes how much the product costs, what currency to use, and the interval if the price is for subscriptions) 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. #### Feste Steuersätze Legen Sie [subscription_data.default_tax_rates](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-subscription_data-default_tax_rates) fest, um einen Standardsteuersatz auf ein Abonnement anzuwenden, das ohne Checkout gestartet wurde. #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"=bacs_debit \ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \-d "subscription_data[default_tax_rates][]"="{{TAX_RATE_ID}}" \ -d mode=subscription \ -d success_url="https://example.com/success" \ ``` Sie können auch [line_items.tax_rates](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items-tax_rates) oder [subscription_data.items.tax_rates](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-subscription_data-items-tax_rates) angeben, um Steuersätze auf bestimmte Pläne oder Rechnungsposten anzuwenden. #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"="bacs_debit" \ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \-d "line_items[][tax_rates][0]"="{{TAX_RATE_ID}}" \ -d "mode"="subscription" \ -d "success_url"="https://example.com/success" \ ``` #### Dynamische Steuersätze Übergeben Sie ein Array mit [Steuersätzen](https://docs.stripe.com/api/tax_rates/object.md) an [line_items.dynamic_tax_rates](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items-dynamic_tax_rates). Für jeden Steuersatz ist ein [unterstütztes](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items-dynamic_tax_rates) `country` erforderlich und für die USA zusätzlich ein `state`. Auf dieser Liste werden die Steuersätze mit der [Versandadresse](https://docs.stripe.com/payments/collect-addresses.md), der Rechnungsadresse oder dem Land Ihrer Kundin/Ihres Kunden abgeglichen. Die Versandadresse hat für die Bestimmung des zu berechnenden Steuersatzes Vorrang vor der Rechnungsadresse. Wenn Sie keine Versand- oder Rechnungsadresse erfassen, wird der Steuersatz anhand des Landes (und gegebenenfalls der Postleitzahl) Ihrer Kund/innen ermittelt. Wenn Sie keinen Steuersatz übergeben haben, der mit der Versand- oder Rechnungsadresse Ihres Kunden/Ihrer Kundin übereinstimmt, wird kein Steuersatz angewendet. #### Curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"="bacs_debit" \ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \-d "line_items[][dynamic_tax_rates][]"="{{FIRST_TAX_RATE_ID}}" \ -d "line_items[][dynamic_tax_rates][]"="{{SECOND_TAX_RATE_ID}}" \ -d "mode"="subscription" \ -d "success_url"="https://example.com/success" \ ``` > [subscription_data.default_tax_rates](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-subscription_data-default_tax_rates) und [line_items.tax_rates](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items-tax_rates) können nicht in Verbindung mit [line_items.dynamic_tax_rates](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items-dynamic_tax_rates) verwendet werden. 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](https://docs.stripe.com/billing/taxes/tax-rates.md#remittance). ## Optional: Gutscheine hinzufügen [Serverseitig] Sie können [Gutscheine](https://docs.stripe.com/billing/subscriptions/coupons.md) auf Abonnements in einer Checkout-Sitzung anwenden, indem Sie [Rabatte](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-discounts) einrichten. Diese Gutscheine überschreiben alle Gutscheine für die Kundin/den Kunden. Wenn Sie ein Abonnement für [bestehende Kundinnen/Kunden](https://docs.stripe.com/billing/subscriptions/bacs-debit.md#handling-existing-customers) erstellen, werden alle mit der Kundin/dem Kunden verknüpften Gutscheine auf die *Rechnungen* (Invoices are statements of amounts owed by a customer. They track the status of payments from draft through paid or otherwise finalized. Subscriptions automatically generate invoices, or you can manually create a one-off invoice) des jeweiligen Abonnements angewendet. #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"=bacs_debit \ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \-d "discounts[][coupon]"="{{COUPON_ID}}" \ -d "mode"="subscription" \ -d success_url="https://example.com/success" \ ``` ### Promo-Codes für Kund/innen hinzufügen Sie können auch [Promo-Codes](https://docs.stripe.com/billing/subscriptions/coupons.md#promotion-codes) für Kundinnen/Kunden aktivieren, indem Sie in Checkout-Sitzungen den Parameter [allow_promotion_codes](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-allow_promotion_codes) verwenden. Wenn `allow_promotion_codes` in einer Checkout-Sitzung aktiviert ist, zeigt Checkout ein Feld zum Einlösen von Promo-Codes, das Ihre Kundinnen/Kunden nutzen können. Sie können Ihre [Gutscheine](https://docs.stripe.com/billing/subscriptions/coupons.md) und Promo-Codes über das Dashboard oder die API erstellen, damit Ihre Kundinnen/Kunden sie in Checkout einlösen können. #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"="bacs_debit" \ -d "line_items[0][price_data][unit_amount]"=2000 \ -d "line_items[0][price_data][currency]"="gbp" \ -d "line_items[0][price_data][product]={{PRODUCT_ID}}" \ -d "line_items[0][price_data][recurring][interval]=month" \ -d "line_items[0][quantity]"=1 \-d "allow_promotion_codes"="true" \ -d "mode"="subscription" \ -d "success_url"="https://example.com/success" \ ``` ## See also - [Ihre Integration anpassen](https://docs.stripe.com/payments/checkout/customization.md) - [Abonnements über das Kundenportal verwalten](https://docs.stripe.com/billing/subscriptions/build-subscriptions.md?payment-ui=checkout&ui=stripe-hosted)