Skip to main content

Simulate Underwriting Decisions

Overview

test with dummy data

Do not enter production data in the Highnote Test environment, which is for exploring features and training. Use only dummy or test data.

Highnote provides simulations for credit application underwriting. This is useful for testing your integration and credit policy, configuring notifications, and simulating the cardholder experience.

This guide provides an overview for simulating underwriting decisions using the Test environment.

Assign a credit line

Your credit policy may allow for dynamic allocation of credit limits on approved applications. You can test various credit line assignments on approved applications using the Test environment.

Simulating credit line assignment requires two steps:

  1. Onboard an account holder and provide a simulation value for the annualRevenue or totalAnnualIncome fields. To onboard an account holder, see Onboard an account holder.
  2. Open an application for the account holder. When the application is approved, the credit line will reflect the simulation value used during onboarding. To open an application, see Open an application.

Simulation values

The following table provides simulation values for simulating credit line assignment:

Account holder typeFieldSimulation valueCredit line assignment
US business account holderannualRevenue$1,000,000$1,000
annualRevenue$10,000,000$10,000
annualRevenue$100,000,000$100,000
US person account holdertotalAnnualIncome$1,000,000$1,000
totalAnnualIncome$10,000,000$10,000
totalAnnualIncome$100,000,000$100,000

Lookup application

After simulating credit line assignment, you can use the following query to lookup the application to verify the credit line:

GetAccountHolderCardProductApplication
Query
query GetAccountHolderCardProductApplication($id: ID!) {
node(id: $id) {
... on AccountHolderCardProductApplication {
id
applicationState {
status
}
cardProduct {
id
name
}
accountHolderSnapshot {
... on USPersonAccountHolderSnapshot {
currentCreditUnderwritingVerification {
__typename
status
decision {
... on UnderwriterPositiveDecision {
__typename
creditLine {
value
currencyCode
}
}
... on UnderwriterAdverseDecision {
__typename
adverseActionReasons {
code
description
}
}
}
decisionDate
}
}
}
updatedAt
createdAt
}
}
}
Variables
{
"id": "APPLICATION_ID"
}
⚠️ Please login to execute queries. Visit the dashboard to authenticate.
Result
{
"data": {
"node": {
"id": "APPLICATION_ID",
"applicationState": {
"status": "APPROVED"
},
"cardProduct": {
"id": "CARD_PRODUCT_ID",
"name": "Test Credit Consumer Charge"
},
"accountHolderSnapshot": {
"currentCreditUnderwritingVerification": {
"__typename": "CreditUnderwritingVerification",
"status": "PASSED",
"decision": {
"__typename": "UnderwriterPositiveDecision",
"creditLine": {
"value": 100000,
"currencyCode": "USD"
}
},
"decisionDate": "2024-06-13T19:59:00.022Z"
}
},
"updatedAt": "2024-01-01T00:00:00.000Z",
"createdAt": "2024-01-01T00:00:00.000Z"
}
},
"extensions": {
"requestId": "REQUEST_ID",
"rateLimit": {
"cost": 7
}
}
}

Deny application

info

While an application may have multiple reasons for being denied, Highnote only returns the primary adverse action reason. This reason must be provided to the account holder.

In the Test environment, opening applications for credit card products lets you test adverse action reasons for DENIED responses. Testing adverse action reasons consists of the following steps:

  1. Create a business or person account holder in your Test environment using an adverse action simulation value.
  2. Open an application for the account holder.

In both the Test and Live environments, a DENIED application may have one or more adverse action reasons, but only the primary reason is returned. For example, if a cardholder's identity cannot be verified (UNABLE_TO_VERIFY_IDENTITY), and they were denied because their credit score is too low (MIN_CREDIT_SCORE), Highnote only returns the primary reason: ``MIN_CREDIT_SCORE`.

Adverse action values

The following table provides adverse action values for simulating the denial of an account holder application:

FieldSimulation valueAdverse action response code
US Business Account Holder
legalBusinessNameFORCE-DECLINEUNABLE_TO_VERIFY_IDENTITY Cannot verify applicant's identity
annualRevenue
$1.00INSUFFICIENT_INCOME Applicant's income is insufficient for the requested credit amount
$2.00DELINQUENT_CREDIT_OBLIGATIONS Applicant has delinquent past or present credit obligations
$5.00INSUFFICIENT_INCOME and DELINQUENT_CREDIT_OBLIGATIONS
$6.00MIN_YEARS_INCORPORATION Applicant does not meet the minimum length of business incorporation
US Person Account Holder
givenNameFORCE-DECLINEUNABLE_TO_VERIFY_IDENTITY Cannot verify applicant's identity
totalAnnualIncome
$1.00INSUFFICIENT_INCOME Applicant's income is insufficient for the requested credit amount
$2.00DELINQUENT_CREDIT_OBLIGATIONS Applicant has delinquent past or present credit obligations
$3.00DECEASED Applicant is reported as deceased
$4.00UNABLE_TO_VERIFY_CREDIT_REFERENCES Applicant does not have a credit history
$5.00INSUFFICIENT_INCOME and DELINQUENT_CREDIT_OBLIGATIONS
$6.00BANKRUPTCY Applicant has a bankruptcy in their credit report
$7.00COLLECTIONS Applicant has a tradeline sent to collections in their credit report
$8.00EXCESSIVE_DEBT_OBLIGATIONS Applicant has excessive debt obligations
$9.00EXCESSIVE_OBLIGATIONS_TO_INCOME Applicant has excessive obligations to their income
$10.00LIMITED_CREDIT_EXPERIENCE Applicant has limited credit experience
$11.00MIN_CREDIT_SCORE Applicant’s credit score is below the acceptable level
$12.00RECENT_CREDIT_ACCOUNTS Applicant has opened too many credit account recently
$13.00RECENT_CREDIT_APPLICATIONS Applicant has too many recent credit inquiries
$14.00HIGH_UTILIZATION Applicant has a high credit utilization ratio
$15.00LIEN_POSITION Applicant does not meet line position requirement
$16.00LENGTH_OF_EMPLOYMENT Applicant’s length of employment is limited or unstable
$17.00LENGTH_OF_RESIDENCE Applicant’s length of time at residence is limited or unstable
$18.00UNACCEPTED_BUSINESS_INDUSTRY We do not offer credit to this industry
$19.00WITHDRAWN Applicant has withdrawn their card product application
$20.00UNABLE_TO_VERIFY_EMPLOYMENT Unable to verify applicant's employment
$21.00INCOMPLETE_IDENTITY_INFORMATION Incomplete identity information of owner
$22.00UNABLE_TO_VERIFY_IDENTITY Cannot verify the applicant's identity
$23.00UNABLE_TO_VERIFY_INCOME Cannot verify applicant’s income

Credit report PII mismatch values

Some Credit Policies have Credit Bureau credit report Personally identifiable information (PII) verification enabled. The following table lists values for simulating outcomes that trigger a manual review due to PII mismatches.

FieldSimulation valuePII codeOutcome
totalAnnualIncome$999996.00DOB_MISMATCHManual review
totalAnnualIncome$999997.00SSN_MISMATCHManual review
totalAnnualIncome$999998.00NAME_MISMATCHManual review
totalAnnualIncome$999999.00ADDRESS_MISMATCHManual review

Lookup application adverse action

info

To automate your integration, use notification event CARD_PRODUCT_APPLICATION_DENIED to send notifications when an application is denied. See Account holder application status.

After simulating denial with adverse action reasons, use the following query to find a card product application:

GetAccountHolderCardProductApplication
Query
query GetAccountHolderCardProductApplication($id: ID!) {
node(id: $id) {
... on AccountHolderCardProductApplication {
id
applicationState {
status
}
cardProduct {
id
name
}
adverseActionReasons {
code
description
}
accountHolderSnapshot {
... on USPersonAccountHolderSnapshot {
accountHolderCurrent {
id
}
billingAddress {
streetAddress
}
currentVerification {
status
reason
adverseActionReasons {
code
description
}
}
dateOfBirth
currentCreditUnderwritingVerification {
__typename
status
decisionResults
reviewReasonDetails {
memo
reviewReason
}
decision {
__typename
... on UnderwriterPositiveDecision {
creditLine {
value
currencyCode
}

creditPlanTerms {
interest {
apr
}
creditPlan {
id
}
}
}
... on UnderwriterAdverseDecision {
adverseActionReasons {
code
description
__typename
}
}
}
decisionDate
}
}
}
applicationHistory {
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
applicationState {
status
}
}
}
}
updatedAt
createdAt
}
}
}
Variables
{
"id": "APPLICATION_ID"
}
⚠️ Please login to execute queries. Visit the dashboard to authenticate.
Result
{
"data": {
"node": {
"id": "ACCOUNT_HOLDER_APPLICATION_ID",
"applicationState": {
"status": "DENIED"
},
"cardProduct": {
"id": "CARD_PRODUCT_ID",
"name": "Test Credit Consumer Charge"
},
"adverseActionReasons": [
{
"code": "DELINQUENT_CREDIT_OBLIGATIONS",
"description": "Delinquent past or present credit obligations"
},
{
"code": "INSUFFICIENT_INCOME",
"description": "Income insufficient for the amount of credit requested"
}
],
"accountHolderSnapshot": {
"accountHolderCurrent": {
"id": "ACCOUNT_HOLDER_ID"
},
"billingAddress": {
"streetAddress": "123 Main Street"
},
"currentVerification": {
"status": "PASSED",
"reason": "PASSED",
"adverseActionReasons": null
},
"dateOfBirth": "1980-09-01",
"currentCreditUnderwritingVerification": {
"__typename": "CreditUnderwritingVerification",
"status": "DENIED",
"decisionResults": [
"NO_LIMIT_SET",
"CURRENT_DEBT_OBLIGATIONS",
"RECENT_CHARGE_OFF",
"RECENT_BANKRUPTCY"
],
"reviewReasonDetails": null,
"decision": {
"__typename": "UnderwriterAdverseDecision",
"adverseActionReasons": [
{
"code": "DELINQUENT_CREDIT_OBLIGATIONS",
"description": "Delinquent past or present credit obligations",
"__typename": "AdverseActionReason"
},
{
"code": "INSUFFICIENT_INCOME",
"description": "Income insufficient for the amount of credit requested",
"__typename": "AdverseActionReason"
}
]
},
"decisionDate": "2022-10-12T23:53:52.860Z"
}
},
"applicationHistory": {
"pageInfo": {
"startCursor": "start-cursor",
"endCursor": "end-cursor",
"hasNextPage": false,
"hasPreviousPage": false
},
"edges": [
{
"cursor": "some-cursor",
"node": {
"applicationState": {
"status": "PENDING"
}
}
},
{
"cursor": "some-cursor",
"node": {
"applicationState": {
"status": "PENDING"
}
}
},
{
"cursor": "some-cursor",
"node": {
"applicationState": {
"status": "PENDING"
}
}
},
{
"cursor": "some-cursor",
"node": {
"applicationState": {
"status": "PENDING"
}
}
}
]
},
"updatedAt": "2023-09-11T04:53:10.834Z",
"createdAt": "2023-09-11T04:52:54.162Z"
}
},
"extensions": {
"requestId": "REQUEST_ID",
"rateLimit": {
"cost": 35
}
}
}

