# Eine Banküberweisung annehmen Verwenden Sie die Payment Intents API, um Zahlungen per Banküberweisung anzunehmen. 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: #### Mit Rechnungen Übliche Schritte beim Annehmen einer Zahlung per Banküberweisung (See full diagram at https://docs.stripe.com/payments/bank-transfers/accept-a-payment) #### Ohne Rechnungen ![](https://b.stripecdn.com/docs-statics-srv/assets/without-invoices-diagram-1.a17fe04695ef532427f25a9e1276ee2e.svg) ## Umgang mit Unter- und Überzahlungen Bei Banküberweisungen ist es möglich, dass die/der Kunde/Kundin Ihnen mehr oder weniger als den erwarteten Zahlungsbetrag sendet. Wenn die/der Kunde/Kundin zu wenig sendet, finanziert Stripe eine offene Zahlung teilweise. Rechnungen werden nicht teilweise finanziert und bleiben offen, bis das eingehende Geld den vollen Rechnungsbetrag deckt. Wenn die/der Kunde/Kundin mehr als den erwarteten Betrag sendet, versucht Stripe, die eingehenden Gelder mit einer offenen Zahlung abzugleichen und den verbleibenden überschüssigen Betrag in der Kundenbilanz zu behalten. Erfahren Sie mehr darüber, [wie Stripe den Abgleich handhabt](https://docs.stripe.com/payments/customer-balance/reconciliation.md). #### Mit Rechnungen Wenn ein/e Kund/in zu wenig bezahlt: Ein/e Kund/in hat eine Banküberweisung für einen geringeren als den erwarteten Betrag getätigt (See full diagram at https://docs.stripe.com/payments/bank-transfers/accept-a-payment) Wenn ein/e Kund/in zu viel bezahlt: Ein/e Kund/in hat eine Banküberweisung für einen höheren als den erwarteten Betrag getätigt (See full diagram at https://docs.stripe.com/payments/bank-transfers/accept-a-payment) #### Ohne Rechnungen ![](https://b.stripecdn.com/docs-statics-srv/assets/without-invoices-diagram-2.464fe916d5822422144c8aea0f31ed45.svg) ![](https://b.stripecdn.com/docs-statics-srv/assets/without-invoices-diagram-3.b1992851a5f3492d14eaa35e336b0e9f.svg) ## 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](https://docs.stripe.com/payments/customer-balance/reconciliation.md). 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](https://docs.stripe.com/payments/customer-balance/reconciliation.md#cash-manual-reconciliation). Sie können das automatische Abgleichsverhalten pro Kunde/Kundin außer Kraft setzen, indem Sie den [Abgleichsmodus](https://docs.stripe.com/api/customers/create.md#create_customer-cash_balance-settings-reconciliation_mode) auf manuell festlegen. # Checkout > This is a Checkout for when payment-ui is checkout. View the full page at https://docs.stripe.com/payments/bank-transfers/accept-a-payment?payment-ui=checkout. > Stripe kann Ihren Kundinnen und Kunden automatisch die relevanten Zahlungsmethoden anzeigen, indem Währungen, Einschränkungen der Zahlungsmethode und andere Parameter ausgewertet werden. > > - Befolgen Sie den Leitfaden [Eine Zahlung akzeptieren](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=stripe-hosted), um eine Checkout-Integration zu erstellen, die [dynamische Zahlungsmethoden](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods.md) verwendet. - Wenn Sie keine dynamischen Zahlungsmethoden verwenden möchten, befolgen Sie die folgenden Schritte, um die Zahlungsmethoden in Ihrer Checkout-Integration manuell zu konfigurieren. Die Banküberweisung ist eine Zahlungsmethode für die [einmalige Verwendung](https://docs.stripe.com/payments/payment-methods.md#usage) für Checkout, bei der Kundinnen/Kunden per Banküberweisung anhand der angezeigten Zahlungsanweisungen bezahlen. Bei Auswahl der Zahlung wird der/die Nutzer/in zu einer gehosteten Seite weitergeleitet, die Anleitungen für eine Banküberweisung und den Status der Überweisungszahlung anzeigt. Bei Banküberweisungen handelt es sich auch um eine *Zahlungsmethode mit verzögerter Benachrichtigung* (A payment method that can't immediately return payment status when a customer attempts a transaction (for example, ACH debits). Businesses commonly hold an order in a pending state until payment is successful with these payment methods). Das bedeutet, dass Geldmittel nicht sofort nach der Zahlung verfügbar sind. > Banküberweisungen sind in Checkout-Sitzungen nicht verfügbar, die kein vorhandenes [Kundenobjekt](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer) als Teil der Anfrage zur Sitzungserstellung enthalten. ## Kompatibilität bestimmen **Unterstützte Unternehmensstandorte**: Europe (SEPA area), UK, JP, MX, US **Unterstützte Währungen**: `eur, gbp, jpy, mxn, usd` **Transaktionswährungen**: `eur, gbp, jpy, mxn, usd` **Zahlungsmodus**: Yes **Einrichtungsmodus**: No **Abonnementmodus**: No Für die Unterstützung von Zahlungen per Bank Transfer muss eine Checkout-Sitzung alle folgenden Bedingungen erfüllen: - Die *Preise* (Prices define how much and how often to charge for products. This includes how much the product costs, what currency to use, and the interval if the price is for subscriptions) sämtlicher Posten müssen in derselben Währung vorliegen. Falls Posten in verschiedenen Währungen vorhanden sind, muss für jede Währung eine separate Checkout-Sitzung erstellt werden. - Sie können nur einmalige Posten verwenden (Checkout-Sitzungen mit Banküberweisung unterstützen keine wiederkehrenden *Abonnement* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis)pläne). ## Zahlung akzeptieren > Erstellen Sie zunächst eine Integration, um mit Checkout [Zahlungen anzunehmen](https://docs.stripe.com/payments/accept-a-payment.md?integration=checkout), bevor Sie mit diesem Leitfaden fortfahren. Verwenden Sie diese Anleitung, um Bank Transfer zu aktivieren. ### Kunden erstellen und abrufen Sie müssen ein [Kundenobjekt](https://docs.stripe.com/api/customers.md) 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. ```curl curl -X POST https://api.stripe.com/v1/customers \ -u "<>:" ``` ### Bank Transfer als Zahlungsmethode aktivieren Führen Sie bei der Erstellung einer neuen [Checkout-Sitzung](https://docs.stripe.com/api/checkout/sessions.md) folgende Schritte aus: 1. `customer` einrichten 1. Fügen Sie `customer_balance` der Liste der `payment_method_types` hinzu. 1. Stellen Sie sicher, dass für alle `line_items` die gleiche Währung verwendet wird. #### USA ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=us_bank_transfer" \ --data-urlencode "success_url=https://example.com/success" ``` #### Vereinigtes Königreich ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "line_items[0][price_data][currency]=gbp" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=gb_bank_transfer" \ --data-urlencode "success_url=https://example.com/success" ``` #### EU ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "line_items[0][price_data][currency]=eur" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=eu_bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][eu_bank_transfer][country]=FR" \ --data-urlencode "success_url=https://example.com/success" ``` Setzen Sie [payment_method_options[customer_balance][bank_transfer][eu_bank_transfer][country]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-eu_bank_account-country) auf einen der Werte aus , um den Kundinnen und Kunden die lokalisierte IBAN anzuzeigen. #### JP ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "line_items[0][price_data][currency]=jpy" \ -d "line_items[0][price_data][product_data][name]=Tシャツ" \ -d "line_items[0][price_data][unit_amount]=19000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=jp_bank_transfer" \ --data-urlencode "success_url=https://example.com/success" ``` #### MX ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "line_items[0][price_data][currency]=mxn" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=18000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=mx_bank_transfer" \ --data-urlencode "success_url=https://example.com/success" ``` ### An die von Stripe gehostete Anweisungsseite für Banküberweisungen weiterleiten > Anders als bei Kartenzahlungen werden die Kundinnen/Kunden bei Zahlungen per Banküberweisung nicht zur [success_url](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-success_url) weitergeleitet. Nach erfolgreichem *Einreichen* (Submitting an order indicates that the customer intends to pay. Upon submission, the order can no longer be updated and is ready for payment) des Checkout-Formulars, - Wenn das Kundenguthaben bereits ausreicht, um den angeforderten Betrag zu decken, ist die Zahlung sofort erfolgreich und der Kunde/die Kundin wird zur [success_url](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-success_url) weitergeleitet. - Wenn das Kundenguthaben nicht ausreicht, um den angeforderten Betrag zu begleichen, wird der Kunde/die Kundin an die [hosted_instructions_url](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-hosted_instructions_url) weitergeleitet. Die Seite enthält die Anweisungen, die Ihre Kundinnen und Kunden durch den Überweisungsvorgang führen. Auf der Seite mit den [Branding-Einstellungen](https://dashboard.stripe.com/account/branding) können Sie die Nutzeroberfläche für Ihre Kund/innen anpassen. Folgende Anpassungen sind für die gehostete Anweisungsseite möglich: - **Symbol**: Ihr Markenlogo und Unternehmensname - **Markenfarbe**: Hintergrundfarbe ### Ihre Bestellungen ausführen Da die Banküberweisung eine *Zahlungsmethode mit verzögerter Benachrichtigung* (A payment method that can't immediately return payment status when a customer attempts a transaction (for example, ACH debits). Businesses commonly hold an order in a pending state until payment is successful with these payment methods) ist, müssen Sie eine Methode wie *Webhooks* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) nutzen, um den Zahlungsstatus zu überwachen und die *Ausführung* (Fulfillment is the process of providing the goods or services purchased by a customer, typically after payment is collected) der Bestellung durchzuführen. Erfahren Sie mehr zum [Einrichten von Webhooks und der Abwicklung von Bestellungen](https://docs.stripe.com/checkout/fulfillment.md). Die folgenden Ereignisse werden gesendet, wenn sich der Zahlungsstatus ändert: | Ereignisname | Beschreibung | Nächste Schritte | | -------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | | [checkout.session.completed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.completed) | Der/die Kund/in hat das Bezahlformular erfolgreich übermittelt und wird auf `hosted_instructions_url` umgeleitet. | Warten Sie, bis der/die Kund/in die Banküberweisung durchführt. | | [checkout.session.async_payment_succeeded](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_succeeded) | Die/die Kund/in hat die Banküberweisung erfolgreich abgeschlossen. Der `PaymentIntent` geht in den Status `succeeded` über. | Führen Sie den Waren- bzw. Dienstleistungsauftrag aus. | ## Optional: Zahlungsanweisungen per E-Mail senden Sie können E-Mails mit Zahlungsanweisungen für Banküberweisungen über das [Dashboard](https://dashboard.stripe.com/settings/emails) aktivieren. Nachdem Sie Zahlungsanweisungen per E-Mail aktiviert haben, sendet Stripe Ihrem Kunden/Ihrer Kundin in folgenden Fällen eine E-Mail: - Ein PaymentIntent wird bestätigt, aber der/die Kund/in verfügt nicht über ausreichende Deckung. - Der/die Kund/in sendet eine Banküberweisung, verfügt jedoch nicht über ausreichende Deckung, um die ausstehenden Zahlungen abzuschließen. Eine E-Mail mit Zahlungsanweisungen für Banküberweisungen enthält den fälligen Betrag, die Bankinformationen für die Überweisung und einen Link zur von Stripe gehosteten Anweisungsseite. > In einer Sandbox werden E-Mails mit Zahlungsanweisungen nur an E-Mail-Adressen gesendet, die mit dem Stripe-Konto verknüpft sind. ## 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. #### Dashboard Um eine Banküberweisung mit dem Dashboard in einer *sandbox* (A sandbox is an isolated test environment that allows you to test Stripe functionality in your account without affecting your live integration. Use sandboxes to safely experiment with new features and changes) zu simulieren, gehen Sie auf die Seite der Kundin oder des Kunden im Dashboard. Klicken Sie unter **Zahlungsmethoden** auf **Hinzufügen** und wählen Sie **Geld überweisen (nur Test)**. #### API So simulieren Sie eine Banküberweisung mit der API: #### USA ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "reference"="REF-4242" \ -d "amount"="1000" \ -d "currency"="usd" ``` #### Vereinigtes Königreich ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "reference"="REF-4242" \ -d "amount"="1000" \ -d "currency"="gbp" ``` #### EU ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "reference"="REF-4242" \ -d "amount"="1000" \ -d "currency"="eur" ``` #### JP ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "amount"="1000" \ -d "currency"="jpy" ``` #### MX ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "reference"="123456" \ -d "amount"="1000" \ -d "currency"="mxn" ``` #### Stripe-CLI So simulieren Sie eine Banküberweisung mit der Stripe-CLI: 1. [Installieren Sie die Stripe-CLI](https://docs.stripe.com/stripe-cli.md). 1. Melden Sie sich bei der CLI mit demselben Konto an, mit dem Sie sich beim Stripe-Dashboard angemeldet haben. ```bash stripe login ``` 1. Simulieren Sie eine eingehende Banküberweisung für eine/n bestehende/n Kunden/Kundin. #### USA ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1099 \ --reference=DVGBG97TZ6ZV \ --currency=usd ``` Der Parameter `reference` ist optional und simuliert den Wert, den der Kunde/die Kundin in das Referenzfeld der Überweisung eingegeben hat. #### Vereinigtes Königreich ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1099 \ --reference=DVGBG97TZ6ZV \ --currency=gbp ``` Der Parameter `reference` ist optional und simuliert den Wert, den der Kunde/die Kundin in das Referenzfeld der Überweisung eingegeben hat. #### EU ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1099 \ --reference=DVGBG97TZ6ZV \ --currency=eur ``` Der Parameter `reference` ist optional und simuliert den Wert, den der Kunde/die Kundin in das Referenzfeld der Überweisung eingegeben hat. #### JP ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1000 \ --currency=jpy ``` #### MX ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1099 \ --reference=123456 \ --currency=mxn ``` Der Parameter `reference` ist optional und simuliert den Wert, den der Kunde/die Kundin in das Referenzfeld der Überweisung eingegeben hat. ## See also - [Checkout-Ausführung](https://docs.stripe.com/checkout/fulfillment.md) - [Checkout anpassen](https://docs.stripe.com/payments/checkout/customization.md) # Elements > This is a Elements for when payment-ui is elements. View the full page at https://docs.stripe.com/payments/bank-transfers/accept-a-payment?payment-ui=elements. ## Stripe einrichten [Serverseitig] Zunächst benötigen Sie ein Stripe-Konto. [Jetzt registrieren](https://dashboard.stripe.com/register). Verwenden Sie unsere offiziellen Bibliotheken für den Zugriff auf die Stripe-API über Ihre Anwendung: #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ## Kunden erstellen und abrufen [Serverseitig] Sie müssen ein [Kundenobjekt](https://docs.stripe.com/api/customers.md) 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. ```curl curl -X POST https://api.stripe.com/v1/customers \ -u "<>:" ``` ## PaymentIntent erstellen [Serverseitig] Ein [PaymentIntent](https://docs.stripe.com/api/payment_intents/object.md) ist ein Objekt, das Ihre Absicht, eine Kundenzahlung einzuziehen, darstellt und den gesamten Zahlungsvorgang dokumentiert. Erstellen Sie einen PaymentIntent auf dem Server und geben Sie den Betrag und die Währung an, die Sie einziehen möchten. Sie müssen auch den [Kundenparameter](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-customer) der PaymentIntent-Erstellungsanfrage ausfüllen. Banküberweisungen sind bei PaymentIntents ohne eine Kundin/einen Kunden nicht verfügbar. #### Zahlungsmethoden über das Dashboard verwalten Bevor Sie einen Payment Intent erstellen, müssen Sie unbedingt zuvor im Dashboard in den [Einstellungen für Zahlungsmethoden](https://dashboard.stripe.com/settings/payment_methods) die Option **Banküberweisung** aktivieren. > Mit [dynamischen Zahlungsmethoden](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods.md) übernimmt Stripe die Rückgabe geeigneter Zahlungsmethoden basierend auf Faktoren wie Betrag, Währung und Zahlungsablauf der Transaktion. #### USA ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=usd \ -d "automatic_payment_methods[enabled]=true" ``` #### UK ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=gbp \ -d "automatic_payment_methods[enabled]=true" ``` #### EU ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=eur \ -d "automatic_payment_methods[enabled]=true" ``` Um die den Kundinnen/Kunden angezeigte IBAN lokal anzupassen, können Sie das Land der Kundin/des Kunden konfigurieren, indem Sie die Eigenschaft [`address.country`](https://docs.stripe.com/api/customers/object.md#customer_object-address-country) festlegen oder [die Kundin/den Kunden im Dashboard bearbeiten](https://docs.stripe.com/invoicing/customer.md#edit-a-customer). Wir unterstützen die IBAN-Lokalisierung für : - Wenn Sie kein Land für Ihren Kunden/Ihre Kundin konfiguriert haben oder wenn das Land des Kunden/der Kundin keine lokale Anpassung der IBAN unterstützt, wenden wir das Land Ihres Stripe-Kontos an. - Wenn die IBAN-Lokalisierung für das Land Ihres Stripe-Kontos nicht unterstützt wird, wenden wir `IE` an. > Das Erstellen neuer lokalisierter virtueller Bankkontonummern ist derzeit für Spanien (ES) nicht verfügbar. Verwenden Sie stattdessen eines der anderen EU-VBAN-Länder. #### JP ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=19000 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=jpy \ -d "automatic_payment_methods[enabled]=true" \ --data-urlencode "return_url=https://example.com/return_url" ``` #### MX ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=mxn \ -d "automatic_payment_methods[enabled]=true" \ --data-urlencode "return_url=https://example.com/return_url" ``` 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](https://docs.stripe.com/payments/customer-balance/reconciliation.md). #### Zahlungsmethoden manuell auflisten Um die Zahlungsmethoden manuell mit der API anzugeben, fügen Sie `customer_balance` zur Liste der [Zahlungsmethoden](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types) für Ihren PaymentIntent hinzu. Geben Sie die zudem die Kunden-[ID](https://docs.stripe.com/api/customers/object.md#customer_object-id) an. #### USA ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=us_bank_transfer" ``` 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](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Verwenden Sie `bank_transfer` als [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type), um anzugeben, was zu tun ist, wenn das Kundenguthaben nicht ausreicht, um den Zahlungsbetrag zu begleichen. - Verwenden Sie `us_bank_transfer` als [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type), um die Überweisungsarten anzugeben, die zur Leistung der Zahlung verwendet werden können. #### UK ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=gbp \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=gb_bank_transfer" ``` 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](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Verwenden Sie `bank_transfer` als [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type), um anzugeben, was zu tun ist, wenn das Kundenguthaben nicht ausreicht, um den Zahlungsbetrag zu begleichen. - Verwenden Sie `gb_bank_transfer` als [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type), um die Überweisungsarten anzugeben, die zur Leistung der Zahlung verwendet werden können. #### EU ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=eur \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=eu_bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][eu_bank_transfer][country]=FR" ``` 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](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Verwenden Sie `bank_transfer` als [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type), um anzugeben, was zu tun ist, wenn das Kundenguthaben nicht ausreicht, um den Zahlungsbetrag zu begleichen. - Verwenden Sie `eu_bank_transfer` als [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type), um die Überweisungsarten anzugeben, die zur Leistung der Zahlung verwendet werden können. - Legen Sie [payment_method_options[customer_balance][bank_transfer][eu_bank_transfer][country]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-eu_bank_account-country) auf eines der fest. Die IBAN, die der Kundin/dem Kunden angezeigt wird, wird entsprechend dem von Ihnen gewählten Land lokalisiert. > Das Erstellen neuer lokalisierter virtueller Bankkontonummern ist derzeit für Spanien (ES) nicht verfügbar. Verwenden Sie stattdessen eines der anderen EU-VBAN-Länder. #### JP ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=19000 \ -d currency=jpy \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=jp_bank_transfer" ``` 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](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Verwenden Sie `bank_transfer` als [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type), um anzugeben, was zu tun ist, wenn das Kundenguthaben nicht ausreicht, um den Zahlungsbetrag zu begleichen. - Verwenden Sie `jp_bank_transfer` als [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type), um die Überweisungsarten anzugeben, die zur Leistung der Zahlung verwendet werden können. #### MX ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=mxn \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=mx_bank_transfer" ``` 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](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Verwenden Sie `bank_transfer` als [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type), um anzugeben, was zu tun ist, wenn das Kundenguthaben nicht ausreicht, um den Zahlungsbetrag zu begleichen. - Verwenden Sie `mx_bank_transfer` als [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type), um die Überweisungsarten anzugeben, die zur Leistung der Zahlung verwendet werden können. > Geben Sie immer die `payment_method_types` an, wenn Sie eine Zahlung erstellen. Sie können `customer_balance` nicht für [zukünftige Zahlungen](https://docs.stripe.com/payments/save-and-reuse.md) verwenden. ## Zahlungsdaten erfassen [Clientseitig] Erfassen Sie Zahlungsdetails auf dem Client mit dem [Payment Element](https://docs.stripe.com/payments/payment-element.md). 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 sichere HTTPS-Verbindung 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 voraussetzen. Wenn Sie sich für die Verwendung eines Iframes entscheiden und Apple Pay oder Google Pay akzeptieren möchten, muss das Attribut [Zulassen](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-allowpaymentrequest) des Iframes auf `"payment*"` gesetzt sein. 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](https://docs.stripe.com/security/guide.md#tls), wenn Sie bereit sind, Live-Zahlungen zu akzeptieren. #### HTML + JS ### 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. ```html Checkout ``` Erstellen Sie auf Ihrer Bezahlseite eine Instanz von Stripe mit dem folgenden JavaScript: ```javascript // 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('<>'); ``` ### 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: ```html
``` 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](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret) aus dem vorherigen Schritt an `options`, wenn Sie die [Elements](https://docs.stripe.com/js/elements_object/create)-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. ```javascript 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 stepconst elements = stripe.elements(options); // Create and mount the Payment Element const paymentElementOptions = { layout: 'accordion'}; const paymentElement = elements.create('payment', paymentElementOptions); paymentElement.mount('#payment-element'); ``` #### React ### Stripe.js einrichten Installieren Sie [React Stripe.js](https://www.npmjs.com/package/@stripe/react-stripe-js) und den [Stripe.js-Loader](https://www.npmjs.com/package/@stripe/stripe-js) aus dem öffentlichen npm-Register: ```bash npm install --save @stripe/react-stripe-js @stripe/stripe-js ``` ### Den Elements-Anbieter zu Ihrer Zahlungsseite hinzufügen und konfigurieren Um die Payment Element-Komponente zu verwenden, schließen Sie die Komponente Ihrer Bezahlseite in einen [Elements-Anbieter](https://docs.stripe.com/sdks/stripejs-react.md#elements-provider) ein. Rufen Sie `loadStripe` mit Ihrem veröffentlichbaren Schlüssel auf und übergeben Sie das zurückgegebene `Promise` an den `Elements`-Anbieter. Übergeben Sie auch das [Client-Geheimnis](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret) aus dem vorherigen Schritt als `options` an den `Elements`-Anbieter. ```jsx import React from 'react'; import ReactDOM from 'react-dom'; import {Elements} from '@stripe/react-stripe-js'; import {loadStripe} from '@stripe/stripe-js'; import CheckoutForm from './CheckoutForm'; // Make sure to call `loadStripe` outside of a component’s render to avoid // recreating the `Stripe` object on every render. const stripePromise = loadStripe('<>'); function App() { const options = { // passing the client secret obtained in step 3 clientSecret: '{{CLIENT_SECRET}}', // Fully customizable with appearance API. appearance: {/*...*/}, }; return ( ); }; ReactDOM.render(, document.getElementById('root')); ``` ### Payment Element hinzufügen Verwenden Sie die Komponente `PaymentElement`, um Ihr Formular zu erstellen: ```jsx import React from 'react'; import {PaymentElement} from '@stripe/react-stripe-js'; const CheckoutForm = () => { return (
); }; export default CheckoutForm; ``` 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](https://docs.stripe.com/payments/elements.md). 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](https://docs.stripe.com/js/elements_object/create#stripe_elements-options-appearance) an `options` übergeben. ### Adressen einholen Standardmäßig erfasst das Payment Element nur die erforderlichen Angaben zur Rechnungsadresse. Einige Verhaltensweisen, wie z. B. die [Berechnung der Steuer](https://docs.stripe.com/api/tax/calculations/create.md) oder die Eingabe der Versanddaten, erfordern die vollständige Adresse Ihrer Kundin/Ihres Kunden. Sie können Folgendes tun: - Verwenden Sie das [Address Element](https://docs.stripe.com/elements/address-element.md), um die Vorteile der Funktionen der automatischen Vervollständigung und Lokalisierung zu nutzen, um die vollständige Adresse Ihrer Kundin oder Ihres Kunden zu erfassen. Dies trägt dazu bei, eine möglichst genaue Steuerberechnung zu gewährleisten. - Erfassen Sie Adressdaten mit Ihrem eigenen benutzerdefinierten Formular. Nach der Bestätigung öffnet Stripe automatisch ein Modal, um die Überweisungsdaten anzuzeigen. ## Zahlung an Stripe senden [Clientseitig] Verwenden Sie [stripe.confirmPayment](https://docs.stripe.com/js/payment_intents/confirm_payment), um die Zahlung mit Details aus dem Payment Element vorzunehmen. Geben Sie für diese Funktion eine [return_url](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-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](https://docs.stripe.com/js/payment_intents/confirm_payment#confirm_payment_intent-options-redirect) auf `if_required` festlegen. Dadurch werden nur Kundinnen/Kunden weitergeleitet, die mit weiterleitungsbasierten Zahlungsmethoden bezahlen. #### HTML + JS ```javascript 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`. } }); ``` #### React Verwenden Sie die Hooks [useStripe](https://docs.stripe.com/sdks/stripejs-react.md#usestripe-hook) und [useElements](https://docs.stripe.com/sdks/stripejs-react.md#useelements-hook), um [stripe.confirmPayment](https://docs.stripe.com/js/payment_intents/confirm_payment) über die Komponente Ihres Zahlungsformulars aufzurufen. Wenn Sie herkömmliche Klassenkomponenten gegenüber Hooks bevorzugen, können Sie stattdessen einen [ElementsConsumer](https://docs.stripe.com/sdks/stripejs-react.md#elements-consumer) verwenden. ```jsx import React, {useState} from 'react'; import {useStripe, useElements, PaymentElement} from '@stripe/react-stripe-js'; const CheckoutForm = () => { const stripe = useStripe(); const elements = useElements(); const [errorMessage, setErrorMessage] = useState(null); const handleSubmit = async (event) => { // We don't want to let default form submission happen here, // which would refresh the page. event.preventDefault(); if (!stripe || !elements) { // Stripe.js hasn't yet loaded. // Make sure to disable form submission until Stripe.js has loaded. return; } 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) setErrorMessage(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`. } }; return (
{/* Show error message to your customers */} {errorMessage &&
{errorMessage}
} ); }; export default CheckoutForm; ``` 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: | Parameter | Beschreibung | | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_intent` | Die eindeutige ID für die `PaymentIntent`. | | `payment_intent_client_secret` | Das [Client-Geheimnis](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret) des `PaymentIntent`-Objekts. | > 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](https://docs.stripe.com/payments/paymentintents/lifecycle.md), 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. #### HTML + JS ```javascript // Initialize Stripe.js using your publishable key const stripe = Stripe('<>'); // 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; } }); ``` #### React ```jsx import React, {useState, useEffect} from 'react'; import {useStripe} from '@stripe/react-stripe-js'; const PaymentStatus = () => { const stripe = useStripe(); const [message, setMessage] = useState(null); useEffect(() => { if (!stripe) { return; } // 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}) => { // 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': setMessage('Success! Payment received.'); break; case 'processing': setMessage("Payment processing. We'll update you when payment is received."); break; case 'requires_payment_method': // Redirect your user back to your payment page to attempt collecting // payment again setMessage('Payment failed. Please try another payment method.'); break; default: setMessage('Something went wrong.'); break; } }); }, [stripe]); return message; }; export default PaymentStatus; ``` ## Optional: Zahlungsanweisungen per E-Mail senden Sie können E-Mails mit Zahlungsanweisungen für Banküberweisungen über das [Dashboard](https://dashboard.stripe.com/settings/emails) aktivieren. Nachdem Sie Zahlungsanweisungen per E-Mail aktiviert haben, sendet Stripe Ihrem Kunden/Ihrer Kundin in folgenden Fällen eine E-Mail: - Ein PaymentIntent wird bestätigt, aber der/die Kund/in verfügt nicht über ausreichende Deckung. - Der/die Kund/in sendet eine Banküberweisung, verfügt jedoch nicht über ausreichende Deckung, um die ausstehenden Zahlungen abzuschließen. Eine E-Mail mit Zahlungsanweisungen für Banküberweisungen enthält den fälligen Betrag, die Bankinformationen für die Überweisung und einen Link zur von Stripe gehosteten Anweisungsseite. > In einer Sandbox werden E-Mails mit Zahlungsanweisungen nur an E-Mail-Adressen gesendet, die mit dem Stripe-Konto verknüpft sind. ## 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* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests)-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](https://dashboard.stripe.com/webhooks/create). Alternativ können Sie die [Webhook Endpoints API](https://docs.stripe.com/api/webhook_endpoints.md) verwenden, um das Ereignis [payment_intent.partially_funded](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.partially_funded) zu empfangen. > Das Auslösen von Ereignissen in der Beta-API-Version, wie `payment_intent.partially_funded`, wird von der [Stripe-CLI](https://docs.stripe.com/stripe-cli.md) nicht unterstützt. Die folgenden Ereignisse werden während des Zahlungsflusses gesendet, wenn die PaymentIntent aktualisiert wird. | Ereignis | Beschreibung | Nächste Schritte | | --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_intent.requires_action` | Wird 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_funded` | Eine 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](https://docs.stripe.com/api/payment_intents/confirm.md) bestätigen. | | `payment_intent.succeeded` | Die Kundenzahlung war erfolgreich. | Führen Sie den Waren- bzw. Dienstleistungsauftrag aus. | > 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](https://docs.stripe.com/api/payment_intents/apply_customer_balance.md). Wir empfehlen die Verwendung von [Webhooks](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks), um die erfolgreiche Abbuchung zu bestätigen und die Kundinnen/Kunden zu informieren, dass die Zahlung abgeschlossen ist. ### Beispielcode #### Ruby ```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) ) rescue JSON::ParserError => e # Invalid payload status 400 return end # Handle the event case event.type when 'payment_intent.requires_action' payment_intent = event.data.object # contains a Stripe::PaymentIntent # The payment intent was not fully funded due to insufficient funds # on the customer balance. Define and call a method to handle the payment intent. # handle_payment_intent_requires_action(payment_intent) when 'payment_intent.partially_funded' payment_intent = event.data.object # contains a Stripe::PaymentIntent # Then define and call a method to handle the payment intent being partially funded. # handle_payment_intent_partially_funded(payment_intent) when 'payment_intent.succeeded' payment_intent = event.data.object # contains a Stripe::PaymentIntent # Then define and call a method to handle the successful payment intent. # handle_payment_intent_succeeded(payment_intent) else puts "Unhandled event type: #{event.type}" end status 200 end ``` ### Ausstehende Zahlungen im Dashboard anzeigen Sie können alle ausstehenden PaymentIntents für Banküberweisungen im [Dashboard](https://dashboard.stripe.com/payments) 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. #### Dashboard Um eine Banküberweisung mit dem Dashboard in einer *sandbox* (A sandbox is an isolated test environment that allows you to test Stripe functionality in your account without affecting your live integration. Use sandboxes to safely experiment with new features and changes) zu simulieren, gehen Sie auf die Seite der Kundin oder des Kunden im Dashboard. Klicken Sie unter **Zahlungsmethoden** auf **Hinzufügen** und wählen Sie **Geld überweisen (nur Test)**. #### API So simulieren Sie eine Banküberweisung mit der API: #### USA ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "reference"="REF-4242" \ -d "amount"="1000" \ -d "currency"="usd" ``` #### Vereinigtes Königreich ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "reference"="REF-4242" \ -d "amount"="1000" \ -d "currency"="gbp" ``` #### EU ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "reference"="REF-4242" \ -d "amount"="1000" \ -d "currency"="eur" ``` #### JP ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "amount"="1000" \ -d "currency"="jpy" ``` #### MX ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "reference"="123456" \ -d "amount"="1000" \ -d "currency"="mxn" ``` #### Stripe-CLI So simulieren Sie eine Banküberweisung mit der Stripe-CLI: 1. [Installieren Sie die Stripe-CLI](https://docs.stripe.com/stripe-cli.md). 1. Melden Sie sich bei der CLI mit demselben Konto an, mit dem Sie sich beim Stripe-Dashboard angemeldet haben. ```bash stripe login ``` 1. Simulieren Sie eine eingehende Banküberweisung für eine/n bestehende/n Kunden/Kundin. #### USA ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1099 \ --reference=DVGBG97TZ6ZV \ --currency=usd ``` Der Parameter `reference` ist optional und simuliert den Wert, den der Kunde/die Kundin in das Referenzfeld der Überweisung eingegeben hat. #### Vereinigtes Königreich ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1099 \ --reference=DVGBG97TZ6ZV \ --currency=gbp ``` Der Parameter `reference` ist optional und simuliert den Wert, den der Kunde/die Kundin in das Referenzfeld der Überweisung eingegeben hat. #### EU ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1099 \ --reference=DVGBG97TZ6ZV \ --currency=eur ``` Der Parameter `reference` ist optional und simuliert den Wert, den der Kunde/die Kundin in das Referenzfeld der Überweisung eingegeben hat. #### JP ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1000 \ --currency=jpy ``` #### MX ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1099 \ --reference=123456 \ --currency=mxn ``` Der Parameter `reference` ist optional und simuliert den Wert, den der Kunde/die Kundin in das Referenzfeld der Überweisung eingegeben hat. ## Umgang mit vorübergehenden Verfügbarkeitsproblemen Die folgenden Fehlercodes weisen auf vorübergehende Probleme mit der Verfügbarkeit der Zahlungsmethode hin: | Code | Beschreibung | Handling | | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_method_rate_limit_exceeded` | Für diese Zahlungsmethode, die strengeren Grenzwerten als den [API-weiten Ratenbegrenzungen](https://docs.stripe.com/rate-limits.md) 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. | > Wenn Sie allgemein oder aufgrund eines bevorstehenden Ereignisses starke Nutzung erwarten, kontaktieren Sie uns, sobald Sie davon erfahren. # Direct API > This is a Direct API for when payment-ui is direct-api. View the full page at https://docs.stripe.com/payments/bank-transfers/accept-a-payment?payment-ui=direct-api. ## Stripe einrichten [Serverseitig] Zunächst benötigen Sie ein Stripe-Konto. [Registrieren Sie sich jetzt](https://dashboard.stripe.com/register). Nutzen Sie unsere offiziellen Bibliotheken für den Zugriff auf die Stripe-API über Ihre Anwendung: #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ## Kund/innen erstellen oder abrufen [Serverseitig] Sie müssen ein [Kundenobjekt](https://docs.stripe.com/api/customers.md) 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. ```curl curl -X POST https://api.stripe.com/v1/customers \ -u "<>:" ``` ## PaymentIntent erstellen und bestätigen [Serverseitig] Ein [PaymentIntent](https://docs.stripe.com/api/payment_intents/object.md) ist ein Objekt, das Ihre Absicht zur Einziehung einer Kundenzahlung darstellt und den Zahlungsvorgang in jeder Phase verfolgt. Erstellen und bestätigen Sie einen PaymentIntent auf dem Server und geben Sie den Betrag und die Währung an, die Sie einziehen möchten. Außerdem müssen Sie den [Kundenparameter](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-customer) der PaymentIntent-Erstellungsanfrage ausfüllen. Banküberweisungen sind bei PaymentIntents ohne eine Kundin/einen Kunden nicht verfügbar. #### Zahlungsmethoden über das Dashboard verwalten Bevor Sie einen Payment Intent erstellen, müssen Sie unbedingt zuvor im Dashboard in den [Einstellungen für Zahlungsmethoden](https://dashboard.stripe.com/settings/payment_methods) die Option **Banküberweisung** aktivieren. > Mit [dynamischen Zahlungsmethoden](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods.md) übernimmt Stripe die Rückgabe geeigneter Zahlungsmethoden basierend auf Faktoren wie Betrag, Währung und Zahlungsablauf der Transaktion. #### USA ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=usd \ -d "automatic_payment_methods[enabled]=true" \ --data-urlencode "return_url=https://example.com/return_url" \ -d "payment_method_data[type]=customer_balance" \ -d confirm=true ``` #### UK ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=gbp \ -d "automatic_payment_methods[enabled]=true" \ --data-urlencode "return_url=https://example.com/return_url" \ -d "payment_method_data[type]=customer_balance" \ -d confirm=true ``` #### EU ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=eur \ -d "automatic_payment_methods[enabled]=true" \ --data-urlencode "return_url=https://example.com/return_url" \ -d "payment_method_data[type]=customer_balance" \ -d confirm=true ``` Um die den Kundinnen/Kunden angezeigte IBAN lokal anzupassen, können Sie das Land der Kundin/des Kunden konfigurieren, indem Sie die Eigenschaft [`address.country`](https://docs.stripe.com/api/customers/object.md#customer_object-address-country) festlegen oder [die Kundin/den Kunden im Dashboard bearbeiten](https://docs.stripe.com/invoicing/customer.md#edit-a-customer). Wir unterstützen die IBAN-Lokalisierung für : - Wenn Sie kein Land für Ihren Kunden/Ihre Kundin konfiguriert haben oder wenn das Land des Kunden/der Kundin keine lokale Anpassung der IBAN unterstützt, wenden wir das Land Ihres Stripe-Kontos an. - Wenn die IBAN-Lokalisierung für das Land Ihres Stripe-Kontos nicht unterstützt wird, wenden wir `IE` an. > Das Erstellen neuer lokalisierter virtueller Bankkontonummern ist derzeit für Spanien (ES) nicht verfügbar. Verwenden Sie stattdessen eines der anderen EU-VBAN-Länder. #### JP ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=19000 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=jpy \ -d "automatic_payment_methods[enabled]=true" \ --data-urlencode "return_url=https://example.com/return_url" \ -d "payment_method_data[type]=customer_balance" \ -d confirm=true ``` #### MX ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=mxn \ -d "automatic_payment_methods[enabled]=true" \ --data-urlencode "return_url=https://example.com/return_url" \ -d "payment_method_data[type]=customer_balance" \ -d confirm=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](https://docs.stripe.com/payments/customer-balance/reconciliation.md). #### Zahlungsmethoden manuell auflisten Um die Zahlungsmethoden manuell mit der API anzugeben, fügen Sie `customer_balance` zur Liste der [Zahlungsmethoden](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types) für Ihren PaymentIntent hinzu. Geben Sie die zudem die Kunden-[ID](https://docs.stripe.com/api/customers/object.md#customer_object-id) an. #### USA ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_data[type]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=us_bank_transfer" \ -d confirm=true ``` 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](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Verwenden Sie `bank_transfer` als [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type), um anzugeben, was zu tun ist, wenn das Kundenguthaben nicht ausreicht, um den Zahlungsbetrag zu begleichen. - Verwenden Sie `us_bank_transfer` als [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type), um die Überweisungsarten anzugeben, die zur Leistung der Zahlung verwendet werden können. #### UK ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=gbp \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_data[type]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=gb_bank_transfer" \ -d confirm=true ``` 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](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Verwenden Sie `bank_transfer` als [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type), um anzugeben, was zu tun ist, wenn das Kundenguthaben nicht ausreicht, um den Zahlungsbetrag zu begleichen. - Verwenden Sie `gb_bank_transfer` als [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type), um die Überweisungsarten anzugeben, die zur Leistung der Zahlung verwendet werden können. #### EU ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=eur \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_data[type]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=eu_bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][eu_bank_transfer][country]=FR" \ -d confirm=true ``` 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](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Verwenden Sie `bank_transfer` als [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type), um anzugeben, was zu tun ist, wenn das Kundenguthaben nicht ausreicht, um den Zahlungsbetrag zu begleichen. - Verwenden Sie `eu_bank_transfer` als [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type), um die Überweisungsarten anzugeben, die zur Leistung der Zahlung verwendet werden können. - Legen Sie [payment_method_options[customer_balance][bank_transfer][eu_bank_transfer][country]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-eu_bank_account-country) auf eines der fest. Die IBAN, die der Kundin/dem Kunden angezeigt wird, wird entsprechend dem von Ihnen gewählten Land lokalisiert. > Das Erstellen neuer lokalisierter virtueller Bankkontonummern ist derzeit für Spanien (ES) nicht verfügbar. Verwenden Sie stattdessen eines der anderen EU-VBAN-Länder. #### JP ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=19000 \ -d currency=jpy \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_data[type]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=jp_bank_transfer" \ -d confirm=true ``` 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](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Verwenden Sie `bank_transfer` als [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type), um anzugeben, was zu tun ist, wenn das Kundenguthaben nicht ausreicht, um den Zahlungsbetrag zu begleichen. - Verwenden Sie `jp_bank_transfer` als [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type), um die Überweisungsarten anzugeben, die zur Leistung der Zahlung verwendet werden können. #### MX ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=mxn \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_data[type]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=mx_bank_transfer" \ -d confirm=true ``` 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](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Verwenden Sie `bank_transfer` als [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type), um anzugeben, was zu tun ist, wenn das Kundenguthaben nicht ausreicht, um den Zahlungsbetrag zu begleichen. - Verwenden Sie `mx_bank_transfer` als [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type), um die Überweisungsarten anzugeben, die zur Leistung der Zahlung verwendet werden können. > Geben Sie immer die `payment_method_types` an, wenn Sie eine Zahlung erstellen. Sie können `customer_balance` nicht für [zukünftige Zahlungen](https://docs.stripe.com/payments/save-and-reuse.md) verwenden. ## Kund/innen anweisen, eine Banküberweisung durchzuführen [Clientseitig] Wenn der Kundensaldo nicht ausreicht, um den angeforderten Betrag zu decken, zeigt der PaymentIntent den Status `requires_action` an. Die Antwort enthält das Feld `next_action` mit dem Wert `display_bank_transfer_instructions` als `type`. Der Hash `next_action[display_bank_transfer_instructions]` enthält Informationen, die Sie Ihren Kundinnen/Kunden anzeigen sollten, damit sie die Überweisung durchführen können. Um die Abwicklung von Geldern zu gewährleisten, weisen Sie Ihre Kundinnen/Kunden an, genau die angegebenen Details zu verwenden, insbesondere den Kontonamen und gegebenenfalls die Kontonummer. > Im *Live-Modus* (Use this mode when you’re ready to launch your app. Card networks or payment providers process payments) stellt Stripe jedem Kunden/jeder Kundin einen eindeutigen Satz von Banküberweisungsdaten zur Verfügung. Im Gegensatz dazu bietet Stripe allen Kundinnen und Kunden in Testumgebungen ungültige Banküberweisungsdaten an. Anders als beim Live-Modus sind diese ungültigen Details möglicherweise nicht immer eindeutig. #### USA | Feld | Beschreibung | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-type) | Der Typ der zu verwendenden Banküberweisung. In den USA muss der Typ `us_bank_transfer` sein. | | [reference](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-reference) | Ein einmaliger Referenzcode zur Identifizierung der Banküberweisung. Weisen Sie Ihre Kund/innen an, diesen Code in das Referenzfeld ihrer Banküberweisung aufzunehmen. | | [amount_remaining](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-amount_remaining) | Der verbleibende Betrag, der überwiesen werden muss, um die Zahlung abzuschließen. Weisen Sie Ihre Kundinnen und Kunden an, diesen Betrag zu überweisen. Dieser kann vom PaymentIntent-Betrag abweichen, wenn bereits im Kundenguthaben vorhandene Gelder auf den PaymentIntent angewendet wurden oder von Kundenseite zu wenig bezahlt wurde. | | [currency](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-currency) | Die Währung für den verbleibenden Betrag. | | [financial_addresses](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions) | Die Liste der Finanzadressen für US-Bankkonten. Zu den Typen zählen `aba` und `swift`. Details finden Sie nachfolgend. | | [hosted_instructions_url](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-hosted_instructions_url) | Ein Link zu einer gehosteten Seite, die Ihre Kund/innen durch den Transfer leitet. | #### aba hash Beispiel für einen `aba`-Hash: ```json { "aba": { "account_number": "111222333444", "bank_name": "Wells Fargo Bank, NA", "routing_number": "444555666" }, "supported_networks": [ "ach", "domestic_wire_us" ], "type": "aba" } ``` | Feld | Werte | Beschreibung | | -------------------- | ------------------------------ | ------------------------------------------------------------------- | | `type` | `aba` | Der Typ der Finanzadresse. | | `supported_networks` | - `ach` - `domestic_wire_us` | Die Liste der Netzwerke, die von dieser Adresse unterstützt werden. | | `aba.account_number` | 111222333444 | Die Kontonummer. | | `aba.routing_number` | 444555666 | Die Routingnummer. | | `aba.bank_name` | Wells Fargo Bank, NA | Der Name der Bank. | #### swift-Hash Beispiel für einen `swift`-Hash: ```json { "swift": { "account_number": "111222333444", "bank_name": "Wells Fargo Bank, NA", "swift_code": "AAAA-BB-CC-123" }, "supported_networks": [ "swift" ], "type": "swift" } ``` | Feld | Werte | Beschreibung | | ---------------------- | -------------------- | ------------------------------------------------------------------- | | `type` | `swift` | Der Typ der Finanzadresse. | | `supported_networks` | - `swift` | Die Liste der Netzwerke, die von dieser Adresse unterstützt werden. | | `swift.account_number` | 111222333444 | Die SWIFT-Kontonummer. | | `swift.swift_code` | AAAA-BB-CC-123 | Der SWIFT-Code. | | `swift.bank_name` | Wells Fargo Bank, NA | Der Name der Bank. | #### Dauer der Abwicklung Nachdem Sie Ihre Kundinnen und Kunden angewiesen haben, mit den von Ihnen bereitgestellten Informationen eine Überweisung zu veranlassen, kann es bis zu 5 Tage dauern, bis die Überweisung abgeschlossen ist. Wie lange die Abwicklung dauert, hängt von dem Banksystem ab, über die die Überweisung bei Stripe eingegangen ist: - ACH-Überweisungen treffen innerhalb von 1–3 Werktagen ein. - Inlandsüberweisungen (Fedwire) gehen am selben Tag ein (abhängig davon, ob die Überweisung vor der Annahmeschlusszeit der Bank erfolgt ist). - Internationale Banküberweisungen (SWIFT) treffen innerhalb 1–5 Werktagen ein. #### Vereinigtes Königreich | Feld | Beschreibung | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-type) | Der Typ der zu verwendenden Banküberweisung. Im Vereinigten Königreich muss der Typ `gb_bank_transfer` sein. | | [reference](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-reference) | Ein einmaliger Referenzcode zur Identifizierung der Banküberweisung. Weisen Sie Ihre Kund/innen an, diesen Code in das Referenzfeld ihrer Banküberweisung aufzunehmen. | | [amount_remaining](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-amount_remaining) | Der verbleibende Betrag, der überwiesen werden muss, um die Zahlung abzuschließen. Weisen Sie Ihre Kundinnen und Kunden an, diesen Betrag zu überweisen. Dieser kann vom PaymentIntent-Betrag abweichen, wenn bereits im Kundenguthaben vorhandene Gelder auf den PaymentIntent angewendet wurden oder von Kundenseite zu wenig bezahlt wurde. | | [currency](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-currency) | Die Währung für den verbleibenden Betrag. | | [financial_addresses](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions) | Die Liste der Finanzadressen für Bankkonten im Vereinigten Königreich. Zu den Typen zählt `sort_code`. Details finden Sie nachfolgend. | | [hosted_instructions_url](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-hosted_instructions_url) | Ein Link zu einer gehosteten Seite, die Ihre Kund/innen durch den Transfer leitet. | ### sort_code-Hash Beispiel für den Hash `sort_code`: ```json { "sort_code": { "account_holder_name": "Demo Test Inc.", "account_number": "98765432", "sort_code": "200000" }, "supported_networks": [ "bacs", "fps" ], "type": "sort_code" } ``` | Feld | Werte | Beschreibung | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ------------------------------------------------------------------------ | | [type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-type) | `sort_code` | Der Typ der Finanzadresse. | | [supported_networks](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-supported_networks) | - `bacs` - `fps` | Die Liste der Netzwerke, die von dieser Adresse unterstützt werden. | | [sort_code.account_number](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-sort_code-account_number) | 98765432 | Die 8-stellige Kontonummer. | | [sort_code.sort_code](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-sort_code-sort_code) | 200000 | Die 6-stellige Bankleitzahl. | | [sort_code.account_holder_name](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-sort_code-account_holder_name) | Demo Test Inc. | Der Name der Person oder des Unternehmens, der/dem das Bankkonto gehört. | #### Dauer der Abwicklung Nachdem Sie Ihre Kundinnen und Kunden angewiesen haben, mit den von Ihnen bereitgestellten Informationen eine Überweisung zu veranlassen, kann es bis zu 5 Tage dauern, bis die Überweisung abgeschlossen ist. Wie lange die Abwicklung dauert, hängt von dem Banksystem ab, über die die Überweisung bei Stripe eingegangen ist: - FPS-Überweisungen kommen innerhalb von 15 Minuten an. - BACS-Überweisungen treffen innerhalb von 5 Tagen ein. > Banküberweisungen, die über das [CHAPS](https://www.bankofengland.co.uk/payment-and-settlement/chaps)-Zahlungsnetzwerk gesendet werden, werden zurzeit nicht unterstützt. #### EU | Feld | Beschreibung | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-type) | Der Typ der zu verwendenden Banküberweisung. In der EU muss der Typ `eu_bank_transfer` sein. | | [reference](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-reference) | Ein einmaliger Referenzcode zur Identifizierung der Banküberweisung. Weisen Sie Ihre Kund/innen an, diesen Code in das Referenzfeld ihrer Banküberweisung aufzunehmen. | | [amount_remaining](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-amount_remaining) | Der verbleibende Betrag, der überwiesen werden muss, um die Zahlung abzuschließen. Weisen Sie Ihre Kundinnen und Kunden an, diesen Betrag zu überweisen. Dieser kann vom PaymentIntent-Betrag abweichen, wenn bereits im Kundenguthaben vorhandene Gelder auf den PaymentIntent angewendet wurden oder von Kundenseite zu wenig bezahlt wurde. | | [currency](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-currency) | Die Währung für den verbleibenden Betrag. | | [financial_addresses](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions) | Liste der Finanzadressen für EU-Bankkonten. Zu den Typen zählt `iban`. Details finden Sie nachfolgend. | | [hosted_instructions_url](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-hosted_instructions_url) | Ein Link zu einer gehosteten Seite, die Ihre Kund/innen durch den Transfer leitet. | ### iBAN-Hash Beispiel für einen `iban`-Hash: ```json { "iban": { "account_holder_name": "Demo Test Inc.", "bic": "CITINL2XXXX", "country": "NL", "iban": "NL40CITI7000799556 " }, "supported_networks": [ "sepa" ], "type": "iban" } ``` | Feld | Werte | Beschreibung | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-type) | `iban` | Der Typ der Finanzadresse. | | [supported_networks](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-supported_networks) | - `sepa` | Die Liste der Netzwerke, die von dieser Adresse unterstützt werden. | | [iban.iban](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-iban-iban) | NL40CITI7000799556 | Die IBAN, an die Kundinnen und Kunden die Zahlung tätigen. Wenn Sie Ihre Zahlungsmethoden über das [Dashboard](https://dashboard.stripe.com/settings/payment_methods) verwalten, wird das Land der IBAN basierend auf dem [Kundenland](https://docs.stripe.com/api/customers/object.md#customer_object-country) oder dem Land Ihres Stripe-Kontos ausgewählt. Wenn Sie Zahlungsmethoden manuell mit dem Parameter [payment_method_types](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types) auflisten, wird das Land der IBAN basierend auf dem Parameter [Land](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-eu_bank_transfer-country) ausgewählt, der in der Anfrage übergeben wurde. | | [iban.bic](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-iban-bic) | CITINL2XXXX | Die BIC für diese IBAN. | | [iban.country](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-iban-country) | `NL` | Der zweistellige Ländercode des Bankkontos, auf das die Überweisung erfolgen soll. | | [iban.account_holder_name](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-iban-account_holder_name) | Demo Test Inc. | Der Name der Person oder des Unternehmens, der/dem das Bankkonto gehört. | #### Dauer der Abwicklung Bei Inlandsüberweisungen bitten Sie Ihre Kundinnen und Kunden, eine Sofortüberweisung per SEPA (sofern verfügbar) mit den von Ihnen angegebenen Daten zu veranlassen. Gelder werden in der Regel innerhalb von Sekunden gutgeschrieben und gehen innerhalb von 30 Minuten ein. An Wochenenden und Feiertagen oder wenn die Absenderbank die Zahlung nicht als Sofortüberweisung weiterleiten kann, kann die Zahlungsabwicklung länger dauern. In diesen Fällen wird die Überweisung als Standard-SEPA-Zahlung abgewickelt. > Das Akzeptieren internationaler EUR-Überweisungen ist in der Vorschau verfügbar. Wenden Sie sich bezüglich der Berechtigung für frühzeitigen Zugriff an [sepa-bank-transfers-beta@stripe.com](mailto:sepa-bank-transfers-beta@stripe.com). #### JP | Feld | Beschreibung | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-type) | Der Typ der zu verwendenden Banküberweisung. In Japan muss der Typ `jp_bank_transfer` sein. | | [reference](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-reference) | Dieses Feld wird nicht verwendet. | | [amount_remaining](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-amount_remaining) | Der verbleibende Betrag, der überwiesen werden muss, um die Zahlung abzuschließen. Weisen Sie Ihre Kundinnen und Kunden an, diesen Betrag zu überweisen. Dieser kann vom PaymentIntent-Betrag abweichen, wenn bereits im Kundenguthaben vorhandene Gelder auf den PaymentIntent angewendet wurden oder von Kundenseite zu wenig bezahlt wurde. | | [currency](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-currency) | Die Währung für den verbleibenden Betrag. | | [financial_addresses](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses) | Die Liste der Finanzadressen für JP-Bankkonten. Zu den Typen zählt `zengin`. Details finden Sie nachfolgend. | | [hosted_instructions_url](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-hosted_instructions_url) | Ein Link zu einer gehosteten Seite, die Ihre Kund/innen durch den Transfer leitet. | ### zengin-Hash Beispiel für einen `zengin`-Hash: ```json { "zengin": { "account_holder_name": "ストライプジャパン(カ シュウノウダイコウ", "account_number": "1234567", "account_type": "futsu", "bank_code": "0009", "bank_name": "三井住友銀行", "branch_code": "950", "branch_name": "東京第二" }, "supported_networks": [ "zengin" ], "type": "zengin" } ``` | Feld | Werte | Beschreibung | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------- | | [type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-type) | `zengin` | Der Typ der Finanzadresse. | | [supported_networks](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-supported_networks) | - `zengin` | Die Liste der Netzwerke, die von dieser Adresse unterstützt werden. | | [zengin.bank_code](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-zengin-bank_code) | 0009 | Der 4-stellige Bankcode. | | [zengin.bank_name](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-zengin-bank_name) | 三井住友銀行 | Der Name der Bank. | | [zengin.branch_code](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-zengin-branch_code) | 950 | Der dreistellige Filialcode. | | [zengin.branch_name](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-zengin-branch_name) | 東京第二 | Der Name der Filiale. | | [zengin.account_type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-zengin-account_type) | `futsu`, `toza` | Der Kontotyp. | | [zengin.account_holder_name](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-zengin-account_holder_name) | ストライプジャパン(カ シュウノウダイコウ | Der Name des/der Kontoinhaber/in. | | [zengin.account_number](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-zengin-account_number) | 1234567 | Die 7-stellige Kontonummer. | #### Dauer der Abwicklung Weisen Sie den Kunden/die Kundin an, mit den von Ihnen bereitgestellten Informationen eine Überweisung bei seiner/ihrer Bank zu veranlassen. Überweisungen, die während der Geschäftszeiten getätigt werden, treffen noch am selben Tag ein. Überweisungen, die außerhalb der Geschäftszeiten erfolgen, werden am nächsten Werktag durchgeführt. #### MX | Feld | Beschreibung | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-type) | Der Typ der zu verwendenden Banküberweisung. In Mexiko muss der Typ `mx_bank_transfer` sein. | | [reference](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-reference) | Ein einmaliger Referenzcode zur Identifizierung der Banküberweisung. Weisen Sie Ihre Kund/innen an, diesen Code in das Referenzfeld ihrer Banküberweisung aufzunehmen. | | [amount_remaining](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-amount_remaining) | Der verbleibende Betrag, der überwiesen werden muss, um die Zahlung abzuschließen. Weisen Sie Ihre Kundinnen und Kunden an, diesen Betrag zu überweisen. Dieser kann vom PaymentIntent-Betrag abweichen, wenn bereits im Kundenguthaben vorhandene Gelder auf den PaymentIntent angewendet wurden oder von Kundenseite zu wenig bezahlt wurde. | | [currency](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-currency) | Die Währung für den verbleibenden Betrag. | | [financial_addresses](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions) | Die Liste der Finanzadressen für MX-Bankkonten. Zu den Typen zählt `spei`. Details finden Sie nachfolgend. | | [hosted_instructions_url](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-hosted_instructions_url) | Ein Link zu einer gehosteten Seite, die Ihre Kund/innen durch den Transfer leitet. | ### spei-Hash Beispiel für einen `spei`-Hash: ```json { "spei": { "bank_code": "002", "bank_name": "BANAMEX", "clabe": "002180650612345670" }, "supported_networks": [ "spei" ], "type": "spei" } ``` | Feld | Werte | Beschreibung | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ------------------------------------------------------------------- | | [type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-type) | `spei` | Der Typ der Finanzadresse. | | [supported_networks](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-supported_networks) | - `spei` | Die Liste der Netzwerke, die von dieser Adresse unterstützt werden. | | [spei.clabe](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-spei-clabe) | 002180650612345670 | Die 18-stellige CLABE-Nummer. | | [spei.bank_code](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-spei-bank_code) | 002 | Der 3-stellige Bankcode. | | [spei.bank_name](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-spei-bank_name) | BANAMEX | Der Kurzname des Bankinstituts | Weisen Sie den Kunden/die Kundin an, mit den von Ihnen bereitgestellten Informationen eine Überweisung bei seiner/ihrer Bank zu veranlassen. Wir gehen davon aus, dass die meisten Zahlungen innerhalb von weniger als 10 Minuten eingehen, sowohl an Bankarbeitstagen als auch an Nicht-Bankarbeitstagen. ## Erfolgreiche 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* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests)-Endpoint muss so eingerichtet werden, dass er das Ereignis `payment_intent.partially_funded` empfängt. Sie können [einen Webhook über das Dashboard hinzufügen](https://dashboard.stripe.com/webhooks/create). Alternativ können Sie die [Webhook Endpoints API](https://docs.stripe.com/api/webhook_endpoints.md) verwenden, um das Ereignis [payment_intent.partially_funded](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.partially_funded) zu empfangen. Stripe sendet die folgenden Ereignisse während des Zahlungsablaufs, wenn wir den PaymentIntent aktualisieren. | Ereignis | Beschreibung | Nächste Schritte | | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_intent.requires_action` | Wird während der Bestätigung gesendet, wenn der Kundensaldo nicht ausreicht, um den PaymentIntent abzugleichen; der PaymentIntent wechselt zu `requires_action`. Wenn ein Barguthaben eines Kunden/einer Kundin zum Bestätigungszeitpunkt automatisch auf den PaymentIntent angewendet wurde und der Betrag den `Betrag` des PaymentIntent nicht vollständig deckt, gibt Stripe dieses Ereignis mit einem genauen `amount_remaining` aus. | Weisen Sie Ihre Kund/innen an, eine Banküberweisung mit dem `amount_remaining` zu senden. | | `payment_intent.partially_funded` | Der Kunde/die Kundin hat eine Banküberweisung gesendet, die auf den PaymentIntent angewendet wurde, aber nicht ausreichte, um die Zahlung abzuschließen. Dies kann passieren, wenn der Kunde/die Kundin nach Bestätigung des `PaymentIntent` einen unzureichenden Betrag überweist. Dies kann auf eine Unterzahlung oder Gebühren zurückzuführen sein, die von der Kundenbank erhoben werden. PaymentIntents, die teilweise finanziert werden, werden erst dann in Ihrem Kontoguthaben 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](https://docs.stripe.com/api/payment_intents/confirm.md) bestätigen. | | `payment_intent.succeeded` | Die Kundenzahlung war erfolgreich. | Wickeln Sie die Bestellung des/der Kund/in ab. | Um alle Ereignisse im Zusammenhang mit Teilfinanzierungen zu überwachen, überwachen Sie sowohl `requires_action` als auch `partially_funded`. Stripe gibt `requires_action` aus, wenn nach der Bestätigung noch eine Finanzierung erforderlich ist. Wir geben `partially_funded` aus, wenn wir später zusätzliche Gelder von der Kundin/dem Kunden erhalten, die den verbleibenden Betrag nicht vollständig decken. > 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](https://docs.stripe.com/api/payment_intents/apply_customer_balance.md). Wir empfehlen die Verwendung von [Webhooks](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks), um die erfolgreiche Abbuchung zu bestätigen und die Kundinnen/Kunden zu informieren, dass die Zahlung abgeschlossen ist. ### Beispielcode #### Ruby ```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) ) rescue JSON::ParserError => e # Invalid payload status 400 return end # Handle the event case event.type when 'payment_intent.requires_action' payment_intent = event.data.object # contains a Stripe::PaymentIntent # The payment intent was not fully funded due to insufficient funds # on the customer balance. Define and call a method to handle the payment intent. # handle_payment_intent_requires_action(payment_intent) when 'payment_intent.partially_funded' payment_intent = event.data.object # contains a Stripe::PaymentIntent # Then define and call a method to handle the payment intent being partially funded. # handle_payment_intent_partially_funded(payment_intent) when 'payment_intent.succeeded' payment_intent = event.data.object # contains a Stripe::PaymentIntent # Then define and call a method to handle the successful payment intent. # handle_payment_intent_succeeded(payment_intent) else puts "Unhandled event type: #{event.type}" end status 200 end ``` ### Ausstehende Zahlungen im Dashboard anzeigen Sie können alle ausstehenden PaymentIntents für Banküberweisungen im [Dashboard](https://dashboard.stripe.com/payments) anzeigen, indem Sie den Filter **Auf Finanzierung warten** auf den **Status** anwenden. ## Integration testen Sie können Ihre Integration testen, indem Sie eine eingehende Überweisung über das Dashboard oder eine HTTP-Anfrage simulieren. ### Mit dem Dashboard Um eine Banküberweisung mit dem Dashboard in einer *sandbox* (A sandbox is an isolated test environment that allows you to test Stripe functionality in your account without affecting your live integration. Use sandboxes to safely experiment with new features and changes) zu simulieren, gehen Sie auf die Seite der Kundin oder des Kunden im Dashboard. Klicken Sie unter **Zahlungsmethoden** auf **Hinzufügen** und wählen Sie **Geld überweisen (nur Test)**. ### Mit der Stripe-API Sie können einen API-Aufruf durchführen, um eine Banküberweisung zu simulieren. #### USA ```curl curl https://api.stripe.com/v1/test_helpers/customers/cus_xxxxxxxxx/fund_cash_balance \ -u "<>:" \ -d amount=1000 \ -d currency=usd \ -d reference=REF-4242 ``` Sie können einen Storno simulieren, indem Sie dem Parameter `reference` `reversal_` voranstellen (zum Beispiel `reversal_123`). #### Vereinigtes Königreich ```curl curl https://api.stripe.com/v1/test_helpers/customers/cus_xxxxxxxxx/fund_cash_balance \ -u "<>:" \ -d amount=1000 \ -d currency=gbp \ -d reference=REF-4242 ``` #### EU ```curl curl https://api.stripe.com/v1/test_helpers/customers/cus_xxxx/fund_cash_balance \ -u "<>:" \ -d amount=1000 \ -d currency=eur \ -d reference=REF-4242 ``` #### JP ```curl curl https://api.stripe.com/v1/test_helpers/customers/cus_xxxx/fund_cash_balance \ -u "<>:" \ -d amount=10000 \ -d currency=jpy ``` #### MX ```curl curl https://api.stripe.com/v1/test_helpers/customers/cus_xxxx/fund_cash_balance \ -u "<>:" \ -d amount=1000 \ -d currency=mxn \ -d reference=123456 ``` ## Umgang mit vorübergehenden Verfügbarkeitsproblemen Die folgenden Fehlercodes weisen auf vorübergehende Probleme mit der Verfügbarkeit der Zahlungsmethode hin: | Code | Beschreibung | Handling | | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_method_rate_limit_exceeded` | Für diese Zahlungsmethode, die strengeren Grenzwerten als den [API-weiten Ratenbegrenzungen](https://docs.stripe.com/rate-limits.md) 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. | > Wenn Sie allgemein oder aufgrund eines bevorstehenden Ereignisses starke Nutzung erwarten, kontaktieren Sie uns, sobald Sie davon erfahren. ## Optional: Zahlungsmethoden von Ihren Kund/innen erfassen Erfassen Sie gegebenenfalls die bevorzugte Finanzierungsart Ihrer Kundin/Ihres Kunden auf Ihrer Website und bestätigen Sie die Zahlungsabsicht mit der Methode [confirmCustomerBalancePayment](https://docs.stripe.com/js/payment_intents/confirm_customer_balance_payment) für [Stripe.js](https://docs.stripe.com/js.md). Zeigen Sie ein HTML-Formular an, um die bevorzugten Details für Banküberweisung zu erfassen. Füllen Sie mit dieser Eingabe die `payment_method_options` aus. Eine vollständige Liste der verfügbaren `payment_method_options`-Parameter für `confirmCustomerBalancePayment` finden Sie in der [JS-Referenzdokumentation](https://docs.stripe.com/js/payment_intents/confirm_customer_balance_payment). Hier ist ein Anwendungsszenario: Wenn Sie Händler/in in Irland sind und sich nicht sicher sind, in welchem Land sich eine Kundin/ein Kunde befindet, können Sie einen `PaymentIntent` mit `payment_method_options[customer_balance][bank_transfer][eu_bank_transfer][country]` zuerst auf ‘IE’ setzen. Verwenden Sie dann die Methode [confirmCustomerBalancePayment](https://docs.stripe.com/js/payment_intents/confirm_customer_balance_payment), um das Land basierend auf den Nutzereingaben zu aktualisieren. ### Beispielcode ```javascript const {paymentIntent, error} = await stripe.confirmCustomerBalancePayment( '{PAYMENT_INTENT_CLIENT_SECRET}', { payment_method: { customer_balance: { }, }, payment_method_options: { customer_balance: { funding_type: 'bank_transfer', bank_transfer: { type: 'eu_bank_transfer', eu_bank_transfer: { country: 'FR', } }, }, }, }, { handleActions: false, } ); if (error) { // Inform the customer that there was an error. } else if (paymentIntent.status === 'requires_payment_method') { // If `payment_method_options.funding_type` wasn't set this // is where you would need to handle the insufficient customer // balance state. } else if (paymentIntent.status === 'requires_action') { // If the current customer balance is insufficient to cover // the amount, and you've passed // `payment_method_options.funding_type` for funding the // customer balance, you can display the bank transfer // instructions to your user. if (paymentIntent.next_action.type === 'display_bank_transfer_instructions') { // Bank transfer details can be found under: // paymentIntent.next_action.display_bank_transfer_instructions } } ``` ## Optional: Zahlungsanweisungen per E-Mail senden Sie können E-Mails mit Zahlungsanweisungen für Banküberweisungen über das [Dashboard](https://dashboard.stripe.com/settings/emails) aktivieren. Nachdem Sie Zahlungsanweisungen per E-Mail aktiviert haben, sendet Stripe Ihrem Kunden/Ihrer Kundin in folgenden Fällen eine E-Mail: - Ein PaymentIntent wird bestätigt, aber der/die Kund/in verfügt nicht über ausreichende Deckung. - Der/die Kund/in sendet eine Banküberweisung, verfügt jedoch nicht über ausreichende Deckung, um die ausstehenden Zahlungen abzuschließen. Eine E-Mail mit Zahlungsanweisungen für Banküberweisungen enthält den fälligen Betrag, die Bankinformationen für die Überweisung und einen Link zur von Stripe gehosteten Anweisungsseite. > In einer Sandbox werden E-Mails mit Zahlungsanweisungen nur an E-Mail-Adressen gesendet, die mit dem Stripe-Konto verknüpft sind.