Plaid Identity Match and kyc_check: production identity verification guide

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)

KPIIllustrative target
Match pass rate at threshold 7075–88%
Phone mismatch block ratetrack 15× return risk segment
IDV kyc_check success85–92% with tuned rules
Manual review queue SLA<4 business hours

Pitfalls

  • Calling /identity/match without 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.

Plaid Auth instant guide, IDV production guide, webhooks hardening. Implementation help: Nitin Rachabathunicontact.

Metrics snapshot

Plaid Identity Match and kyc_check: production identity verification guide — key metrics

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

Architecture flow

Plaid Identity Match and kyc_check: production identity verification guide — integration flow

Plaid Identity Match and kyc_check: production identity verification guide

Approach comparison

ApproachSignalRiskBest for
/identity/get + custom fuzzy matchFull controlLower conversion; higher eng costLegacy systems only
/identity/matchPer-field scores; proven upliftPer-request billingProduction onboarding
IDV kyc_check + Financial Account MatchingEnd-to-end KYC + bank tie-outTemplate + access setupRegulated 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

Article slug: plaid-identity-match-kyc-check-guide · Engineering notes by Nitin Rachabathuni — MVP in 2 days specialist.