# Guide d'intégration des services financiers intégrés Développer une intégration de services financiers intégrée avec Issuing et Treasury pour les plateformes. Découvrez notre guide d’introduction pour utiliser [les services financiers intégrés sur les plateformes SaaS](https://stripe.com/guides/introduction-to-embedded-finance). Créer une offre de services financiers intégrés aux États-Unis en utilisant Stripe [Issuing](https://docs.stripe.com/issuing/how-issuing-works.md) et [Treasury pour les plateformes](https://docs.stripe.com/treasury/connect.md). Utilisez Issuing pour créer des cartes bancaires et Treasury pour les plateformes afin de sauvegarder les soldes et de financer les dépenses par carte. À la fin de ce guide, vous saurez comment : - Créer des comptes connectés vérifiés représentant vos entreprises clientes avec les fonctionnalités Issuing et Treasury pour les plateformes voulues - Créer des comptes financiers qui serviront de portefeuilles pour vos clients et y ajouter des fonds depuis un compte bancaire externe - Créer des cartes virtuelles pour vos clients et les utiliser pour dépenser des fonds depuis un portefeuille ## Before you begin 1. Créez un [Compte Stripe](https://dashboard.stripe.com/register). 1. [Activez les comptes Issuing et Treasury pour les plateformes](https://dashboard.stripe.com/setup/treasury/activate) dans un *environnement de test* (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) depuis le Dashboard. Pour en savoir plus, consultez la page [accès de l’API à Issuing et Treasury pour les plateformes](https://docs.stripe.com/treasury/connect/access.md). 1. Configurez les [paramètres de marque de la plateforme Connect](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding) de votre entreprise et ajoutez une icône. ## Créer des comptes connectés ### Créer un compte connecté Créez un compte connecté pour représenter une entreprise cliente de votre plateforme. Par exemple, si votre produit est une plateforme SaaS à destination de restaurants, chaque restaurant est représenté par un compte connecté. > #### Types de comptes Connect > > Issuing prend uniquement en charge les comptes connectés qui n’utilisent pas de Dashboard hébergé par Stripe, et pour lesquels votre plateforme est responsable du recouvrement des exigences et de la responsabilité des pertes, également connu sous le nom de compte connecté Custom. Découvrez comment [créer des comptes connectés](https://docs.stripe.com/connect/interactive-platform-guide.md?connect-charge-type=direct&connect-loss-liability-owner=platform) compatibles avec Issuing. Si vos comptes existants ne sont pas compatibles, vous devrez les recréer. La requête suivante crée un compte connecté établi aux États-Unis avec la bonne configuration et demande les fonctionnalités requises : ```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" ``` Les informations du compte de l’utilisateur apparaissent dans la réponse : ```json { ... "id": "{{CONNECTED_ACCOUNT_ID}}", "controller": { "stripe_dashboard": { "type": "none" }, "fees": { "payer": "application" }, "losses": { "payments": "application" }, "is_controller": true, "type": "application", "requirement_collection": "application" }, ... } ``` Notez l’`id` du compte connecté. Vous le transmettrez dans les requêtes de l’en-tête `Stripe-Account` pour vous [authentifier](https://docs.stripe.com/connect/authentication.md) sous ce compte. Si un compte connecté existe déjà, vous pouvez ajouter les fonctionnalités requises en spécifiant son `id` dans la requête : ```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" ``` ### Vérifier le compte connecté Choisissez l’une des options d’inscription des utilisateurs suivantes : #### Inscription hébergée par Stripe L’[inscription hébergée par Stripe](https://docs.stripe.com/connect/hosted-onboarding.md) est un formulaire Web hébergé par Stripe qui affiche le nom, la couleur et l’icône de votre marque. L’inscription hébergée par Stripe utilise l’[API Accounts](https://docs.stripe.com/api/accounts.md) pour lire les exigences et générer un formulaire d’inscription hébergée avec une validation robuste des données. Elle est localisée pour tous les pays dans lesquels Stripe est disponible. Pour utiliser Connect Onboarding, vous devez indiquer le nom, la couleur et l’icône de votre marque dans la section Adaptation à votre marque de vos [paramètres Connect](https://dashboard.stripe.com/test/settings/connect). Vous pouvez utiliser l’inscription hébergée pour permettre aux comptes connectés de lier un `external_account` (requis pour les virements) en l’activant via vos [paramètres Connect Onboarding](https://dashboard.stripe.com/settings/connect). Pour créer un lien d’inscription pour un compte connecté, utilisez l’[API Account Links](https://docs.stripe.com/api/account_links/create.md). ```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 ``` > Pour des raisons de sécurité, n’envoyez pas directement d’URL de lien de compte à votre compte connecté par e-mail, SMS ou autre. Nous vous recommandons de distribuer l’URL du lien de compte depuis l’application de votre plateforme, là où le compte de l’utilisateur est authentifié. La réponse reçue inclut un paramètre `url`, dont vous pouvez fournir le lien à votre compté connecté lors de son inscription sur votre plateforme. ```json { "object": "account_link", "created": 1612927106, "expires_at": 1612927406, "url": "https://connect.stripe.com/setup/s/…" } ``` #### Inscription intégrée L’inscription intégrée est une interface utilisateur personnalisable avec un marquage Stripe limité. Votre plateforme intègre le [composant d’inscription des comptes](https://docs.stripe.com/connect/supported-embedded-components/account-onboarding.md) dans votre application, et vos comptes connectés interagissent avec le composant intégré sans quitter votre application. L’inscription intégrée utilise l’[API Accounts](https://docs.stripe.com/api/accounts.md) pour lire les exigences et générer un formulaire d’inscription avec une validation robuste des données. Elle est localisée pour tous les pays pris en charge par Stripe. Avec l’inscription intégrée des utilisateurs, vous bénéficiez d’un flux d’inscription personnalisé, sans la complexité et les efforts qu’impliquerait la mise à jour de votre intégration d’inscription à chaque évolution des exigences de conformité. #### Inscription via l'API Si vous préférez créer une expérience d’inscription personnalisée pour vos comptes connectés, utilisez l’[API de modification de compte](https://docs.stripe.com/api/accounts/update.md) et l’[API de modification de personne](https://docs.stripe.com/api/persons/update.md) pour ajouter les informations requises aux objets `Account` et `Person` concernés. Vous devez faire apparaître les [contrats requis pour Issuing](https://docs.stripe.com/issuing/compliance-us.md#issuing-terms) et enregistrer l’acceptation des comptes connectés à l’aide de la fonction de hachage de l’[acceptation des conditions d’utilisation du service Issuing](https://docs.stripe.com/api/accounts/object.md#account_object-settings-card_issuing-tos_acceptance). ```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" ``` Consultez le guide [Traiter les vérifications avec l’API](https://docs.stripe.com/connect/handling-api-verification.md) pour en savoir plus sur le respect des conditions d’inscription. À ce stade, Stripe a créé et vérifié le compte connecté, qui est doté des fonctionnalités `active` pertinentes pour l’utilisation de Issuing et Treasury pour les plateformes. Pour en savoir plus, consultez les pages suivantes : - [Configurer une intégration Issuing et Connect](https://docs.stripe.com/issuing/connect.md) - [Inscription hébergée par Stripe pour les comptes connectés](https://docs.stripe.com/connect/custom/hosted-onboarding.md) - [Création et utilisation de comptes connectés](https://docs.stripe.com/connect/interactive-platform-guide.md?connect-charge-type=direct&connect-loss-liability-owner=platform) - [Vérification d’identité pour les comptes connectés](https://docs.stripe.com/connect/identity-verification.md) ## Créer des comptes financiers et ajouter des fonds Après avoir activé les Financial Accounts sur votre plateforme, ajoutez des objets [FinancialAccount](https://docs.stripe.com/api/treasury/financial_accounts.md) à l’[architecture de votre plateforme](https://docs.stripe.com/treasury/connect/account-management/accounts-structure.md) afin de permettre la sauvegarde, l’envoi et la réception efficaces de fonds. Stripe associe un compte financier à votre compte de plateforme après l’activation et vous permet de provisionner un compte financier individuel pour chaque compte connecté éligible sur votre plateforme. Dans l’API Stripe, les objets `FinancialAccount` servent de source et de destination aux requêtes API de mouvement de fonds. Vous pouvez demander via l’API d’affecter des `Features` aux `FinancialAccounts` afin de fournir des fonctionnalités supplémentaires aux comptes financiers de votre plateforme. Un compte financier possède son propre [solde de fonds](https://docs.stripe.com/treasury/connect/account-management/working-with-balances-and-transactions.md), distinct du solde des paiements du compte connecté auquel il est associé. Par exemple, le propriétaire d’un compte connecté de votre plateforme peut disposer de 100 USD sur son solde de compte connecté et de 200 USD sur son solde de compte financier. Dans ce cas, son solde total s’élève à 300 USD, soit la somme des soldes de son compte financier et de son compte connecté. Ces deux soldes sont distincts, mais l’API permet de transférer des fonds depuis le solde du compte connecté vers le solde du compte financier. ### Créer un compte financier Une fois que Stripe a ajouté la fonctionnalité `treasury` à un compte et qu’elle est marquée `active`, vous pouvez créer un objet `FinancialAccount` pour le compte connecté. Pour ce faire, appelez `FinancialAccounts` et demandez les `Features` (fonctionnalités) que vous souhaitez 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" ``` Lorsque vous demandez des fonctionnalités lors de la création du compte financier, la réponse indique leur état dans les paramètres `active_features`, `pending_features` et `restricted_features` : ```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", ... } ``` L’activation peut être instantanée pour certaines fonctionnalités (par exemple `card_issuing`). Cependant, d’autres fonctionnalités, telles que `financial_addresses.aba`, [s’activent de manière asynchrone](https://docs.stripe.com/treasury/connect/account-management/financial-account-features.md#webhooks) et peuvent rester à l’état `pending` jusqu’à 30 minutes, le temps que Stripe communique avec les systèmes externes. Une fois toutes les fonctionnalités pertinentes activées, vous recevez une confirmation sur le récepteur webhook `treasury.financial_account.features_status_updated`. Pour en savoir plus sur les fonctionnalités des comptes financiers, consultez la section sur les [fonctionnalités disponibles](https://docs.stripe.com/treasury/connect/account-management/financial-account-features.md#available-features). ### Lier un compte bancaire Pour permettre à vos clients de transférer de l’argent vers et depuis un compte externe, créez un `SetupIntent` avec les paramètres requis, et indiquez que votre client est titulaire du compte externe en le rattachant à `self` : ```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" ``` La réponse de l’API inclut un identifiant de `payment_method` unique, qui sert à référencer ce compte bancaire lors des virements ACH : ```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" ] } ``` Pour utiliser un compte bancaire, vous devez d’abord le vérifier à l’aide de microversements (option sur laquelle nous nous concentrons ici) ou de [connexions financières](https://docs.stripe.com/financial-connections.md) (option la plus rapide). La réponse `SetupIntent` de l’étape précédente inclut une URL `hosted_verification_url` que vous devez présenter à votre client pour qu’il puisse saisir le code de libellé associé au microversement. Utilisez la valeur `SM11AA` pour vérifier le compte bancaire ou testez d’autres cas de figure à l’aide des [numéros de comptes de test](https://docs.stripe.com/payments/ach-direct-debit/set-up-payment.md?platform=web&payment-ui=stripe-hosted#test-account-numbers) fournis par Stripe. ![Vérification à l'aide de microversements](https://b.stripecdn.com/docs-statics-srv/assets/microdeposit-verification.a9151fafd6f3582cb8a268bf7b1b306e.png) Vérification à l’aide de microversements ### Ajouter des fonds au compte financier #### Intégrés À l’aide du [composant de compte financier](https://docs.stripe.com/connect/supported-embedded-components/financial-account.md) intégré à votre application, vous pouvez autoriser vos comptes connectés à transférer des fonds vers le compte financier. ## Créer une session de compte Lors de la [création d’une session de compte](https://docs.stripe.com/api/account_sessions/create.md), activez le composant de compte financier en spécifiant `financial_account` dans le paramètre `components`. Vous pouvez activer ou désactiver des fonctionnalités du composant de compte financier en spécifiant le paramètre `features` sous `financial_account`. ```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" ``` Après avoir créé la session de compte et [initialisé ConnectJS](https://docs.stripe.com/connect/get-started-connect-embedded-components.md#account-sessions), vous pouvez afficher le composant du compte financier dans le front-end : #### JavaScript ```js // Include this element in your HTML const financialAccount = stripeConnectInstance.create('financial-account'); financialAccount.setFinancialAccount('{{FINANCIAL_ACCOUNT_ID}}') container.appendChild(financialAccount); ``` Les utilisateurs peuvent initier un transfert en cliquant sur **Transférer des fonds**. #### API La requête suivante déclenche un virement de 200 USD sur le compte financier correspondant à l’ID fourni à l’aide d’un moyen de paiement `account-attached`. La valeur de l’en-tête `Stripe-Account` permet d’identifier le compte Stripe qui détient le compte financier et le moyen de paiement : ```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" ``` Sauf échec de l’opération, la réponse renvoie l’objet `InboundTransfer`. L’objet inclut une URL `hosted_regulatory_receipt_url` qui permet au titulaire du compte de consulter les informations relatives à la transaction sur la plateforme Homebox : ```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", ... } ``` À ce stade, le compte connecté dispose d’un `FinancialAccount` crédité des fonds d’un `InboundTransfer`. Vous pouvez les dépenser avec des cartes ou des `OutboundPayments`, comme les virements bancaires ou ACH. Pour en savoir plus, consultez les pages suivantes : - [Obtenir les autorisations pour les InboundTransfers](https://docs.stripe.com/treasury/connect/moving-money/working-with-bankaccount-objects.md#permissions) - [Travailler avec Treasury pour les plateformes](https://docs.stripe.com/treasury/connect/account-management/financial-accounts.md) - [Utiliser Stripe Treasury pour le transfert de fonds](https://docs.stripe.com/treasury/connect/examples/moving-money.md#microdeposits) - [Demander des fonctionnalités sur un Financial Account](https://docs.stripe.com/treasury/connect/account-management/financial-account-features.md#available-features) - [Utilisation de SetupIntents, PaymentMethods et BankAccounts](https://docs.stripe.com/treasury/connect/moving-money/working-with-bankaccount-objects.md) - [Transférer des fonds à l’aide d’objets InboundTransfer](https://docs.stripe.com/treasury/connect/moving-money/into/inbound-transfers.md) - [Transférer des fonds à l’aide d’objets ReceivedCredit](https://docs.stripe.com/treasury/connect/moving-money/into/received-credits.md) ## Créer des cartes et des titulaires de carte #### Intégrés Le [titulaire de la carte](https://docs.stripe.com/api/issuing/cardholder/object.md) est la personne (employé ou sous-traitant) autorisée par votre client à utiliser les fonds de la carte à partir du solde associé. L’objet `Cardholder` inclut des informations concernant ce titulaire, notamment le [nom](https://docs.stripe.com/api/issuing/cardholders/object.md#issuing_cardholder_object-name) à afficher sur la carte et une adresse de [facturation](https://docs.stripe.com/api/issuing/cardholders/object.md#issuing_cardholder_object-billing), qui est généralement le siège social du compte connecté ou de votre plateforme. Utilisez le [composant Issuing Cards List](https://docs.stripe.com/connect/supported-embedded-components/issuing-cards-list.md) intégré pour permettre à vos comptes connectés de créer un objet [Card](https://docs.stripe.com/api/issuing/cards/object.md) pour un objet Cardholder et de l’associer a l’objet Financial Account. 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. Lors de la [création d’une session de compte](https://docs.stripe.com/api/account_sessions/create.md), activez le composant Issuing Cards List en spécifiant `issuing_cards_list` dans le paramètre `components`. Vous pouvez activer ou désactiver des fonctionnalités du composant Issuing Cards List en spécifiant le paramètre `features` sous `issuing_cards_list`. ```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" ``` Après avoir créé la session du compte et [initialisé ConnectJS](https://docs.stripe.com/connect/get-started-connect-embedded-components.md#account-sessions), vous pouvez afficher le composant Issuing Cards List dans le front-end : #### JavaScript ```js // Include this element in your HTML const issuingCardsList = stripeConnectInstance.create('issuing-cards-list'); issuingCardsList.setShowSpendControls(true); container.appendChild(issuingCardsList); ``` En cliquant sur **Créer une carte**, l’utilisateur peut créer un nouveau titulaire de carte et une nouvelle carte. Il peut également choisir d’activer la carte lors de sa création ou plus tard. À ce stade, une carte bancaire active est rattachée à un titulaire de carte et à un compte financier. Consultez la [page Issuing](https://dashboard.stripe.com/issuing/overview) du compte connecté pour voir les informations relatives à la carte et à son titulaire. Pour en savoir plus, consultez les pages suivantes : - [Cartes virtuelles avec Issuing](https://docs.stripe.com/issuing/cards/virtual.md) - [Cartes physiques](https://docs.stripe.com/issuing/cards/physical.md) - [Utiliser le Dashboard pour Issuing avec Connect](https://docs.stripe.com/issuing/connect.md#using-dashboard-issuing) - [Créer des cartes avec l’API](https://docs.stripe.com/api/issuing/cards.md) #### API ### Créer un titulaire de carte Le [titulaire de la carte](https://docs.stripe.com/api/.md#issuing_cardholder_object) est la personne (c’est-à-dire l’employé ou le sous-traitant) autorisée par votre client à utiliser les fonds de la carte à partir du `FinancialAccount`. L’objet `Cardholder` inclut des informations pertinentes, telles que le [nom](https://docs.stripe.com/api/issuing/cardholders/object.md#issuing_cardholder_object-name) à afficher sur les cartes et une adresse de [facturation](https://docs.stripe.com/api/issuing/cardholders/object.md#issuing_cardholder_object-billing), qui est généralement l’adresse de l’entreprise du compte connecté ou de votre plateforme. L’appel à l’API suivant crée un nouvel objet `Cardholder` : ```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 renvoie un objet `Cardholder` qui contient les informations que vous avez fournies et envoie l’événement de webhook `issuing_cardholder.created`. ### Créer une carte Créez une carte et associez-la au `Cardholder` que vous souhaitez définir comme utilisateur autorisé, ainsi qu’au `FinancialAccount` pour prendre en charge les dépenses par carte. Dans les exemples suivants, nous vous montrons comment créer une [carte virtuelle](https://docs.stripe.com/issuing/cards/virtual.md). Vous pouvez toutefois créer des [cartes physiques](https://docs.stripe.com/issuing/cards/physical.md) et les envoyer à leurs titulaires en mode production. ```curl curl https://api.stripe.com/v1/issuing/cards \ -u "<>:" \ -d currency=usd \ -d type=virtual \ -d "cardholder={{ISSUINGCARDHOLDER_ID}}" ``` Lors de la création, Stripe renvoie un objet `Card` et envoie l’événement de webhook `issuing_card.created` : ```json { "id": "ic_1NvPjF2SSJdH5vn2OVbE7r0b", "object": "issuing.card", "brand": "Visa", ... "status": "inactive", "type": "virtual" } ``` Vous devez activer la carte pour qu’un utilisateur puisse l’utiliser. Vous pouvez activer des cartes virtuelles dans le même appel à l’API que celui que vous avez utilisé pour le créer, mais vous devez activer les cartes physiques séparément. Lorsque vous êtes prêt, activez la carte en marquant son `status` comme `active` : ```curl curl https://api.stripe.com/v1/issuing/cards/ic_1NvPjF2SSJdH5vn2OVbE7r0b \ -u "<>:" \ -d status=active ``` À ce stade, la carte est active et associée à un titulaire de carte ainsi qu’à un compte financier. Consultez la [page Issuing](https://dashboard.stripe.com/issuing/overview) du compte connecté pour voir des informations relatives à la carte et à son titulaire. ```json { "id": "ic_1NvPjF2SSJdH5vn2OVbE7r0b", "object": "issuing.card", "brand": "Visa", ... "status": "active", "type": "virtual" } ``` Pour en savoir plus, consultez les pages suivantes : - [Cartes virtuelles](https://docs.stripe.com/issuing/cards/virtual.md) - [Cartes physiques](https://docs.stripe.com/issuing/cards/physical.md) - [Utiliser le Dashboard pour Issuing avec Connect](https://docs.stripe.com/issuing/connect.md#using-dashboard-issuing) - [Créer des cartes avec l’API](https://docs.stripe.com/api/issuing/cards.md) ## Utiliser la carte ### Créer une autorisation Pour observer l’impact des activités de carte sur le solde associé, générez une autorisation test. Vous pouvez le faire sur la **page Issuing** du Dashboard du compte connecté ou en effectuant l’appel suivant à l’[API Authorization](https://docs.stripe.com/api/issuing/authorizations.md) : ```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" ``` Après approbation, Stripe crée une `Authorization` à l’état `pending` en attendant la [capture](https://docs.stripe.com/issuing/purchases/transactions.md). Notez l’`id` d’autorisation que vous utiliserez pour capturer les fonds : ```json {"id": "iauth_1NvPyY2SSJdH5vn2xZQE8C7k", "object": "issuing.authorization", "amount": 1000, ... "status": "pending", "transactions": [] } ``` Vous pouvez récupérer les détails du solde du compte financier et consulter l’effet de l’autorisation : ```curl curl https://api.stripe.com/v1/treasury/financial_accounts/{{TREASURYFINANCIALACCOUNT_ID}} \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" ``` La réponse de l’API est un objet `FinancialAccount` avec un hachage `balance` (solde) détaillant les fonds et leur disponibilité : ```json { "object": "treasury.financial_account", "id": "{{FINANCIAL_ACCOUNT_ID}}", ... "balance": { "cash": {"usd": 19000}, "inbound_pending": {"usd": 0}, "outbound_pending": {"usd": 1000} } } ``` La réponse indique que 190 USD sont actuellement disponibles, ainsi que 10 USD supplémentaires placés dans `outbound_pending` à partir de l’autorisation `pending`. Vous pouvez désormais simuler la capture de l’autorisation avec l’API. ### Capturer les fonds Capturez les fonds à l’aide du code suivant : ```curl curl -X POST https://api.stripe.com/v1/test_helpers/issuing/authorizations/{{ISSUINGAUTHORIZATION_ID}}/capture \ -u "<>:" ``` Une fois l’autorisation capturée, Stripe crée une [transaction](https://docs.stripe.com/issuing/purchases/transactions.md) Issuing. L’attribut `status` de l’autorisation reçoit la valeur `closed` et un webhook `ReceivedDebit` est créé à partir de ces informations. La récupération des informations du solde du compte financier montre que la valeur `outbound_pending` est désormais de 0 USD alors que le solde disponible reste de 190 USD : ```json { "object": "treasury.financial_account", "id": "{{FINANCIAL_ACCOUNT_ID}}", ... "balance": { "cash": {"usd": 19000}, "inbound_pending": {"usd": 0}, "outbound_pending": {"usd": 0} } } ``` ## See also - [Contrôles de dépenses](https://docs.stripe.com/issuing/controls/spending-controls.md) - [Autorisations Issuing](https://docs.stripe.com/issuing/purchases/authorizations.md) - [Transactions Issuing](https://docs.stripe.com/issuing/purchases/transactions.md) - [Travailler avec des cartes Issuing et Treasury pour les plateformes](https://docs.stripe.com/treasury/connect/account-management/issuing-cards.md) - [Gérer les transactions frauduleuses](https://docs.stripe.com/issuing/manage-fraud.md)