# Vorhandene Bankkonten migrieren Erfahren Sie, wie Sie vorhandene Bankkonten zur Payment Intents API oder zur Checkout Sessions API migrieren. > #### Verwenden Sie die Accounts v2 API zum Darstellen von Kundinnen und Kunden > > Die Accounts v2 API ist allgemein für Connect-Nutzer/innen verfügbar und für andere Stripe-Nutzer/innen in der öffentlichen Vorschau. Wenn an der Accounts v2 Vorschau teilnehmen, müssen Sie eine [Vorschauversion](https://docs.stripe.com/api-v2-overview.md#sdk-and-api-versioning) in Ihrem Code angeben. > > Um Zugriff auf die Accounts v2 Vorschau anzufordern, {% collect-email modal=true modal_link_text=“sign up.” list=“payin-payout-reuse-waitlist@stripe.com” send_direct_email=true intro_text=“Sind Sie am frühzeitigen Zugang zur Vorschau der Accounts v2 API interessiert?" body_text=“Wir sind gerade dabei, die Vorschau von Accounts v2 bereitzustellen. Um Zugang zu beantragen, geben Sie unten Ihre E-Mail-Adresse ein.” form_cta_text=“Registrieren” success_text=“Danke! Wir melden uns bald.” show_email_confirmation=wahr /%} > > Für die meisten Anwendungsfälle empfehlen wir, [Ihre Kundinnen und Kunden als vom Kunden bzw. von der Kundin konfigurierte Account-Objekte abzubilden](https://docs.stripe.com/accounts-v2/use-accounts-as-customers.md), anstatt [Customer](https://docs.stripe.com/api/customers.md)-Objekte zu verwenden. Stripe stellt die Unterstützung für [ACH Direct Debit](https://docs.stripe.com/ach-deprecated.md) über [Legacy-Integrationen](https://docs.stripe.com/payments/ach-direct-debit/migrating-from-charges.md#identify-legacy-payments) ein. Wenn Sie Zahlungen über das Legacy-ACH Direct Debit erstellen, müssen Sie zur [Payment Intents API](https://docs.stripe.com/api/payment_intents.md) oder [Checkout Sessions API](https://docs.stripe.com/api/checkout/sessions.md) migrieren. Wenn Sie zuvor Kundenzahlungsdaten mit Stripe über die [Tokens API](https://docs.stripe.com/ach-deprecated.md) erfasst haben, können Sie das gespeicherte `Bankkonto` weiterhin als *Zahlungsmethode* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs) verwenden. Sie können [Kundenbankkonten](https://docs.stripe.com/api/customer_bank_accounts.md) nur dann mit der [Payment Intents API](https://docs.stripe.com/api/payment_intents.md) oder der [Checkout Sessions API](https://docs.stripe.com/payments/quickstart-checkout-sessions.md) verwenden, wenn Sie die folgenden Anforderungen erfüllen: - **Checkout Sessions API:** Das Bankkonto des Kunden/der Kundin wurde verifiziert. - **Payment Intents API:** Das Bankkonto der Kundin/des Kunden/der Kundin wurde verifiziert, und für dieses Bankkonto besteht ein [aktives Mandat](https://docs.stripe.com/payments/ach-direct-debit/migrating-from-charges.md#mandate-acknowledgement). Sie müssen Bankkonten, die bereits verifiziert sind, nicht erneut verifizieren, um sie mit Payment Intents oder Checkout-Sessions zu verwenden. # Checkout Sessions API > This is a Checkout Sessions API for when integration-path is checkout. View the full page at https://docs.stripe.com/payments/ach-direct-debit/migrating-from-charges?integration-path=checkout. ## Checkout-Sessions verwenden Um zuvor gespeicherte und verifizierte Bankkonten in Checkout anzuzeigen, müssen Sie Folgendes tun: - Eine Checkout-Sitzung mit einem `customer`-Parameter erstellen - Setzen Sie die Filter auf `['unspecified', 'always']`. - Geben Sie das `us_bank_account` in `payment_method_types` an Wenn diese Anforderungen erfüllt sind, findet Checkout automatisch alle gespeicherten, verifizierten Bankkonten, die mit dieser Kundin/diesem Kunden verknüpft sind, und zeigt sie an, sodass die Zahlungsdaten nicht erneut erfasst werden müssen. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d mode=payment \ -d ui_mode=elements \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[0]=us_bank_account" \ -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]=1099" \ -d "line_items[0][quantity]=1" \ -d "saved_payment_method_options[allow_redisplay_filters][0]=unspecified" \ -d "saved_payment_method_options[allow_redisplay_filters][1]=always" \ --data-urlencode "return_url=YOUR_DOMAIN/complete?session_id={CHECKOUT_SESSION_ID}" ``` Wenn für die/den `Kundin/Kunden` eine E-Mail-Adresse beigefügt ist, ist das Feld der E-Mail-Adresse der Kundin/des Kunden in der [Sitzung](https://docs.stripe.com/js/custom_checkout/session_object) vorausgefüllt und kann nicht geändert werden. Sie müssen nach einer E-Mail-Adresse suchen und Ihr Eingabefeld für die E-Mail-Adresse entsprechend rendern. #### React ```javascript const {checkout} = useCheckoutElements(); const currentEmail = checkout.email; if (currentEmail) { return ; } ``` #### HTML/JavaScript ```javascript const emailInput = document.getElementById("email"); const loadActionsResult = await checkout.loadActions(); const session = loadActionsResult.actions.getSession(); const currentEmail = session.email; if (currentEmail) { emailInput.value = currentEmail; emailInput.readOnly = true; emailInput.classList.add('read-only'); } ``` # Payment Intents API > This is a Payment Intents API for when integration-path is payment-intent. View the full page at https://docs.stripe.com/payments/ach-direct-debit/migrating-from-charges?integration-path=payment-intent. ## Mandatsbestätigung einziehen Zur Bestätigung eines PaymentIntent oder SetupIntent muss Ihre Kundin/Ihr Kunde ein [Mandat](https://docs.stripe.com/api/setup_intents/create.md#create_setup_intent-mandate_data) autorisieren, um das Konto zu belasten. Erfahren Sie mehr über [SEC-Codes](https://docs.stripe.com/payments/ach-direct-debit/sec-codes.md), um zu verstehen, welcher Autorisierungstyp für Ihr Unternehmen der richtige ist. In einigen Fällen haben Sie möglicherweise eine Vorabautorisierung von Ihrem/Ihrer Kund/in aus einem früheren Kauf oder SetupIntent, die Sie verwenden können, um eine *Off-Session* (A payment is described as off-session if it occurs without the direct involvement of the customer, using previously-collected payment information)-Zahlung zu erstellen. Beispiel: - Wenn Sie zuvor ein Online-Mandat von dem Kunden/der Kundin eingeholt haben, können Sie sowohl die IP-Adresse als auch die User-Agent-Informationen verwenden, um ein Objekt `mandate` zu erstellen. Sollten die IP-Adresse oder die User-Agent-Informationen der Kundin/des Kunden nicht vorliegen, können Sie Platzhalterdaten angeben. Falls Sie dies tun, empfehlen wir Ihnen, Platzhalterdaten anzugeben, die Sie in Zukunft leicht erkennen können. - Wenn Sie zuvor Zahlungs- und Mandatsinformationen offline erfasst haben, können Sie ein [PPD-Mandat](https://docs.stripe.com/payments/ach-direct-debit/sec-codes.md#ppd-sec-code) erstellen. Eine Autorisierung ist nur erforderlich, wenn Sie ein `BankAccount`-Objekt zum ersten Mal mit der Payment Intents API oder Setup Intents API verwenden. Danach können Sie das `BankAccount`-Objekt als Zahlungsmethode verwenden, um [zukünftige Zahlungen anzunehmen](https://docs.stripe.com/payments/ach-direct-debit/set-up-payment.md#web-future-payments). Sie können einen Setup Intent erstellen und bestätigen, um ein `Mandat` zu erstellen, ohne dass Sie eine Kundin/einen Kunden belasten müssen: ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method={{BANKACCOUNT_ID}}" \ -d "payment_method_types[]=us_bank_account" \ -d "mandate_data[customer_acceptance][type]=offline" \ -d "mandate_data[customer_acceptance][accepted_at]=123456789" \ -d confirm=true ``` Sie können beim Bestätigen eines Payment Intent ebenfalls Mandatsdaten angeben: ```curl curl https://api.stripe.com/v1/payment_intents/{{PAYMENTINTENT_ID}}/confirm \ -u "<>:" \ -d "mandate_data[customer_acceptance][type]=offline" \ -d "mandate_data[customer_acceptance][accepted_at]=123456789" \ -d "payment_method_options[us_bank_account][mandate_options][collection_method]=paper" ``` ## PaymentIntent mit einem Bankkonto erstellen Sie können ein gespeichertes `BankAccount` als *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs) verwenden, wenn Sie eine PaymentIntent erstellen. Dadurch müssen Sie die Zahlungsdetails nicht erneut erfassen. Stellen Sie sicher, dass Sie auch [Ihre Integration aktualisieren](https://docs.stripe.com/payments/ach-direct-debit/accept-a-payment.md), um statt Bankkonten nun PaymentMethods zu erstellen. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method={{BANKACCOUNT_ID}}" \ -d "payment_method_types[]=us_bank_account" \ -d amount=1099 \ -d currency=usd ``` Auf ähnliche Weise können Sie beim Erstellen eines SetupIntent ein gespeichertes BankAccount als PaymentMethod verwenden. ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method={{BANKACCOUNT_ID}}" \ -d "payment_method_types[]=us_bank_account" ``` ## Ein BankAccount als PaymentMethod abrufen Sie können gespeicherte BankAccounts über die [Payment Methods API](https://docs.stripe.com/api/payment_methods.md) abrufen: ```curl curl https://api.stripe.com/v1/payment_methods/{{BANKACCOUNT_ID}} \ -u "<>:" ``` Bei Verwendung eines BankAccounts als PaymentMethod werden keine neuen Objekte angelegt. Die Payment Methods API bietet einfach eine andere Ansicht desselben zugrunde liegenden Objekts. #### PaymentMethod-Ansicht ```json { "id": "ba_1IsleZ2eZvKYlo2CI3To1g72", "object": "payment_method", "billing_details": { "address": { "city": null, "country": null, "line1": null, "line2": null, "postal_code": null, "state": null }, "email": null, "name": "Jenny Rosen", "phone": null }, "us_bank_account": { "last4": "6789", "routing_number": "110000000", "fingerprint": "1JWtPxqbdX5Gamtc", "account_holder_type": "individual", "bank_name": "STRIPE TEST BANK", }, "created": 123456789, "customer": "cus_CY5bH92D99f4mn", "livemode": false, "metadata": {}, "type": "us_bank_account" } ``` #### BankAccount-Ansicht ```json { "id": "ba_1IsleZ2eZvKYlo2CI3To1g72", "object": "bank_account", "account_holder_name": "Jenny Rosen", "account_holder_type": "individual", "bank_name": "STRIPE TEST BANK", "country": "US", "currency": "usd", "customer": "cus_CY5bH92D99f4mn", "fingerprint": "1JWtPxqbdX5Gamtc", "last4": "6789", "metadata": {}, "routing_number": "110000000", "status": "verified", } ``` ## Rechnungen Nachdem Sie die Mandatsbestätigung erhalten haben, müssen Sie, um [Invoicing](https://docs.stripe.com/invoicing.md) weiterhin nutzen zu können, entweder die Standardzahlungsmethode Ihres Kunden aktualisieren oder den Parameter `default_payment_method` festlegen. So aktualisieren Sie die Standardzahlungsmethode einer Kundin/eines Kunden: ```curl curl https://api.stripe.com/v1/customers/{{CUSTOMER_ID}} \ -u "<>:" \ -d "invoice_settings[default_payment_method]={{BANKACCOUNT_ID}}" ``` So erstellen Sie eine Rechnung mit einem Bankkonto als Zahlungsmethode: ```curl curl https://api.stripe.com/v1/invoices \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "default_payment_method={{BANKACCOUNT_ID}}" ``` ## Abonnements Nachdem Sie die Mandatsbestätigung erhalten haben, müssen Sie, um [Subscriptions](https://docs.stripe.com/subscriptions.md) weiterhin nutzen zu können, entweder die Standardzahlungsmethode Ihres Kunden aktualisieren oder den Parameter `default_payment_method` festlegen. So aktualisieren Sie die Standardzahlungsmethode einer Kundin/eines Kunden: ```curl curl https://api.stripe.com/v1/customers/{{CUSTOMER_ID}} \ -u "<>:" \ -d "invoice_settings[default_payment_method]={{BANKACCOUNT_ID}}" ``` So erstellen Sie ein Abo mit einem Bankkonto als Zahlungsmethode: ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "default_payment_method={{BANKACCOUNT_ID}}" \ -d "items[0][price]=price_1MowQULkdIwHu7ixraBm864M" ``` ## Legacy-ACH-Zahlungen identifizieren Bei einem [Zahlungs](https://docs.stripe.com/api/charges/object.md)-Objekt lautet die Eigenschaft `payment_method_details.type` bei der Legacy-Integration `ach_debit` und bei der neueren Integration `us_bank_account`. Eine Legacy-ACH-Zahlung wird erstellt, wenn ein Legacy-`BankAccount` als [Zahlungsquelle](https://docs.stripe.com/api/charges/object.md#charge_object-source) verwendet wird. Dies geschieht, wenn: - Sie die [Create Charge API](https://docs.stripe.com/api/charges/create.md) aufrufen. - Ein [Abonnement](https://docs.stripe.com/billing/subscriptions/overview.md) oder eine [Rechnung](https://docs.stripe.com/invoicing/overview.md) belastet eine Kundin oder einen Kunden, dessen `default_source` ein Legacy-Bankkonto ist und für den keine `default_payment_method` für die Kundin oder den Kunden, das Abonnement oder die Rechnung festgelegt ist. - Sie rufen die PaymentIntent API mit dem `payment_method_type` `ach_debit` auf.