Credit report inquiries

info

If your credit policy requires credit report inquiries, you must collect additional consent from the account holder during the card product application flow.

If you are not using collaborative application decisioning, your card product's credit policy is executed on your behalf by Highnote.

For credit policies that perform credit report inquiries, you must monitor and manage credit report freezes and fraud alerts for your account holders. Refer to the following to resolve credit report freezes and fraud alerts for your account holders:

  • Credit report freezes: The account holder must contact the applicable credit bureau and remove the freeze on their credit report.
  • Credit report fraud alerts: You must contact the account holder and verify their identity.

View credit score reason codes

For credit policies that use a credit bureau's risk score, use the following query to view an application's credit creditScoreReasons:

GetAccountHolderCardProductApplication
Query
query GetAccountHolderCardProductApplication($id: ID!) {
node(id: $id) {
... on AccountHolderCardProductApplication {
id
applicationState {
status
}
cardProduct {
id
name
}
adverseActionReasons {
code
description
}
accountHolderSnapshot {
... on USPersonAccountHolderSnapshot {
accountHolderCurrent {
id
}
accountHolderCurrent {
id
}
billingAddress {
streetAddress
}
currentVerification {
status
reason
adverseActionReasons {
code
description
}
}
dateOfBirth
currentCreditUnderwritingVerification {
__typename
status
decisionResults
reviewReasonDetails {
memo
reviewReason
}
creditScoreDetails {
creditBureau
creditReportPullDate
creditScoreModels {
creditScoreReasons
creditScore
creditScoreType
}
}
decision {
__typename
... on UnderwriterPositiveDecision {
creditLine {
value
currencyCode
}

creditPlanTerms {
interest {
apr
}
creditPlan {
id
}
}
}
... on UnderwriterAdverseDecision {
adverseActionReasons {
code
description
__typename
}
}
}
decisionDate
}
}
}
applicationHistory {
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
applicationState {
status
}
}
}
}
updatedAt
createdAt
}
}
}
Variables
{
"id": "ap_1"
}
⚠️ Please login to execute queries. Visit the dashboard to authenticate.
Result
{
"data": {
"node": {
"id": "ACCOUNT_HOLDER_APPLICATION_ID",
"applicationState": {
"status": "APPROVED"
},
"cardProduct": {
"id": "CARD_PRODUCT_ID",
"name": "Test Credit Consumer Charge"
},
"adverseActionReasons": null,
"accountHolderSnapshot": {
"accountHolderCurrent": {
"id": "ACCOUNT_HOLDER_ID"
},
"billingAddress": {
"streetAddress": "123 Main Street"
},
"currentVerification": {
"status": "PASSED",
"reason": "PASSED",
"adverseActionReasons": null
},
"dateOfBirth": "1980-09-01",
"currentCreditUnderwritingVerification": {
"__typename": "CreditUnderwritingVerification",
"status": "PASSED",
"decisionResults": [],
"creditScoreDetails": {
"creditBureau": "EXPERIAN",
"creditReportPullDate": "2025-10-08T16:44:19.089Z",
"creditScoreModels": [
{
"creditScore": "700",
"creditScoreType": "V4",
"creditScoreReasons": [
"Total of credit limits and loan amounts is too low"
]
}
]
},
"decision": {
"__typename": "UnderwriterAdverseDecision",
"creditLine": {
"value": 100000,
"currencyCode": "USD"
},
"adverseActionReasons": null
},
"decisionDate": "2022-10-12T23:53:52.860Z"
}
},
"applicationHistory": {
"pageInfo": {
"startCursor": "dD0yMDIzLTA5LTExVDA0JTNBNTIlM0E1NC4xNjIwMDAwMDBaJmk9YXBfY2Q2NThmMjBlNDg0NDQwY2E1ZWQ3ZmI4MjM5ZThhY2Q",
"endCursor": "dD0yMDIzLTA5LTExVDA0JTNBNTIlM0E1NC4xNjIwMDAwMDBaJmk9YXBfNDNhNjgxNWIyZDlkNDNjNWIwMjY2YTU5ZDYwMTRkYjQ",
"hasNextPage": false,
"hasPreviousPage": false
},
"edges": [
{
"cursor": "dD0yMDIzLTA5LTExVDA0JTNBNTIlM0E1NC4xNjIwMDAwMDBaJmk9YXBfY2Q2NThmMjBlNDg0NDQwY2E1ZWQ3ZmI4MjM5ZThhY2Q",
"node": {
"applicationState": {
"status": "PENDING"
}
}
},
{
"cursor": "dD0yMDIzLTA5LTExVDA0JTNBNTIlM0E1NC4xNjIwMDAwMDBaJmk9YXBfYjRmN2I0NWZjYjY1NDM4MTlkMjVhYWI1ZjI1YjQ4MGQ",
"node": {
"applicationState": {
"status": "PENDING"
}
}
},
{
"cursor": "dD0yMDIzLTA5LTExVDA0JTNBNTIlM0E1NC4xNjIwMDAwMDBaJmk9YXBfMDUxZDdmZGM4OWI3NDU1MDkwZjc1NGY5MmE1MmQzZmM",
"node": {
"applicationState": {
"status": "PENDING"
}
}
},
{
"cursor": "dD0yMDIzLTA5LTExVDA0JTNBNTIlM0E1NC4xNjIwMDAwMDBaJmk9YXBfNDNhNjgxNWIyZDlkNDNjNWIwMjY2YTU5ZDYwMTRkYjQ",
"node": {
"applicationState": {
"status": "PENDING"
}
}
}
]
},
"updatedAt": "2023-09-11T04:53:10.834Z",
"createdAt": "2023-09-11T04:52:54.162Z"
}
},
"extensions": {
"requestId": "REQUEST_ID",
"rateLimit": {
"cost": 35
}
}
}

