Skip to main content
Reason codes are the detailed signals that explain exactly why a customer passed or failed identity verification. Each code represents a specific finding—from “email address is over 2 years old” (I553) to “multiple identities associated with SSN” (R203)—giving you granular insight into verification decisions and enabling intelligent retry logic.

Understanding Code Categories

Reason codes follow a consistent naming pattern that indicates their type and severity:
PrefixCategoryMeaningAction Required
IInformationalPositive or neutral signalsNone - supports verification
RRisk IndicatorPotential fraud or discrepancyReview or additional verification
BIBusiness InfoBusiness-specific positive signalsNone - supports business verification
BRBusiness RiskBusiness-specific risk indicatorsReview business documentation
Focus on R codes first—these indicate the specific issues preventing verification. Use I codes to understand what IS working correctly.

Where Codes Appear

Reason codes are returned in the codes array within each breakdown module:
const review = await straddle.customers.review(customerId);

// Each module has its own codes array
const fraudCodes = review.identity_details.breakdown.fraud.codes;
const emailCodes = review.identity_details.breakdown.email.codes;
const phoneCodes = review.identity_details.breakdown.phone.codes;

// Example response
console.log(fraudCodes);
// ["I1004", "I520", "R203"]  
//  ↑        ↑       ↑
//  Match 4+ Consortium | Email low risk | Multiple SSNs

Critical Risk Codes

These codes typically result in immediate rejection or review:

Identity Fraud Indicators

CodeDescriptionSuggested Action
R201Invalid SSN formatVerify SSN and re-submit
R203Multiple identities with SSNHigh fraud risk - manual review
R298Manipulated synthetic identityReject - synthetic fraud pattern
R299Fabricated synthetic identityReject - synthetic fraud pattern

Verification Failures

CodeDescriptionSuggested Action
R551Invalid email addressRequest valid email
R603Invalid phone numberUpdate phone number
R703Address doesn’t existVerify address format
R901SSN cannot be resolvedAdditional documentation needed

Watchlist Hits

CodeDescriptionSuggested Action
R180OFAC SDN list matchCompliance review required
R184Politically exposed personEnhanced due diligence
R185Adverse mediaInvestigation required

Implementation Patterns

Automated Response Logic

async function handleReasonCodes(customerId) {
  const review = await straddle.customers.review(customerId);
  const allCodes = [];
  
  // Collect all codes from all modules
  Object.values(review.identity_details.breakdown).forEach(module => {
    if (module.codes) allCodes.push(...module.codes);
  });
  
  // Priority 1: Check for blocking codes
  const blockingCodes = ['R180', 'R184', 'R298', 'R299'];
  if (allCodes.some(code => blockingCodes.includes(code))) {
    return { action: 'reject', reason: 'High risk or compliance issue' };
  }
  
  // Priority 2: Check for fixable issues
  const fixableIssues = {
    'R201': 'Invalid SSN - please verify',
    'R551': 'Invalid email - please update',
    'R603': 'Invalid phone - please update',
    'R703': 'Address not found - please verify'
  };
  
  for (const [code, message] of Object.entries(fixableIssues)) {
    if (allCodes.includes(code)) {
      return { action: 'request_update', message, field: getFieldFromCode(code) };
    }
  }
  
  // Priority 3: Check risk threshold
  const riskCodes = allCodes.filter(code => code.startsWith('R'));
  if (riskCodes.length > 5) {
    return { action: 'manual_review', codes: riskCodes };
  }
  
  // All clear
  return { action: 'approve' };
}

User-Friendly Error Messages

const CODE_MESSAGES = {
  // Invalid input
  'R201': 'The Social Security Number appears to be invalid. Please double-check and re-enter.',
  'R551': 'We couldn\'t verify this email address. Please use your primary email.',
  'R603': 'This phone number couldn\'t be verified. Please ensure it\'s a valid US number.',
  'R703': 'We couldn\'t find this address. Please verify the street address and ZIP code.',
  
  // Identity issues  
  'R203': 'We need additional information to verify your identity. Please contact support.',
  'R298': 'We\'re unable to verify your identity at this time. Please contact support.',
  
  // Watchlist
  'R180': 'Additional review required. Our compliance team will contact you within 24 hours.',
};

