# Integrationsleitfaden für Embedded Finance Mit Issuing und Treasury für Plattformen eine eingebettete Integration für Finanzdienstleistungen erstellen Lesen Sie unseren Einführungsleitfaden zur Verwendung [von Embedded Finance für SaaS-Plattformen](https://stripe.com/guides/introduction-to-embedded-finance). Erstellen Sie ein eingebettetes Finanzdienstleistungsangebots in den USA auf – mit Stripe [Issuing](https://docs.stripe.com/issuing/how-issuing-works.md) und[Treasury für Plattformen](https://docs.stripe.com/treasury/connect.md). Verwenden Sie Issuing, um Karten zu erstellen, und Treasury für Plattformen, um Guthaben zu speichern und Kartenausgaben zu finanzieren. In diesem Leitfaden lernen Sie: - Verifizierte verbundene Konten erstellen, die Ihre Geschäftskundinnen und -kunden mit relevanten Issuing- und Treasury für Plattformen-Funktionen darstellen - Finanzkonten erstellen, die Sie als Wallet für Ihre Geschäftskundinnen- und Kunden verwenden können und Gelder über ein externes Bankkonto hinzufügen - Virtuelle Karten für Ihre Geschäftskundinnen und -kunden erstellen und diese verwenden, um Gelder mit einer Wallet auszugeben ## Before you begin 1. Registrieren Sie sich für ein [Stripe-Konto](https://dashboard.stripe.com/register). 1. [Aktivieren Sie Issuing und Treasury für Plattformen ](https://dashboard.stripe.com/setup/treasury/activate) 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)-Umgebung aus dem Dashboard. Weitere Informationen finden Sie unter[API-Zugang zu Issuing und Treasury für Plattformen](https://docs.stripe.com/treasury/connect/access.md). 1. Konfigurieren Sie Ihre [Branding-Einstellungen der Connect-Plattform](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding) für Ihr Unternehmen und fügen Sie ein Symbol hinzu. ## Verbundene Konten erstellen ### Verbundenes Konto erstellen Erstellen Sie ein verbundenes Konto, um eine Geschäftskundin/einen Geschäftskunden auf Ihrer Plattform darzustellen. Wenn es sich bei Ihrem Produkt beispielsweise um eine SaaS-Plattform für Restaurants handelt, wird jedes Restaurant als ein verbundenes Konto dargestellt. > #### Connect-Kontoarten > > Ausstellen unterstützt nur verbundene Konten, die kein von Stripe gehostetes Dashboard verwenden und bei denen Ihre Plattform für die Erfassung der Anforderungen verantwortlich ist und die Verlusthaftung trägt. Diese Konten werden auch als verbundene Custom-Konten bezeichnet. Erfahren Sie, wie Sie [verbundene Konten erstellen](https://docs.stripe.com/connect/interactive-platform-guide.md?connect-charge-type=direct&connect-loss-liability-owner=platform), die mit dieser Konfiguration funktionieren. Wenn Ihre bestehenden Konten nicht mit dieser übereinstimmen, müssen Sie sie neu erstellen. Über die folgende Anfrage wird ein verbundenes Konto mit der korrekten Konfiguration in den USA erstellt, und die erforderlichen Funktionen werden angefordert: ```curl curl https://api.stripe.com/v1/accounts \ -u "<>:" \ -d country=US \ -d "controller[stripe_dashboard][type]=none" \ -d "controller[fees][payer]=application" \ -d "controller[losses][payments]=application" \ -d "controller[requirement_collection]=application" \ -d "capabilities[transfers][requested]=true" \ -d "capabilities[card_issuing][requested]=true" \ -d "capabilities[treasury][requested]=true" \ -d "capabilities[us_bank_account_ach_payments][requested]=true" ``` Die Kontoinformationen der Nutzerin/des Nutzers werden in der Antwort angezeigt: ```json { ... "id": "{{CONNECTED_ACCOUNT_ID}}", "controller": { "stripe_dashboard": { "type": "none" }, "fees": { "payer": "application" }, "losses": { "payments": "application" }, "is_controller": true, "type": "application", "requirement_collection": "application" }, ... } ``` Notieren Sie sich die `id` des verbundenen Kontos. Sie geben diesen Wert an, um sich als das verbundene Konto zu [authentifizieren](https://docs.stripe.com/connect/authentication.md), indem Sie ihn in Anfragen im `Stripe-Account`-Header übergeben. Wenn bereits ein verbundenes Konto vorhanden ist, können Sie die erforderlichen Funktionen hinzufügen, indem Sie die `id` des verbundenen Kontos in der API-Anfrage angeben: ```curl curl https://api.stripe.com/v1/accounts/{{CONNECTEDACCOUNT_ID}} \ -u "<>:" \ -d "controller[stripe_dashboard][type]=none" \ -d "controller[fees][payer]=application" \ -d "controller[losses][payments]=application" \ -d "controller[requirement_collection]=application" \ -d country=US \ --data-urlencode "email=jenny.rosen@example.com" \ -d "capabilities[transfers][requested]=true" \ -d "capabilities[treasury][requested]=true" \ -d "capabilities[card_issuing][requested]=true" ``` ### Verbundenes Konto verifizieren Wählen Sie eine der folgenden Onboarding-Optionen: #### Von Stripe gehostetes Onboarding Das von [Stripe gehostete Onboarding](https://docs.stripe.com/connect/hosted-onboarding.md) ist ein von Stripe gehostetes Webformular mit dem Namen, der Farbe und dem Symbol Ihrer Marke. Das von Stripe gehostete Onboarding nutzt die [Accounts API](https://docs.stripe.com/api/accounts.md), um die Anforderungen zu lesen und ein Onboarding-Formular mit robuster Datenvalidierung zu generieren, das für alle von Stripe unterstützten Länder lokalisiert ist. Bevor Sie Connect Onboarding verwenden, müssen Sie den Namen, die Farbe und das Symbol Ihrer Marke im Abschnitt „Branding“ in den [Connect-Einstellungen](https://dashboard.stripe.com/test/settings/connect) angeben. Sie können gehostetes Onboarding verwenden, um verbundenen Konten zu gestatten, ein `external_account` (das für Auszahlungen erforderlich ist) zu verknüpfen, indem es über Ihre [Onboarding-Einstellungen für Connect](https://dashboard.stripe.com/settings/connect) verknüpft wird. Verwenden Sie die [Account Links API](https://docs.stripe.com/api/account_links/create.md), um einen Onboarding-Link für das verbundene Konto zu erstellen. ```curl curl https://api.stripe.com/v1/account_links \ -u "<>:" \ -d account={{CONNECTED_ACCOUNT_ID}} \ --data-urlencode "refresh_url=https://example.com/reauth" \ --data-urlencode "return_url=https://example.com/return" \ -d type=account_onboarding ``` > Senden Sie aus Sicherheitsgründen keine Konto-Link-URLs per E-Mail, Textnachricht oder direkt an Ihr verbundenes Konto. Wir empfehlen, die Konto-Link-URL über Ihre Plattform zu versenden, wo alle Konten authentifiziert sind. Die Antwort, die Sie erhalten, enthält den Parameter `url` mit dem Link für Ihr verbundenes Konto zum Onboarding auf Ihre Plattform. ```json { "object": "account_link", "created": 1612927106, "expires_at": 1612927406, "url": "https://connect.stripe.com/setup/s/…" } ``` #### Eingebettetes Onboarding Die Nutzeroberfläche des eingebetteten Onboardings hat nur wenig Stripe-Branding und kann an Ihre Marke angepasst werden. Ihre Plattform bettet die [Komponente für Konto-Onboarding](https://docs.stripe.com/connect/supported-embedded-components/account-onboarding.md) in Ihre Anwendung ein und Ihre verbundenen Konten interagieren mit der eingebetteten Komponente, ohne Ihre Anwendung verlassen zu müssen. Das eingebettete Onboarding verwendet die [Accounts API](https://docs.stripe.com/api/accounts.md), um Anforderungen zu ermitteln und ein Onboarding-Formular mit zuverlässiger Datenvalidierung zu generieren, das für alle von Stripe unterstützten Länder lokalisiert ist. Mit eingebettetem Onboarding erhalten Sie einen angepassten Onboarding-Ablauf ohne die Komplexität und den Pflegeaufwand, die mit der Aktualisierung Ihrer Onboarding-Integration bei sich ändernden Compliance-Anforderungen verbunden sind. #### API-Onboarding Wenn Sie lieber ein benutzerdefiniertes Onboarding für Ihr verbundenes Konto erstellen möchten, verwenden Sie die [Accounts Update API](https://docs.stripe.com/api/accounts/update.md) und die [Persons Update API](https://docs.stripe.com/api/persons/update.md), um die entsprechenden Objekte `Account` und `Person` mit den erforderlichen Informationen zu aktualisieren. Sie müssen die [erforderlichen Vereinbarungen für Issuing](https://docs.stripe.com/issuing/compliance-us.md#issuing-terms) anzeigen und die Annahme von verbundenen Konten über den [Issuing TOS-Annahme](https://docs.stripe.com/api/accounts/object.md#account_object-settings-card_issuing-tos_acceptance)-Hash erfassen. ```curl curl https://api.stripe.com/v1/accounts/{{CONNECTED_ACCOUNT_ID}} \ -u "<>:" \ -d business_type=company \ -d "business_profile[mcc]=5999" \ --data-urlencode "business_profile[url]=https://www.wesellsocks.com" \ -d "business_profile[estimated_worker_count]=100" \ -d "business_profile[annual_revenue][amount]=1000000" \ -d "business_profile[annual_revenue][currency]=usd" \ -d "business_profile[annual_revenue][fiscal_year_end]=2023-12-31" \ -d "company[name]=Rocket Rides" \ -d "company[tax_id]=11-3456789" \ -d "company[address][line1]=123 Main St" \ -d "company[address][city]=San Francisco" \ -d "company[address][state]=CA" \ -d "company[address][postal_code]=94111" \ -d "company[address][country]=US" \ -d "settings[card_issuing][tos_acceptance][ip]=192.168.123.132" \ -d "settings[card_issuing][tos_acceptance][date]=1696634647" ``` ```curl curl https://api.stripe.com/v1/accounts/{{CONNECTED_ACCOUNT_ID}}/persons \ -u "<>:" \ -d first_name=Jenny \ -d last_name=Rosen \ -d "dob[day]=12" \ -d "dob[month]=11" \ -d "dob[year]=1978" \ -d "address[line1]=510 Townsend Street" \ -d "address[city]=San Francisco" \ -d "address[state]=CA" \ -d "address[postal_code]=94111" \ -d "address[country]=US" \ -d id_number=123456789 \ --data-urlencode "email=jenny.rosen@example.com" \ -d "relationship[representative]=true" \ -d "relationship[owner]=true" \ -d "relationship[percent_ownership]=0.75" ``` Unter [Verarbeitung der Verifizierung mit der API](https://docs.stripe.com/connect/handling-api-verification.md) finden Sie weitere Informationen zur Erfüllung der Onboarding-Anforderungen. Stripe hat inzwischen das verbundene Konto erstellt und verifiziert. Die relevanten Funktionen sind `active` und das Konto kann nun mit Issuing und Treasury für Plattformen verwendet werden. Weitere Informationen finden Sie unter: - [Issuing- und Connect-Integration einrichten](https://docs.stripe.com/issuing/connect.md) - [Von Stripe gehostetes Onboarding für verbundene Konten](https://docs.stripe.com/connect/custom/hosted-onboarding.md) - [Verbundene Konten erstellen und verwenden](https://docs.stripe.com/connect/interactive-platform-guide.md?connect-charge-type=direct&connect-loss-liability-owner=platform) - [Identitätsprüfung bei verbundenen Konten](https://docs.stripe.com/connect/identity-verification.md) ## Finanzkonten erstellen und Gelder hinzufügen Nachdem Sie Finanzkonten auf Ihrer Plattform aktiviert haben, fügen Sie [Finanzkonto](https://docs.stripe.com/api/treasury/financial_accounts.md)-Objekte Ihrer [Plattformarchitektur](https://docs.stripe.com/treasury/connect/account-management/accounts-structure.md) hinzu, um das effiziente Speichern, Senden und Empfangen von Geldmitteln zu ermöglichen. Stripe fügt nach der Aktivierung Ihrer Plattform ein Finanzkonto hinzu und ermöglicht es Ihnen, ein individuelles Finanzkonto für jedes berechtigte verbundene Konto auf Ihrer Plattform bereitzustellen. In der Stripe API dienen `FinancialAccount`-Objekte als Quelle und Ziel von API-Anfragen zum Bewegen von Geldern. Sie fordern `Features` über die API an, die `FinancialAccounts` zugewiesen werden und zusätzliche Funktionen für die Finanzkonten auf Ihrer Plattform bereitstellen. Ein Finanzkonto führt ein eigenständiges [Guthabenkonto](https://docs.stripe.com/treasury/connect/account-management/working-with-balances-and-transactions.md) neben dem Saldo der Zahlungen des verbundenen Kontos, mit dem es verknüpft ist. Zum Beispiel könnte die/der Inhaber/in eines verbundenen Kontos auf Ihrer Plattform ein Guthaben von 100 USD auf einem verbundenen Konto und ein Guthaben von 200 USD auf einem Finanzkonto haben. In diesem Szenario besitzt der Inhaber/die Inhaberin des verbundenen Kontos eine Summe von 300 USD aus den Salden in seinem/ihrem Finanzkonto und verbundenen Konto. Diese beiden Salden bleiben getrennt, aber die API bietet die Möglichkeit, Geld vom Saldo des verbundenen Kontos auf den Saldo des Finanzkontos zu verschieben. ### Finanzkonto erstellen Sobald Stripe einem Konto die Funktion `treasury` hinzufügt und sich dieses im Status `active` befindet, können Sie ein `FinancialAccount`-Objekt für das Konto erstellen. Hierfür rufen Sie `FinancialAccounts` auf und fordern die `Features` an, die Sie bereitstellen möchten: ```curl curl https://api.stripe.com/v1/treasury/financial_accounts \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d "supported_currencies[]=usd" \ -d "features[card_issuing][requested]=true" \ -d "features[deposit_insurance][requested]=true" \ -d "features[financial_addresses][aba][requested]=true" \ -d "features[inbound_transfers][ach][requested]=true" \ -d "features[intra_stripe_flows][requested]=true" \ -d "features[outbound_payments][ach][requested]=true" \ -d "features[outbound_payments][us_domestic_wire][requested]=true" \ -d "features[outbound_transfers][ach][requested]=true" \ -d "features[outbound_transfers][us_domestic_wire][requested]=true" ``` In der Antwort auf das Anfordern von Funktionen zur Finanzkontoerstellung wird auf ihren Status in den Parametern `active_features`, `pending_features` und `restricted_features` hingewiesen. ```json { "object": "treasury.financial_account", "created": 1612927106, "id": "fa_123", "country": "US", "supported_currencies": ["usd"], "active_features": ["card_issuing"], "pending_features": ["financial_addresses.aba"], "restricted_features": [], // No FinancialAddress added as the financial_addresses.aba feature is not yet active "financial_addresses": [], "livemode": true, "status": "open", ... } ``` Die Aktivierung kann bei einigen Funktionen (z. B. `card_issuing`) sofort erfolgen. Andere Funktionen, wie z. B.`financial_addresses.aba`,[activate asynchronously](https://docs.stripe.com/treasury/connect/account-management/financial-account-features.md#webhooks), könnten bis zu 30 Minuten lang `pending` bleiben, während Stripe mit externen Systemen kommuniziert. Nachdem alle relevanten Funktionen aktiv sind, erhalten Sie eine Bestätigung auf dem Webhook-Listener `treasury.financial_account.features_status_updated`. Siehe[Verfügbare Funktionen](https://docs.stripe.com/treasury/connect/account-management/financial-account-features.md#available-features) für weitere Informationen zu Finanzkonto-Funktionen. ### Bankkonto verknüpfen Damit Ihre Kundinnen/Kunden Geld von einem externen Konto und auf ein externes Konto übertragen können, erstellen Sie ein `SetupIntent` mit den erforderlichen Parametern und geben Sie an, dass Ihre Kundin/Ihre Kunde das externe Konto besitzt, indem Sie es an `self` anhängen: ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d attach_to_self=true \ -d "flow_directions[]=inbound" \ -d "flow_directions[]=outbound" \ -d "payment_method_types[]=us_bank_account" \ -d "payment_method_data[type]=us_bank_account" \ -d "payment_method_data[us_bank_account][routing_number]=110000000" \ -d "payment_method_data[us_bank_account][account_number]=000123456789" \ -d "payment_method_data[us_bank_account][account_holder_type]=company" \ -d "payment_method_data[billing_details][name]=Company Corp" \ -d confirm=true \ -d "mandate_data[customer_acceptance][type]=online" \ -d "mandate_data[customer_acceptance][online][ip_address]=123.123.123.123" \ --data-urlencode "mandate_data[customer_acceptance][online][user_agent]=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" ``` Die API-Antwort enthält eine eindeutige Kennung für die `payment_method`, die verwendet wird, um bei ACH-Übertragungen auf dieses Bankkonto zu verweisen: ```json { "id": "{{SETUP_INTENT_ID}}", "object": "setup_intent", "next_action": { "type": "verify_with_microdeposits", "verify_with_microdeposits": { "arrival_date": 1642579200, "hosted_verification_url": "https://payments.stripe.com/microdeposit/sacs_test_xxx", "microdeposit_type": "amounts" } }, ... "payment_method": "{{PAYMENT_METHOD_ID}}", "payment_method_types": [ "us_bank_account" ] } ``` Bevor Sie ein Bankkonto verwenden können, müssen Sie dieses mittels Testeinzahlungen (hierauf gehen wir genauer ein) oder der schnelleren Option [Financial Connections](https://docs.stripe.com/financial-connections.md) verifizieren. Die `SetupIntent`-Antwort aus dem vorherigen Schritt enthält eine `hosted_verification_url`. Geben Sie diese URL für Ihre Kundinnen/Kunden an, damit sie den zur Testeinzahlung gehörenden Zahlungsbeschreibungscode eingeben können. Verwenden Sie den Wert `SM11AA`, um das Bankkonto zu verifizieren. Alternativ können Sie auch zahlreiche andere Fälle testen und hierfür die von Stripe bereitgestellten [Testkontonummern](https://docs.stripe.com/payments/ach-direct-debit/set-up-payment.md?platform=web&payment-ui=stripe-hosted#test-account-numbers) nutzen. ![Verifizierung einer Testeinzahlung](https://b.stripecdn.com/docs-statics-srv/assets/microdeposit-verification.a9151fafd6f3582cb8a268bf7b1b306e.png) Verifizierung einer Testeinzahlung ### Gelder auf das Finanzkonto einzahlen #### Eingebettet Wenn Sie die eingebettete [Finanzkonto-Komponente](https://docs.stripe.com/connect/supported-embedded-components/financial-account.md) in Ihrer Anwendung nutzen, können Ihre verbundenen Konten Gelder an das Finanzkonto senden. ## Kontositzung erstellen Aktivieren Sie [beim Erstellen einer Kontositzung](https://docs.stripe.com/api/account_sessions/create.md) die Finanzkonto-Komponente, indem Sie `financial_account` im Parameter `components` angeben. Sie können einzelne Funktionen der Finanzkontokomponente aktivieren oder deaktivieren, indem Sie den Parameter `features` unter `financial_account` angeben. ```curl curl https://api.stripe.com/v1/account_sessions \ -u "<>:" \ -d "account={{CONNECTEDACCOUNT_ID}}" \ -d "components[financial_account][enabled]=true" \ -d "components[financial_account][features][send_money]=true" \ -d "components[financial_account][features][transfer_balance]=true" \ -d "components[financial_account][features][external_account_collection]=true" ``` Nachdem die Kontositzung erstellt und [ConnectJS initialisiert wurde](https://docs.stripe.com/connect/get-started-connect-embedded-components.md#account-sessions), können Sie die Finanzkonto-Komponente im Frontend darstellen: #### JavaScript ```js // Include this element in your HTML const financialAccount = stripeConnectInstance.create('financial-account'); financialAccount.setFinancialAccount('{{FINANCIAL_ACCOUNT_ID}}') container.appendChild(financialAccount); ``` Hier können Nutzer/innen auf **Geldübertragung** klicken und eine Übertragung initiieren. #### API Bei der folgenden Anfrage werden 200 USD mit einer Zahlungsmethode des Typs `account-attached` auf das Finanzkonto mit der angegebenen ID überwiesen. Der Wert des `Stripe-Account`-Headers gibt das Stripe-Konto an, das sowohl das Finanzkonto als auch die Zahlungsmethode besitzt: ```curl curl https://api.stripe.com/v1/treasury/inbound_transfers \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d origin_payment_method={{PAYMENT_METHOD_ID}} \ -d financial_account={{FINANCIAL_ACCOUNT_ID}} \ -d amount=20000 \ -d currency=usd \ -d "description=Funds for repair" \ -d "statement_descriptor=Invoice 12" ``` Bei Erfolg stellt die Antwort das Objekt `InboundTransfer` bereit. Dieses enthält eine `hosted_regulatory_receipt_url`, über die Kontoinhaber/innen Einzelheiten zur Transaktion auf der Homebox-Plattform abrufen können: ```json { "id": "{{INBOUND_TRANSFER_ID}}", "object": "inbound_transfer", "amount": 20000, "created": 1648071297, "currency": "usd", "description": "Funds for repair", "financial_account": "{{FINANCIAL_ACCOUNT_ID}}", "hosted_regulatory_receipt_url": "https://payments.stripe.com/regulatory-receipt/{{IBT_URL}}", "linked_flows": null, "livemode": false, "metadata": {}, "origin_payment_method": "{{PAYMENT_METHOD_ID}}", ... "statement_descriptor": "Invoice 12", "status": "processing", ... } ``` Zu diesem Zeitpunkt verfügt das verbundene Konto über ein `FinancialAccount`, das mit Geldern aus einem `InboundTransfer` aufgestockt wurde. Dieses Guthaben können Sie per Kartenzahlung oder auch `OutboundPayments` wie ACH-Zahlungen oder Überweisungen ausgeben. Weitere Informationen finden Sie unter: - [Abrufen von Berechtigungen für InboundTransfers](https://docs.stripe.com/treasury/connect/moving-money/working-with-bankaccount-objects.md#permissions) - [Zusammenarbeit mit Treasury für Plattformen](https://docs.stripe.com/treasury/connect/account-management/financial-accounts.md) - [Geldbewegungen mit Stripe Treasury](https://docs.stripe.com/treasury/connect/examples/moving-money.md#microdeposits) - [Anfordern von Funktionen auf einem Finanzkonto](https://docs.stripe.com/treasury/connect/account-management/financial-account-features.md#available-features) - [SetupIntents, PaymentMethods und BankAccounts verwenden](https://docs.stripe.com/treasury/connect/moving-money/working-with-bankaccount-objects.md) - [Bewegen von Geld mithilfe von InboundTransfer-Objekten](https://docs.stripe.com/treasury/connect/moving-money/into/inbound-transfers.md) - [Bewegen von Geld mithilfe von ReceivedCredit-Objekten](https://docs.stripe.com/treasury/connect/moving-money/into/received-credits.md) ## Karteninhaber/innen und Karten erstellen #### Eingebettet Bei [der Karteninhaberin/dem Karteninhaber](https://docs.stripe.com/api/issuing/cardholder/object.md) handelt es sich um die Einzelperson (d. h. der/die Mitarbeiter/in oder der/die Auftragnehmer/in), die von Ihrer Geschäftskundin/Ihrem Geschäftskunden autorisiert wurde, Karteneinzahlungen über den zugehörigen Saldo abzuwickeln. Das `Cardholder`-Objekt enthält relevante Details, wie z. B. einen [Namen](https://docs.stripe.com/api/issuing/cardholders/object.md#issuing_cardholder_object-name), der auf den Karten angezeigt werden soll und eine [Rechnungsadresse](https://docs.stripe.com/api/issuing/cardholders/object.md#issuing_cardholder_object-billing). Bei letzterer handelt es sich in der Regel um die Geschäftsadresse des verbundenen Kontos oder Ihrer Plattform. Verwenden Sie die eingebettete [Komponente der Liste der Issuing-Karten](https://docs.stripe.com/connect/supported-embedded-components/issuing-cards-list.md), um es Ihren verbundenen Konten zu ermöglichen, eine [Karte](https://docs.stripe.com/api/issuing/cards/object.md) für eine/n Karteninhaber/in zu erstellen und sie mit dem Finanzkonto zu verknüpfen. Note: The following is a preview/demo component that behaves differently than live mode usage with real connected accounts. The actual component has more functionality than what might appear in this demo component. For example, for connected accounts without Stripe dashboard access (custom accounts), no user authentication is required in production. Aktivieren Sie [beim Erstellen einer Kontositzung](https://docs.stripe.com/api/account_sessions/create.md) die Komponente Kartenliste in Issuing, indem Sie `issuing_cards_list` im Parameter `components` angeben. Sie können einzelne Funktionen der Komponente Kartenliste in Issuing aktivieren oder deaktivieren, indem Sie den Parameter `features` unter `issuing_cards_list` angeben. ```curl curl https://api.stripe.com/v1/account_sessions \ -u "<>:" \ -d "account={{CONNECTEDACCOUNT_ID}}" \ -d "components[issuing_cards_list][enabled]=true" \ -d "components[issuing_cards_list][features][card_management]=true" \ -d "components[issuing_cards_list][features][cardholder_management]=true" \ -d "components[issuing_cards_list][features][card_spend_dispute_management]=true" \ -d "components[issuing_cards_list][features][spend_control_management]=true" ``` Nachdem die Kontositzung erstellt und [ConnectJS initiiert wurde](https://docs.stripe.com/connect/get-started-connect-embedded-components.md#account-sessions), können Sie die Komponente „Kartenliste in Issuing“ im Frontend anzeigen: #### JavaScript ```js // Include this element in your HTML const issuingCardsList = stripeConnectInstance.create('issuing-cards-list'); issuingCardsList.setShowSpendControls(true); container.appendChild(issuingCardsList); ``` Jetzt können Nutzer/innen auf **Karte erstellen** klicken, um mit der Erstellung einer neuen Karteninhaberin/eines neuen Karteninhabers und einer neuen Karte zu beginnen. Die Karte kann auf Nutzerseite während der Erstellung oder im Anschluss daran aktiviert werden. Zu diesem Zeitpunkt ist der Karteninhaberin/dem Karteninhaber und dem Finanzkonto eine aktive Karte zugeordnet. Auf der [Issuing-Seite](https://dashboard.stripe.com/issuing/overview) des verbundenen Kontos können Sie Informationen zu der Karte und der Karteninhaberin/dem Karteninhaber einsehen. Weitere Informationen finden Sie unter: - [Virtuelle Karten mit Issuing](https://docs.stripe.com/issuing/cards/virtual.md) - [Physische Karten](https://docs.stripe.com/issuing/cards/physical.md) - [Verwenden Sie das Dashboard für Issuing mit Connect](https://docs.stripe.com/issuing/connect.md#using-dashboard-issuing) - [Karten mit der API erstellen](https://docs.stripe.com/api/issuing/cards.md) #### API ### Karteninhaber/in erstellen Bei [der Karteninhaberin/dem Karteninhaber](https://docs.stripe.com/api/.md#issuing_cardholder_object) handelt es sich um die Einzelperson (d. h. der/die Mitarbeiter/in oder der/die Auftragnehmer/in), die von Ihrer Geschäftskundin/Ihrem Geschäftskunden autorisiert wurde, Kartenfinanzierungen über das `FinancialAccount` abzuwickeln. Das `Cardholder`-Objekt enthält relevante Details, wie z. B. einen [Namen](https://docs.stripe.com/api/issuing/cardholders/object.md#issuing_cardholder_object-name), der auf den Karten angezeigt werden soll und eine [Rechnungsadresse](https://docs.stripe.com/api/issuing/cardholders/object.md#issuing_cardholder_object-billing). Bei letzterer handelt es sich in der Regel um die Geschäftsadresse des verbundenen Kontos oder Ihrer Plattform. Mit dem folgenden API-Aufruf wird ein neuer `Cardholder` erstellt: ```curl curl https://api.stripe.com/v1/issuing/cardholders \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jenny.rosen@example.com" \ --data-urlencode "phone_number=+18008675309" \ -d status=active \ -d type=individual \ -d "individual[first_name]=Jenny" \ -d "individual[last_name]=Rosen" \ -d "individual[dob][day]=1" \ -d "individual[dob][month]=11" \ -d "individual[dob][year]=1981" \ -d "billing[address][line1]=123 Main Street" \ -d "billing[address][city]=San Francisco" \ -d "billing[address][state]=CA" \ -d "billing[address][postal_code]=94111" \ -d "billing[address][country]=US" ``` Stripe gibt ein `Cardholder`-Objekt zurück, das die von Ihnen angegebenen Informationen enthält und das Webhook-Ereignis `issuing_cardholder.created` sendet. ### Karte erstellen Erstellen Sie eine Karte und ordnen Sie diese der/dem `Cardholder` zu, die autorisierte Nutzerin bzw. der autorisierter Nutzer werden soll, sowie dem `FinancialAccount` für Ausgaben mit der Support-Karte. In den folgenden Beispielen zeigen wir Ihnen, wie Sie eine [virtuelle Karte](https://docs.stripe.com/issuing/cards/virtual.md) erstellen. Im Live-Modus können Sie dann auch [physische Karten](https://docs.stripe.com/issuing/cards/physical.md) erstellen und an die Karteninhaber/innen versenden. ```curl curl https://api.stripe.com/v1/issuing/cards \ -u "<>:" \ -d currency=usd \ -d type=virtual \ -d "cardholder={{ISSUINGCARDHOLDER_ID}}" ``` Stripe gibt bei der Erstellung ein `Card`-Objekt zurück und übermittelt das Webhook-Ereignis `issuing_card.created`: ```json { "id": "ic_1NvPjF2SSJdH5vn2OVbE7r0b", "object": "issuing.card", "brand": "Visa", ... "status": "inactive", "type": "virtual" } ``` Sie müssen die Karte aktivieren, bevor ein/e Nutzer/in sie verwenden kann. Während Sie virtuelle Karten in demselben API-Aufruf aktivieren können, mit dem Sie sie erstellt haben, müssen Sie physische Karten separat aktivieren. Wenn Sie bereit sind, aktivieren Sie die Karte, indem Sie den `status` auf `active` festlegen: ```curl curl https://api.stripe.com/v1/issuing/cards/ic_1NvPjF2SSJdH5vn2OVbE7r0b \ -u "<>:" \ -d status=active ``` Zu diesem Zeitpunkt ist der Karteninhaberin/dem Karteninhaber und dem Finanzkonto eine aktive Karte zugeordnet. Auf der [Issuing-Seite](https://dashboard.stripe.com/issuing/overview) des verbundenen Kontos können Sie Informationen zu der Karte und der Karteninhaberin/dem Karteninhaber einsehen. ```json { "id": "ic_1NvPjF2SSJdH5vn2OVbE7r0b", "object": "issuing.card", "brand": "Visa", ... "status": "active", "type": "virtual" } ``` Weitere Informationen finden Sie unter: - [Virtuelle Karten](https://docs.stripe.com/issuing/cards/virtual.md) - [Physische Karten](https://docs.stripe.com/issuing/cards/physical.md) - [Verwenden Sie das Dashboard für Issuing mit Connect](https://docs.stripe.com/issuing/connect.md#using-dashboard-issuing) - [Karten mit der API erstellen](https://docs.stripe.com/api/issuing/cards.md) ## Karte verwenden ### Autorisierung erstellen Generieren Sie eine Testautorisierung, um zu erfahren, wie sich die Kartenaktivität auf den zugehörigen Saldo auswirkt. Diese können Sie für das verbundene Konto auf der **Issuing-Seite** im Dashboard generieren oder indem Sie den folgenden Aufruf der [Authorization API](https://docs.stripe.com/api/issuing/authorizations.md) durchführen: ```curl curl https://api.stripe.com/v1/test_helpers/issuing/authorizations \ -u "<>:" \ -d "card={{ISSUINGCARD_ID}}" \ -d amount=1000 \ -d authorization_method=chip \ -d "merchant_data[category]=taxicabs_limousines" \ -d "merchant_data[city]=San Francisco" \ -d "merchant_data[country]=US" \ -d "merchant_data[name]=Rocket Rides" \ -d "merchant_data[network_id]=1234567890" \ -d "merchant_data[postal_code]=94107" \ -d "merchant_data[state]=CA" ``` Nach der Genehmigung erstellt Stripe eine `Authorization` im Status `pending`, während auf die [Erfassung](https://docs.stripe.com/issuing/purchases/transactions.md) gewartet wird. Notieren Sie die Autorisierungs-`id`, die Sie zur Erfassung der Gelder verwenden: ```json {"id": "iauth_1NvPyY2SSJdH5vn2xZQE8C7k", "object": "issuing.authorization", "amount": 1000, ... "status": "pending", "transactions": [] } ``` Sie können die Saldodetails des Finanzkontos abrufen und die Auswirkungen der Autorisierung anzeigen: ```curl curl https://api.stripe.com/v1/treasury/financial_accounts/{{TREASURYFINANCIALACCOUNT_ID}} \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" ``` Die API-Antwort ist ein `FinancialAccount`-Objekt mit einem `balance`-Hash, der die Gelder und ihre Verfügbarkeit im Detail beschreibt: ```json { "object": "treasury.financial_account", "id": "{{FINANCIAL_ACCOUNT_ID}}", ... "balance": { "cash": {"usd": 19000}, "inbound_pending": {"usd": 0}, "outbound_pending": {"usd": 1000} } } ``` Die Antwort weist darauf hin, dass aktuell 190 USD verfügbar sind und weitere 10 USD in `outbound_pending` im Rahmen der Autorisierung im Status `pending` zurückgehalten werden. Sie können die Erfassung der Autorisierung mit der API simulieren. ### Gelder erfassen Erfassen Sie die Gelder mit dem folgenden Code: ```curl curl -X POST https://api.stripe.com/v1/test_helpers/issuing/authorizations/{{ISSUINGAUTHORIZATION_ID}}/capture \ -u "<>:" ``` Nachdem die Autorisierung erfasst wurde, erstellt Stripe eine [Transaktion](https://docs.stripe.com/issuing/purchases/transactions.md) in Issuing, der `status` der Autorisierung wird auf `closed` festgelegt, und es wird ein `ReceivedDebit`-Webhook mit diesen Details erstellt. Wenn Sie die Saldodetails des Finanzkontos erneut abrufen, wird angezeigt, dass der Parameter `outbound_pending` jetzt 0 USD beträgt, während das verfügbare Bargeld weiterhin 190 USD beträgt: ```json { "object": "treasury.financial_account", "id": "{{FINANCIAL_ACCOUNT_ID}}", ... "balance": { "cash": {"usd": 19000}, "inbound_pending": {"usd": 0}, "outbound_pending": {"usd": 0} } } ``` ## See also - [Ausgabenkontrollen](https://docs.stripe.com/issuing/controls/spending-controls.md) - [Autorisierungen in Issuing](https://docs.stripe.com/issuing/purchases/authorizations.md) - [Transaktionen in Issuing](https://docs.stripe.com/issuing/purchases/transactions.md) - [Arbeit mit Issuing-Karten und Treasury für Plattformen](https://docs.stripe.com/treasury/connect/account-management/issuing-cards.md) - [Transaktionsbetrug bekämpfen](https://docs.stripe.com/issuing/manage-fraud.md)