Freezes, Flags, and Fraud Alerts

In some scenarios, account holders may have a freeze or fraud alert on their credit report, or be flagged for MLA eligibility. Using the Test environment, you can simulate a credit report freeze, fraud alert, or MLA flag on an application response. Simulating these scenarios requires the following steps:

  1. Onboard an account holder and provide a simulation value (just below) for the phoneNumber field. See Onboard an account holder.

  2. Open an application for the account holder. When the application processes, it creates a fraud alert, credit report freeze, or MLA eligibility flag in the response payload.

Simulation values

The following table provides simulation values for creating an account holder to simulate credit freezes, credit report fraud alerts, and MLA eligibility. The same simulation values apply to both US business and person account holders:

FieldSimulation valueResponse
phoneNumber1111111111CREDIT_REPORT_FREEZE
phoneNumber2222222222CREDIT_REPORT_FRAUD_ALERT
phoneNumber3333333333MLA_ELIGIBLE

Simulate fraud alert

After creating an account holder using the CREDIT_REPORT_FRAUD_ALERT simulation value, use the following mutation to open an application. The fraud alert is noted in the response payload:

createAccountHolderCardProductApplication
Query
mutation createAccountHolderCardProductApplication(
$input: CreateAccountHolderCardProductApplicationInput!
) {
createAccountHolderCardProductApplication(input: $input) {
__typename
... on AccountHolderCardProductApplication {
id
applicationState {
status
}
cardProduct {
id
}
adverseActionReasons {
code
description
}
accountHolderSnapshot {
... on USPersonAccountHolderSnapshot {
accountHolderCurrent {
id
}
name {
givenName
familyName
}
billingAddress {
streetAddress
locality
region
countryCodeAlpha3
postalCode
}
currentVerification {
reason
results {
code
description
}
status
}
}
... on USBusinessAccountHolderSnapshot {
accountHolderCurrent {
id
}
primaryAuthorizedPerson {
currentVerification {
status
}
updatedAt
createdAt
}
businessProfile {
name {
legalBusinessName
doingBusinessAsName
}
updatedAt
createdAt
currentVerification {
status
adverseActionReasons {
code
description
}
}
currentCreditUnderwritingVerification {
__typename
status
reviewReasonDetails {
reviewReason
memo
}
decision {
... on UnderwriterPositiveDecision {
__typename
creditLine {
value
currencyCode
}
creditPlanTerms {
creditPlan {
__typename
id
}
interest {
apr
}
}
}
... on UnderwriterAdverseDecision {
__typename
adverseActionReasons {
code
description
}
}
}
decisionDate
decisionResults
}
ultimateBeneficialOwners {
currentVerification {
status
}
updatedAt
createdAt
}
}
}
}
updatedAt
createdAt
}
... on UserError {
errors {
errorPath
code
description
}
}
}
}
Variables
{
  "input": {
    "accountHolderId": "ACCOUNT_HOLDER_ID",
    "cardProductId": "CARD_PRODUCT_ID",
    "cardHolderAgreementConsent": {
      "primaryAuthorizedPersonId": "PRIMARY_AUTHORIZED_PERSON_ID",
      "consentTimestamp": "2021-12-22T17:10:55.662Z"
    },
    "accountHolderCreditReportPullConsent": {
      "primaryAuthorizedPersonId": "PRIMARY_AUTHORIZED_PERSON_ID",
      "consentTimestamp": "2021-12-22T17:10:55.662Z"
    }
  }
}
⚠️ Please login to execute queries. Visit the dashboard to authenticate.
Result
{
"data": {
"createAccountHolderCardProductApplication": {
"__typename": "AccountHolderCardProductApplication",
"id": "APPLICATION_ID",
"applicationState": {
"status": "PENDING"
},
"cardProduct": {
"id": "CARD_PRODUCT_ID"
},
"accountHolderSnapshot": {
"accountHolderCurrent": {
"id": "ACCOUNT_HOLDER_ID"
},
"name": {
"givenName": "Gerry",
"familyName": "Wolfe"
},
"billingAddress": {
"streetAddress": "123 Main Street",
"locality": "Chicago",
"region": "IL",
"countryCodeAlpha3": "USA",
"postalCode": "60654"
},
"currentVerification": {
"reason": "PENDING",
"results": [],
"status": "PENDING"
},
"currentCreditUnderwritingVerification": {
"__typename": "CreditUnderwritingVerification",
"status": "IN_REVIEW",
"reviewReasonDetails": {
"reviewReason": "AWAITING_FRAUD_ALERT_REVIEW",
"memo": ""
},
"decision": {
"__typename": "UnderwriterPositiveDecision",
"creditLine": {
"value": 15000000,
"currencyCode": "USD"
},
"creditPlanTerms": {
"creditPlan": {
"__typename": "CreditPlan",
"id": "credit-plan-id"
},
"interest": {
"apr": 15.9
}
}
},
"decisionDate": "2022-10-12T23:53:52.860Z",
"decisionResults": [
"CREDIT_REPORT_FRAUD_ALERT"
]
}
},
"updatedAt": "2023-09-22T18:45:10.401Z",
"createdAt": "2023-09-22T18:45:10.186Z"
}
},
"extensions": {
"requestId": "REQUEST_ID",
"rateLimit": {
"cost": 19,
"limit": 100,
"remaining": 78
}
}
}