function getUserMessage(codes) {
  for (const code of codes) {
    if (CODE_MESSAGES[code]) {
      return CODE_MESSAGES[code];
    }
  }
  return 'We need to review your application. You\'ll hear from us soon.';
}

Best Practices

Prioritize Response

  • Handle blocking codes first (watchlist, synthetic)
  • Then fixable issues (invalid input)
  • Finally risk assessment (velocity, correlation)
  • Always provide actionable feedback

Track Patterns

  • Monitor most frequent codes
  • Identify false positive patterns
  • Optimize data collection based on failures
  • Adjust risk thresholds over time

Handle Gracefully

  • Prepare for new codes
  • Group related codes for handling
  • Cache code lookups for performance
  • Log all codes for analysis

User Experience

  • Translate codes to clear messages
  • Specify exactly what needs fixing
  • Avoid exposing raw codes to users
  • Provide support paths for complex issues

Common Code Patterns

Successful Verification

Typically includes these informational codes:
  • I1004 or I1005: Found in consortium data
  • I520, I620, I720: Low risk scores
  • I556, I618, I708: PII elements resolved

Needs Manual Review

Often includes these combinations:
  • I1001 + multiple R codes: New identity with risks
  • R1001-R1009: Velocity or inconsistency issues
  • R160-R166: Suspect but not confirmed fraud

Auto-Reject Patterns

  • R298 or R299: Synthetic identity
  • R180-R185: Watchlist matches
  • Multiple R140-R146: Negative tags

Reason Codes Documentation

Consortium and Social Verification

CodeDescription
I1001Identity not found within Consortium Institutions
I1002National ID was not provided and Straddle was unable to prefill National ID for the given identity
I1003National ID was not provided and Straddle was able to prefill National ID for the given identity
I1004Matched identity onto at least 1 other Consortium Institution
I1005Matched identity onto at least 4 other Consortium Institutions
I121Social networks match
I127Online sources represent a broader digital footprint than just social networks
CodeDescription
I140Email address tagged as positive
I141Email domain tagged as positive
I142Phone number tagged as positive
I143IP Address tagged as positive
I144Full name tagged as positive
I145SSN tagged as positive
I146Device tagged as positive
CodeDescription
I202The input SSN is an ITIN
I203SSN was first seen in credit header records between 5 to 10 years ago
I204SSN is first seen in credit header records more than 10 years ago
I205SSN is found to be inquired once every 2 to 3 months
I206SSN is found to be inquired once every 3 to 6 months
I207SSN is found to be inquired once every 6 to 12 months
I208SSN is found to be inquired less than once a year
I209Input full name and DOB combination found in property records
I210Input full name and DOB combination found in education/university records
I211Input full name and DOB matches a driver’s license record

Account Verification Codes

Account Correlation

CodeDescription
I301Account is correlated with the first name
I302Account is conditionally correlated with the first name
I304Account is correlated with the last name
I305Account is conditionally correlated with the last name
I307Account is correlated with the business name
I308Account is conditionally correlated with the business name
I310Account is correlated with the DOB
I311Account is conditionally correlated with the DOB
I313Account is correlated with the SSN
I314Account is conditionally correlated with the SSN
I316Account is correlated with the address
I317Account is conditionally correlated with the address
I319Account is correlated with the phone
I320Account is conditionally correlated with the phone
CodeDescription
I325SSN derived from ID Graph
I326DOB derived from ID Graph
I328Account has been seen in the last 15 days
I329Account has been seen between 15 and 30 days
I330Account has been seen between 30 and 45 days
I331Account has been seen between 45 and 60 days
I332Account has been seen between 60 and 75 days
I333Account has been seen between 75 and 90 days
I334Account has been seen between 90 and 120 days
I335Account has been seen between 120 and 150 days
I336Account has been seen between 150 and 180 days
I337Account has been seen between 180 and 210 days
I338Account has been seen between 210 and 240 days
I339Account has been seen between 240 and 270 days
I341Account has been seen between 270 and 300 days
I342Account has been seen between 300 and 365 days
I343Account has been seen between 365 and 730 days
I344Account has been seen over 730 days ago

