Weiter zum Inhalt
Konto erstellen oder anmelden
Das Logo der Stripe-Dokumentation
/
KI fragen
Konto erstellenAnmelden
Jetzt starten
Zahlungen
Umsatz
Plattformen und Marktplätze
Geldmanagement
Entwicklerressourcen
APIs und SDKsHilfe
Übersicht
Informationen zu Stripe Payments
Aktualisieren Sie Ihre Integration
Zahlungsanalysefunktionen
Online-Zahlungen
ÜbersichtIhren Use case findenVerwenden Sie Managed Payments
Payment Links verwenden
Vorgefertigte Checkout-Seite verwenden
Erstellen Sie eine benutzerdefinierte Integration mit Elements
In-App-Integration erstellen
Präsenzzahlungen
Terminal
Zahlungsmethoden
Zahlungsmethoden hinzufügen
    Übersicht
    Optionen für die Integration von Zahlungsmethoden
    Standardzahlungsmethoden im Dashboard verwalten
    Arten von Zahlungsmethoden
    Karten
    Mit Stripe-Guthaben bezahlen
    Stablecoin-Zahlungen
    Lastschriften
      ACH Direct Debit
        Zahlung annehmen
        Bankverbindung speichern
        Migrieren der ACH Direct Debit von Gebühren zu neueren APIs
        Migration von einem anderen Zahlungsabwickler
        Gesperrte Bankkonten
        SEC-Codes
      BACS-Lastschriftverfahren
      Vorab autorisierte Lastschriften in Kanada
      BECS-Lastschriftverfahren (Australien)
      BECS-Lastschriftverfahren in Neuseeland
      SEPA-Lastschrift
    Bank Redirect
    Banküberweisungen
    Ü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
Zahlungsszenarien
Umgang mit mehreren Währungen
Nutzerdefinierte Zahlungsabläufe
Flexibles Acquiring
Orchestrierung
Mehr als Zahlungen
Unternehmensgründung
Krypto
Agentenbasierter Handel
Financial Connections
Climate
Betrug verstehen
Betrugsprävention von Radar
Zahlungsanfechtungen verwalten
Identitäten verifizieren
Vereinigte Staaten
Deutsch
StartseiteZahlungenAdd payment methodsBank debitsACH Direct Debit

ACH-Lastschriftzahlungen annehmen

Erstellen Sie ein nutzerspezifisches Zahlungsformular für die Verwendung mit Stripe Checkout, um Zahlungen per ACH-Lastschrift anzunehmen.

Die Annahme von ACH-Lastschriftzahlungen auf Ihrer Website umfasst Folgendes:

  • Objekt zur Zahlungsverfolgung erstellen
  • Erfassen von Zahlungsmethodeninformationen mit sofortiger Verifizierung, die durch Stripe Financial Connections ermöglicht wird
  • Zahlung zur weiteren Verarbeitung an Stripe übermitteln
  • Bankkonto Ihres Kunden/Ihrer Kundin verifizieren

Notiz

Bei ACH Direct Debit handelt es sich um eine Zahlungsmethode mit verzögerter Benachrichtigung. Dies bedeutet, dass Gelder nicht sofort nach der Zahlung verfügbar sind. Eine Zahlung benötigt in der Regel 4 Werktage bis zum Eingang auf Ihrem Konto.

Stripe verwendet das Zahlungsobjekt, den Payment Intent, zur Dokumentation und Verarbeitung aller Zahlungsstatus bis zum Zahlungsabschluss.

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
Python
PHP
Java
Node.js
Go
.NET
No results
# Available as a gem sudo gem install stripe
Gemfile
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Kundinnen/Kunden erstellen oder abrufen
Empfohlen
Serverseitig

Erstellen Sie ein Kundenobjekt, wenn Ihr/e Nutzer/in ein Konto bei Ihrem Unternehmen erstellt, oder rufen Sie einen bestehenden Kunden/eine bestehende Kundin ab, der/die diesem Nutzer/dieser Nutzerin zugeordnet ist. Wenn Sie die ID des Kundenobjekts mit Ihrer eigenen Darstellung eines Kunden/einer Kundin verknüpfen, können Sie die gespeicherten Angaben zur Zahlungsmethode später abrufen und verwenden. Geben Sie eine E-Mail-Adresse an, um die Optimierung für wiederkehrende Nutzer/innen von Financial Connections zu aktivieren.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d email={{CUSTOMER_EMAIL}}

PaymentIntent erstellen
Serverseitig

Ein PaymentIntent ist ein Objekt, das Ihre Absicht darstellt, eine Zahlung von einer Kundin/einem Kunden einzuziehen, und das den Lebenszyklus des Zahlungsprozesses in jeder Phase verfolgt.

Erstellen Sie einen PaymentIntent auf Ihrem Server und geben Sie den einzuziehenden Betrag und die usd an. Wenn Sie bereits über eine Integration verfügen, die die Payment Intents API verwendet, fügen Sie us_bank_account der Liste der Zahlungsmethoden-Typen für Ihren PaymentIntent hinzu. Geben Sie die ID der Kundin/des Kunden an.

