Weiter zum Inhalt
Konto erstellen
oder
anmelden
Das Logo der Stripe-Dokumentation
/
KI fragen
Konto erstellen
Anmelden
Jetzt starten
Zahlungen
Revenue
Plattformen und Marktplätze
Geldmanagement
Entwickler-Tools
Übersicht
Informationen zu Stripe Payments
Aktualisieren Sie Ihre Integration
Zahlungsanalysefunktionen
Online-Zahlungen
ÜbersichtIhren Use case findenZahlungen verwalten
Payment Links verwenden
Bezahlseite erstellen
Erweiterte Integration erstellen
In-App-Integration erstellen
Zahlungsmethoden
Zahlungsmethoden hinzufügen
    Übersicht
    Optionen für die Integration von Zahlungsmethoden
    Standardzahlungsmethoden im Dashboard verwalten
    Arten von Zahlungsmethoden
    Karten
    Mit Stripe-Guthaben bezahlen
    Lastschriften
    Bank Redirect
    Banküberweisungen
      Zahlung annehmen
      Kundensaldo
      Rückerstattungen
    Überweisungen (Sources)
    Jetzt kaufen, später bezahlen
    Zahlungen in Echtzeit
    Gutscheine
    Geldbörsen
    Lokale Zahlungsmethoden nach Land aktivieren
    Nutzerdefinierte Zahlungsmethoden
Zahlungsmethoden verwalten
Schnellerer Bezahlvorgang mit Link
Zahlungsschnittstellen
Payment Links
Checkout
Web Elements
In-App-Elements
Zahlungsszenarien
Nutzerdefinierte Zahlungsabläufe
Flexibles Acquiring
Orchestrierung
Präsenzzahlungen
Terminal
Andere Stripe-Produkte
Financial Connections
Krypto
Climate
StartseiteZahlungenAdd payment methodsBank transfers

Eine Banküberweisung annehmen

Verwenden Sie die Payment Intents API, um Zahlungen per Banküberweisung anzunehmen.

Seite kopieren

Wenn Sie zum ersten Mal eine Zahlung per Banküberweisung von einem Kunden/einer Kundin annehmen, generiert Stripe ein virtuelles Bankkonto für diesen Kunden/diese Kundin, das Sie dann direkt mit ihm/ihr teilen können. Alle zukünftigen Zahlungen per Banküberweisung von diesem Kunden/dieser Kundin werden an dieses Bankkonto gesendet. In einigen Ländern stellt Ihnen Stripe auch eine eindeutige Überweisungsreferenznummer zur Verfügung, die Ihre Kund/innen bei jeder Überweisung angeben sollten, um den Abgleich der Überweisung mit ausstehenden Zahlungen zu erleichtern. Beachten Sie, dass in einigen Ländern die Anzahl virtueller Bankkontonummern, die Sie kostenlos erstellen können, begrenzt ist.

Eine Übersicht über die üblichen Schritte bei der Annahme einer Zahlung per Banküberweisung finden Sie im folgenden Sequenzdiagramm:

Umgang mit Unter- und Überzahlungen

Bei Zahlungen per Banküberweisung ist es möglich, dass Sie mehr oder weniger als den erwarteten Zahlungsbetrag erhalten. Wird zu wenig überwiesen, übernimmt Stripe zum Teil die Finanzierung eines offenen Payment Intent. Rechnungen werden jedoch nicht teilfinanziert und bleiben offen, bis die eingehenden Gelder den vollständigen Rechnungsbetrag decken.

Wenn der Kunde/die Kundin mehr als den erwarteten Betrag sendet, versucht Stripe, die eingehenden Gelder mit einer offenen Zahlung abzugleichen und den verbleibenden überschüssigen Betrag im Barguthaben des Kunden/der Kundin zu halten. Weitere Einzelheiten zu unserem Umgang mit dem Abgleich finden Sie im entsprechenden Abschnitt unserer Dokumentation.

Wenn ein/e Kund/in zu wenig bezahlt:

Wenn ein/e Kund/in zu viel bezahlt:

Umgang mit mehreren offenen Zahlungen oder Rechnungen