Simulate credit report freeze

After creating an account holder using the CREDIT_REPORT_FREEZE simulation value, use the following mutation to open an application. The credit report freeze is noted in the response payload:

createAccountHolderCardProductApplication
Query
mutation createAccountHolderCardProductApplication(
$input: CreateAccountHolderCardProductApplicationInput!
) {
createAccountHolderCardProductApplication(input: $input) {
__typename
... on AccountHolderCardProductApplication {
id
applicationState {
status
}
cardProduct {
id
}
adverseActionReasons {
code
description
}
accountHolderSnapshot {
... on USPersonAccountHolderSnapshot {
accountHolderCurrent {
id
}
name {
givenName
familyName
}
billingAddress {
streetAddress
locality
region
countryCodeAlpha3
postalCode
}
currentVerification {
reason
results {
code
description
}
status
}
}
... on USBusinessAccountHolderSnapshot {
accountHolderCurrent {
id
}
primaryAuthorizedPerson {
currentVerification {
status
}
updatedAt
createdAt
}
businessProfile {
name {
legalBusinessName
doingBusinessAsName
}
updatedAt
createdAt
currentVerification {
status
adverseActionReasons {
code
description
}
}
currentCreditUnderwritingVerification {
__typename
status
reviewReasonDetails {
reviewReason
memo
}
decision {
... on UnderwriterPositiveDecision {
__typename
creditLine {
value
currencyCode
}
creditPlanTerms {
creditPlan {
__typename
id
}
interest {
apr
}
}
}
... on UnderwriterAdverseDecision {
__typename
adverseActionReasons {
code
description
}
}
}
decisionDate
decisionResults
}
ultimateBeneficialOwners {
currentVerification {
status
}
updatedAt
createdAt
}
}
}
}
updatedAt
createdAt
}
... on UserError {
errors {
errorPath
code
description
}
}
}
}
Variables
{
  "input": {
    "accountHolderId": "ACCOUNT_HOLDER_ID",
    "cardProductId": "CARD_PRODUCT_ID",
    "cardHolderAgreementConsent": {
      "primaryAuthorizedPersonId": "PRIMARY_AUTHORIZED_PERSON_ID",
      "consentTimestamp": "2021-12-22T17:10:55.662Z"
    },
    "accountHolderCreditReportPullConsent": {
      "primaryAuthorizedPersonId": "PRIMARY_AUTHORIZED_PERSON_ID",
      "consentTimestamp": "2021-12-22T17:10:55.662Z"
    }
  }
}
⚠️ Please login to execute queries. Visit the dashboard to authenticate.
Result
{
"data": {
"createAccountHolderCardProductApplication": {
"__typename": "AccountHolderCardProductApplication",
"id": "APPLICATION_ID",
"applicationState": {
"status": "PENDING"
},
"cardProduct": {
"id": "CARD_PRODUCT_ID"
},
"accountHolderSnapshot": {
"accountHolderCurrent": {
"id": "ACCOUNT_HOLDER_ID"
},
"name": {
"givenName": "Gerry",
"familyName": "Wolfe"
},
"billingAddress": {
"streetAddress": "123 Main Street",
"locality": "Chicago",
"region": "IL",
"countryCodeAlpha3": "USA",
"postalCode": "60654"
},
"currentVerification": {
"reason": "PENDING",
"results": [],
"status": "PENDING"
},
"currentCreditUnderwritingVerification": {
"__typename": "CreditUnderwritingVerification",
"status": "IN_REVIEW",
"reviewReasonDetails": {
"reviewReason": "AWAITING_FRAUD_ALERT_REVIEW",
"memo": ""
},
"decision": {
"__typename": "UnderwriterPositiveDecision",
"creditLine": {
"value": 15000000,
"currencyCode": "USD"
},
"creditPlanTerms": {
"creditPlan": {
"__typename": "CreditPlan",
"id": "credit-plan-id"
},
"interest": {
"apr": 15.9
}
}
},
"decisionDate": "2022-10-12T23:53:52.860Z",
"decisionResults": [
"CREDIT_REPORT_FRAUD_ALERT"
]
}
},
"updatedAt": "2023-09-22T18:45:10.401Z",
"createdAt": "2023-09-22T18:45:10.186Z"
}
},
"extensions": {
"requestId": "REQUEST_ID",
"rateLimit": {
"cost": 19,
"limit": 100,
"remaining": 78
}
}
}