Device Verification Codes

Device Information

CodeDescription
I401Device token previously encountered
I402Multiple users associated with device
I403Identity may not be primary device user
I404Identity associated with primary device owner
I405Device token previously associated with phone number
I406Device token previously associated with email address
I407Device token previously associated with first name
I408Device token previously associated with last name
I409Device token not encountered within the past 5 days
I410Device session is associated with more than 2 phone numbers
I411Device session is associated with more than 2 emails
I412Device session is associated with more than 2 first names
I413Device session is associated with more than 2 last names
I414Session connected using a proxy
I415Session IP located more than 100 miles from the address
I416Session IP originates from within the United States
I417Session IP originates from outside the United States
I419Session connected using a residential IP address
I420Session connected using a commercial IP address
I421Session connected using a mobile IP address
I423Device is a physical device
I424Device type is a desktop or laptop computer
I425Device type is mobile, tablet, or wearable
I428Mobile network associated with the device is a non-US carrier

Email Verification Codes

Email Risk and Correlation

CodeDescription
I520Email risk score represents low risk
I550Email address is more than 180 days and less than 1 year old
I551Email address is more than 1 year and less than 2 years old
I553Email address is more than 2 years old
I554Exact match between email and first name
I555Email domain is more than 180 days old
I556Email address can be resolved to the individual
I557Email is correlated with the first name
I558Email is correlated with the last name
I559Exact match between email and last name
I560Email domain represents a Fortune 500 company
I561Email domain represents a US college or university
I562Email username contains ZIP code of current application
I563Email domain contains a special use domain (RFC, arpa, example, invalid, local, onion, etc.)
I564Special characters found in email alias
I565Email username contains a role-level alias (support, info, admin, etc.)
I566Email provider is found in public web sources
I567Email username contains five or more alphabetic sections
I568Email handle contains a name
I569Email handle contains input first name
I570Email handle contains input surname
I571Email top-level domain represents a non-US country
I572Email subdomain possibly a typo of a popular email domain
I573Email top-level domain possibly a typo of a popular TLD
I575Provided email is a possible filler email
I576Email handle aligns with the pattern of valid email addresses

Phone Verification Codes

Phone Risk and Correlation

CodeDescription
I601Phone number is a landline
I602Phone number is a mobile line
I605Phone number is a premium-rate line
I608Phone number is commercial or dual-purpose
I609Phone number is consumer or residential
I610Phone number is correlated with the address
I611Phone number is associated with a major US carrier
I614Phone number has been in service more than 365 days
I616Phone number is associated with a Mobile Virtual Network Operator
I618Phone number can be resolved to the individual
I620Phone risk score represents low risk
I621Phone is correlated with the first name
I622Phone is correlated with the last name
I623Exact match between phone and first name
I624Exact match between phone and last name
I625Phone number has never been ported
I626Phone number was ported at least 60 days ago
I630Phone subscriber has been correlated with the input phone number for more than 365 days
CodeDescription
I631IP address is provided by a mobile carrier
I632IP connection is consumer
I633IP connection is business
I634Proxy is an educational institution
I635Proxy is registered to a corporation
I636IP address originates from the US or US territories
I637Email address is associated with the input phone number
I638IP proxy originates from Google or Apple consumer privacy networks
I639IP address is a consumer privacy network proxy
I640Phone number might have been mistyped
I641Presented identity shows high overall correlation in Straddle’s network

Address Verification Codes

Address Risk and Correlation

