# Vérifier la propriété d’un compte bancaire avec Financial Connections

Utilisez l’API Ownership Match pour demander les scores de correspondance sur les données de propriété.

L’[API Ownership Match](https://docs.stripe.com/api/financial_connections/ownership_match.md) vous permet de vérifier que votre utilisateur est bien titulaire d’un compte bancaire. Elle calcule les scores de correspondance en comparant les données de propriété de Financial Connections avec les informations de propriété saisies.

## Before you begin

Vous devez disposer d’une inscription Financial Connections pour accéder à ownership en mode production. Accédez aux [paramètres de votre Dashboard](https://dashboard.stripe.com/settings/financial-connections) pour vérifier l’état de votre inscription ou entamer le processus d’inscription. Les données de test Financial Connections sont disponibles en permanence.

Pour accéder à Ownership Match, vous devez [définir la version API et l’en-tête bêta](https://docs.stripe.com/sdks/set-version.md) sur `financial_connections_ownership_match_api_preview=v1` dans chaque requête d’API.

## Demander l'accès aux données de propriété d'un compte [Côté serveur]

- [Accéder à la propriété d’un compte Financial Connections](https://docs.stripe.com/financial-connections/ownership.md)

Vous devez [collecter un compte Financial Connections](https://docs.stripe.com/financial-connections/ownership.md#request-account-ownership) avant de pouvoir accéder aux données de propriété.

Spécifiez les [autorisations d’accès aux données](https://docs.stripe.com/financial-connections/fundamentals.md#data-permissions) auxquelles vous avez besoin d’accéder à l’aide du paramètre `permissions` de l’API. L’API Ownership Match nécessite l’autorisation `ownership`.

Votre utilisateur peut consulter l’ensemble des autorisations d’accès aux données demandées dans le [flux d’authentification](https://docs.stripe.com/financial-connections/fundamentals.md#authentication-flow).

Nous vous recommandons d’utiliser la [récupération anticipée](https://docs.stripe.com/financial-connections/ownership.md#prefetch-ownership-data) pour lancer l’actualisation de la propriété dès que votre utilisateur connecte son compte dans le flux d’authentification.

Lorsque les données de propriété sont disponibles, nous envoyons un [webhook Financial Connections](https://docs.stripe.com/financial-connections/webhooks.md).

## Appeler l’API Ownership Match [Côté serveur]

Vous pouvez transmettre les données de propriété à l’API en utilisant l’une des méthodes suivantes&nbsp;:

- Créer un objet Customer grâce lequel Stripe pourra effectuer la comparaison
- Collecter un compte Financial Connections avec un titulaire de compte de type Customer
- Envoyer les données via le paramètre `owner_information`

Ownership Match accepte jusqu’à quatre champs de saisie, dont l’un doit figurer dans la liste suivante.

- Nom
- Votre adresse e-mail
- **Numéro de téléphone**&nbsp;: Inclure le symbole plus (`+`) et le code pays pour les transactions internationales
- **Adresse**&nbsp;: Nécessite tous les champs d’adresse, à l’exception de la ligne 2

> Le fait d’inclure tous les champs de propriété augmente la précision du score. Par exemple, vous pouvez pondérer le score d’appariement de chaque champ et l’utiliser dans votre modélisation des risques.

### Créer un objet Customer (Recommended)

Nous vous recommandons de créer un objet *Customer* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) pour représenter votre utilisateur. Incluez toutes les données dont vous disposez et avec lesquelles vous souhaitez effectuer une comparaison.

Stripe charge et compare les données sans que vous ayez à manipuler de données client sensibles lorsque cela n’est pas strictement nécessaire.

Par exemple, vous pouvez collecter à la fois un objet Customer et un compte Financial Connections via des produits Stripe, tels que les [paiements ACH dans Checkout](https://docs.stripe.com/financial-connections/ach-direct-debit-payments.md). Suite à cela, vous pouvez demander à établir une correspondance de propriété et prendre une décision concernant le risque en fonction du résultat de la correspondance sans voir les données de propriété du client, ce qui peut déclencher une responsabilité en matière de conformité PCI.

```curl
curl https://api.stripe.com/v1/customers \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "name=Jenny Rosen" \
  --data-urlencode "email=jennyrosen@example.com" \
  --data-urlencode "phone=+1 212-555-5555" \
  -d "address[line1]=354 Oyster Point Blvd" \
  -d "address[city]=South San Francisco" \
  -d "address[postal_code]=94080" \
  -d "address[state]=CA" \
  -d "address[country]=US"
```

Cela renvoie un objet Customer avec les informations de propriété qui peuvent être utilisées pour établir une correspondance de propriété.

```json
{
  "id": "cus_NffrFeUfNV2Hib",
  "object": "customer",
  "created": 1651783000,"name": "Jenny Rosen",
  "address": {
      "line1": "354 Oyster Point Blvd",
      "line2": null,
      "city": "South San Francisco",
      "state": "CA",
      "postal_code": "94080",
      "country": "US"
    },
  "email": "jennyrosen@example.com",
  "phone": "+1 212-555-5555",
  "livemode": false
  // ...
}
```

Transmettez l’`id` du client à l’API afin de le comparer à celui du compte Financial Connections.

```curl
curl https://api.stripe.com/v1/financial_connections/ownership_match \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Version: 2026-03-25.preview; financial_connections_ownership_match_api_preview=v1" \
  -d financial_connections_account=fca_1MwVK82eZvKYlo2Cjw8FMxXf \
  -d type=customer \
  -d customer=cus_NffrFeUfNV2Hib
```

### Collecter un compte Financial Connections avec un titulaire de compte de type Customer

Vous pouvez collecter un compte Financial Connections avec un objet Customer associé en définissant `customer` sur l’ID de Customer existant, et en configurant son titulaire de compte sur le type `customer` lors de la création d’une session Financial Connections.

#### Setup Intents

```curl
curl https://api.stripe.com/v1/setup_intents \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d customer=cus_NffrFeUfNV2Hib \
  -d "payment_method_types[]=us_bank_account" \
  -d "payment_method_options[us_bank_account][financial_connections][permissions][]=ownership" \
  -d "payment_method_options[us_bank_account][financial_connections][permissions][]=payment_method" \
  -d "payment_method_options[us_bank_account][financial_connections][prefetch][]=ownership"
```

#### Payment Intents

```curl
curl https://api.stripe.com/v1/payment_intents \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d amount=20000 \
  -d currency=usd \
  -d customer=cus_NffrFeUfNV2Hib \
  -d "payment_method_types[]=us_bank_account" \
  -d "payment_method_options[us_bank_account][financial_connections][permissions][]=ownership" \
  -d "payment_method_options[us_bank_account][financial_connections][permissions][]=payment_method" \
  -d "payment_method_options[us_bank_account][financial_connections][prefetch][]=ownership"
```

#### Sessions

```curl
curl https://api.stripe.com/v1/financial_connections/sessions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "account_holder[type]=customer" \
  -d "account_holder[customer]=cus_NffrFeUfNV2Hib" \
  -d "permissions[]=ownership" \
  -d "prefetch[]=ownership"
```

#### Checkout

```curl
curl https://api.stripe.com/v1/checkout/sessions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d customer=cus_NffrFeUfNV2Hib \
  -d "payment_method_types[]=us_bank_account" \
  -d "payment_method_options[us_bank_account][financial_connections][permissions][]=ownership" \
  -d "payment_method_options[us_bank_account][financial_connections][permissions][]=payment_method" \
  -d "payment_method_options[us_bank_account][financial_connections][prefetch][]=ownership"
```

#### Factures

```curl
curl https://api.stripe.com/v1/invoices \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d customer=cus_NffrFeUfNV2Hib \
  -d "payment_settings[payment_method_types][]=us_bank_account" \
  -d "payment_settings[payment_method_options][us_bank_account][financial_connections][permissions][]=ownership" \
  -d "payment_settings[payment_method_options][us_bank_account][financial_connections][permissions][]=payment_method" \
  -d "payment_settings[payment_method_options][us_bank_account][financial_connections][prefetch][]=ownership"
```

#### Abonnements

```curl
curl https://api.stripe.com/v1/subscriptions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d customer=cus_NffrFeUfNV2Hib \
  -d "payment_settings[payment_method_types][]=us_bank_account" \
  -d "payment_settings[payment_method_options][us_bank_account][financial_connections][permissions][]=ownership" \
  -d "payment_settings[payment_method_options][us_bank_account][financial_connections][permissions][]=payment_method" \
  -d "payment_settings[payment_method_options][us_bank_account][financial_connections][prefetch][]=ownership"
```

Cela crée un compte Financial Connections avec les autorisations de propriété (`ownership`) requises et un objet Customer associé. La récupération anticipée ou l’actualisation de la propriété renvoie le compte, y compris ses données de propriété Financial Connections associées lorsque `ownership` est développé.

```json
{
  "id": "fca_1MwVK82eZvKYlo2Cjw8FMxXf",
  "object": "financial_connections.account",
  "created": 1651783222,
  "account_holder": {
    "customer": "cus_NffrFeUfNV2Hib",
    "type": "customer"
  },
  "ownership": {
    "id": "fcaowns_1NtI9uBHO5VeT9SUSRe21lqt",
    "object": "financial_connections.account_ownership",
    "created": 1651784999,
    "owners": {
      "object": "list",
      "data": [{
          "name": "Jennifer Rosen",
          "email": "jennyrosen@test.com",
          "phone": null,
          "ownership": "fcaowns_1NtI9uBHO5VeT9SUSRe21lqt",
          "raw_address": "354 Oyster Point Blvd South San Francisco, CA 94080 USA",
          "refreshed_at": 1651784999
        }
      ],
      "has_more": false,
      "url": "/v1/financial_connections/accounts/fca_zbyrdjTrwcYZJZc6WBs6GPid/owners?ownership=fcaowns_1NtI9uBHO5VeT9SUSRe21lqt"
    }
  },
  "ownership_refresh": {
    "status": "succeeded",
    "last_attempted_at": 1651784999,
    "next_refresh_available_at": 1651785000
  },
  "permissions": ["ownership", "payment_method"],
  "prefetch": ["ownership"]
  // ...
}
```

Vous pouvez transmettre l’`id` du compte Financial Connections sans saisir de `type` afin de comparer les données de propriété Financial Connections avec les données client du titulaire du compte associé.

```curl
curl https://api.stripe.com/v1/financial_connections/ownership_match \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Version: 2026-03-25.preview; financial_connections_ownership_match_api_preview=v1" \
  -d financial_connections_account=fca_1MwVK82eZvKYlo2Cjw8FMxXf
```

### Envoyer les données via le paramètre «&nbsp;owner information&nbsp;»

Si vous choisissez de ne pas collecter les données de propriété par le biais d’un objet Customer, vous pouvez également transmettre les données de propriété fournies par l’utilisateur directement à l’API via le paramètre `owner_information`.

```json
{
  "owner_information": {
    "name": "Jenny Rosen",
    "email": "jennyrosen@example.com",
    "phone": "+1 212-555-5555",
    "address": {
      "line1": "354 Oyster Point Blvd",
      "line2": null,
      "city": "South San Francisco",
      "state": "CA",
      "postal_code": "94080",
      "country": "US"
    }
  }
}
```

Transmettez les informations de propriété dans l’API afin de les comparer à celles du compte Financial Connections.

```curl
curl https://api.stripe.com/v1/financial_connections/ownership_match \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Version: 2026-03-25.preview; financial_connections_ownership_match_api_preview=v1" \
  -d financial_connections_account=fca_1MwVK82eZvKYlo2Cjw8FMxXf \
  -d type=owner_information \
  -d "owner_information[name]=Jenny Rosen" \
  --data-urlencode "owner_information[email]=jennyrosen@example.com" \
  --data-urlencode "owner_information[phone]=+1 212-555-5555" \
  -d "owner_information[address][line1]=354 Oyster Point Blvd" \
  -d "owner_information[address][line2]=" \
  -d "owner_information[address][city]=South San Francisco" \
  -d "owner_information[address][state]=CA" \
  -d "owner_information[address][postal_code]=94080" \
  -d "owner_information[address][country]=US"
```

## Prendre des décisions en fonction des résultats de correspondance [Côté serveur]

L’API Ownership Match renvoie un score de 0 à 100 pour chaque champ de saisie fourni. Vous pouvez intégrer ce score de match dans votre propre logique et modélisation des risques, comme indiqué dans les exemples fournis. Par exemple, vous pouvez définir des seuils de score afin de poursuivre la procédure de paiement, ou exiger une vérification supplémentaire, telle que le chargement d’une pièce d’identité avant de continuer.

En fonction de votre tolérance au risque et d’autres indicateurs de risque provenant de vos données client, vous pouvez ajuster votre logique pour exiger une correspondance exacte ou forte pour procéder à une action, telle que la poursuite d’un paiement ou l’autorisation d’un virement sur le compte.

```javascript
function makeRiskDecision(matchResult: Stripe.FinancialConnections.OwnershipMatch) {
  const nameScore = matchResult.results.name?.match_score? || 0;
  const addressScore = matchResult.results.address?.match_score? || 0;
  const emailScore = matchResult.results.email?.match_score? || 0;
  const phoneScore = matchResult.results.phone?.match_score? || 0;

  const overallScore = (nameScore + addressScore + emailScore + emailScore) / 4

  if (overallScore >= 70) {
    proceedWithPayment();
  } else if (overallScore >= 60) {
    stepUpVerification();
  } else {
    cancelPayment();
  }
}
```

### Exemples d’interprétations de scores

#### Nom, adresse e-mail, adresse

Exemple de scores de correspondance au nom «&nbsp;Jen Jeanne Rousseau&nbsp;», à l’adresse e-mail «&nbsp;jenrousseau@example.com&nbsp;» et à l’adresse suivante&nbsp;:

```json
{
  "line1": "354 Oyster Point Blvd",
  "line2": "Fl 1",
  "city": "South San Francisco",
  "state": "CA",
  "postal_code": "94080",
  "country": "US"
}
```

| de risque | Interprétation                                                                     | Exemple de nom                    | Exemple d’e-mail                           | Exemple d’adresse                                                                                                                                                                        |
| --------- | ---------------------------------------------------------------------------------- | --------------------------------- | ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 100       | Correspondance exacte                                                              | «&nbsp;Jen Jeanne Rousseau&nbsp;» | «&nbsp;jenrousseau@example.com&nbsp;»      | ```json
  {
    "line1": "354 Oyster Point Blvd.",
    "line2": "Fl. 1",
    "city": "South San Francisco",
    "state": "CA",
    "postal_code": "94080",
    "country": "US"
  }
  ``` |
| 85-99     | Très forte correspondance, avec quelques caractères manquants                      | «&nbsp;Jne Jeanne Rousseau&nbsp;» | «&nbsp;jen.rousseau@example.com&nbsp;»     | ```json
  {
    "line1": "354 Oyster Point Blvd.",
    "line2": null,
    "city": "South San Francisco",
    "state": "CA",
    "postal_code": "94080",
    "country": "US"
  }
  ```    |
| 70-84     | Forte correspondance, comme les correspondances majoritaires                       | «&nbsp;Jen Rousseau&nbsp;»        | «&nbsp;jenrousseau12345@example.com&nbsp;» | ```json
  {
    "line1": "354 Oyster Point",
    "line2": "Fl. 10",
    "city": "San Francisco",
    "state": "CA",
    "postal_code": "94080",
    "country": "US"
  }
  ```            |
| 60-69     | Correspondance possible, par exemple des correspondances partielles ou des surnoms | «&nbsp;Jennifer Rousseau&nbsp;»   | «&nbsp;jenrousseau@test.com&nbsp;»         | ```json
  {
    "line1": "354 OP Blvd.",
    "line2": null,
    "city": "South SF",
    "state": "CA",
    "postal_code": "94080",
    "country": "US"
  }
  ```                         |
| 30-59     | Correspondance faible, par exemple un membre du ménage ou des champs similaires    | «&nbsp;Laurent Rousseau&nbsp;»    | «&nbsp;laurentdupont@example.com&nbsp;»    | ```json
  {
    "line1": "510 Townsend St.",
    "line2": null,
    "city": "San Francisco",
    "state": "CA",
    "postal_code": "94103",
    "country": "US"
  }
  ```                |
| 0-29      | Correspondance nulle ou peu probable                                               | «&nbsp;Laurent Dupont&nbsp;»      | «&nbsp;laurentdupont@test.com&nbsp;»       | ```json
  {
    "line1": "1 University Ave.",
    "line2": "Fl. 10",
    "city": "Toronto",
    "state": "ON",
    "postal_code": "M5J 2P1",
    "country": "CA"
  }
  ```               |

#### Téléphone

Exemple de scores de correspondance téléphonique par rapport au numéro de téléphone «&nbsp;+1 212-555-5555&nbsp;».

> Les plages de scores d’interprétation des exemples de numéros de téléphone sont plus larges, car il y a moins de variations granulaires dans les numéros de téléphone.

| de risque | Interprétation                                                             | Exemples                                                 |
| --------- | -------------------------------------------------------------------------- | -------------------------------------------------------- |
| 100       | Correspondance exacte                                                      | «&nbsp;+12125555555&nbsp;», «&nbsp;(212) 555-5555&nbsp;» |
| 70-99     | Correspondance possible, comme un chiffre erroné ou un numéro manquant     | «&nbsp;212 555 5559&nbsp;» «&nbsp;212 555 555&nbsp;»     |
| 50-69     | Correspondance faible, telle que le même numéro, sauf l’indicatif régional | «&nbsp;347 555 5555&nbsp;»                               |
| 20-49     | Correspondance peu probable, comme le même indicatif régional              | «&nbsp;212 999 9999&nbsp;»                               |
| 0-19      | Pas de correspondance                                                      | «&nbsp;347 999 9999&nbsp;»                               |

### Exemple de réponse

L’API Ownership Match renvoie également les informations du propriétaire et l’ID de propriété correspondants, comme le montre l’exemple de réponse API suivant&nbsp;:

```json
{
  "id": "fcom_1NtI9uBHO5VeT9SUKLJU5suZ",
  "object": "financial_connections.ownership_match",
  "created": 1745858181,
  "financial_connections_account": "fca_1MwVK82eZvKYlo2Cjw8FMxXf",
  "type": "customer",
  "owner_information": {
    "name": "Jenny Rosen",
    "address": {
      "line1": "354 Oyster Point Blvd",
      "line2": null,
      "city": "South San Francisco",
      "state": "CA",
      "postal_code": "94080",
      "country": "US"
    },
    "email": "jennyrosen@example.com",
    "phone": "+1 212-555-5555"
  },
  "customer": "cus_NffrFeUfNV2Hib",
  "ownership": "fcaowns_1NtI9uBHO5VeT9SUSRe21lqt",
  "results": {
    "name": {
      "match_score": 85,
      "missing_data": false
    },
    "address": {
      "match_score": 100,
      "missing_data": false
    },
    "email": {
      "match_score": 65,
      "missing_data": false
    },
    "phone": {
      "match_score": null,
      "missing_data": true
    }
  }
}
```