Möglicherweise haben Sie mehrere offene Zahlungen oder Rechnungen, die per Banküberweisung bezahlt werden können. Als Standardeinstellung versucht Stripe, die Banküberweisung automatisch abzugleichen. Dazu verwenden wir Informationen wie den Referenzcode der Überweisung oder den überwiesenen Betrag.

Sie können den automatischen Abgleich deaktivieren und Zahlungen und Rechnungen selbst manuell abgleichen. Sie können das automatische Abgleichsverhalten pro Kunde/Kundin außer Kraft setzen, indem Sie den Abgleichsmodus auf manuell festlegen.

Stripe einrichten
Serverseitig

Zunächst benötigen Sie ein Stripe-Konto. Jetzt registrieren.

Verwenden Sie unsere offiziellen Bibliotheken für den Zugriff auf die Stripe-API über Ihre Anwendung:

Command Line
Ruby
# Available as a gem sudo gem install stripe
Gemfile
Ruby
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Kunden erstellen und abrufen
Serverseitig

Sie müssen ein Kundenobjekt zuordnen, um jede Banküberweisungszahlung abzugleichen. Wenn Sie bereits über ein Kundenobjekt verfügen, können Sie diesen Schritt überspringen. Erstellen Sie andernfalls ein neues Kundenobjekt.

Command Line
cURL
curl -X POST https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"

PaymentIntent erstellen
Serverseitig

A PaymentIntent is an object that represents your intent to collect payment from a customer and tracks the lifecycle of the payment process through each stage. Create a PaymentIntent on the server, specifying the amount and currency you want to collect. You must also populate the customer parameter of the PaymentIntent creation request. Bank transfers aren’t available on PaymentIntents without a customer.

Bevor Sie einen Payment Intent erstellen, müssen Sie unbedingt zuvor im Dashboard in den Einstellungen für Zahlungsmethoden die Option Banküberweisung aktivieren.

Notiz

Mit dynamischen Zahlungsmethoden übernimmt Stripe die Rückgabe geeigneter Zahlungsmethoden basierend auf Faktoren wie Betrag, Währung und Zahlungsablauf der Transaktion.

Command Line
cURL
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d customer=
{{CUSTOMER_ID}}
\ -d currency=usd \ -d "automatic_payment_methods[enabled]"=true

In der neuesten Version der API ist die Angabe des Parameters automatic_payment_methods optional, da Stripe seine Funktionalität standardmäßig aktiviert.

Wenn der Kunde/die Kundin bereits über ein Guthaben verfügt, das den Zahlungsbetrag abdeckt, wird der PaymentIntent sofort mit dem Status succeeded erfolgreich ausgeführt. Kundinnen/Kunden können ein Guthaben ansammeln, wenn sie versehentlich zu viel bezahlen. Dies kommt bei Banküberweisungen häufig vor. Sie müssen Kundensalden innerhalb eines bestimmten Zeitraums basierend auf Ihrem Standort abgleichen.

Zahlungsdaten erfassen
Clientseitig

Erfassen Sie Zahlungsdetails auf dem Client mit dem Payment Element. Das Payment Element ist eine vorgefertigte Komponente der Nutzeroberfläche, die die Erfassung von Zahlungsdaten für eine Vielzahl von Zahlungsmethoden vereinfacht.

Das Payment Element enthält einen iFrame, der Zahlungsinformationen über eine HTTPS-Verbindung sicher an Stripe sendet. Vermeiden Sie es, das Payment Element in einem anderen iFrame zu platzieren, da einige Zahlungsmethoden die Weiterleitung an eine andere Seite zur Zahlungsbestätigung verlangen.

Die Adresse der Bezahlseite muss mit https:// beginnen, nicht mit http://, damit Ihre Integration funktioniert. Sie können Ihre Integration ohne HTTPS testen. Denken Sie jedoch daran, dieses zu aktivieren, wenn Sie zur Annahme von Live-Zahlungen bereit sind.

Stripe.js einrichten

Das Payment Element ist ein Feature von Stripe.js und steht damit automatisch zur Verfügung. Fügen Sie das Stripe.js-Skript auf Ihrer Bezahlseite ein, indem Sie es in den head Ihrer HTML-Datei einbinden. Laden Sie Stripe.js immer direkt von js.stripe.com, um die PCI-Konformität zu gewährleisten. Fügen Sie das Skript nicht in ein Paket ein und hosten Sie selbst keine Kopie davon.

