Vérifier la propriété d’un compte bancaire avec Financial ConnectionsVersion bêta privée
Utilisez l’API Ownership Match pour demander les scores de correspondance sur les données de propriété.
L’API Ownership Match 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.
Avant de commencer
Vous devez disposer d’une inscription Financial Connections pour accéder à ownership en mode production. Accédez aux paramètres de votre Dashboard 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 de l’API et l’en-tête bêta sur financial_
dans chaque requête API.
Demander l'accès aux données de propriété d'un compteCôté serveur
Vous devez collecter un compte Financial Connections avant de pouvoir accéder aux données de propriété.
Spécifiez les autorisations d’accès aux données 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.
Nous vous recommandons d’utiliser la récupération anticipée 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.
Appeler l’API Ownership MatchCôté serveur
Vous pouvez transmettre les données de propriété à l’API en utilisant l’une des méthodes suivantes :
- 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 : Inclure le symbole plus (
+
) et le code pays pour les transactions internationales - Adresse : Nécessite tous les champs d’adresse, à l’exception de la ligne 2
Remarque
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 Recommandé
Nous vous recommandons de créer un objet Customer 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. 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.
Cela renvoie un objet Customer avec les informations de propriété qui peuvent être utilisées pour établir une correspondance de propriété.
{ "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.
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.
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é.
{ "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é.
Envoyer les données via le paramètre « owner information »
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_
.
{ "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.
Prendre des décisions en fonction des résultats de correspondanceCô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.
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 « Jen Jeanne Rousseau », à l’adresse e-mail « jenrousseau@example.com » et à l’adresse suivante :
{ "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 | « Jen Jeanne Rousseau » | « jenrousseau@example.com » |
|
85-99 | Très forte correspondance, avec quelques caractères manquants | « Jne Jeanne Rousseau » | « jen.rousseau@example.com » |
|
70-84 | Forte correspondance, comme les correspondances majoritaires | « Jen Rousseau » | « jenrousseau12345@example.com » |
|
60-69 | Correspondance possible, par exemple des correspondances partielles ou des surnoms | « Jennifer Rousseau » | « jenrousseau@test.com » |
|
30-59 | Correspondance faible, par exemple un membre du ménage ou des champs similaires | « Laurent Rousseau » | « laurentdupont@example.com » |
|
0-29 | Correspondance nulle ou peu probable | « Laurent Dupont » | « laurentdupont@test.com » |
|
Téléphone
Exemple de scores de correspondance téléphonique par rapport au numéro de téléphone « +1 212-555-5555 ».
Remarque
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 | « +12125555555 », « (212) 555-5555 » |
70-99 | Correspondance possible, comme un chiffre erroné ou un numéro manquant | « 212 555 5559 » « 212 555 555 » |
50-69 | Correspondance faible, telle que le même numéro, sauf l’indicatif régional | « 347 555 5555 » |
20-49 | Correspondance peu probable, comme le même indicatif régional | « 212 999 9999 » |
0-19 | Pas de correspondance | « 347 999 9999 » |
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 :
{ "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 } } }