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
Billing
    Übersicht
    Über die Billing APIs
    Abonnements
      So funktionieren Abonnements
      Quickstart
      Use Cases
      Ihre Integration erstellen
      Funktionen für Abonnements
        Rechnungen für Abonnements
        Abonnementpläne
        Abonnementpreise
        Wiederkehrende Preismodelle
        Preistabelle einbetten
        Abonnements starten
        Mengen festlegen
        Abrechnungszyklen einrichten
        Abonnements zurückdatieren
        Mehrere Artikel abonnieren
        Testzeiträume einrichten
        Gutscheine anwenden
        Abonnements zu Stripe migrieren
        So werden anteilmäßig verrechnete Gutschriften berechnet
        Abonnementzahlungen
        Zahlungsmethoden für Abonnements
          ACH Direct Debit
          Amazon Pay
          BACS-Lastschriften im Vereinigten Königreich
          Banküberweisung
          BECS-Lastschriftverfahren in Australien
          Cash App Pay
          PayPal
          Revolut Pay
          Koreanische Karten
          Kakao Pay
          Naver Pay
          Vorab autorisierte Lastschriften in Kanada
          SEPA-Lastschriften in der EU
          iDEAL mit SEPA-Lastschrift
          Bancontact mit SEPA-Lastschrift
          Sofort mit SEPA Direct Debit
        Integration mit Drittanbietern von Zahlungsdienstleistungen
        Einzugsmethoden
        Teilen Sie einen Link, um die Zahlungsdetails zu aktualisieren
        Starke Kundenauthentifizierung (SCA)
        Abonnements verwalten
        Abonnements bearbeiten
        Ausstehende Aktualisierungen verwalten
      Analytik
    Invoicing
    Nutzungsbasierte Abrechnung
    Connect und Billing
    Tax und Billing
    Angebote
    Umsatzsicherung
    Automatisierungen
    Skripte
    Umsatzrealisierung
    Kundenverwaltung
    Berechtigungen
    Integration testen
Steuer
Berichte
Daten
Start-up-Gründung
StartseiteRevenueBillingSubscriptionsSubscription featuresSubscription payment methods

Ein Abonnement per ACH Direct Debit einrichten

Erfahren Sie, wie Sie ein Abonnement mit US-Bankkonto erstellen und abrechnen.

Seite kopieren

Verwenden Sie diesen Leitfaden, um ein Abonnement mit ACH-Lastschriftverfahren einzurichten.

Notiz

Wenn Sie ein neuer Nutzer/eine neue Nutzerin sind, verwenden Sie das Payment Element, statt wie in diesem Leitfaden beschrieben Stripe Elements zu nutzen. Das Payment Element bietet einen Low-Code-Integrationspfad mit integrierten Konversionsoptimierungen. Eine Anleitung finden Sie unter Abonnement zusammenstellen.

Produkt und Preis erstellen
Dashboard

Produkte stehen für den von Ihnen angebotenen Artikel oder Dienst. Preise geben an, wie viel und wie häufig Sie für ein Produkt berechnen. Dies schließt ein, wie viel ein Produkt kostet, welche Währung Sie akzeptieren und ob es sich um eine einmalige oder eine wiederkehrende Zahlung handelt. Wenn Sie nur ein paar wenige Produkte und Preise haben, können Sie diese im Dashboard erstellen und verwalten.

In diesem Leitfaden wird ein Stock-Foto-Service als Beispiel verwendet, für den Kund/innen ein monatliches Abonnement mit dem Betrag von 15 USD berechnet werden. Um dies zu modellieren:

  1. Navigieren Sie zur Seite Produkt hinzufügen.
  2. Geben Sie einen Namen für das Produkt an.
  3. Geben Sie 15 für den Preis ein.
  4. Wählen Sie als Währung USD aus.
  5. Klicken Sie auf Produkt speichern.

Zeichnen Sie nach Erstellen des Produkts und des Preises die Preis-ID auf, sodass Sie diese in nachfolgenden Schritten verwenden können. Die ID wird auf der Preisseite angezeigt und sieht in etwa so aus: price_G0FvDp6vZvdwRZ.

Abonnement erstellen
Serverseitig

Notiz

Informationen dazu, wie Sie ein Abonnement mit einer kostenlosen Testphase erstellen, finden Sie unter Abonnement-Testphasen.

Erstellen Sie ein Abonnement mit dem Preis und dem Kunden/der Kundin mit dem Status incomplete, indem Sie den Parameter payment_behavior mit dem Wert default_incomplete angeben.