Simulate MLA eligibility

After creating an account holder using the MLA_ELIGIBLE simulation value, use the following mutation to open an application.

Once a financial account is issued from the application, you can lookup the military status on the account. The MLA eligibility is noted in the response payload:

GetAccountHolderCardProductApplication
Query
query GetAccountHolderCardProductApplication($id: ID!) {
node(id: $id) {
... on AccountHolderCardProductApplication {
id
applicationState {
status
}
cardProduct {
id
name
}
adverseActionReasons {
code
description
}
applicationConfiguration {
applicantBillingCycleOverride {
billingCycleType
}
}
accountHolderSnapshot {
... on USPersonAccountHolderSnapshot {
accountHolderCurrent {
id
}
accountHolderCurrent {
id
}
billingAddress {
streetAddress
}
currentVerification {
status
reason
adverseActionReasons {
code
description
}
}
dateOfBirth
currentCreditUnderwritingVerification {
__typename
status
decisionResults
reviewReasonDetails {
memo
reviewReason
}
creditScoreDetails {
creditBureau
creditReportPullDate
creditScoreModels {
creditScore
creditScoreType
creditScoreReasons
}
}
decision {
__typename
... on UnderwriterPositiveDecision {
creditLine {
value
currencyCode
}

creditPlanTerms {
interest {
apr
}
creditPlan {
id
}
}
}
... on UnderwriterAdverseDecision {
adverseActionReasons {
code
description
__typename
}
}
}
decisionDate
}
}
}
applicationHistory {
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
applicationState {
status
}
}
}
}
updatedAt
createdAt
}
}
}
Variables
{
"id": "ap_1"
}
⚠️ Please login to execute queries. Visit the dashboard to authenticate.
Result
{
"data": {
"node": {
"id": "ap_22pcgmcaf52992ed97400e9e0edc2d4dfaf26b",
"applicationState": {
"status": "PENDING"
},
"cardProduct": {
"id": "pd_c60a8377fd0041cebaf26a89bbd9dfd8",
"name": "Test Credit Consumer Revolving"
},
"adverseActionReasons": null,
"applicationConfiguration": null,
"accountHolderSnapshot": {
"accountHolderCurrent": {
"id": "ps_ah01f4f4873da4684bbb857425e9650eecfb"
},
"billingAddress": {
"streetAddress": "123 Main Street"
},
"currentVerification": {
"status": "PASSED",
"reason": "PASSED",
"adverseActionReasons": null
},
"dateOfBirth": "1980-09-01",
"currentCreditUnderwritingVerification": {
"__typename": "CreditUnderwritingVerification",
"status": "IN_REVIEW",
"decisionResults": [
"MLA_ELIGIBLE",
"CREDIT_REPORT_FRAUD_ALERT"
],
"reviewReasonDetails": {
"memo": "",
"reviewReason": "AWAITING_FRAUD_ALERT_REVIEW"
},
"creditScoreDetails": {
"creditBureau": null,
"creditReportPullDate": "2025-10-08T16:44:19.089Z",
"creditScoreModels": []
},
"decision": {
"__typename": "UnderwriterPositiveDecision",
"creditLine": {
"value": 100000,
"currencyCode": "USD"
},
"creditPlanTerms": [
{
"interest": {
"apr": 10
},
"creditPlan": {
"id": "crppn_9836d4bc361748a8a9d2f70e0e8de3f7"
}
}
]
},
"decisionDate": "2025-10-08T16:44:19.089Z"
}
},
"applicationHistory": {
"pageInfo": {
"startCursor": "dD0yMDI1LTEwLTA4VDE2JTNBNDQlM0ExMS41NDkwMDAwMDBaJmk9YXBfMDdhZWYxY2QwZDdlNDdhYzk1MGFiOTkxM2I1ZDY4MDE",
"endCursor": "dD0yMDI1LTEwLTA4VDE2JTNBNDQlM0ExMS41NDkwMDAwMDBaJmk9YXBfMDdhZWYxY2QwZDdlNDdhYzk1MGFiOTkxM2I1ZDY4MDE",
"hasNextPage": false,
"hasPreviousPage": false
},
"edges": [
{
"cursor": "dD0yMDI1LTEwLTA4VDE2JTNBNDQlM0ExMS41NDkwMDAwMDBaJmk9YXBfMDdhZWYxY2QwZDdlNDdhYzk1MGFiOTkxM2I1ZDY4MDE",
"node": {
"applicationState": {
"status": "PENDING"
}
}
}
]
},
"updatedAt": "2025-10-08T16:44:15.355Z",
"createdAt": "2025-10-08T16:44:11.549Z"
}
},
"extensions": {
"requestId": "c93c1754-00e7-9745-ad36-785cfa6b568d",
"rateLimit": {
"cost": 43,
"limit": 2500,
"remaining": 2456,
"asOf": "2025-10-08T16:44:23.095Z",
"complexity": {
"limit": 2500,
"remaining": 2456,
"cost": 43
},
"count": {
"limit": 100,
"remaining": 98,
"cost": 1
}
}
}
}

