# Bankverbindung für Bacs-Lastschriftverfahren speichern So können Sie Checkout nutzen, um Angaben zur Zahlungsmethode für künftige Zahlungen per Bacs-Lastschriftverfahren zu speichern. Sie können [Stripe Checkout](https://docs.stripe.com/payments/checkout.md) verwenden, um Zahlungsinformationen für das Bacs-Lastschriftverfahren vorab zu erfassen. Der endgültige Betrag bzw. das Zahlungsdatum wird dabei später festgelegt. Mögliche Anwendungsszenarien: - Speichern von Zahlungsmethoden in einer Geldbörse, um zukünftige Käufe zu optimieren. - Gebühreneinziehung nach der Leistungserbringung. - [Kostenlosen Testzeitraum für ein Abonnement starten](https://docs.stripe.com/billing/subscriptions/trials.md). ## 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' ``` ## Kundinnen/Kunden erstellen oder abrufen [Serverseitig] Um eine Zahlungsmethode für das BACS-Lastschriftverfahren für zukünftige Zahlungen wiederzuverwenden, verknüpfen Sie sie mit einem Objekt, das Ihren Endkunden/Ihre Endkundin repräsentiert. > #### Verwenden Sie die Accounts v2 API zum Darstellen von Kundinnen und Kunden > > Die Accounts v2 API ist allgemein für Connect-Nutzer/innen verfügbar und für andere Stripe-Nutzer/innen in der öffentlichen Vorschau. Wenn Sie an der Accounts v2 Vorschau teilnehmen, müssen Sie eine [Vorschauversion](https://docs.stripe.com/api-v2-overview.md#sdk-and-api-versioning) in Ihrem Code angeben. > > Um der Vorschau von Accounts v2 beizutreten, gehen Sie zu [Kontovorschauen und -funktionen](https://dashboard.stripe.com/settings/previews) in Ihrem Dashboard und aktivieren Sie **wiederverwendbare Zahlungsmethoden für Global Payouts**. > > Für die meisten Anwendungsfälle empfehlen wir, [Ihre Kundinnen und Kunden als vom Kunden bzw. von der Kundin konfigurierte Account-Objekte abzubilden](https://docs.stripe.com/accounts-v2/use-accounts-as-customers.md), anstatt [Customer](https://docs.stripe.com/api/customers.md)-Objekte zu verwenden. Erstellen Sie ein kundenkonfiguriertes [Konto](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer) oder [einen Kunden/eine Kundin](https://docs.stripe.com/api/customers/create.md), wenn Ihr Kunde/Ihre Kundin ein Konto bei Ihrem Unternehmen anlegt oder wenn er/sie eine Zahlungsmethode speichert. Verknüpfen Sie die ID des Objekts mit Ihrer eigenen internen Darstellung eines Kunden/einer Kundin. Erstellen Sie einen neuen Kunden/eine neue Kundin oder rufen Sie einen bestehenden Kunden/eine bestehende Kundin ab, um ihn/sie mit dieser Zahlung zu verknüpfen. #### Accounts v2 ```curl curl -X POST https://api.stripe.com/v2/core/accounts \ -H "Authorization: Bearer <>" \ -H "Stripe-Version: 2026-06-24.preview" \ --json '{ "contact_email": "jenny.rosen@example.com", "display_name": "Jenny Rosen", "configuration": { "customer": {} }, "include": [ "configuration.customer" ] }' ``` #### Customers v1 ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jenny.rosen@example.com" ``` ## Checkout-Sitzung erstellen [Clientseitig] [Serverseitig] [Stripe Checkout](https://docs.stripe.com/payments/checkout.md) enthält eine gehostete Zahlungsseite, die alle Regeln zum BACS-Lastschriftverfahren erfüllt. Wenn Sie Ihr eigenes BACS-Lastschriftformular erstellen möchten, [kontaktieren](https://stripe.com/contact/sales) Sie bitte unser Sales-Team. Bevor Sie Zahlungen per Lastschrift annehmen können, müssen Ihre Kundinnen/Kunden ihre Kontoinformationen zur Verfügung stellen und Sie autorisieren, die Abbuchung per Stripe Checkout von ihrem Konto vorzunehmen (dies wird auch als [Lastschriftmandat](https://docs.stripe.com/payments/payment-methods/bacs-debit.md#mandates) bezeichnet). 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
``` Erstellen Sie eine Checkout-Session im Modus `setup`, um die erforderlichen Informationen zu erfassen. Leiten Sie nach dem Erstellen der Checkout-Session Ihren Kunden/Ihre Kundin an die in der Antwort zurückgegebene [URL](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-url) weiter. [Aktivieren Sie die Zahlungsmethode](https://dashboard.stripe.com/settings/payment_methods) in Ihrem Dashboard. Stripe zeigt infrage kommende Zahlungsmethoden automatisch an. #### Accounts v2 ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "customer_account={{CUSTOMERACCOUNT_ID}}" \ -d mode=setup \ --data-urlencode "success_url=https://example.com/success?session_id={CHECKOUT_SESSION_ID}" ``` #### Customers v1 ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d mode=setup \ --data-urlencode "success_url=https://example.com/success?session_id={CHECKOUT_SESSION_ID}" ``` Wenn Ihre Kund/innen ihre Angaben zur Zahlungsmethode machen, werden sie an die `success_url` weitergeleitet. Hierbei handelt es sich um eine Seite auf Ihrer Website, auf der Ihre Kund/innen darüber informiert werden, dass ihre Zahlungsmethode erfolgreich gespeichert 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. > 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. > Die Regeln zum Bacs-Lastschriftverfahren sehen vor, dass die Kundinnen/Kunden bei der Erfassung ihrer Zahlungsinformationen eine E-Mail-Benachrichtigung erhalten. Diese E-Mails versendet Stripe automatisch. Sie können aber auch [Ihre eigenen Bacs-Benachrichtigungen versenden](https://docs.stripe.com/payments/payment-methods/bacs-debit.md#debit-notifications). ## Zahlungsmethode abrufen [Serverseitig] Nachdem ein Kunde/eine Kundin seine/ihre Zahlungsdetails übermittelt hat, rufen Sie das [PaymentMethod](https://docs.stripe.com/payments/payment-methods.md)-Objekt ab. Eine *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs) speichert die bank account-Informationen der Kundinnen und Kunden für spätere Zahlungen. Sie können die PaymentMethod synchron mit der `success_url` oder asynchron mithilfe von *Webhooks* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) abrufen. Ob Sie die PaymentMethod synchron oder asynchron abrufen, hängt von Ihrer Toleranz gegenüber Kaufabbrüchen ab, da Kund/innen in manchen Fällen nach erfolgreicher Zahlung nicht zur `success_url` weitergeleitet werden. (Sie können beispielsweise die Registerkarte im Browser schließen, bevor die Weiterleitung erfolgt ist.) Die Verarbeitung von Webhooks verhindert diese Form von Kaufabbrüchen in Ihrer Integration. #### Webhooks Verarbeiten Sie `checkout.session.completed`-Webhooks, die ein Session-Objekt enthalten. Hier erfahren Sie mehr über das [Einrichten von Webhooks](https://docs.stripe.com/webhooks.md). Beim folgenden Beispiel handelt es sich um eine `checkout.session.completed`-Antwort. ```json { "id": "evt_1Ep24XHssDVaQm2PpwS19Yt0", "object": "event", "api_version": "2019-03-14", "created": 1561420781, "data": { "object": { "id": "cs_test_MlZAaTXUMHjWZ7DcXjusJnDU4MxPalbtL5eYrmS2GKxqscDtpJq8QM0k", "object": "checkout.session", "billing_address_collection": null, "client_reference_id": null, "customer": null, "customer_email": null, "display_items": [], "mode": "setup","setup_intent": "seti_1EzVO3HssDVaQm2PJjXHmLlM", "submit_type": null, "subscription": null, "success_url": "https://example.com/success" } }, "livemode": false, "pending_webhooks": 1, "request": { "id": null, "idempotency_key": null }, "type": "checkout.session.completed" } ``` Beachten Sie den Wert des Schlüssels `setup_intent`, der die ID für das SetupIntent ist, das mit dem Bezahlvorgang erstellt wurde. Ein [SetupIntent](https://docs.stripe.com/payments/setup-intents.md) ist ein Objekt, das dazu dient, die Kundinnen und Kunden bank account-Informationen für zukünftige Zahlungen einzurichten. [Rufen Sie](https://docs.stripe.com/api/setup_intents/retrieve.md) das SetupIntent-Objekt mit der ID ab. Das zurückgegebene Objekt enthält die `payment_method`-ID. ```curl curl https://api.stripe.com/v1/setup_intents/{{SETUPINTENT_ID}} \ -u "<>:" ``` #### Bestätigungs-URL Beziehen Sie die `session_id` aus der URL, wenn Nutzer/innen zu Ihrer Website zurückgeleitet werden, und [rufen Sie](https://docs.stripe.com/api/checkout/sessions/retrieve.md) das Sitzungsobjekt ab. ```curl curl -G https://api.stripe.com/v1/checkout/sessions/{{SESSION_ID}} \ -u "<>:" \ -d "expand[]=setup_intent" ``` > Um sicherzustellen, dass die `session_id` unter der URL verfügbar ist, fügen Sie beim Erstellen der Checkout-Sitzung die Vorlagenvariable `session_id={CHECKOUT_SESSION_ID}` in der `success_url` hinzu. Beachten Sie den SetupIntent, der während des Bezahlvorgangs erstellt wird. Ein [SetupIntent](https://docs.stripe.com/payments/setup-intents.md) ist ein Objekt, das dazu dient, die Kundin bzw. den Kunden bank account für zukünftige Zahlungen einzurichten. Das zurückgegebene Objekt enthält die `payment_method`-ID. ## Ereignisse nach Einrichtung verarbeiten [Serverseitig] Sobald die Checkout-Sitzung abgeschlossen ist, werden die Zahlungsinformationen als Mandat an die Bank übermittelt. Das Mandat kann nach der Erteilung jederzeit geändert werden, wenn etwa die Kundinnen/Kunden ihre Bank anweisen, das Mandat zu ändern oder wenn sie zu einer anderen Bank wechseln. Bei Mandatsänderungen sendet Stripe die folgenden Ereignisse: | Ereignisname | Beschreibung | Werden Zahlungen akzeptiert? | | --- | --- | --- | | `mandate.updated` | Wird ausgegeben, wenn ein Mandat vom Bacs-Netzwerk abgelehnt, widerrufen oder wieder aktiviert wird. Unter [mandate.status](https://docs.stripe.com/api/mandates/object.md#mandate_object-status) erfahren Sie, ob das Lastschriftmandat weiterhin verwendet werden kann. | Ja, sofern der neue Status `active` ist | | `payment_method.automatically_updated` | Wird ausgegeben, wenn sich die kundenseitige Bankverbindung ändert. | Ja | Diese Ereignisse sind im [Dashboard](https://dashboard.stripe.com/events) verfügbar, aber Sie können einen *Webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) einrichten, um diese programmgesteuert zu behandeln. ## Integration testen Es stehen mehrere [Testbankkontonummern](https://docs.stripe.com/keys.md#test-live-modes) zur Verfügung, 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, um sicherzustellen, dass diese Integration bereit ist. Sie können auch das entsprechende Token verwenden, um die manuelle Eingabe der Bankkontodaten zu überspringen. | Bankleitzahl | Kontonummer | Token | Beschreibung | | --- | --- | --- | --- | | `108800` | `00012345` | `pm_bacsDebit_success` | Die Zahlung ist erfolgreich und der PaymentIntent von wird von `processing` auf `succeeded` umgestellt. | | `108800` | `90012345` | `pm_bacsDebit_successDelayed` | Die Zahlung erfolgt innerhalb von drei Minuten und der PaymentIntent von wird von `processing` auf `succeeded` umgestellt. | | `108800` | `33333335` | `pm_bacsDebit_debitNotAuthorized` | Die Zahlung wird akzeptiert, schlägt dann aber unmittelbar fehl. Der Fehlercode `debit_not_authorized` wird ausgegeben und der PaymentIntent geht vom Status `wird verarbeitet` zum Status `requires_payment_method` über. Das Mandat wechselt zu `inaktiv` und die PaymentMethod kann nicht erneut verwendet werden. | | `108800` | `93333335` | `pm_bacsDebit_debitNotAuthorizedDelayed` | Die Zahlung schlägt nach drei Minuten fehl. Der Fehlercode `debit_not_authorized` wird ausgegeben und der PaymentIntent geht vom Status `wird verarbeitet` in den Status `requires_payment_method` über. Das Mandat wechselt zu `inaktiv` und die PaymentMethod kann nicht erneut verwendet werden. | | `108800` | `22222227` | `pm_bacsDebit_insufficientFunds` | Die Zahlung schlägt fehl, die Fehlerkennung `insufficient_funds` wird ausgegeben und der PaymentIntent wird von `processing` auf `requires_payment_method` umgestellt. Das Mandat bleibt `active` und die PaymentMethod kann erneut verwendet werden. | | `108800` | `92222227` | `pm_bacsDebit_insufficientFundsDelayed` | Die Zahlung schlägt nach drei Minuten fehl, die Fehlerkennung `insufficient_funds` wird ausgegeben und der PaymentIntent wird von `processing` auf `requires_payment_method` umgestellt. Das Mandat bleibt `active` und die PaymentMethod kann erneut verwendet werden. | | `108800` | `55555559` | `pm_bacsDebit_dispute` | Die Zahlung erfolgt innerhalb von drei Minuten und der PaymentIntent wechselt von `processing` zu `succeeded`. Eine Zahlungsanfechtung wird jedoch sofort erstellt. | | `108800` | `00033333` | `pm_bacsDebit_mandateRefused` | Die Erstellung der Zahlungsmethode ist erfolgreich, doch das Mandat wird von der Bank der Kundinnen und Kunden abgelehnt und wechselt sofort in den Status `inactive`. | | `108800` | `00044444` | — | Die Anfrage zur Einrichtung des Bacs-Lastschriftverfahrens schlägt aufgrund einer ungültigen Kontonummer sofort fehl und die Kundinnen und Kunden werden aufgefordert, ihre Daten vor dem Absenden zu aktualisieren. Da keine Zahlungsdaten erfasst werden, gibt es für dieses Szenario keinen synthetischen Token. | | `108800` | `34343434` | `pm_bacsDebit_exceedsWeeklyLimit` | Die Zahlung schlägt mit dem Fehlercode `charge_exceeds_source_limit` fehl, da der Zahlungsbetrag dazu führt, dass das Konto sein wöchentliches Zahlungsvolumenlimit überschreitet. | | `108800` | `12121212` | `pm_bacsDebit_exceedsTransactionLimit` | Die Zahlung schlägt mit dem Fehlercode `Zcharge_exceeds_transaction_limit` fehl, da der Zahlungsbetrag das Transaktionsvolumenlimit des Kontos überschreitet. | 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. ## Zahlungsmethode für künftige Zahlungen verwenden [Serverseitig] Wenn Sie eine *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs) eingerichtet haben, können Sie künftige Zahlungen per Bacs-Lastschriftverfahren annehmen, indem Sie einen [PaymentIntent](https://docs.stripe.com/payments/payment-intents.md) erstellen und bestätigen. #### Accounts v2 ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d "automatic_payment_methods[enabled]=true" \ -d "payment_method={{PAYMENTMETHOD_ID}}" \ -d "customer_account={{CUSTOMERACCOUNT_ID}}" \ -d confirm=true \ -d amount=100 \ -d currency=gbp ``` #### Customers v1 ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d "automatic_payment_methods[enabled]=true" \ -d "payment_method={{PAYMENTMETHOD_ID}}" \ -d "customer={{CUSTOMER_ID}}" \ -d confirm=true \ -d amount=100 \ -d currency=gbp ```