Identity Match vs raw /identity/get
Plaid Identity returns names, emails, phones, and addresses from linked accounts via /identity/get. Building fuzzy matching in-house is slow and error-prone. /identity/match scores how well your KYC payload matches bank-on-file data—separate scores per field with recommended acceptance thresholds ≥70 per Plaid Identity docs.
Plaid reports customers see 20%+ onboarding conversion improvements using Identity Match versus home-grown matchers, without increasing fraud rates (Identity product page). A digital bank case study on the same page: accounts with mismatched phone numbers were 15× more likely to have unauthorized ACH returns—actionable signal for risk engines.
kyc_check: Data Source Verification in IDV
Inside Identity Verification (IDV), the kyc_check step runs Data Source Verification (formerly Lightning Verification)—matching name, DOB, address, phone, and ID number against voter records, property files, and credit bureau sources. Results appear in the kyc_check object when steps.kyc_check reaches success or failed (IDV API reference).
Configure match strictness in the Template Editor Identity Rules—not via API for most IDV options. Request Production access through the Plaid Dashboard Launch Center before sandbox IDV is available.
Financial Account Matching (bank + IDV stitch)
Enable Financial Account Matching in your IDV template Setup pane. After a passed IDV session, call /identity/match with only access_token (omit user) and the same client_user_id—Plaid compares linked account owners against verified PII automatically (IDV introduction). This closes the gap where users pass document KYC but link a roommate’s bank account.
Production handler pattern
export async function scoreIdentityMatch(accessToken, applicant) {
const { data } = await plaidClient.identityMatch({
access_token: accessToken,
user: {
legal_name: applicant.legalName,
phone_number: applicant.phone,
email_address: applicant.email,
address: applicant.address,
},
});
const scores = data.accounts[0]?.owners?.[0]?.names?.[0]?.score ?? 0;
return { scores, pass: scores >= 70 };
}
For IDV-first flows with Financial Account Matching enabled, drop the user object and evaluate match scores returned against the verified profile.
Billing and product access
- Identity (on Item): one-time fee per Item with Identity added
- Identity Match: per-request flat fee
- IDV: base fee per attempt + add-ons for document, selfie, and data-source checks (fee model docs)
Canada Identity Match requires Growth/Custom plans—contact sales rather than the self-serve production form.
Underwriting funnel placement
On Revenued apply portals, sequence typically runs: IDV or application KYC → Link (Auth + Identity) → identity/match gate → Transactions pull. Fail closed on match scores below threshold; route to manual review queue with webhook correlation IDs—not silent retries that create duplicate Items.
Metrics to dashboard (illustrative)
| KPI | Illustrative target |
|---|---|
| Match pass rate at threshold 70 | 75–88% |
| Phone mismatch block rate | track 15× return risk segment |
| IDV kyc_check success | 85–92% with tuned rules |
| Manual review queue SLA | <4 business hours |
Pitfalls
- Calling
/identity/matchwithout normalized E.164 phone formatting - Mixing sandbox IDV templates with production Link keys
- Ignoring joint-account owner arrays (multiple owners returned)
- Storing full SSN from IDV responses in application logs
Manual review queue design
When match scores land in the 50–69 band, route to analysts with side-by-side KYC form vs bank owner data—never auto-decline without appeal path. Store /identity/match JSON responses immutably; underwriters replay decisions months later during audits.
Joint accounts and co-applicants
/identity/get may return multiple owners on joint accounts—evaluate match scores per owner and document which owner passed underwriting. Do not assume index zero is the applicant.
Regulatory exports
Prepare CSV exports of IDV sessions for SOC2 and lending audits—include template version, step outcomes, and analyst overrides without raw document images in the export bundle.
Related reading
Plaid Auth instant guide, IDV production guide, webhooks hardening. Implementation help: Nitin Rachabathuni — contact.
Metrics snapshot

Illustrative Identity Match and kyc_check KPI ranges—calibrate to your risk model and geography.
Architecture flow

Approach comparison
| Approach | Signal | Risk | Best for |
|---|---|---|---|
| /identity/get + custom fuzzy match | Full control | Lower conversion; higher eng cost | Legacy systems only |
| /identity/match | Per-field scores; proven uplift | Per-request billing | Production onboarding |
| IDV kyc_check + Financial Account Matching | End-to-end KYC + bank tie-out | Template + access setup | Regulated lending |
Code sketches
/* Identity Match with applicant PII */
const { data } = await client.identityMatch({
access_token,
user: {
legal_name: 'Jane Smith',
phone_number: '+14155552671',
email_address: 'jane@example.com',
},
});
const nameScore = data.accounts[0]?.owners?.[0]?.names?.[0]?.score;
Official references
- Plaid Identity introduction
- Add Identity to your app
- Identity Verification kyc_check
- Identity Match API
Related on this site
Article slug: plaid-identity-match-kyc-check-guide · Engineering notes by Nitin Rachabathuni — MVP in 2 days specialist.

Plaid Auth: instant account verification in production (2026 guide)
FinTech

Plaid update mode and relink when Item login is required
FinTech

Plaid Auth and Identity for underwriting — production guide
FinTech

Plaid webhooks — verification, idempotency, and FinTech handlers
FinTech

Plaid Hosted Link and EU open banking — implementation guide
FinTech

Plaid Link for underwriting apply portals — production guide
FinTech