Managing fraud alerts

info

Memos are now global. As a best practice, add context to your memos so they make sense when queried on different parts of an application.

When a credit report inquiry returns a CREDIT_REPORT_FRAUD_ALERT, indicating the the account holder may have a freeze on their credit report, you can use the following set of queries to:

In the Highnote API, the memo field is now supported by a globalNote object that can be added and viewed anywhere across a card product application, not just the entity to which is was applied. Global notes are stored centrally and encrypted at rest. With this added flexibility, consider adding context to your notes so that when you run a query on an unrelated part of the application, the note makes sense.

View fraud alert

Use the following query to lookup an application. The response's status and memo fields include account holder information that you can use to reach out to and verify the identity of the account holder:

GetAccountHolderCardProductApplication
Query
query GetAccountHolderCardProductApplication($id: ID!) {
node(id: $id) {
... on AccountHolderCardProductApplication {
id
applicationState {
status
}
cardProduct {
id
name
}
adverseActionReasons {
code
description
}
globalNotes {
... on GlobalNoteConnection {
edges {
node {
primaryEntity {
__typename
... on AccountHolderCardProductApplication {
id
}
}
createdBy {
... on User {
id
}
}
createdAt
message
}
}
}
}
accountHolderSnapshot {
... on USPersonAccountHolderSnapshot {
accountHolderCurrent {
id
}
accountHolderCurrent {
id
}
billingAddress {
streetAddress
}
currentVerification {
status
reason
adverseActionReasons {
code
description
}
}
dateOfBirth
currentCreditUnderwritingVerification {
__typename
status
decisionResults
reviewReasonDetails {
memo
reviewReason
}
decision {
__typename
... on UnderwriterPositiveDecision {
creditLine {
value
currencyCode
}
creditPlanTerms {
interest {
apr
}
creditPlan {
id
}
}
}
... on UnderwriterAdverseDecision {
adverseActionReasons {
code
description
__typename
}
}
}
decisionDate
}
}
}
applicationHistory {
pageInfo {
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
applicationState {
status
}
}
}
}
updatedAt
createdAt
}
}
}
Variables
{
"id": "APPLICATION_ID"
}
⚠️ Please login to execute queries. Visit the dashboard to authenticate.
Result
{
"data": {
"node": {
"id": "ACCOUNT_HOLDER_APPLICATION_ID",
"applicationState": {
"status": "DENIED"
},
"cardProduct": {
"id": "CARD_PRODUCT_ID",
"name": "Test Credit Consumer Charge"
},
"adverseActionReasons": [
{
"code": "DELINQUENT_CREDIT_OBLIGATIONS",
"description": "Delinquent past or present credit obligations"
},
{
"code": "INSUFFICIENT_INCOME",
"description": "Income insufficient for the amount of credit requested"
}
],
"accountHolderSnapshot": {
"accountHolderCurrent": {
"id": "ACCOUNT_HOLDER_ID"
},
"billingAddress": {
"streetAddress": "123 Main Street"
},
"currentVerification": {
"status": "PASSED",
"reason": "PASSED",
"adverseActionReasons": null
},
"dateOfBirth": "1980-09-01",
"currentCreditUnderwritingVerification": {
"__typename": "CreditUnderwritingVerification",
"status": "DENIED",
"decisionResults": [
"NO_LIMIT_SET",
"CURRENT_DEBT_OBLIGATIONS",
"RECENT_CHARGE_OFF",
"RECENT_BANKRUPTCY"
],
"reviewReasonDetails": null,
"decision": {
"__typename": "UnderwriterAdverseDecision",
"adverseActionReasons": [
{
"code": "DELINQUENT_CREDIT_OBLIGATIONS",
"description": "Delinquent past or present credit obligations",
"__typename": "AdverseActionReason"
},
{
"code": "INSUFFICIENT_INCOME",
"description": "Income insufficient for the amount of credit requested",
"__typename": "AdverseActionReason"
}
]
},
"decisionDate": "2022-10-12T23:53:52.860Z"
}
},
"applicationHistory": {
"pageInfo": {
"startCursor": "start-cursor",
"endCursor": "end-cursor",
"hasNextPage": false,
"hasPreviousPage": false
},
"edges": [
{
"cursor": "some-cursor",
"node": {
"applicationState": {
"status": "PENDING"
}
}
},
{
"cursor": "some-cursor",
"node": {
"applicationState": {
"status": "PENDING"
}
}
},
{
"cursor": "some-cursor",
"node": {
"applicationState": {
"status": "PENDING"
}
}
},
{
"cursor": "some-cursor",
"node": {
"applicationState": {
"status": "PENDING"
}
}
}
]
},
"updatedAt": "2023-09-11T04:53:10.834Z",
"createdAt": "2023-09-11T04:52:54.162Z"
}
},
"extensions": {
"requestId": "REQUEST_ID",
"rateLimit": {
"cost": 35
}
}
}

