Plaid logo
Docs
ALL DOCS

Identity

  • Introduction to Identity
  • Add Identity to your app
  • Interpreting Identity Match Scores
  • Identity Document Upload
  • Identity partners
Plaid logo
Docs
Plaid.com
Log in
Get API Keys
Open nav
Close search modal
Ask Bill!
Ask Bill!
Hi! I'm Bill! You can ask me all about the Plaid API. Try asking questions like:
    Pssst -- I also moonlight as your IDE's research librarian! Plug me in via the Plaid MCP Server.
    Note: Bill isn't perfect. He's just a robot platypus that reads our docs for fun. You should treat his answers with the same healthy skepticism you might treat any other answer on the internet. This chat may be logged for quality and training purposes. Please don't send Bill any PII -- he's scared of intimacy. All chats with Bill are subject to Plaid's Privacy Policy.

    Interpreting Identity Match Scores

    Understand the scores returned by /identity/match and how to interpret each field

    This page explains the data returned by Identity Match and how to interpret each field's match score.

    Data returned by /identity/match includes scores from matching a user's name, address, phone number, and email with the account owner's data that was present on the connected account. A score ranging from 0 to 100 is provided for each identity field. The score for a given field will be missing if the identity information for that field was not provided in the request or unavailable at the connected account. In the case of an Item containing accounts with multiple owners, the highest matched scores are returned.

    You should typically not set the match score requirement for a field to 100. For example, if a phone number match score of 100 is required, the presence or absence of a country code, parentheses, or other formatting differences may cause a phone number mismatch. 70 is the default recommended match score threshold for all fields.

    Name match score

    Plaid normalizes names and accounts for many common discrepancies, such as nicknames, prefixes and suffixes, reverse name order, omitting or initializing middle names, multiple surnames, diacriticals, case inconsistencies, and more. After accounting for these common issues, names are compared for similarity using a fuzzy string matching algorithm.

    Name match scores of 70 or higher are likely to be matches. Scores from 50 to 69 may be matches and you may wish to configure these for human review. Scores below 50 are unlikely to be matches.

    RangeMeaningExample
    100Exact matchJennifer Smith, Jennifer Smith
    99Exact match after normalizationJennifer Smith, Ms. Jennifer Smith, Jennifer W. Smith; Li Chen, Chen Li
    95-98Strong matchAndrew Smith, Andrew Smith Jr.
    90-94Strong match, likely single typo or nickname, or missing portion of Spanish surnamesJennifer Smith, Jen Smith, Jennfer Smith; Alejandro García Rodriguez Santos, Alejandro Garcia Rodriguez
    70-89Likely match, likely abbreviated / missing portion of name, or multiple typosJennifer Smith, J Smith, Jennifer Williams Smith, Jennfer Smth
    50-69Possible match, likely relative or missing portion of non-Spanish surnamesMohammed Naseer Daoud Mohammed, Mohammed Nasser Daoud; Jennifer Smith, Betty Smith
    0-49Unlikely matchJennifer Smith, Ray Charles

    Phone number match score

    For phone number and email match scores, Plaid returns discrete values rather than a range, as fuzzy matching is not used for these comparisons.

    RangeMeaningExample
    100Exact match+1-555-867-5309, +1-555-867-5309
    99Same phone number, different formatting+1-555-867-5309, 1 (555)-867-5309
    85Same phone number, different formatting and/or missing country code+1-555-867-5309, 5558675309
    0Not a match+1-555-867-5309, +1-555-867-5308

    Email match score

    Two strings are considered to be an email match if an email sent to both email addresses will end up in the same inbox. For phone number and email match scores, Plaid returns discrete values rather than a range, as fuzzy matching is not used for these comparisons.

    RangeMeaningExample
    100Exact matchlknope@pawnee.gov, lknope@pawnee.gov
    85Exact match after normalizationlknope@pawnee.gov, l.knope+plaid@pawnee.gov
    0Not a matchlknope@pawnee.gov, thaverford@pawnee.gov
    nullNot a properly formatted email addresslknope@pawnee.gov, lknope@pawneegov

    Address match score

    • Postal code matching is prioritized above city and state matching. A postal code mismatch, even by a single digit, will automatically result in a score of zero. An exact five-digit postal code match with a matching street address and an incorrect city or state will still result in a match.
    • When matching US postal codes in a nine-digit format (e.g. 91101-1002), Plaid will ignore the four-digit suffix and compare only on the five-digit code.
    • Street addresses are normalized, and the order of the street address components is ignored. For example, "100 First Avenue N, Apt. 5B" and "Apartment B5, 100 1st Ave. North" would be an exact or close-to-exact match.
    • After these rules are applied, street addresses are compared for similarity using a fuzzy matching algorithm.
    RangeMeaning
    100Exact match for normalized street address and postal code
    99Exact match for normalized street address and postal code; likely city name or state mismatch
    90-98Likely a single typo, e.g. 203 Main St. vs. 204 Main St.
    80-89Likely two typos, e.g. 295 Laffayete vs. 295 Lafayette
    70-79Likely three typos, e.g. 295 Laffayete vs. 294 Lafayette
    1-69Postal code match, likely street address mismatch
    0Postal code mismatch

    Sample Identity Match data

    Sample Identity match data
    {
      "accounts": [
        {
          ..
          "legal_name": {
            "score": 90,
            "is_nickname_match": true,
            "is_first_name_or_last_name_match": true
          },
          "phone_number": {
            "score": 100
          },
          "email_address": {
            "score": 100
          },
          "address": {
            "score": 100,
            "is_postal_code_match": true
          }
          ..
        }
      ]
    }
    Developer community
    GitHub
    GitHub
    Stack Overflow
    Stack Overflow
    YouTube
    YouTube
    Discord
    Discord