# Utiliser Financial Accounts pour les plateformes et Issuing pour configurer des comptes financiers et des cartes Suivez un exemple d'intégration Financial Accounts pour les plateformes et Issuing qui configure un compte financier et émet des cartes. Homebox est un SaaS vertical fictif qui développe des logiciels pour les entreprises de services à domicile, telles que les techniciens en chauffage, ventilation et climatisation, les entreprises de nettoyage et les plombiers. Homebox commence son intégration de Financial Accounts pour les plateformes en configurant un compte financier et en créant des cartes de paiement. Pour découvrir comment Homebox transfère de l’argent vers et depuis des comptes bancaires externes, consultez l’exemple d’intégration relative à l’[utilisation de Financial Accounts pour les plateformes afin de transférer de l’argent](https://docs.stripe.com/financial-accounts/connect/examples/moving-money.md). ## Inscription des utilisateurs à la plateforme Homebox est une plateforme Stripe sur laquelle les fonctionnalités [Payments](https://docs.stripe.com/payments.md) et [Connect](https://docs.stripe.com/connect.md) sont déjà activées. Elle utilise des [comptes connectés Custom](https://docs.stripe.com/connect/accounts.md) pour lesquels la fonctionnalité `card_payments` est déjà activée. ## Ajouter des fonctionnalités > #### Compatibilité de l'API Accounts v2 > > L’API Accounts v2 ne prend pas en charge des workflows Financial Accounts. Si vous avez des comptes créés avec Accounts v2, vous pouvez utiliser Accounts v1 pour gérer les fonctionnalités `treasury` et `card_issuing`. Pour en savoir plus, consultez la page [Utilisez l’objet Accounts en tant que clients](https://docs.stripe.com/connect/use-accounts-as-customers.md). Afin d’utiliser les services de Financial Accounts pour les plateformes et Issuing, Homebox doit demander en plus les fonctionnalités supplémentaires de `treasury` et `card_issuing` pour les comptes connectés de la plateforme. Chaque compte connecté doit ensuite être inscrit avant que Stripe puisse lui créer un compte financier. Pour utiliser les transferts ACH avec Financial Accounts pour les plateformes, Homebox doit également demander la fonctionnalité `us_bank_account_ach_payments`. Homebox demande les fonctionnalités `treasury`, `card_issuing` et `us_bank_account_ach_payments` à l’[API Accounts](https://docs.stripe.com/api/accounts.md). ```curl curl https://api.stripe.com/v1/accounts/{{CONNECTED_ACCOUNT_ID}} \ -u "<>:" \ -d "capabilities[treasury][requested]=true" \ -d "capabilities[card_issuing][requested]=true" \ -d "capabilities[us_bank_account_ach_payments][requested]=true" ``` Pour utiliser Hosted Onboarding, Homebox fait un appel à [Account Links](https://docs.stripe.com/api/account_links.md) pour récupérer une URL que son compte connecté peut ensuite utiliser pour transmettre les informations d’intégration relatives au compte financier. ```curl curl https://api.stripe.com/v1/account_links \ -u "<>:" \ -d "account={{CONNECTEDACCOUNT_ID}}" \ --data-urlencode "refresh_url=https://example.com/reauth" \ --data-urlencode "return_url=https://example.com/return" \ -d type=account_onboarding ``` La réponse comprend une URL que le compte connecté utilise pour accéder à l’application, ce qui doit être fait avant l’expiration du lien. ```json { "object": "account_link", "created": 1612927106, "expires_at": 1612927406,"url": "https://connect.stripe.com/setup/s/iCtLfmYb2tEU" } ``` Homebox écoute le webhook `account.updated` pour confirmer les fonctionnalités et les champs suivants sur le compte connecté : ```json { "object": { "id": "{{CONNECTED_ACCOUNT_ID}}", "object": "account", "capabilities": { "card_payments": "active", "treasury": "active", "card_issuing": "active", // Only appears if requesting the `card_issuing` capability. "us_bank_account_ach_payments": "active", // Only appears if requesting the `us_bank_account_ach_payments` capability. }, ... } } ``` ## Créer un FinancialAccount Une fois que Stripe a ajouté la fonctionnalité `treasury` à un compte, Homebox est en mesure de créer l’objet `FinancialAccount` pour ce compte. Pour ce faire, Homebox appelle l’[API comptes financiers](https://docs.stripe.com/api/treasury/financial_accounts.md) et demande les `Features` que l’entreprise souhaite fournir. ```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" ``` La réponse confirme que le compte est en cours de traitement. Une fois que le traitement est terminé et que toutes les fonctionnalités pertinentes sont activées, Homebox reçoit une confirmation de son écouteur de webhooks `treasury.financial_account.features_status_updated`. ```json { "object": "treasury.financial_account", "created": 1612927106, "id": "{{FINANCIAL_ACCOUNT_ID}}", "country": "US", "supported_currencies": ["usd"], "financial_addresses": [ // This field is empty until the "financial_addresses.aba" feature becomes active { "type": "aba", "supported_networks": ["ach", "us_domestic_wire"], "aba": { "account_number_last4": "7890", // Use the expand[] parameter to view the `account_number` field hidden by default "account_number": "1234567890", "routing_number": "000000001", "bank_name": "Bank of Earth" } } ], "livemode": true, // State machine: // open - the account is ready to be used // closed - the account is closed "status": "open", "status_details": { // `closed` is null if financial account is not closed "closed": { // List of one or more reasons why the FinancialAccount was closed: // - account_rejected // - closed_by_platform // - other "reasons": [] } }, "active_features": ["card_issuing"], "pending_features": ["deposit_insurance", "financial_addresses.aba", "outbound_payments.ach", "us_domestic_wire", "inbound_transfers.ach", "outbound_transfers.ach", "outbound_transfers.us_domestic_wire"], "restricted_features": [], "features": { "object": "treasury.financial_account_features", "card_issuing": { "status": "active", "status_details": [], "access": "active" }, "deposit_insurance": { "requested": true, "status": "pending", // Becomes "active" after the financial account is set up "status_details": [{"code": "activating", "resolution": null}] }, "financial_addresses": { "aba": { "requested": true, "status": "pending", // Becomes "active" after the financial account is set up "status_details": [{"code": "activating", "resolution": null}] } }, "outbound_payments": { "ach": { "requested": true, "status": "pending", // Becomes "active" after the financial account is set up "status_details": [{"code": "activating", "resolution": null}] }, "us_domestic_wire": { "requested": true, "status": "pending", // Becomes "active" after the financial account is set up "status_details": [{"code": "activating", "resolution": null}] } }, "inbound_transfers": { "ach": { "requested": true, "status": "pending", // Becomes "active" after the financial account is set up "status_details": [{"code": "activating", "resolution": null}] } }, "outbound_transfers": { "ach": { "requested": true, "status": "pending", // Becomes "active" after the financial account is set up "status_details": [{"code": "activating", "resolution": null}] }, "us_domestic_wire": { "requested": true, "status": "pending", // Becomes "active" once the financial account is set up "status_details": [{"code": "activating", "resolution": null}] } } }, "platform_restrictions": { "inbound_flows": "unrestricted", "outbound_flows": "unrestricted" }, "metadata": {}, ... } ``` ## Créer un titulaire de carte de paiement Avant que Homebox puisse créer des cartes pour les comptes financiers, elle doit créer des titulaires de carte. Les titulaires de carte dans cet exemple sont des entreprises de plomberie qui utilisent les services Homebox et possèdent les comptes connectés sur la plateforme. # Dashboard > This is a Dashboard for when testing-method is without-code. View the full page at https://docs.stripe.com/financial-accounts/connect/examples/financial-accounts?testing-method=without-code. 1. Accédez à la page [Comptes connectés](https://dashboard.stripe.com/test/issuing/cards) du Dashboard. 1. Sélectionnez le compte connecté pour lequel vous souhaitez créer un titulaire de carte afin d’en développer les détails. 1. Sélectionnez l’onglet **Émission de cartes**. 1. Cliquez sur le bouton **+** à côté de **Titulaires de carte**. 1. Saisissez les informations du titulaire de la carte, puis cliquez sur **Créer un titulaire de carte**. # API > This is a API for when testing-method is with-code. View the full page at https://docs.stripe.com/financial-accounts/connect/examples/financial-accounts?testing-method=with-code. ```curl curl https://api.stripe.com/v1/issuing/cardholders \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d "name=Jenny Bath Remodeling" \ -d type=company \ --data-urlencode "email=jenny@example.com" \ --data-urlencode "phone_number=+18008675309" \ -d status=active \ -d "billing[address][line1]=1234 Main Street" \ -d "billing[address][city]=San Francisco" \ -d "billing[address][state]=CA" \ -d "billing[address][postal_code]=94111" \ -d "billing[address][country]=US" ``` La réponse confirme la création du titulaire de la carte. ```json { "id": "{{CARDHOLDER_ID}}", "object": "issuing.cardholder", "billing": { "address": { "city": "\"San Francisco\"", "country": "US", "line1": "\"1234 Main Street\"", "postal_code": "94111", "state": "CA" } }, "created": 1623803705, "email": "jenny@example.com", "livemode": false, "metadata": {}, "name": "Jenny Bath Remodeling", "phone_number": "+18008675309", "requirements": { "disabled_reason": "under_review", "past_due": [] }, "spending_controls": { "allowed_categories": [], "blocked_categories": [], "spending_limits": [] }, "status": "active", "type": "company" } ``` ## Créer des cartes de paiement Maintenant que le compte connecté est associé à un objet `FinancialAccount` et à un titulaire de carte, Homebox peut créer une carte de paiement en utilisant le solde du `FinancialAccount` comme solde disponible de la carte. # Dashboard > This is a Dashboard for when testing-method is without-code. View the full page at https://docs.stripe.com/financial-accounts/connect/examples/financial-accounts?testing-method=without-code. > Vous ne pouvez pas créer de [Comptes financiers](https://docs.stripe.com/financial-accounts/connect/account-management/financial-accounts.md) dans le Dashboard. Vous devez utiliser l’API pour les créer. 1. Accédez à la page [Comptes connectés](https://dashboard.stripe.com/test/issuing/cards) du Dashboard. 1. Sélectionnez le compte connecté pour lequel vous souhaitez créer un titulaire de carte afin d’en développer les détails. 1. Sélectionnez l’onglet **Émission de cartes**. 1. Cliquez sur le bouton **+** en regard de **Cartes**. 1. Sélectionnez le type de carte et le compte financier avec lequel vous souhaitez approvisionner la carte, puis cliquez sur **Créer**. # API > This is a API for when testing-method is with-code. View the full page at https://docs.stripe.com/financial-accounts/connect/examples/financial-accounts?testing-method=with-code. ```curl curl https://api.stripe.com/v1/issuing/cards \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d currency=usd \ -d type=virtual \ -d "cardholder={{ISSUINGCARDHOLDER_ID}}" \ -d "financial_account={{TREASURYFINANCIALACCOUNT_ID}}" ``` La réponse confirme l’émission de la carte. ```json { "id": "{{CARD_ID}}", "object": "issuing.card", "cardholder": { "id": "{{CARDHOLDER_ID}}", "object": "issuing.cardholder", "billing": { "address": { "city": "San Francisco", "country": "US", "line1": "123 Main Street", "line2": null, "postal_code": "94111", "state": "CA" } }, ... }, "created": 1643293629, "currency": "usd", "exp_month": 12, "exp_year": 2024, "last4": "0930", "livemode": false, ... } ``` ## See also - [Utiliser Financial Accounts pour les plateformes pour transférer des fonds](https://docs.stripe.com/financial-accounts/connect/examples/moving-money.md) - [Documentation de l’API](https://docs.stripe.com/api/treasury/financial_accounts.md)