# Utiliser Treasury pour les plateformes et Issuing pour configurer des comptes financiers et des cartes bancaires

Suivez un exemple d’intégration de Treasury pour les plateformes et Issuing qui configure un compte financier et émet des cartes bancaires.

> #### Ancienne intégration
> 
> La version&nbsp;v1 de Treasury pour les plateformes est une ancienne intégration qui ne prend pas en charge de nombreuses fonctionnalités introduites dans [Treasury pour les plateformes&nbsp;v2](https://docs.stripe.com/treasury/connect.md). Ne créez pas de nouvelle intégration&nbsp;v1.

Homebox est un SaaS vertical fictif qui conçoit des logiciels pour les entreprises de services à domicile telles que les entreprises de chauffage, ventilation et climatisation, de nettoyage et de plomberie. Homebox commence son intégration de Treasury 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 [Utiliser Treasury pour les plateformes pour transférer des fonds](https://docs.stripe.com/treasury/connect/legacy/v1/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&nbsp;v2 ne prend pas en charge des workflows Treasury for platforms. Si vous avez des comptes créés avec Accounts&nbsp;v2, vous pouvez utiliser Accounts&nbsp;v1 pour gérer les fonctionnalités `treasury` et `card_issuing`. Pour en savoir plus, consultez la page [Utiliser les Accounts en tant que clients](https://docs.stripe.com/accounts-v2/use-accounts-as-customers.md).

Afin d’utiliser les services Treasury pour les plateformes et Issuing, Homebox doit demander en plus les fonctionnalités `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 Treasury 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 "<<YOUR_SECRET_KEY>>:" \
  -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 "<<YOUR_SECRET_KEY>>:" \
  -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é&nbsp;:

```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 "<<YOUR_SECRET_KEY>>:" \
  -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", "rtp"],
      "aba": {
        "account_number_last4": "7890",
        // The full account_number is only returned if the request expands it.
        "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" after 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.

## Index

This article has multiple variants. Fetch one of the following URLs to view specific content for your use case:

- [Dashboard](https://docs.stripe.com/treasury/connect/legacy/v1/examples/financial-accounts.md?testing-method=without-code)
- [API](https://docs.stripe.com/treasury/connect/legacy/v1/examples/financial-accounts.md?testing-method=with-code)

## 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.

## Index

This article has multiple variants. Fetch one of the following URLs to view specific content for your use case:

- [Dashboard](https://docs.stripe.com/treasury/connect/legacy/v1/examples/financial-accounts.md?testing-method=without-code)
- [API](https://docs.stripe.com/treasury/connect/legacy/v1/examples/financial-accounts.md?testing-method=with-code)

## See also

- [Utiliser Treasury pour les plateformes pour transférer des fonds](https://docs.stripe.com/treasury/connect/legacy/v1/examples/moving-money.md)
- [Documentation de l’API](https://docs.stripe.com/api/treasury/financial_accounts.md)