Falls Sie die Zahlungsmethode künftig wiederverwenden möchten, geben Sie den Parameter setup_future_usage mit dem Wert off_session an.

Weitere Informationen zu den Gebühren für Financial Connections finden Sie unter Preisdetails.

Bei der Erfassung von Zahlungsinformationen für Bankkonten wird standardmäßig Financial Connections verwendet, um das Konto Ihres Kunden/Ihrer Kundin sofort zu verifizieren, mit einer Ausweichoption für die manuelle Eingabe der Kontonummer und die Verifizierung von Testeinzahlungen. In der Financial Connections-Dokumentation erfahren Sie, wie Sie Financial Connections konfigurieren und auf zusätzliche Kontodaten zugreifen, um Ihre ACH-Integration zu optimieren. Beispielsweise können Sie Financial Connections verwenden, um den Kontostand zu prüfen, bevor Sie die ACH-Zahlung veranlassen.

Notiz

Um den Zugriff auf zusätzliche Daten auszudehnen, nachdem ein/e Kund/in sein/ihr Konto authentifiziert hat, muss er/sie das Konto mit erweiterten Berechtigungen erneut verknüpfen.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=usd \ -d setup_future_usage=off_session \ -d customer={{CUSTOMER_ID}} \ -d "payment_method_types[]"=us_bank_account

Client-Geheimnis abrufen

Im PaymentIntent ist ein Client-Geheimnis enthalten, das auf dem Client verwendet wird, um Zahlungen sicher abzuschließen. Es gibt verschiedene Verfahren zum Übergeben des Client-Geheimnisses an den Client.

Rufen Sie das Client-Geheimnis von einem Endpoint auf Ihrem Server ab, indem Sie die Browser-Funktion fetch verwenden. Diese Vorgehensweise funktioniert am besten, wenn es sich bei Ihrer Client-Seite um eine einseitige Anwendung handelt, insbesondere wenn sie mit einem modernen Frontend-Framework wie React erstellt wurde. Erstellen Sie den Server-Endpoint, der das Client-Geheimnis bereitstellt:

main.rb
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
get '/secret' do intent = # ... Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end

Und dann rufen Sie das Client-Geheimnis mit JavaScript auf der Client-Seite ab:

(async () => { const response = await fetch('/secret'); const {client_secret: clientSecret} = await response.json(); // Render the form using the clientSecret })();

Angaben zur Zahlungsmethode erfassen
Clientseitig

Wenn Kundinnen/Kunden über das „Click to Pay“-Verfahren mit ACH Direct Debit zahlen, empfehlen wir Ihnen, Stripe.js zu verwenden, um die Zahlung an Stripe zu übermitteln. Stripe.js ist unsere grundlegende JavaScript-Bibliothek für die Erstellung von Zahlungsabläufen. Sie übernimmt automatisch komplexe Integrationsaufgaben und ermöglicht es Ihnen, Ihre Integration in Zukunft unkompliziert um andere Zahlungsmethoden zu erweitern.

Binden Sie das Stripe.js-Skript in Ihre Zahlungsseite ein, indem Sie es im head Ihrer HTML-Datei einfügen.

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

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

client.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'
);

Anstatt das gesamte PaymentIntent-Objekt an den Client zu übermitteln, verwenden Sie dessen Client-Geheimnis aus dem vorherigen Schritt. Dieses unterscheidet sich von Ihren API-Schlüsseln, mit denen Anfragen der Stripe API authentifiziert werden.

Gehen Sie vorsichtig mit dem Client-Geheimnis um, da es die Zahlung abschließen kann. Protokollieren Sie es nicht, betten Sie es nicht in URLs ein und machen Sie es nur dem Kunden/der Kundin zugänglich.

Verwenden Sie stripe.collectBankAccountForPayment , um Bankkontodaten mit Financial Connections zu erfassen, eine PaymentMethod zu erstellen und diese PaymentMethod an den PaymentIntent anzuhängen. Der Parameter billing_details muss den Namen des Kontoinhabers/der Kontoinhaberin enthalten, um eine PaymentMethod für ein ACH-Lastschriftkonto zu erstellen.

script.js
// Use the form that already exists on the web page. const paymentMethodForm = document.getElementById('payment-method-form'); const confirmationForm = document.getElementById('confirmation-form'); paymentMethodForm.addEventListener('submit', (ev) => { ev.preventDefault(); const accountHolderNameField = document.getElementById('account-holder-name-field'); const emailField = document.getElementById('email-field'); // Calling this method will open the instant verification dialog. stripe.collectBankAccountForPayment({ clientSecret: clientSecret, params: { payment_method_type: 'us_bank_account', payment_method_data: { billing_details: { name: accountHolderNameField.value, email: emailField.value, }, }, }, expand: ['payment_method'], }) .then(({paymentIntent, error}) => { if (error) { console.error(error.message); // PaymentMethod collection failed for some reason. } else if (paymentIntent.status === 'requires_payment_method') { // Customer canceled the hosted verification modal. Present them with other // payment method type options. } else if (paymentIntent.status === 'requires_confirmation') { // We collected an account - possibly instantly verified, but possibly // manually-entered. Display payment method details and mandate text // to the customer and confirm the intent once they accept // the mandate. confirmationForm.show(); } }); });

Der Stripe Financial Connections-Authentifizierungsvogang verarbeitet die Erfassung und Überprüfung von Bankkontodaten automatisch. Wenn Ihr Kunde/Ihre Kundin den Authentifizierungsvorgang abschließt, wird die PaymentMethod automatisch an den PaymentIntent angehängt und ein Financial Connections Account wird erstellt.

Häufiger Fehler

Bankkonten, die Ihre Kundinnen/Kunden durch manuelle Eingabe und Testeinzahlungen verknüpfen, haben keinen Zugriff auf zusätzliche Bankkontodaten wie Salden, Kontoinhaberschaft und Transaktionen.

Um die beste Nutzererfahrung auf allen Geräten zu bieten, setzen Sie die minimum-scale des Darstellungsfelds für Ihre Seite mithilfe des meta-Tags des Darstellungsfelds auf 1.

<meta name="viewport" content="width=device-width, minimum-scale=1" />

OptionalAuf Daten für ein Financial Connections-Bankkonto zugreifen
Serverseitig

Sie können nur dann auf Financial Connections-Daten zugreifen, wenn Sie beim Erstellen Ihres/Ihrer PaymentIntent zusätzliche Datenberechtigungen anfordern.

Nachdem Ihre Kundinnen und Kunden den Authentifizierungsvorgang von Stripe Financial Connections erfolgreich abgeschlossen haben, enthält die zurückgegebene PaymentMethod us_bank_account eine financial_connections_account-ID, die auf ein Financial Connections-Konto verweist. Verwenden Sie diese ID, um auf Kontodaten zuzugreifen.

Häufiger Fehler

Bankkonten, die Ihre Kunden/Kundinnen durch manuelle Eingabe verknüpfen, und Testeinzahlungen haben keine financial_connections_account auf der Zahlungsmethode.

Um die Financial Connections-Konto-ID zu ermitteln, rufen Sie den PaymentIntent ab und erweitern Sie das Attribut payment_method:

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -G https://api.stripe.com/v1/payment_intents/
{{PAYMENT_INTENT_ID}}
\ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "expand[]"=payment_method
{ "id": "{{PAYMENT_INTENT_ID}}", "object": "payment_intent", // ... "payment_method": { "id": "{{PAYMENT_METHOD_ID}}", // ... "type": "us_bank_account" "us_bank_account": { "account_holder_type": "individual", "account_type": "checking", "bank_name": "TEST BANK", "financial_connections_account": "{{FINANCIAL_CONNECTIONS_ACCOUNT_ID}}", "fingerprint": "q9qchffggRjlX2tb", "last4": "6789", "routing_number": "110000000" } } // ... }

Wenn Sie sich für die balances-Berechtigung entschieden haben, empfehlen wir Ihnen, Salden zu diesem Zeitpunkt zu überprüfen, um eine ausreichende Deckung zu gewährleisten, bevor Sie eine Zahlung bestätigen.

Erfahren Sie mehr über die Verwendung zusätzlicher Kontodaten zur Optimierung Ihrer ACH-Integration mit Financial Connections.

Mandatsbestätigung einziehen und die Zahlung übermitteln
Clientseitig

Bevor Sie die Zahlung veranlassen können, müssen Sie eine Zahlungsautorisierung von Ihrem/Ihrer Kund/in einholen, indem Sie Mandatsbedingungen anzeigen, denen er/sie zustimmen muss.

Um die Nacha-Regeln einzuhalten, müssen Sie eine Autorisierung von Ihrem Kunden/Ihrer Kundin einholen, bevor Sie die Zahlung veranlassen können. Dies tun Sie durch Anzeigen von Mandatskonditionen, denen der Kunde/die Kundin zustimmen muss. Weitere Informationen finden Sie unter [Mandate]](/payments/ach-direct-debit#mandates).

Wenn der Kunde/die Kundin den Mandatskonditionen zustimmt, müssen Sie den PaymentIntent bestätigen. Verwenden Sie stripe.confirmUsBankAccountPayment, um die Zahlung abzuschließen, wenn der Kunde/die Kundin das Formular absendet.

script.js
confirmationForm.addEventListener('submit', (ev) => { ev.preventDefault(); stripe.confirmUsBankAccountPayment(clientSecret) .then(({paymentIntent, error}) => { if (error) { console.error(error.message); // The payment failed for some reason. } else if (paymentIntent.status === "requires_payment_method") { // Confirmation failed. Attempt again with a different payment method. } else if (paymentIntent.status === "processing") { // Confirmation succeeded! The account will be debited. // Display a message to customer. } else if (paymentIntent.next_action?.type === "verify_with_microdeposits") { // The account needs to be verified through microdeposits. // Display a message to consumer with next steps (consumer waits for // microdeposits, then enters a statement descriptor code on a page sent to them through email). } }); });

Notiz

Die Ausführung von stripe.confirmUsBankAccountPayment kann einige Sekunden dauern. Während dieser Zeit sollten Sie Ihr Formular deaktivieren, damit keine erneute Übermittlung erfolgen kann. Lassen Sie stattdessen ein Wartesymbol einblenden, wie beispielsweise eine Sanduhr. Tritt ein Fehler auf, lassen Sie eine Fehlermeldung für die Kundin/den Kunden anzeigen, aktivieren Sie das Formular erneut und blenden Sie das Wartesymbol aus.

Bei erfolgreicher Ausführung gibt Stripe ein PaymentIntent-Objekt mit einem der folgenden möglichen Status zurück:

StatusBeschreibungAusblick
requires_actionWeitere Schritte sind erforderlich, um die Bankkontoverifizierung abzuschließen.Schritt 6: Bankkonten mit Testeinzahlungen verifizieren
processingDas Bankkonto wurde sofort verifiziert oder eine Verifizierung war nicht notwendig.Schritt 7: Erfolgreichen PaymentIntent bestätigen

Nach erfolgreicher Bestätigung des PaymentIntent muss eine E-Mail-Bestätigung des Mandats und der erfassten Bankkontodaten an Ihren Kunden/Ihre Kundin gesendet werden. Stripe kümmert sich standardmäßig darum, aber Sie können auch nutzerdefinierte Benachrichtigungen senden, wenn Sie dies vorziehen.

Bankkonto mit Testeinzahlungen verifizieren
Clientseitig

Nicht alle Kund/innen können das Bankkonto sofort verifizieren. Dieser Schritt wird nur ausgeführt, wenn Ihr/e Kund/in die Sofortverifizierung im vorherigen Schritt deaktiviert hat.

In diesen Fällen sendet Stripe eine descriptor_code-Testeinzahlung und greift möglicherweise auf eine amount-Testeinzahlung zurück, falls weitere Probleme bei der Verifizierung des Bankkontos auftreten. Es dauert 1–2 Werktage, bis diese Einzahlungen auf der Online-Abrechnung des Kunden/der Kundin erscheinen

  • Code der Zahlungsbeschreibung. Stripe sendet eine einzelne Mikroeinzahlung über 0,01 USD an das Bankkonto des/der Kund/in mit einem einmaligen, 6-stelligen descriptor_code, der mit SM beginnt. Ihr/e Kund/in verwendet diese Zeichenfolge, um sein/ihr Bankkonto zu verifizieren.
  • Betrag: Stripe sendet zwei nicht eindeutige Testeinzahlungen an das Kundenbankkonto, wobei ACCTVERIFY als Zahlungsbeschreibung in der Abrechnung angegeben ist. Ihre Kundin/Ihr Kunde verwendet die Einzahlungsbeträge zur Verifizierung des Bankkontos.

Das Ergebnis des Aufrufs der Methode stripe.confirmUsBankAccountPayment im vorhergehenden Schritt ist ein PaymentIntent mit dem Status requires_action. Der PaymentIntent enthält das Feld next_action, das einige nützliche Informationen zum Abschließen der Verifizierung enthält.

next_action: { type: "verify_with_microdeposits", verify_with_microdeposits: { arrival_date: 1647586800, hosted_verification_url: "https://payments.stripe.com/…", microdeposit_type: "descriptor_code" } }

Wenn Sie eine E-Mail-Adresse für die Rechnungsstellung angegeben haben, benachrichtigt Stripe Ihre Kundinnen und Kunden über diese E-Mail-Adresse, wann die Einzahlungen voraussichtlich eingehen werden. Die E-Mail enthält einen Link zu einer von Stripe gehosteten Verifizierungsseite, auf der sie die Beträge der Einzahlungen bestätigen und die Verifizierung abschließen können.

Achtung

Verifizierungsversuche dürfen für beschreibungsbasierte Testeinzahlungen bis zu 10 mal und für betragsbasierte bis zu 3 mal fehlschlagen. Wenn Sie dieses Limit überschreiten, können wir das Bankkonto nicht mehr verifizieren. Darüber hinaus gilt für Verifizierungen von Testeinzahlungen eine Zeitüberschreitung von 10 Tagen. Werden Testeinzahlungen nicht innerhalb dieser Zeit verifiziert, fordert der PaymentIntent wieder neue Angaben zur Zahlungsmethode an. Wenn Sie Ihren Kund/innen genau erläutern, was Testeinzahlungen sind und wie sie verwendet werden, können Sie Probleme bei der Verifizierung vermeiden.

Optional: Nutzerdefinierte E-Mails-Benachrichtigungen senden

Optional können Sie personalisierte E-Mail-Benachrichtigungen an Ihren Kunden/Ihre Kundin senden. Nachdem Sie die nutzerspezifischen E-Mails eingerichtet haben, müssen Sie angeben, wie der Kunde/die Kundin auf die Verifizierungs-E-Mail antwortet. Wählen Sie dazu eine der folgenden Optionen aus:

  • Verwenden Sie die von Stripe gehostete Verifizierungsseite. Verwenden Sie dazu die URL verify_with_microdeposits[hosted_verification_url] im next_action-Objekt, um Ihre Kundinnen/Kunden zum Abschluss des Verifizierungsvorgangs zu leiten.

  • Wenn Sie die von Stripe gehostete Verifizierungsseite nicht verwenden möchten, können Sie auf Ihrer Website ein Formular für Ihre Kundinnen/Kunden zur Weiterleitung von Testeinzahlungen an Sie erstellen und das Bankkonto mit Stripe.js verifizieren.

    • Richten Sie das Formular mindestens so ein, dass es den Parameter descriptor code verarbeitet, bei dem es sich um eine 6-stellige Zeichenfolge zu Verifizierungszwecken handelt.
    • Stripe empfiehlt außerdem, dass Sie Ihr Formular so einstellen, dass der Parameter amounts verarbeitet wird, da einige der von Ihren Kund/innen verwenden Banken dies möglicherweise erfordern.

    Integrationen übergeben nur den descriptor_code oder amounts. Um festzustellen, welches Ihre Integration verwendet, prüfen Sie den Wert für verify_with_microdeposits[microdeposit_type] im next_action-Objekt.

stripe.verifyMicrodepositsForPayment(clientSecret, { // Provide either a descriptor_code OR amounts, not both descriptor_code: 'SMT86W', amounts: [32, 45], });

Wenn das Bankkonto erfolgreich verifiziert wurde, gibt Stripe das PaymentIntent-Objekt mit dem status processing zurück und übermittelt das Webhook-Ereignis payment_intent.processing`.

Die Verifizierung kann aus unterschiedlichen Gründen fehlschlagen. Der Fehler kann synchron als direkte Fehlermeldung oder asynchron über das Webhook-Ereignis payment_intent.payment_failed auftreten (wie in den folgenden Beispielen dargestellt).

{ "error": { "code": "payment_method_microdeposit_verification_amounts_mismatch", "message": "The amounts provided do not match the amounts that were sent to the bank account. You have {attempts_remaining} verification attempts remaining.", "type": "invalid_request_error" } }
FehlercodeSynchron oder asynchronMeldungenÄnderung des Status
payment_method_microdeposit_failedSynchron oder asynchron über ein Webhook-EreignisDie Testeinzahlungen sind fehlgeschlagen. Bitte überprüfen Sie die Kontonummer, die Finanzinstitutsnummer und die bereitgestellte Transitnummer.status ist requires_payment_method und last_payment_error ist festgelegt.
payment_method_microdeposit_verification_amounts_mismatchSynchronDie angegebenen Beträge stimmen nicht mit den Beträgen überein, die auf das Bankkonto eingezahlt wurden. Sie haben noch {attempts_remaining} Verifizierungsversuche.Unverändert
payment_method_microdeposit_verification_attempts_exceededSynchron oder asynchron über ein Webhook-EreignisAnzahl zulässiger Verifizierungsversuche wurde überschrittenstatus ist requires_payment_method und last_payment_error ist festgelegt.
payment_method_microdeposit_verification_timeoutAsynchron über ein Webhook-EreignisZeitüberschreitung bei der Testeinzahlung. Die Kundin/der Kunde hat das Bankkonto nicht innerhalb der Frist von 10 Tagen verifiziert.status ist requires_payment_method und last_payment_error ist festgelegt.

Erfolgreichen PaymentIntent bestätigen
Serverseitig

Bei ACH Direct Debit handelt es sich um eine Zahlungsmethode mit verzögerter Benachrichtigung. Das bedeutet, dass es bis zu vier Werktage dauern kann, bis Sie nach Initiierung einer Lastschrift für das Kundenkonto eine Mitteilung über die erfolgreiche oder fehlgeschlagene Zahlung erhalten.

Der von Ihnen erstellte PaymentIntent hat zunächst den Status processing. Wenn die Zahlung erfolgreich war, wird der PaymentIntent-Status von processing in succeeded geändert.

Wir empfehlen die Verwendung von Webhooks, um die erfolgreiche Zahlung zu bestätigen und die Kundinnen/Kunden zu informieren, dass die Zahlung abgeschlossen ist. Sie können sich Ereignisse auch im Stripe-Dashboard anzeigen lassen.

Die folgenden Ereignisse werden übermittelt, wenn der PaymentIntent-Status aktualisiert wird:

EreignisBeschreibungNächster Schritt
payment_intent.processingDie Zahlung der Kundin/des Kunden wurde erfolgreich an Stripe übermittelt.Warten Sie, bis die initiierte Zahlung erfolgt oder fehlschlägt.
payment_intent.succeededDie Kundenzahlung war erfolgreich.Führen Sie die Bestellung der gekauften Waren oder Dienstleistungen aus.
payment_intent.payment_failedDie Zahlung der Kundin/des Kunden wurde abgelehnt. Dies kann auch bei einer fehlgeschlagenen Verifizierung der Testeinzahlung zutreffen.Kontaktieren Sie Ihre/n Kund/in per E-Mail oder Push-Benachrichtigung und fordern Sie eine andere Zahlungsmethode an. Wenn der Webhook aufgrund einer fehlgeschlagenen Verifizierung der Testeinzahlung übermittelt wurde, müssen die Nutzer/innen ihre Bankkontodaten erneut eingeben. Danach werden neue Testeinzahlungen durchgeführt.

Integration testen

Erfahren Sie, wie Sie Szenarien mit sofortigen Verifizierungen mithilfe von Financial Connections testen können.

Transaktions-E-Mails in einer Sandbox senden

Nachdem Sie die Bankkontodetails erfasst und ein Mandat akzeptiert haben, senden Sie die Mandatsbestätigung und die Verifizierungs-E-Mails mit Testeinzahlungen in einer Sandbox.

Wenn Ihre Domain {domain} und Ihr Nutzername {username} ist, verwenden Sie das folgende E-Mail-Format, um E-Mails für Testtransaktionen zu senden: {username}+test_email@{domain}.

Wenn Ihre Domain beispielsweise example.com und Ihr Nutzername Info lautet, verwenden Sie zum Testen von ACH Direct Debit-Zahlungen das Format info+test_email@example.com. Dieses Format stellt sicher, dass E-Mails korrekt weitergeleitet werden. Wenn Sie das Suffix +test_email nicht angeben, senden wir die E-Mail nicht.

Häufiger Fehler

Sie müssen Ihr Stripe-Konto aktivieren, bevor Sie diese E-Mails beim Testen auslösen können.

Testkontonummern

Stripe stellt mehrere Testkontonummern und dazugehörige Token zur Verfügung, um sicherzustellen, dass Ihre Integration für Bankkonten mit manueller Eingabe für den Einsatz in einer Produktionsumgebung bereit ist.

KontonummerTokenBankleitzahlVerhalten
000123456789pm_usBankAccount_success110000000Die Zahlung ist erfolgreich.
000111111113pm_usBankAccount_accountClosed110000000Die Zahlung schlägt fehl, weil das Konto geschlossen ist.
000000004954pm_usBankAccount_riskLevelHighest110000000Die Zahlung wird von Radar aufgrund eines hohen Betrugsrisikos blockiert.
000111111116pm_usBankAccount_noAccount110000000Die Zahlung schlägt fehl, weil kein Konto gefunden wird.
000222222227pm_usBankAccount_insufficientFunds110000000Die Zahlung schlägt aufgrund unzureichender Deckung fehl.
000333333335pm_usBankAccount_debitNotAuthorized110000000Die Zahlung schlägt fehl, weil die Lastschriften nicht autorisiert sind.
000444444440pm_usBankAccount_invalidCurrency110000000Die Zahlung schlägt aufgrund einer ungültigen Währung fehl.
000666666661pm_usBankAccount_failMicrodeposits110000000Die Zahlung sendet keine Testeinzahlungen.
000555555559pm_usBankAccount_dispute110000000Die Zahlung löst eine Zahlungsanfechtung aus.
000000000009pm_usBankAccount_processing110000000Die Zahlung bleibt auf unbestimmte Zeit in Bearbeitung. Dies ist hilfreich beim Testen von PaymentIntent-Stornierungen.
000777777771pm_usBankAccount_weeklyLimitExceeded110000000Die Zahlung schlägt aufgrund des Zahlungsbetrags fehl, wodurch das Konto sein wöchentliches Zahlungsvolumenlimit überschreitet.

Bevor Testtransaktionen abgeschlossen werden können, müssen Sie alle Testkonten verifizieren, auf denen die Zahlung automatisch erfolgreich war oder fehlschlagen ist. Verwenden Sie dazu die nachstehenden Test-Mikroeinzahlungsbeträge oder Beschreibungscodes.

Testen von Mikroeinzahlungen und Beschreibungscodes

Um verschiedene Szenarien zu imitieren, verwenden Sie diese Mikroeinzahlungsbeträge oder 0,01 Beschreibungscodewerte.

Testeinzahlungswerte0.01 BeschreibungscodewerteSzenario
32 und 45SM11AASimuliert die Verifizierung des Kontos.
10 und 11SM33CCSimuliert das Überschreiten der Anzahl zulässiger Verifizierungsversuche.
40 und 41SM44DDSimuliert ein Testeinzahlungs-Timeout.

Abwicklungsverhalten testen

Testtransaktionen werden sofort abgewickelt und Ihrem verfügbaren Testguthaben hinzugefügt. Dieses Verhalten unterscheidet sich vom Live-Modus, bei dem es mehrere Tage dauern kann, bis Transaktionen Ihrem verfügbaren Guthaben gutgeschrieben werden.

OptionalNur Sofortverifizierung
Serverseitig

Standardmäßig können Ihre Kundinnen/Kunden, die Zahlungen per US-Bankkonto tätigen, die sofortige Bankkonto-Verifizierung oder Testeinzahlungen nutzen. Sie können optional auch nur eine sofortige Verifizierung des Bankkontos verlangen, indem Sie den Parameter verification_method nutzen, wenn Sie den PaymentIntent erstellen.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=usd \ -d setup_future_usage=off_session \ -d customer=
"{{CUSTOMER_ID}}"
\ -d "payment_method_types[]"=us_bank_account \ -d "payment_method_options[us_bank_account][verification_method]"=instant \ -d "payment_method_options[us_bank_account][financial_connections][permissions][]"=payment_method \ -d "payment_method_options[us_bank_account][financial_connections][permissions][]"=balances

Dadurch wird sichergestellt, dass Sie keine Verifizierung von Testeinzahlungen durchführen müssen. Wenn die sofortige Verifizierung jedoch fehlschlägt, lautet der Status des PaymentIntent requires_payment_method. Dies weist darauf hin, dass die sofortige Verifizierung eines Kundenbankkontos fehlgeschlagen ist.

OptionalVerifizierung ausschließlich durch Testeinzahlung
Serverseitig

Standardmäßig können Ihre Kundinnen/Kunden, die Zahlungen per US-Bankkonto tätigen, die sofortige Bankkonto-Verifizierung oder Testeinzahlungen nutzen. Sie können optional auch nur Testeinzahlungen verlangen, indem Sie den Parameter verification_method nutzen, wenn Sie den PaymentIntent erstellen.

Vorsicht

Wenn Sie ein individuelles Zahlungsformular verwenden, müssen Sie Ihre eigene Nutzeroberfläche erstellen, um Bankkontodaten zu erfassen. Wenn Sie Stripe-E-Mails mit Testeinzahlungen deaktivieren, müssen Sie Ihre eigene Nutzeroberfläche für Ihre Kundin/Ihren Kunden erstellen, um den Testeinzahlungscode bzw. -betrag zu bestätigen.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=usd \ -d setup_future_usage=off_session \ -d customer=
"{{CUSTOMER_ID}}"
\ -d "payment_method_types[]"=us_bank_account \ -d "payment_method_options[us_bank_account][verification_method]"=microdeposits

Sie müssen dann das Bankkonto Ihrer Kundin/Ihres Kunden mit Ihrem eigenen Formular erfassen und stripe.confirmUsBankAccountPayment mit diesen Angaben aufrufen, um den PaymentIntent abzuschließen.

script.js
var form = document.getElementById('payment-form'); var accountholderName = document.getElementById('accountholder-name'); var email = document.getElementById('email'); var accountNumber = document.getElementById('account-number'); var routingNumber = document.getElementById('routing-number'); var accountHolderType= document.getElementById('account-holder-type'); var submitButton = document.getElementById('submit-button'); var clientSecret = submitButton.dataset.secret; form.addEventListener('submit', function(event) { event.preventDefault(); stripe.confirmUsBankAccountPayment(clientSecret, { payment_method: { billing_details: { name: accountholderName.value, email: email.value, }, us_bank_account: { account_number: accountNumber.value, routing_number: routingNumber.value, account_holder_type: accountHolderType.value, // 'individual' or 'company' }, }, }) .then(({paymentIntent, error}) => { if (error) { // Inform the customer that there was an error. console.log(error.message); } else { // Handle next step based on the intent's status. console.log("PaymentIntent ID: " + paymentIntent.id); console.log("PaymentIntent status: " + paymentIntent.status); } }); });

OptionalZahlungsanfechtungen beheben
Serverseitig

Kundinnen/Kunden fechten eine ACH-Lastschriftahlung im Allgemeinen über ihre Bank an. Dies geschieht in der Regel bis zu 60 Kalendertage nach einer Abbuchung auf einem Privatkonto oder bis zu 2 Werktage bei einem Geschäftskonto. In seltenen Fällen können Kundinnen und Kunden die Lastschriftzahlung auch außerhalb dieser Fristen erfolgreich anfechten.

Wenn Kundinnen/Kunden eine Zahlung anfechten, sendet Stripe das Webhook-Ereignis charge.dispute.closed, und die PaymentMethod-Autorisierung wird widerrufen.

In seltenen Fällen erhält Stripe möglicherweise einen ACH-Fehler von der Bank, nachdem ein PaymentIntent in den Status succeeded gewechselt ist. In diesem Fall erstellt Stripe eine Zahlungsanfechtung mit folgendem reason:

  • insufficient_funds
  • incorrect_account_details
  • bank_can't_process

Stripe erhebt in diesem Fall eine Fehlergebühr.

Zukünftige Zahlungen, die diese PaymentMethod wiederverwenden, geben den folgenden Fehler zurück:

{ "error": { "message": "This PaymentIntent requires a mandate, but no existing mandate was found. Collect mandate acceptance from the customer and try again, providing acceptance data in the mandate_data parameter.", "payment_intent": { ... } "type": "invalid_request_error" } }

Dieser Fehler enthält einen PaymentIntent im Status requires_confirmation. Um mit der Zahlung fortzufahren, müssen Sie:

  1. Legen Sie die Zahlungsanfechtung mit dem Kunden/der Kundin bei, um sicherzustellen, dass zukünftige Zahlungen nicht angefochten werden.
  2. Bestätigen Sie die Autorisierung Ihres Kunden/Ihrer Kundin erneut.

Um die Autorisierung der Zahlung zu bestätigen, können Sie mit Stripe.js online eine Mandatsbestätigung von Ihrem Kunden/Ihrer Kundin einholen oder die Autorisierung mit Ihrem Kunden/Ihrer Kundin offline über die Stripe API bestätigen.

Vorsicht

Wenn ein/e Kund/in mehr als eine Zahlung von demselben Bankkonto anficht, sperrt Stripe sein/ihr Bankkonto. Wenden Sie sich an den Stripe-Support, um zusätzliche Hilfe zu erhalten.

Command Line
cURL
No results
curl https://api.stripe.com/v1/payment_intents/{{PAYMENT_INTENT_ID}}/confirm \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "mandate_data[customer_acceptance][type]"=offline

OptionalZahlungsreferenz

Die Zahlungsreferenznummer ist ein von der Bank generierter Wert, mit dem der/die Kontoinhaber/in Gelder bei seiner/ihrer Bank finden kann. Wenn die Zahlung erfolgreich ist, gibt Stripe die Zahlungsreferenznummer im Dashboard und im Zahlungsobjekt an.

Status der AbbuchungZahlungsreferenzwert
AusstehendNicht verfügbar
FehlgeschlagenNicht verfügbar
ErfolgreichVerfügbar (zum Beispiel 091000015001234)

Wenn Sie den Webhook charge.succeeded erhalten, zeigen Sie außerdem den Inhalt von payment_method_details an, um die payment_reference zu finden.

Das folgende Beispielereignis zeigt das Rendern einer erfolgreichen ACH-Zahlung mit einer Zahlungsreferenznummer.

{ "id": "{{EVENT_ID}}", "object": "event", // omitted some fields in the example "type": "charge.succeeded", "data": { "object": { "id": "{{PAYMENT_ID}}", "object": "charge", //... "paid": true, "payment_intent": "{{PAYMENT_INTENT_ID}}", "payment_method": "{{PAYMENT_METHOD_ID}}", "payment_method_details": { "type": "us_bank_account", "us_bank_account": { "account_holder_type": "individual", "account_type": "checking", "bank_name": "TEST BANK", "fingerprint": "Ih3foEnRvLXShyfB", "last4": "1000", "payment_reference": "091000015001234", "routing_number": "110000000" } } // ... } } }

Zeigen Sie den Inhalt der destination_details an, um die Rückerstattungsreferenz zu finden, die den erstatteten ACH-Zahlungen zugeordnet ist.

Das folgende Beispielereignis zeigt das Rendering einer erfolgreichen ACH-Rückerstattung mit einer Rückerstattungsreferenznummer. Weitere Informationen zu Rückerstattungen.

{ "id": "{{EVENT_ID}}", "object": "event", "type": "charge.refund.updated", "data": { "object": { "id": "{{REFUND_ID}}", "object": "refund", //... "payment_intent": "{{PAYMENT_INTENT_ID}}", "destination_details": { "type": "us_bank_transfer", "us_bank_transfer": { "reference": "091000015001111", "reference_status": "available" } } // ... } } }

OptionalAbbuchungsdatum für Kunde/Kundin konfigurieren
Serverseitig

Das Datum, an dem Stripe das Bankkonto eines Kunden/einer Kundin belastet, können Sie über das Zieldatum steuern. Das Zieldatum muss mindestens drei Tage in der Zukunft und nicht mehr als 15 Tage ab dem aktuellen Datum liegen.

Mit dem Zieldatum wird geplant, dass das Geld das Konto des Kunden/der Kundin zum Zieldatum verlässt. Sie können einen PaymentIntent, der mit einem Zieldatum erstellt wurde, bis zu drei Werktage vor dem konfigurierten Datum stornieren.

Wenn das Zieldatum eines der folgenden Kriterien erfüllt, wird die Abbuchung am nächsten verfügbaren Werktag durchgeführt:

  • Das Zieldatum fällt auf ein Wochenende, einen Feiertag oder einen anderen arbeitsfreien Tag.
  • Das Zieldatum liegt weniger als drei Werktage in der Zukunft.

Dieser Parameter wird auf Best-Effort-Basis ausgeführt. Es kann sein, dass die Bank jedes Kunden/jeder Kundin die Abbuchungen je nach örtlichen Feiertagen oder aus anderen Gründen zu unterschiedlichen Terminen vornimmt.

Siehe auch

  • Vorab autorisierte ACH-Lastschriftzahlungen für zukünftige Zahlungen speichern
War diese Seite hilfreich?
JaNein
  • Benötigen Sie Hilfe? Kontaktieren Sie den Kundensupport.
  • Schauen Sie sich unser Änderungsprotokoll an.
  • Fragen? Sales-Team kontaktieren.
  • LLM? Lesen Sie llms.txt.
  • Unterstützt von Markdoc