checkout.html
<head> <title>Checkout</title> <script src="https://js.stripe.com/v3/"></script> </head>

Erstellen Sie auf Ihrer Bezahlseite eine Instanz von Stripe mit dem folgenden JavaScript:

checkout.js
// Set your publishable key: remember to change this to your live publishable key in production // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
);

Payment Element Ihrer Bezahlseite hinzufügen

Das Payment Element benötigt einen festen Platz auf Ihrer Zahlungsseite. Erstellen Sie einen leeren DOM-Knoten (Container) mit einer eindeutigen ID in Ihrem Zahlungsformular:

checkout.html
<form id="payment-form"> <div id="payment-element"> <!-- Elements will create form elements here --> </div> <button id="submit">Submit</button> <div id="error-message"> <!-- Display error message to your customers here --> </div> </form>

Wenn das vorherige Formular geladen wurde, erstellen Sie eine Instanz des Payment Element und verbinden es mit dem DOM-Knoten (Container). Übergeben Sie das Client-Geheimnis aus dem vorherigen Schritt an options, wenn Sie die Elements-Instanz erstellen:

Gehen Sie sorgfältig mit dem Client-Geheimnis um, denn es kann die Zahlung abschließen. Protokollieren Sie es nicht, betten Sie es nicht in URLs ein und geben Sie es nur dem/der Kund/in preis.

