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 mit Ihrer Anwendung 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.
Das iOS SDK ist Open Source, vollständig dokumentiert und mit allen Apps kompatibel, die iOS 13 oder höher unterstützen.
Notiz
Details zur aktuellsten SDK-Version und vorigen Versionen finden Sie auf der Seite Releases auf GitHub. Um bei Veröffentlichung eines neuen Release eine Benachrichtigung zu erhalten, beobachten Sie Veröffentlichungen für das jeweilige Repository.
Konfigurieren Sie das SDK mit Ihrem veröffentlichbaren Schlüssel von Stripe, um es beim Start der App auszuführen. Dadurch kann Ihre App Anfragen an die Stripe-API senden.
Notiz
Verwenden Sie Ihre Testschlüssel beim Testen und Entwickeln Ihrer App und Ihre Live-Modus-Schlüssel beim Veröffentlichen Ihrer App.
Mit Stripe können Sie das Bankkonto eines Kunden/einer Kundin sofort verifizieren. Wenn Sie zusätzliche Daten zu einem Konto abrufen möchten, registrieren Sie sich für den Datenzugriff mit Stripe Financial Connections.
Mit Stripe Financial Connections können Ihre Kund/innen ihre Finanzdaten sicher teilen, indem sie ihre Finanzkonten mit Ihrem Unternehmen verknüpfen. Verwenden Sie Financial Connections, um auf von Kund/innen autorisierte Finanzdaten zuzugreifen, wie zum Beispiel tokenisierte Konto- und Routingnummern, Saldodaten, Eigentumsdaten und Transaktionsdaten.
Der Zugriff auf diese Daten hilft Ihnen, Aktionen wie das Überprüfen von Salden durchzuführen, bevor Sie eine Zahlung veranlassen. Dies verringert die Wahrscheinlichkeit einer fehlgeschlagenen Zahlung aufgrund unzureichender Deckung.
Mit Financial Connections können Ihre Nutzer/innen ihre Konten in wenigen Schritten mit Link verknüpfen. So können sie ihre Bankkontodaten bei Stripe-Händlern speichern und schnell wiederverwenden.
Kundinnen/Kunden erstellen oder abrufenEmpfohlenServerseitig
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.
PaymentIntent erstellenServerseitigClientseitig
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.
Serverseitig
Erstellen Sie zunächst einen PaymentIntent auf Ihrem Server und geben Sie den einzuziehenden Betrag und die Währung usd
an. Falls Sie bereits über eine Integration verfügen, die die Payment Intents API verwendet, fügen Sie der Liste der Zahlungsmethoden für Ihren PaymentIntent us_
hinzu. Geben Sie optional 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_
an.
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.
Clientseitig
Im zurückgegebenen PaymentIntent ist ein Client-Geheimnis enthalten, mit dem der Client den Zahlungsvorgang sicher abschließen kann, anstatt das gesamte PaymentIntent-Objekt zu übergeben. Fordern Sie auf dem Client einen PaymentIntent von Ihrem Server an und speichern Sie dessen Client-Geheimnis.
Rückgabe-URL einrichtenClientseitig
Der Kunde/Die Kundin verlässt ggf. Ihre App, um sich zu authentifizieren (z. B. in Safari oder einer Banking-App). Damit sie nach der Authentifizierung automatisch zu Ihrer App zurückkehren können, konfigurieren Sie ein benutzerdefiniertes URL-Schema und richten Sie Ihren App-Delegate so ein, dass die URL an das SDK weitergeleitet wird. Stripe unterstützt keine universellen Links.
Notiz
Stripe fügt möglicherweise zusätzliche Parameter an die angegebene Rückgabe-URL an. Stellen Sie sicher, dass Rückgabe-URLs mit zusätzlichen Parametern nicht von Ihrem Code zurückgewiesen werden.
Angaben zur Zahlungsmethode erfassenClientseitig
Damit die Zahlung erfolgreich ist, erfordert das ACH Direct Debit einen Kundennamen und (optional) eine E-Mail-Adresse. Erfassen Sie in Ihrer App die notwendigen Abrechnungsdaten von den Kund/innen:
- Den vollständigen Namen (Vor- und Nachname) der Kundin/des Kunden
- E-Mail-Adresse
Verwenden Sie die Klassenfunktion collectUSBankAccountParams
in STPCollectBankAccountParams
, um Ihre Parameter zu erstellen, die zum Aufrufen von collectBankAccountForPayment
erforderlich sind. Um die PaymentMethod „ACH Direct Debit“ zu erstellen, muss der Name des Kontoinhabers/der Kontoinhaberin im Parameter billing_
enthalten sein.
Erstellen Sie eine Instanz von STPBankAccountCollector
, um collectBankAccountForPayment
aufzurufen und Bankkontodetails zu erfassen, eine PaymentMethod zu erstellen und diese PaymentMethod an den PaymentIntent anzuhängen.
Dadurch wird eine Modal-Nutzeroberfläche geladen, um die Erfassung und Überprüfung der Bankkontodaten abzuwickeln. Wenn dies abgeschlossen ist, wird die PaymentMethod automatisch an den PaymentIntent angehängt.
Mandatsbestätigung einziehen und die Zahlung übermittelnClientseitig
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 erfolgt durch Anzeigen von Mandatsbedingungen, denen der Kunde/die Kundin zustimmen muss. Weitere Informationen finden Sie unter [Mandate]](/payments/ach-direct-debit#mandates).
Wenn der/die Kund/in den Mandatskonditionen zustimmt, müssen Sie den PaymentIntent bestätigen. Verwenden Sie confirmPayment
, um die Zahlung abzuschließen, wenn der/die Kund/in das Formular absendet.
Notiz
Die Ausführung von confirmPayment
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:
Status | Beschreibung | Nächste Schritte |
---|---|---|
requires_ | Weitere Schritte sind erforderlich, um die Bankkontoverifizierung abzuschließen. | Schritt 6: Bankkonten mit Testeinzahlungen verifizieren |
processing | Das 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 verifizierenClientseitig
Nicht alle Kund/innen können das Bankkonto sofort verifizieren. Dieser Schritt wird nur ausgeführt, wenn Ihre Kundin/Ihr Kunde die Sofortverifizierung im vorherigen Schritt deaktiviert hat.
In diesen Fällen sendet Stripe eine descriptor_
-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_
, der mit SM beginnt. Ihr/e Kund/in verwendet diese Zeichenfolge, um sein/ihr Bankkonto zu verifizieren.code - 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 confirmPayment
im vorhergehenden Schritt ist ein PaymentIntent mit dem Status requires_
. Der PaymentIntent enthält ein next_action-Feld, das einige nützliche Informationen zum Abschließen der Verifizierung enthält.
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
Sie können auch 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_
im next_action-Objekt, um Ihre Kundinnen/Kunden zum Abschluss des Verifizierungsvorgangs zu leiten.with_ microdeposits[hosted_ verification_ url] Wenn die von Stripe gehostete Verifizierungsseite nicht verwenden möchten, können Sie in Ihrer App ein Formular für Ihre Kund/innen zur Weiterleitung von Mikroeinzahlungen an Sie erstellen und das Bankkonto mit dem iOS-SDK 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_
odercode amounts
. Um festzustellen, welches Ihre Integration verwendet, prüfen Sie den Wert fürverify_
imwith_ microdeposits[microdeposit_ type] next_
-Objekt.action - Richten Sie das Formular mindestens so ein, dass es den Parameter
Wenn das Bankkonto erfolgreich verifiziert wurde, gibt Stripe das PaymentIntent-Objekt mit dem status
processing
zurück.
Die Verifizierung kann aus unterschiedlichen Gründen fehlschlagen. Der Fehler tritt synchron als direkte Fehlermeldung auf.
{ "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" } }
Fehlercode | Nachricht | Änderung des Status |
---|---|---|
payment_ | Die Testeinzahlungen sind fehlgeschlagen. Bitte überprüfen Sie die Kontonummer, die Finanzinstitutsnummer und die bereitgestellte Transitnummer. | status ist requires_ und last_ ist festgelegt. |
payment_ | Die 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_ | Anzahl zulässiger Verifizierungsversuche wurde überschritten | status ist requires_ und last_ ist festgelegt. |
Erfolgreichen PaymentIntent bestätigenServerseitig
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.
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.
Kontonummer | Token | Bankleitzahl | Verhalten |
---|---|---|---|
000123456789 | pm_ | 110000000 | Die Zahlung ist erfolgreich. |
000111111113 | pm_ | 110000000 | Die Zahlung schlägt fehl, weil das Konto geschlossen ist. |
000000004954 | pm_ | 110000000 | Die Zahlung wird von Radar aufgrund eines hohen Betrugsrisikos blockiert. |
000111111116 | pm_ | 110000000 | Die Zahlung schlägt fehl, weil kein Konto gefunden wird. |
000222222227 | pm_ | 110000000 | Die Zahlung schlägt aufgrund unzureichender Deckung fehl. |
000333333335 | pm_ | 110000000 | Die Zahlung schlägt fehl, weil die Lastschriften nicht autorisiert sind. |
000444444440 | pm_ | 110000000 | Die Zahlung schlägt aufgrund einer ungültigen Währung fehl. |
000666666661 | pm_ | 110000000 | Die Zahlung sendet keine Testeinzahlungen. |
000555555559 | pm_ | 110000000 | Die Zahlung löst eine Zahlungsanfechtung aus. |
000000000009 | pm_ | 110000000 | Die Zahlung bleibt auf unbestimmte Zeit in Bearbeitung. Dies ist hilfreich beim Testen von PaymentIntent-Stornierungen. |
000777777771 | pm_ | 110000000 | Die 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.
Testeinzahlungswerte | 0.01 Beschreibungscodewerte | Szenario |
---|---|---|
32 und 45 | SM11AA | Simuliert die Verifizierung des Kontos. |
10 und 11 | SM33CC | Simuliert das Überschreiten der Anzahl zulässiger Verifizierungsversuche. |
40 und 41 | SM44DD | Simuliert 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.