Command Line
curl
curl https://api.stripe.com/v1/subscriptions \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "customer"="{{CUSTOMER_ID}}" \ -d "items[0][price]"="price_F52b2UdntfQsfR" \ -d "payment_behavior"="default_incomplete" \ -d "payment_settings[payment_method_types][]"="us_bank_account" \ -d "expand[0]"="latest_invoice.payment_intent"

The response includes the subscription’s first Invoice. This contains the invoice’s payments, which includes a default PaymentIntent that Stripe generated for this invoice and the confirmation secret which you can use on the client side to securely complete the payment process instead of passing the entire PaymentIntent object. Return the latest_invoice.confirmation_secret.client_secret to the front end to complete payment.

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/v3/"></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" />

Mandatsbestätigung einziehen und ü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.

To be compliant with Nacha rules, you must obtain authorization from your customer before you can initiate payment by displaying mandate terms for them to accept. For more information on mandates, see 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.

Wenn der/die Kund/in die Sofortüberprüfung abschließt, wird das Abonnement automatisch active. Lesen Sie andernfalls Bankkonto mit Testeinzahlungen verifizieren, um zu erfahren, wie die Verifizierung von Testeinzahlungen abgewickelt wird, während das Abonnement incomplete bleibt.

Bankkonto mit Testeinzahlungen verifizieren
Clientseitig

Notiz

Kundinnen/Kunden haben 10 Tage Zeit, um Testeinzahlungen für Abonnement ein erfolgreich zu verifizieren, statt der normalerweise im Lebenszylus eines Abonnements angegebenen 23 Stunden. Diese Ablauffrist kann jedoch nicht nach dem Datum des Abrechnungszyklus liegen.

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" } }

If you supplied a billing email, Stripe notifies your customer through this email when the deposits are expected to arrive. The email includes a link to a Stripe-hosted verification page where they can confirm the amounts of the deposits and complete verification.

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

Optionally, you can send custom email notifications to your customer. After you set up custom emails, you need to specify how the customer responds to the verification email. To do so, choose one of the following:

  • Use the Stripe-hosted verification page. To do this, use the verify_with_microdeposits[hosted_verification_url] URL in the next_action object to direct your customer to complete the verification process.

  • 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], });

Standard-Zahlungsmethode festlegen
Server

Sie haben jetzt ein aktives Abonnement eines/einer Kund/in mit einer Zahlungsmethode. Diese Zahlungsmethode wird jedoch nicht automatisch für zukünftige Zahlungen verwendet. Um diese Zahlungsmethode in Zukunft automatisch zu belasten, verwenden Sie einen Webhook-Consumer, um das Ereignis invoice.payment_succeeded für neue Abonnements zu überwachen und die Standard-Zahlungsmethode festzulegen.

server.rb
Ruby
# Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
if event.type == 'invoice.payment_succeeded' invoice = event.data.object if invoice['billing_reason'] == 'subscription_create' subscription_id = invoice['parent']['subscription_details']['subscription'] # This example assumes you're using the default PaymentIntent that Stripe generated for the invoice. invoice_payments = Stripe::InvoicePayment.list({invoice: invoice['id']}) payment_intent_id = invoice_payments.data[0].payment.payment_intent # Retrieve the payment intent used to pay the subscription payment_intent = Stripe::PaymentIntent.retrieve(payment_intent_id) # Set the default payment method Stripe::Subscription.update( subscription_id, default_payment_method: payment_intent.payment_method ) end end

Abonnementstatus verwalten
Clientseitig

Sofern die erste Zahlung erfolgreich war, ist der Status des Abonnements active, und es sind keine weiteren Maßnahmen erforderlich. Wenn Zahlungen fehlschlagen, ändert sich der Status in den Abonnementstatus, der in Ihren Einstellungen für den automatischen Einzug konfiguriert ist. Benachrichtigen Sie die Kundinnen/Kunden, wenn die Zahlung fehlgeschlagen ist, und belasten Sie deren Konto mit einer anderen Zahlungsmethode.

Integration testen

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

Send transaction emails in a sandbox

After you collect the bank account details and accept a mandate, send the mandate confirmation and microdeposit verification emails in a sandbox.

If your domain is “example.com,” use an email format such as info+testing@example.com for testing non-card payments. You can replace “info” with a standard local term such as “support.” This format ensures emails are routed correctly.

Häufiger Fehler

You need to activate your Stripe account before you can trigger these emails while testing.

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_weeklyLimitExceeded110000000The payment fails due to payment amount causing the account to exceed its weekly payment volume limit.

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.

Test settlement behavior

Test transactions settle instantly and are added to your available test balance. This behavior differs from livemode, where transactions can take multiple days to settle in your available balance.

OptionalAbrechnungszyklus festlegen

OptionalAbonnement-Testphasen

OptionalDetails der Zahlungsmethode für spätere Verwendung speichern

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