Verify fraud alert

If an account holder has a fraud alert on their credit report, you must contact the account holder to verify that their name, date of birth, and address match that on the application. If the account holder can't verify the information provided on their application, the application will be denied.

Use the following mutation to verify an account holder for a fraud alert:

confirmVerificationOfCreditProductApplicationForFraudAlert
Query
mutation confirmVerificationOfCreditProductApplicationForFraudAlert(
$input: ConfirmVerificationOfCreditProductApplicationForFraudAlertInput!
) {
confirmVerificationOfCreditProductApplicationForFraudAlert(input: $input) {
... on AccountHolderCardProductApplication {
__typename
id
applicationState {
status
}
cardProduct {
id
}
globalNotes {
... on GlobalNoteConnection {
edges {
node {
primaryEntity {
__typename
... on AccountHolderCardProductApplication {
id
}
}
createdBy {
... on User {
id
}
}
createdAt
message
}
}
}
}
createdAt
updatedAt
}
}
}
Variables
{
  "input": {
    "applicationId": "ACCOUNT_HOLDER_APPLICATION_ID",
    "verificationResult": {
      "accountHolderInitiatedApplication": true,
      "name": true,
      "dateOfBirth": true,
      "address": true
    },
    "memo": "Fraud note"
  }
}
⚠️ Please login to execute queries. Visit the dashboard to authenticate.
Result
{
"data": {
"confirmVerificationOfCreditProductApplicationForFraudAlert": {
"__typename": "AccountHolderCardProductApplication",
"id": "ap_22pcgm57030a3e272d42e4bde2af68030537bc",
"applicationState": {
"status": "PENDING"
},
"cardProduct": {
"id": "pd_4b6dc5eed2224f339cd19f3cf2e266e2"
},
"creditReportFraudAlertVerificationResult": {
"accountHolderInitiatedApplication": true,
"name": true,
"dateOfBirth": true,
"address": true
},
"globalNotes": {
"edges": [
{
"node": {
"primaryEntity": {
"__typename": "AccountHolderCardProductApplication",
"id": "ap_22pcgm57030a3e272d42e4bde2af68030537bc"
},
"createdBy": {
"id": "ps_prcgm57030a3e272d42e4bde2af68030537bc"
},
"createdAt": "2025-02-14T18:25:59.684Z",
"message": "Fraud note"
}
}
]
},
"updatedAt": "2024-04-10T21:41:09.137Z",
"createdAt": "2024-04-10T21:37:56.455Z"
}
},
"extensions": {
"requestId": "5951d35e-0316-9e78-9acc-9aa2dbbbf1c0",
"rateLimit": {
"cost": 19,
"limit": 60060,
"remaining": 60004
}
}
}

Confirm unfrozen credit report

If the account holder has a freeze on their credit report, you must contact the account holder and instruct them to remove the freeze from their report. Once the account holder has confirmed they removed a freeze, you can use the following mutation to confirm and re-run the application decisioning workflow:

confirmCreditReportUnfrozen
Query
mutation confirmCreditReportUnfrozen(
$input: ConfirmCreditReportUnfrozenInput!
) {
confirmCreditReportUnfrozen(input: $input) {
__typename
... on UserError {
errors {
errorPath
code
description
}
}
... on AccountHolderCardProductApplication {
id
applicationState {
status
}
cardProduct {
id
}
globalNotes {
... on GlobalNoteConnection {
edges {
node {
primaryEntity {
__typename
... on AccountHolderCardProductApplication {
id
}
}
createdBy {
... on User {
id
}
}
createdAt
message
}
}
}
}
updatedAt
createdAt
}
}
}
Variables
{
  "input": {
    "applicationId": "ACCOUNT_HOLDER_APPLICATION_ID",
    "subscriberNote": "credit report confirmed unfrozen"
  }
}
⚠️ Please login to execute queries. Visit the dashboard to authenticate.
Result
{
"data": {
"confirmCreditReportUnfrozen": {
"__typename": "AccountHolderCardProductApplication",
"id": "ap_22pcgm57030a3e272d42e4bde2af68030537bc",
"applicationState": {
"status": "PENDING"
},
"cardProduct": {
"id": "pd_4b6dc5eed2224f339cd19f3cf2e266e2"
},
"globalNotes": {
"edges": [
{
"node": {
"primaryEntity": {
"__typename": "AccountHolderCardProductApplication",
"id": "ap_22pcgma9eb0efe9ecd4bb68216c6905a3bdf02"
},
"createdBy": {
"id": "ps_prcgm57030a3e272d42e4bde2af68030537bc"
},
"createdAt": "2025-02-14T18:25:59.684Z",
"message": "credit report confirmed unfrozen"
}
}
]
},
"updatedAt": "2024-04-10T21:41:09.137Z",
"createdAt": "2024-04-10T21:37:56.455Z"
}
},
"extensions": {
"requestId": "5951d35e-0316-9e78-9acc-9aa2dbbbf1c0",
"rateLimit": {
"cost": 19,
"limit": 60060,
"remaining": 60004
}
}
}