CodeDescription
I704Address is multi-unit or high-rise
I705Address is single unit
I706Address is an accredited college or university
I707Address is residential
I708Address can be resolved to the individual
I709Address is correlated with the first name
I710Address is correlated with the last name
I711Address is confirmed as deliverable
I712Address is confirmed deliverable by dropping secondary information
I713Address is confirmed deliverable but was missing secondary information
I714Address is valid but doesn’t currently receive USPS street delivery
I715Address is correlated with a past address
I716Address is a Small Office/Home Office (SOHO)
I718Exact match between address and first name
I719Exact match between address and last name
I720Address risk score represents low risk
I721Email address is correlated with the input physical address
I722Email address is partially correlated with the input physical address

General Information Codes

General Information

CodeDescription
I903Address was not provided at input
I904SSN/ITIN was not provided at input
I905SSN/ITIN provided at input contained only 4 digits
I906DOB was not provided at input
I907SSN is issued to a non-US citizen
I908Address is correlated with a military ZIP code
I909First name and last name are possibly reversed
I910Address is correlated with a past address
I911Address is a PO Box
I912SSN was randomly issued by the SSA
I913SSN has not been reported as deceased
I914Identity has not been reported as deceased
I917Full name and address can be resolved to the individual but the SSN/ITIN is not
I919Full name, address, and SSN/ITIN can be resolved to the individual
I920Emerging identity indicator
I921Address is an accredited college or university
I922Mobile number was not provided at input
I923Email address was not provided at input
I930Name and DOB match a notable personality or celebrity
I931First name or last name may refer to a non-person entity
I932Name and DOB match a notable individual in the sports industry
I933Multi-party application detected
I975Non-MLA covered borrower status
I998Name, SSN, and DOB correlation verified by SSA
I999Identity decease unverified by SSA

Risk Codes

Identity Risk Codes