checkout.js
const options = { clientSecret: '{{CLIENT_SECRET}}', // Fully customizable with appearance API. appearance: {/*...*/}, }; // Set up Stripe.js and Elements to use in checkout form, passing the client secret obtained in a previous step const elements = stripe.elements(options); // Create and mount the Payment Element const paymentElementOptions = { layout: 'accordion'}; const paymentElement = elements.create('payment', paymentElementOptions); paymentElement.mount('#payment-element');

Stripe Elements durchsuchen

Stripe Elements ist eine Sammlung von Drop-In-Komponenten der Nutzeroberfläche. Um Ihr Formular weiter anzupassen oder andere Kundeninformationen zu erfassen, durchsuchen Sie die Elements-Dokumentation.

Das Payment Element rendert ein dynamisches Formular, mit dem Kund/innen ihre gewünschte Zahlungsmethode auswählen können. Für jede Zahlungsmethode fordert das Formular die Kund/innen automatisch auf, alle erforderlichen Zahlungsdaten einzugeben.

Erscheinungsbild anpassen

Passen Sie das Payment Element an das Design Ihrer Website an, indem Sie beim Erstellen des Elements-Anbieters das Erscheinungsbild-Objekt an options übergeben.

Adressen einholen

Standardmäßig erfasst das Payment Element nur die erforderlichen Angaben zur Rechnungsadresse. Verwenden Sie das Address Element, um die vollständige Rechnungsadresse (z. B. zur Berechnung der Steuer für digitale Waren und Dienstleistungen) oder die Versandadresse einer Kundin/eines Kunden zu erfassen.

Nach der Bestätigung öffnet Stripe automatisch ein Modal, um die Überweisungsdaten anzuzeigen.

Zahlung an Stripe senden
Clientseitig

Verwenden Sie stripe.confirmPayment, um die Zahlung mit Details aus dem Payment Element vorzunehmen. Geben Sie für diese Funktion eine return_url an, um anzugeben, wohin Stripe die Nutzer/innen nach Durchführung der Zahlung weiterleiten soll. Ihre Nutzer/innen werden möglicherweise zunächst an eine zwischengeschaltete Seite weitergeleitet, wie z. B. eine Bankautorisierungsseite, bevor sie zur return_url weitergeleitet werden. Kartenzahlungen werden sofort zur return_url weitergeleitet, wenn eine Zahlung erfolgreich war.

Wenn Sie Kartenzahlungen nach Abschluss der Zahlung nicht weiterleiten möchten, können Sie redirect auf if_required festlegen. Dadurch werden nur Kundinnen/Kunden weitergeleitet, die mit weiterleitungsbasierten Zahlungsmethoden bezahlen.

checkout.js
const form = document.getElementById('payment-form'); form.addEventListener('submit', async (event) => { event.preventDefault(); const {error} = await stripe.confirmPayment({ //`Elements` instance that was used to create the Payment Element elements, confirmParams: { return_url: 'https://example.com/order/123/complete', }, }); if (error) { // This point will only be reached if there is an immediate error when // confirming the payment. Show error to your customer (for example, payment // details incomplete) const messageContainer = document.querySelector('#error-message'); messageContainer.textContent = error.message; } else { // Your customer will be redirected to your `return_url`. For some payment // methods like iDEAL, your customer will be redirected to an intermediate // site first to authorize the payment, then redirected to the `return_url`. } });

Achten Sie darauf, dass die return_url auf eine Seite Ihrer Website verweist, die den Status der Zahlung angibt. Wenn Stripe den/die Kund/in an die return_url weiterleitet, stellen wir die folgenden URL-Abfrageparameter bereit:

ParameterBeschreibung
payment_intentDie eindeutige ID für die PaymentIntent.
payment_intent_client_secretDas Client-Geheimnis des PaymentIntent-Objekts.

Vorsicht

Wenn Sie über Tools verfügen, die die Browser-Sitzung der Kund/innen verfolgen, müssen Sie möglicherweise die Domain stripe.com zur Referenz-Ausschlussliste hinzufügen. Weiterleitungen haben zur Folge, dass einige Tools neue Sitzungen erstellen. Dies wiederum hindert Sie daran, die gesamte Sitzung zu verfolgen.

Verwenden Sie einen der Abfrageparameter, um den PaymentIntent abzurufen. Überprüfen Sie den Status des PaymentIntent, um zu entscheiden, was Ihren Kundinnen/Kunden angezeigt werden soll. Sie können bei der Angabe der return_url auch Ihre eigenen Abfrageparameter anhängen, die während des Weiterleitungsvorgangs erhalten bleiben.

status.js
// Initialize Stripe.js using your publishable key const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); // Retrieve the "payment_intent_client_secret" query parameter appended to // your return_url by Stripe.js const clientSecret = new URLSearchParams(window.location.search).get( 'payment_intent_client_secret' ); // Retrieve the PaymentIntent stripe.retrievePaymentIntent(clientSecret).then(({paymentIntent}) => { const message = document.querySelector('#message') // Inspect the PaymentIntent `status` to indicate the status of the payment // to your customer. // // Some payment methods will [immediately succeed or fail][0] upon // confirmation, while others will first enter a `processing` state. // // [0]: https://stripe.com/docs/payments/payment-methods#payment-notification switch (paymentIntent.status) { case 'succeeded': message.innerText = 'Success! Payment received.'; break; case 'processing': message.innerText = "Payment processing. We'll update you when payment is received."; break; case 'requires_payment_method': message.innerText = 'Payment failed. Please try another payment method.'; // Redirect your user back to your payment page to attempt collecting // payment again break; default: message.innerText = 'Something went wrong.'; break; } });

OptionalZahlungsanweisungen per E-Mail senden

Erfolgreichen PaymentIntent bestätigen

Die PaymentIntent verbleibt im Status requires_action, bis Gelder auf dem Bankkonto eingehen. Wenn die Gelder bereit sind, wird der PaymentIntent-Status von requires_action auf succeeded aktualisiert.

Ihr Webhook-Endpoint muss so eingerichtet werden, dass er das Ereignis payment_intent.partially_funded empfängt. Wenn der PaymentIntent teilweise finanziert ist, verbleibt der Status auf requires_action.

Sie können einen Webhook über das Dashboard hinzufügen.

Alternatively, you can use the Webhook Endpoints API to start receiving the payment_intent.partially_funded event.

Vorsicht

Das Auslösen von Ereignissen in der Beta-API-Version, wie payment_intent.partially_funded, wird von der Stripe-CLI nicht unterstützt.

Die folgenden Ereignisse werden während des Zahlungsflusses gesendet, wenn die PaymentIntent aktualisiert wird.

EreignisBeschreibungNächste Schritte
payment_intent.requires_actionWird bei der Bestätigung gesendet, wenn das Kundenguthaben für den Abgleich der PaymentIntent nicht ausreicht. Die PaymentIntent wechselt zu requires_action.Weisen Sie eine Kundenüberweisung mit dem amount_remaining an.
payment_intent.partially_fundedEine Kundenüberweisung wurde auf die PaymentIntent angewendet. Dies reichte aber nicht aus, um die Zahlung abzuschließen. Das kann passieren, wenn (aufgrund einer irrtümlichen Unterzahlung oder wegen von der Bank erhobenen Gebühren) zu wenig überwiesen wurde oder weil ein verbliebener Kundensaldo auf diese PaymentIntent angewendet wurde. PaymentIntents, die teilweise finanziert sind, werden erst in Ihrem Konto angezeigt, wenn die Zahlung abgeschlossen ist.Weisen Sie eine weitere Kundenüberweisung mit dem neuen amount_remaining an, um die Zahlung abzuschließen. Wenn Sie die Zahlung mit den teilweise zugewiesenen Mitteln abschließen möchten, können Sie den amount aktualisieren und den PaymentIntent erneut bestätigen bestätigen.
payment_intent.succeededDie Kundenzahlung war erfolgreich.Führen Sie den Waren- bzw. Dienstleistungsauftrag aus.

Vorsicht

Wenn Sie den Betrag eines teilweise finanzierten PaymentIntent ändern, werden die Gelder dem Kundenguthaben wieder gutgeschrieben. Wenn andere PaymentIntents offen sind, finanziert Stripe diese automatisch. Wenn der Kunde/die Kundin für den manuellen Abgleich konfiguriert ist, müssen Sie die Gelder erneut zuweisen.

Wir empfehlen die Verwendung von Webhooks, um die erfolgreiche Abbuchung zu bestätigen und die Kundinnen/Kunden zu informieren, dass die Zahlung abgeschlossen ist.

Beispielcode

Ruby
require 'json' # Using Sinatra post '/webhook' do payload = request.body.read event = nil begin event = Stripe::Event.construct_from( JSON.parse(payload, symbolize_names: true)

Ausstehende Zahlungen im Dashboard anzeigen

Sie können alle ausstehenden PaymentIntents für Banküberweisungen im Dashboard anzeigen, indem Sie den Filter Warten auf Finanzierung auf Status anwenden.

Integration testen

Sie können Ihre Integration testen, indem Sie eine eingehende Banküberweisung mit der API, dem Dashboard oder einer Beta-Version der Stripe-CLI simulieren.

To simulate a bank transfer using the Dashboard in a sandbox, navigate to the customer’s page in the Dashboard. Under Payment methods, click Add and select Fund cash balance (test only).

Umgang mit vorübergehenden Verfügbarkeitsproblemen

Die folgenden Fehlercodes weisen auf vorübergehende Probleme mit der Verfügbarkeit der Zahlungsmethode hin:

CodeBeschreibungHandling
payment_method_rate_limit_exceededFür diese Zahlungsmethode, die strengeren Grenzwerten als den API-weiten Ratenbegrenzungen unterliegt, wurden in kurzer Zeit zu viele Anfragen gestellt.Diese Fehler können bei mehreren API-Anforderungen weiterhin auftreten, wenn viele Ihrer Kund/innen versuchen, dieselbe Zahlungsmethode zu verwenden (z. B. während eines laufenden Verkaufs auf Ihrer Website). Bitten Sie in diesem Fall Ihre Kund/innen, eine andere Zahlungsmethode auszuwählen.

Vorsicht

Wenn Sie allgemein oder aufgrund eines bevorstehenden Ereignisses starke Nutzung erwarten, kontaktieren Sie uns, sobald Sie davon erfahren.

War diese Seite hilfreich?
JaNein
Benötigen Sie Hilfe? Kontaktieren Sie den Kundensupport.
Nehmen Sie an unserem Programm für frühzeitigen Zugriff teil.
Schauen Sie sich unser Änderungsprotokoll an.
Fragen? Sales-Team kontaktieren.
LLM? Lesen Sie llms.txt.
Unterstützt von Markdoc