CodeDescription
R1001Found at least 2 distinct DOBs associated with the given identity
R1002Found at least 4 distinct first names associated with the given identity
R1003Found at least 4 distinct last names associated with the given identity
R1004Found at least 3 distinct phone numbers associated with the given identity
R1005Found at least 3 distinct emails associated with the given identity
R1006Found at least 1 application marked as fraudulent associated with the given identity
R1007Found at least 1 application marked as third-party fraud associated with the given identity
R1008Found at least 2 applications within 30 days of each other associated with the given identity
R1009Found at least 2 applications within 90 days of each other associated with the given identity
CodeDescription
R1010Found at least 1 account marked as fraudulent associated with the given identity
R1011Found at least 1 account marked as suspected third-party fraud associated with the given identity
R1012Found at least 1 account marked as suspected first-party fraud associated with the given identity
R1013Found at least 1 account marked as other fraud associated with the given identity
R1014Found at least 1 account marked as delinquency associated with the given identity
R1015Found at least 1 closed account associated with the given identity
R1016Found at least 5 closed accounts associated with the given identity
R1017Found at least 2 accounts opened within 30 days of each other associated with the given identity
R1018Found at least 2 accounts opened within 90 days of each other associated with the given identity
R1019Found at least 2 accounts closed within 30 days of each other associated with the given identity
R1020Found at least 2 accounts reported as fraud within 30 days of each other associated with the given identity
R1021Found at least 1 account closed within 30 days from opening associated with the given identity
R1022Found at least 1 account reported as fraud within 30 days from opening associated with the given identity
CodeDescription
R1023Found at least 1 ACH transaction reported as fraud associated with the given identity
R1024Found at least 1 ACH transaction reported as suspected third-party fraud associated with the given identity
R1025Found at least 1 ACH transaction reported as suspected first-party fraud associated with the given identity
R1026Found at least 1 ACH transaction reported as other fraud associated with the given identity
R1027Found at least 1 ACH transaction reported as delinquency associated with the given identity
R1028Found at least 10 returned ACH transactions associated with the given identity
R1029Found at least 1 returned ACH transaction with return category fraudulent behavior associated with the given identity
R1030Found at least 1 ACH transaction reported as fraud within 7 days of another associated with the given identity
R1031Found at least 1 ACH transaction reported as fraud committed within 7 days from account opening associated with the given identity
R1032Found at least 1 ACH transaction reported as fraud committed within 30 days from account opening associated with the given identity
CodeDescription
R110Alert list email address match
R111Alert list SSN/ITIN match
R113Alert list phone number match
CodeDescription
R140Email address tagged as negative
R141Email domain tagged as negative
R142Phone number tagged as negative
R143IP Address tagged as negative
R144Full name tagged as negative
R145SSN tagged as negative
R146Device tagged as negative
R160Email address tagged as suspect
R161Email domain tagged as suspect
R162Phone number tagged as suspect
R163IP Address tagged as suspect
R164Full name tagged as suspect
R165SSN tagged as suspect
R166Device tagged as suspect
CodeDescription
R171Input mobile number originates from an OFAC sanctioned country
R172Input email likely originates from an OFAC sanctioned country
R173Input country or document is from an OFAC sanctioned country
R180Watchlist search returned at least one hit on OFAC SDN list
R181Watchlist search returned at least one hit on OFAC Non-SDN lists
R182Watchlist search returned at least one hit on a sanction list excluding any OFAC hits
R183Watchlist search returned at least one hit on an enforcement list excluding any OFAC hits
R184Watchlist search returned at least one hit on a politically exposed person
R185Watchlist search returned at least one entity with adverse media articles
R186Global Watchlist sources selected are correlated with the input identifiers
R189Watchlist search returned at least one entity on any custom watchlist that matched the input
CodeDescription
R201The input SSN is invalid
R202The input SSN is reported as deceased
R203Multiple identities associated with input SSN
R204Entered SSN associated with multiple last names
R205Entered SSN associated with different name and address
R206The input SSN was issued prior to the input date-of-birth
R207SSN/ITIN is associated with multiple DOBs
R208SSN/ITIN is associated with multiple addresses
R209No former addresses associated with the SSN
R210Frequency of SSN in Straddle records is unusually high
R211SSN seen in frozen credit files
R212The input last name is not associated with the input SSN
R213Name does not correlate with the name for the resolved public record individual
R214SSN/ITIN cannot be resolved to the individual
R215First name does not match SSN
R216Unable to verify date-of-birth
R217SSN was randomly issued by the SSA
R218The input SSN is not the primary SSN for the input identity
R219The input SSN is not found in public records
R220Issue date for the provided SSN could not be resolved
R221SSN associated with input phone number could not be confirmed
R222Input SSN could not be confirmed
R223Input SSN did not match any of the SSNs associated with the input phone number in the last two years
R2244 or more different SSNs have been found to be inquired against the input phone
R2254 or more different first names have been found to be inquired against the input SSN
R226Multiple phones are marked current for the input SSN
R227SSN is found to be inquired at an unusually high frequency (more than once a month)
R228Only 1 component of the input DOB matches the best matched entity
R229Only 2 components of the input DOB matches the best matched entity
R230SSN was first seen in credit header records within the last 1 year
R231SSN was first seen in credit header records between 1 to 3 years ago
R232SSN was first seen in credit header records between 3 to 5 years ago
R233No SSN found in credit header records for the given full name and DOB
R234SSNs in credit header data associated with full name and DOB differ from input SSN by 1 digit
R235Input full name could not be fuzzy-matched with full names associated with SSN in header and inquiry records
R236Input DOB month does not match any DOB month found on inquiry records
R237Input SSN is not an exact match to the SSNs associated with the given full name and DOB
R238SSNs in credit header data associated with full name and DOB differ from input SSN by up to 2 digits
R239SSNs in credit header data associated with full name and DOB differ from input SSN by up to 3 digits
R240Input SSN was issued more than 2 years after input birth year
CodeDescription
R298Identity resembles a manipulated synthetic identity
R299Identity resembles a fabricated synthetic identity
CodeDescription
R350DOB indicates individual is less than 16 or more than 100 years old
R351DOB indicates COPPA review
R352DOB indicates an age between 13 and 15
R353DOB indicates an age between 16 and 17
R355DOB indicates an improbable age
I