Eligibility Compass V1 API Reference
API Overview
Introduction
This document provides information on how to interact with the Nova Credit API to obtain Eligibility Compass reports.
The best way to get the report using Nova Credit's API is to have your applicants use NovaConnect, an easy-to-use and secure JavaScript module. Visit our Quickstart Guide for all details on how to get Nova Credit API credentials and integrate NovaConnect into your app or website today.
Framework and Protocol
The Nova Credit API is organized around REST. It uses resource-oriented URLs, HTTP response codes, and native HTTP functionality such as authentication and verbs. Note that our APIs are served over HTTPS; HTTP is not supported in production.
Delivery Formats
JSON is the default response format.
Endpoints
Our API host is api.novacredit.com. (See Quickstart Guide for environment information.)
| Endpoint | Description |
|---|---|
GET /connect/accesstoken | Retrieves an access token for an applicant's report |
GET /connect/status | Retrieves the status of an applicant's report |
These endpoints are used to retrieve information about an applicant's report, and are prefixed with /connect/affordable-housing-verification/v1/:
| Endpoint | Description |
|---|---|
GET <prefix>/json | Retrieves an applicant's report in JSON form |
GET <prefix>/files | Retrieves a list of files associated with an application, even if there is no report |
GET <prefix>/files/<filepath> | Retrieves a file associated with an applicant's report |
Visit our Quickstart Guide to see details on how to call these endpoints with examples.
Data Types & Formats
Data Types
| Type | Description |
|---|---|
| String | Extended character set, numbers and punctuation symbols. This includes non-ASCII language-specific characters such as ß, à, ç, é, and more (all encoded as utf8). |
| Integer | A rounded numerical value. |
| Float | A 64-bit floating decimal point format. |
| Bool | A boolean-flag indicating true or false. |
| Object | Nested JSON level with more field-values. |
| Array | A value or type array contains a zero or positive amount of elements. The elements can be of any type. |
Data Formats
| Format | Description |
|---|---|
| Timestamp | (String) UTC ISO 8601 data and time format. Full specs according to RFC 3339. Example: 1982-09-26T32:20:50.52Z |
| Full Date | (String) UTC ISO 8601 date format. Full date format in YYYY-MM-DD. Example: 1982-09-26 |
| Short Date | (String) UTC ISO 8601 date format. Shorter format in YYYY-MM. Example: 1982-09 |
| UUID | (String) Universally Unique Identifier according to RFC 4122 |
| URI | (String) Uniform Resource Identifier according to RFC 3986 |
| Full Version | (String) Semantic versioning. http://semver.org/ |
Report Body
Generally, if there is no data to return in that "node" (aka JSON Object), it will not be returned.
Within each node, all fields will be returned. If there is no data to be returned for that field, it will be null.
Report Structure
The Eligibility Compass report has the following high level keys in the JSON:
meta{object}product{object}stated_employers{array}identities{array}employment{array}assets{object}income{object}documents{array}application_completeness_checks{array}
A report with only income verification completed could have this structure:
{
"meta": { ... },
"product": { ... },
"stated_employers": [ ... ],
"identities": [ ... ],
"employment": [ ... ],
"income": { ... },
"documents": [ ... ]
}
A report with only assets verification completed could have this structure:
{
"meta": { ... },
"product": { ... },
"stated_employers": [ ... ],
"identities": [ ... ],
"assets": { ... },
"documents": [ ... ],
"application_completeness_checks": [ ... ]
}
meta
Information specific to the report that's been returned.
| Field | Format | Notes |
|---|---|---|
public_token | UUID | The unique identifier of this report |
user_args | String or null | The input of the userArgs function in NovaConnect. |
created_at | Timestamp | The date the consumer's data was retrieved |
api_version | Full version | The API version used to generate this report |
external_id | String or null | The unique applicant identifier of the report from your system. |
status | String | The status for this report. If a report is available, the status will be SUCCESS |
substatus | String or null | The substatus for the report. See substatuses. |
nova_report_revision | String or null | The revision name for this report. This field will be null if this report has never been revised. |
consumer_id | String or null | The unique identifier of the consumer associated with this report. Only returned if NovaConnect Consumer Endpoints BETA feature is enabled. |
consumer_external_id | String or null | The unique identifier from your system of the consumer associated with this report. Only returned if NovaConnect Consumer Endpoints BETA feature is enabled. |
Example:
"meta": {
"public_token": "ff0886a4-f3ff-11e6-bc64-92361f002671",
"user_args": "235234224",
"created_at": "2024-01-13T11:07:46.51Z",
"api_version": "1.0.0",
"external_id": "d167c6bb-225c-461c-be63-f0bc3a1f62ea",
"status": "SUCCESS",
"substatus": null,
"nova_report_revision": null,
"consumer_id": "b281e335-9d19-4aa7-b559-e74d08a05cf4",
"consumer_external_id": "472cbdc9-cf31-4117-a095-e27e2db054e5"
}
product
Details of the product the applicant applied for. Please refer to the Client-Side Integration section in the Quickstart Guide.
| Field | Format | Notes |
|---|---|---|
name | String | Product name |
product_id | UUID | The unique identifier for the product |
inquiry_type | String | See product inquiry_type values |
Example:
"product": {
"name": "Village Communities",
"product_id": "9cf178e0-760e-11e7-abf3-5da9d338ae4b",
"inquiry_type": "TENANT"
}
stated_employers
Each item represents a different employer or inflow source.
| Field | Format | Notes |
|---|---|---|
name | String | Name of the stated employer |
input_method | String | The method by which the stated employer was provided. See input_method values |
verification_sources | Array | See verification_sources |
skipped_reason | String or null | See skipped_reason |
Example of a stated employer that was verified by a payroll provider:
{
"name": "Uber",
"input_method": "CONSUMER_INPUT",
"verification_sources": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"source_type": "PAYROLL",
"status": "SUCCESS",
"substatus": null
}
],
"skipped_reason": null
}
Example of a stated employer that was verified by documents uploaded by the applicant:
{
"name": "Walmart",
"input_method": "CONSUMER_INPUT",
"verification_sources": [
{
"source_id": "NOVA_DOCUMENT",
"source_uuid": "a3bb189e-8bf9-3888-9912-ace4e6543001",
"source_type": "DOCUMENT",
"status": "SUCCESS",
"substatus": null
}
],
"skipped_reason": null
}
Example of a stated employer that was not verified and a reason was provided:
{
"name": "Alimony",
"input_method": "CONSUMER_INPUT",
"verification_sources": [],
"skipped_reason": "No longer receiving this income"
}
Example of a stated employer was attempted to be verified with a payroll provider but failed:
{
"name": "Social Security",
"input_method": "CONSUMER_INPUT",
"verification_sources": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"source_type": "PAYROLL",
"status": "ERROR",
"substatus": null
}
],
"skipped_reason": null
},
Example of a stated employer that was not verified nor explicitly skipped by the user (journey abandoned and not completed before invite expiration):
{
"name": "Walmart",
"input_method": "CONSUMER_INPUT",
"verification_sources": [],
"skipped_reason": null
}
verification_sources
An array of verification sources that were attempted to verify the stated employer
| Field | Format | Notes |
|---|---|---|
source_id | String | See source_id |
source_uuid | UUID | The unique identifier for the source instance |
source_type | String | See source_type |
status | String | See status |
substatus | String | See substatus |
identities
The applicant's personal identity information reported from each data source.
| Field | Format | Notes |
|---|---|---|
source_id | String | The human-readable identifier for the source that reported the identity information. See source_id |
source_uuid | UUID or null | The unique identifier for the source instance |
first_name | String or null | |
last_name | String or null | |
full_name | String or null | |
emails | Array of String | |
matching | Object | See matching |
Example snippet of identities a report with one bank source and one payroll source:
{
"identities": [
{
"source_id": "CONSUMER_INPUT",
"source_uuid": null,
"first_name": "Annie",
"last_name": "Affordable",
"full_name": "Annie Affordable",
"emails": ["annie@email.com"],
"matching": {
"full_name": {
"matched_sources": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "60735ac6-0b22-4c2e-9090-a5eba621f0bc"
},
{
"source_id": "USA_FIN",
"source_uuid": "a41f19b0-4fa5-445c-a2b7-c048e45d4050"
}
],
"unmatched_sources": []
}
}
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "60735ac6-0b22-4c2e-9090-a5eba621f0bc",
"first_name": "Annie",
"last_name": "Affordable",
"full_name": "Annie Affordable",
"emails": ["annie@email.com"]
},
{
"source_id": "USA_FIN",
"source_uuid": "a41f19b0-4fa5-445c-a2b7-c048e45d4050",
"first_name": null,
"last_name": null,
"full_name": "Annie Affordable Andrew Affordable",
"emails": []
}
]
}
matching
Information about sources which have matching and conflicting values to a particular identity.
matching is returned in an object broken out by field, only certain fields are matched between sources. If only one identity item exists, there will be no matching field. Information about matching sources is stored wrapped in the MatchingField format, which indicates where each value was sourced from. The matching node will only be displayed on the identity with source_id of CONSUMER_INPUT.
| Field | Format | Notes |
|---|---|---|
full_name | Object | Matched and unmatched sources for the full name of the applicant |
Example identities matching field object for case where there is a full name match:
{
"matching": {
"full_name": {
"matched_sources": [
{
"source_id": "USA_FIN",
"source_uuid": "5f19d40f-3c19-4a7d-ad7b-cc28dac40c4d"
}
],
"unmatched_sources": []
}
}
}
Example identities matching field object for case where there is no full name match:
{
"matching": {
"full_name": {
"matched_sources": [],
"unmatched_sources": [
{
"source_id": "USA_FIN",
"source_uuid": "c31bf8c7-c25b-4d2c-a4bc-61f79fd46e65"
}
]
}
}
}
MatchingField
An object containing information about which sources have a matching value for a field and which sources contain conflicting values for the same field. A source is an object containing a source_id and a source_uuid if there are multiple source records.
| Field | Format | Notes |
|---|---|---|
matched_sources | Array | List of sources which have a value that matches this identity. See Sources |
unmatched_sources | Array | A list of sources which have a value that conflicts with this identity. See Sources |
Example matching field object for case where there is a field match:
{
"matched_sources": [
{
"source_id": "USA_FIN",
"source_uuid": "5f19d40f-3c19-4a7d-ad7b-cc28dac40c4d"
}
],
"unmatched_sources": []
}
Example matching field object for case where there is no field match:
{
"matched_sources": [],
"unmatched_sources": [
{
"source_id": "USA_FIN",
"source_uuid": "c31bf8c7-c25b-4d2c-a4bc-61f79fd46e65"
}
]
}
Source
An object containing information about a source.
| Field | Format | Notes |
|---|---|---|
source_id | String | The identifier for the source that reported the identity information. See source_id |
source_uuid | UUID or null | The unique identifier for the source instance |
employment
Employment information specific to the applicant whose report is being accessed.
| Field | Format | Notes |
|---|---|---|
source_id | String | The identifier for the source that reported the employment information. See source_id |
source_uuid | UUID | The unique identifier for the source instance |
employer_name | String or null | Name of the applicant's employer |
employer_address_line_1 | String or null | Address line 1 where the applicant's employer is located |
employer_address_line_2 | String or null | Address line 2 where the applicant's employer is located |
employer_city | String or null | City where the applicant's employer is located |
employer_state | String or null | State where the applicant's employer is located |
employment_type | String or null | Type of employment. See employment type |
employment_status | String or null | Status of the applicant's employment. See employment status |
job_title | String or null | Title of the applicant's job |
hire_date | Full Date or null | Employee hire date as stated on the employment source |
termination_date | Full Date or null | Employment termination date. If employment_status is active will be null |
base_pay_rate | Float or null | The base pay rate of the employee |
base_pay_period | String or null | The period associated with the base pay for the employee. See base_pay_period table |
matching | Object | See matching |
Example:
{
"employment": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"employer_name": "Microsoft",
"employer_address_line_1": "1 Microsoft Way",
"employer_address_line_2": null,
"employer_city": "Redmond",
"employer_state": "Washington",
"employment_type": "fulltime",
"employment_status": "active",
"job_title": "Product Manager",
"hire_date": "2017-04-19",
"termination_date": null,
"base_pay_period": "SALARY",
"base_pay_amount": 112000,
"matching": {
"employer_name": {
"matched_employer_name": [
{
"stated_employer": "Microsoft"
}
],
"unmatched_employer_name": []
},
"direct_deposit_accounts": {
"matched_direct_deposit_accounts": [
{
"matched_account_id": "36139831-0a91-4d1f-bc3e-edc908a978c6",
"truncated_account_number": "xxxx1234",
"institution_name": "Bank of America"
}
],
"unmatched_direct_deposit_accounts": []
}
}
}
]
}
matching
matching is returned as an object broken out by field. Each field includes matched and unmatched values, and may include where each value was sourced from.
| Field | Format | Notes |
|---|---|---|
employer_name | Object | Matched sources for an employer name |
direct_deposit_accounts | Object | Matched direct deposit accounts |
{
"matching": {
"employer_name": { ... },
"direct_deposit_accounts": { ... },
}
}
matching.employer_name
Information about employment sources which have matching vs. conflicting values to a particular stated_employer.
Example employment matching field object for case where there is an employer name match:
{
"employer_name": {
"matched_employer_name": [
{
"stated_employer": "Microsoft"
}
],
"unmatched_employer_name": []
}
}
Example employment matching field object for case where there is no employer name match:
{
"employer_name": {
"matched_employer_name": [],
"unmatched_employer_name": [
{
"stated_employer": "Microsoft"
}
]
}
}
matching.direct_deposit_accounts
Information about direct deposit accounts which may or may not be matched between the payroll connection and the assets portion of the report.
This node is only returned if the report includes assets verification.
| Field | Format | Notes |
|---|---|---|
matched_direct_deposit_accounts | Array | Array includes all direct deposit accounts for this payroll connection that we were able to match to accounts linked in the assets portion of the report |
matched_direct_deposit_accounts.matched_account_id | String | The account_id for the matched account found within the assets array (will match to one of the assets.account_details.account_id numbers) |
matched_direct_deposit_accounts.truncated_account_number | String | The truncated account number for the direct deposit account, as provided by the payroll system |
matched_direct_deposit_accounts.institution_name | String | The institution name (i.e., bank) for the direct deposit account, as provided by the payroll system |
unmatched_direct_deposit_accounts | Array | Array includes all direct deposit accounts for this payroll connection that we were not able to match to accounts linked in the assets portion of the report |
unmatched_direct_deposit_accounts.truncated_account_number | String | The truncated account number for the unmatched direct deposit account, as provided by the payroll system |
unmatched_direct_deposit_accounts.institution_name | String | The institution name (i.e., bank) for the unmatched direct deposit account, as provided by the payroll system |
{
"direct_deposit_accounts": {
"matched_direct_deposit_accounts": [
{
"matched_account_id": "36139831-0a91-4d1f-bc3e-edc908a978c6",
"truncated_account_number": "xxxx1234",
"institution_name": "Bank of America"
}
],
"unmatched_direct_deposit_accounts": [
{
"truncated_account_number": "xxxx5678",
"institution_name": "Chase"
}
]
}
}
assets
The assets object contains the following four fields:
{
"assets": {
"account_details": [ ... ],
"inflows": [ ... ],
"matched_income_sources": [ ... ],
"failed_connections": [ ... ],
}
}
account_details
An array with each instance containing details about an account. The array can have zero objects, and there is no upper bound.
| Field | Format | Notes |
|---|---|---|
source_id | String | The identifier for the source that reported the account details. See source_id |
source_uuid | UUID | The unique identifier for the source instance. |
account_id | UUID | Unique identifier for the account |
owner_full_name | String or null | Full name of the owner of the account |
institution_name | String or null | Name of institution such as Chase or Bank of America |
account_name | String | Name of the account within the bank |
account_type | String or null | Type of the account within the bank. See account types |
date_first_transaction | Full Date or null | Date the first transaction was made on the account |
last_statement_end_date | Full Date or null | Date the last statement was ended on the account |
truncated_account_number | String or null | If available, the last four digits of the account number |
responsibility | String or null | See responsibility |
addresses | Array | See addresses |
current_balance | Float or null | Current balance of the account |
six_months_average_balance | Float or null | Average balance for the last six months. If < 6 months of data is available, balance for period available will be returned (no extrapolation is applied). See date_first_transaction to determine if < 6 months of data is available |
twelve_months_income_from_assets | Float or null | How much interest was collected in the last twelve months. If < 12 months of data is available, income from assets for period available will be returned (no extrapolation is applied). See date_first_transaction to determine if < 12 months of data is available |
Example:
{
"account_details": [{
"source_id": "USA_FIN",
"source_uuid": "a7f3c89e-4b2d-4c8a-9f1e-6d3a8b7c4e92",
"account_id": "36139831-0a91-4d1f-bc3e-edc908a978c6",
"owner_full_name": "John Doe",
"institution_name": "CHASE",
"account_name": "INVESTMENT ACCOUNT",
"account_type": "INVESTMENT",
"date_first_transaction": "2015-05-01",
"truncated_account_number": "1234",
"responsibility": "INDIVIDUAL",
"addresses": [
{
"address_id": "80421b7e-7918-4963-b5fb-85055c2994b7",
"address": "225 Valencia St.",
"street": "Valencia St.",
"city": "San Francisco",
"zipcode": "94103",
"state": "CA"
}
],
"current_balance": 577.63,
"six_months_average_balance": 432.55,
"twelve_months_income_from_assets": 12.61
},
...
],
}
addresses
Addresses is a history of contact information attached to this account. Addresses are returned in an array, can have zero objects, and there is no upper bound.
| Field | Format | Notes |
|---|---|---|
address_id | UUID | Unique identifier for the address |
address | String | The full mailing address of the account owner |
street | String | The street address where the account owner is located |
city | String | The city where the account owner is located |
zipcode | String | The zip code where the account owner is located |
state | String | The state where the account owner is located |
Example:
{
"addresses": [{
"address_id": "80421b7e-7918-4963-b5fb-85055c2994b7",
"address": "225 Valencia St., San Francisco, CA 94103",
"street": "Valencia St.",
"city": "San Francisco",
"zipcode": "94103",
"state": "CA"
}],
},
inflows
An array with each element containing information about inflows which have been marked as income. An inflow is a group of transactions that represents a single income stream (e.g., from a single employer).
If no inflows marked as income were found, this array may be empty.
| Field | Format | Notes |
|---|---|---|
inflow_id | String | A unique identifier for the inflow |
account_id | String | A unique identifier for the linked account in assets.account_details |
description | String | A short description of the inflow |
deposited_annual_income | Number | Sum of all deposits for the inflow over the last twelve months. If fewer than twelve months are available, the data from the available months will be annualized. |
deposited_recent_income | Number | Sum of all deposits for the inflow over the last three months annualized |
Example:
{
"inflows": [
{
"inflow_id": "3222a843-9768-406b-907c-b2f9a3dc669e",
"account_id": "36139831-0a91-4d1f-bc3e-edc908a978c6",
"description": "CLERICAL-TECHNIC PAYROLL PPD ID: ******7683",
"deposited_annual_income": 31403.93,
"deposited_recent_income": 34520.64
},
{
"inflow_id": "1a84f67b-0ed1-450a-a78e-0e101755cc09",
"account_id": "36139831-0a91-4d1f-bc3e-edc908a978c6",
"description": "IRS TREAS 310 TAX REF PPD ID: ******6170",
"deposited_annual_income": 3115,
"deposited_recent_income": 0
},
{
"inflow_id": "804636ca-8630-4609-93c0-5f6c07331a8e",
"account_id": "36139831-0a91-4d1f-bc3e-edc908a978c6",
"description": "STATEOFMICHIGAN PMT/REFUND PPD ID: 014-INCTAX",
"deposited_annual_income": 716,
"deposited_recent_income": 0
}
]
}
matched_income_sources
An array with each element containing information about any stated employer names provided by the applicant which were determined to match with an inflow.
If no matches between stated employer names and inflows could be found, this array may be empty.
Each stated employer may match with more than one inflow, but each inflow will only ever have a maximum of one stated employer match.
| Field | Format | Notes |
|---|---|---|
stated_employer | String | The name of the stated employer that was determined to match an inflow |
matched_inflow_id | String | The unique identifier of the inflow that was determined to match the stated employer. See inflows |
Example:
{
"matched_income_sources": [
{
"stated_employer": "Clerical Technic",
"matched_inflow_id": "3222a843-9768-406b-907c-b2f9a3dc669e"
}
]
}
failed_connections
If the consumer attempted to connect an assets source (bank or bank statements) but failed, this array will contain the details of the failed connection.
| Field | Format | Notes |
|---|---|---|
source_id | String | The identifier for the source that failed to connect. See source_id |
source_uuid | UUID | The unique identifier for the source instance |
source_type | String | The type of the source that failed to connect. See source_type |
institution | String or null | The name of the institution that failed to connect |
status | String | The status of the failed connection. See status |
substatus | String or null | The substatus of the failed connection. See substatus |
Example:
{
"failed_connections": [
{
"source_id": "USA_FIN",
"source_uuid": "a7f3c89e-4b2d-4c8a-9f1e-6d3a8b7c4e92",
"source_type": "BANK_TRANSACTION",
"institution": "Chime",
"status": "ERROR",
"substatus": "MFA_FETCH_REQUIRED"
}
]
}
income
Income information specific to the applicant whose report is being accessed. Not included in reports if income information is not found. If included, the data will include up to 12 months of pay statements.
| Field | Format | Notes |
|---|---|---|
payroll | Array | See payroll |
{
"income": {
"payroll": [ ... ]
}
}
payroll
Income information derived from payroll data.
| Field | Format | Notes |
|---|---|---|
source_id | String | The identifier for the source that reported the payroll information. See source_id |
source_uuid | UUID | The unique identifier for the source instance. |
provider_name | String | Name of the provider of payroll |
provider_type | String | Type of the payroll provider |
Depending on the provider type, payroll data is returned in two formats.
The following fields are returned when provider_type is not "GIG":
| Field | Format | Notes |
|---|---|---|
annual_gross_income | Float | The sum of the last 12 month gross income for the employee. If < 12 months of data is available, the information will be annualized |
annual_net_income | Float | The sum of the last 12 months net income for the employee. If < 12 months of data is available, the information will be annualized |
pay_frequency | String or null | Calculated pay frequencySee pay_frequency table |
statements | Array | See statements |
calendar_summary | Array | See calendar_summary |
The following fields are returned when provider_type is "GIG":
| Field | Format | Notes |
|---|---|---|
gigs_annual_gross_earnings | Float | Estimate of the gross annual gig earnings |
gigs_annual_deposited_amount | Float | Estimate of the annual gig deposited amount |
gigs_annual_net_earnings | Float | Estimate of the net annual gig earnings |
gig_summaries | Array | See gig_summaries |
Example 1:
{
"income": {
...
"payroll": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "a7f3c89e-4b2d-4c8a-9f1e-6d3a8b7c4e92",
"provider_name": "ADP",
"provider_type": "EMPLOYER",
"annual_gross_income": 47500.38,
"annual_net_income": 30000.12,
"pay_frequency": "WEEKLY",
"gigs_annual_gross_earnings": null,
"gigs_annual_deposited_amount": null,
"gigs_annual_net_earnings": null,
"gig_summaries": [],
"statements": [
{
"pay_date": "2020-06-30",
"pay_period_start": "2025-06-16",
"pay_period_end": "2025-06-30",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 1225,
"gross_total_earnings_amount_ytd": 13625,
"net_total_earnings_amount_current": 840,
"net_total_earnings_amount_ytd": 8840
},
{
"pay_date": "2020-06-15",
"pay_period_start": "2025-06-01",
"pay_period_end": "2025-06-15",
"hours_worked": 38.5,
"gross_total_earnings_amount_current": 1175,
"gross_total_earnings_amount_ytd": 12400,
"net_total_earnings_amount_current": 800,
"net_total_earnings_amount_ytd": 8000
}
]
}
]
}
}
Example 2:
{
"income": {
...
"payroll": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "a7f3c89e-4b2d-4c8a-9f1e-6d3a8b7c4e92",
"provider_name": "Uber",
"provider_type": "GIG",
"estimated_gross_annual_income": null,
"estimated_net_annual_income": null,
"pay_frequency": null,
"statements": [],
"gigs_annual_gross_earnings": 13221.01,
"gigs_annual_deposited_amount": 11001.66,
"gigs_annual_net_earnings": 9555.05,
"gig_summaries": [
{
"pay_summary_start": "2025-03-15",
"pay_summary_end": "2025-03-21",
"gross_earnings": 969.56,
"deposited_amount": 859.09,
"net_earnings": 795.85,
"tips": 24.76
},
{
"pay_summary_start": "2025-03-08",
"pay_summary_end": "2025-03-14",
"gross_earnings": 541.62,
"deposited_amount": 486.72,
"net_earnings": 486.72,
"tips": 20.4
},
{
"pay_summary_start": "2025-03-01",
"pay_summary_end": "2025-03-07",
"gross_earnings": 423.57,
"deposited_amount": 372.1,
"net_earnings": 328.29,
"tips": 0
}
...
]
}
]
}
}
statements
A list of statement details
| Field | Format | Notes |
|---|---|---|
pay_date | Full Date | Date the pay was issued |
pay_period_start | Full Date or null | Date this pay period started |
pay_period_end | Full Date or null | Date this pay period ended |
hours_worked | Float or null | Hours worked this pay period |
gross_total_earnings_amount_current | Float or null | Gross total earnings from current pay period |
gross_total_earnings_amount_ytd | Float or null | Gross total earnings from year to date pay period |
net_total_earnings_amount_current | Float or null | Net total earnings from current pay period |
net_total_earnings_amount_ytd | Float or null | Net total earnings from year to date pay period |
Example of one statement:
{
"pay_date": "2025-02-01",
"pay_period_start": "2025-01-01",
"pay_period_end": "2025-01-31",
"hours_worked": 160.0,
"gross_total_earnings_amount_current": 1127.16,
"gross_total_earnings_amount_ytd": 2254.32,
"net_total_earnings_amount_current": 1052.0,
"net_total_earnings_amount_ytd": 2104.0
}
gig_summaries
A list of weekly gig summary details:
| Field | Format | Notes |
|---|---|---|
pay_summary_start | Full Date | Inclusive date of the summary period start |
pay_summary_end | Full Date | Inclusive date of the summary period end |
gross_earnings | Float or null | Gross earnings for the summary week |
deposited_amount | Float or null | Deposited amount for the summary week |
net_earnings | Float or null | Net earnings for the summary week |
tips | Float or null | Total tips for the summary week |
Example of one statement:
{
"pay_summary_start": "2025-02-01",
"pay_summary_end": "2025-02-07",
"gross_earnings": 355.11,
"deposited_amount": 280.54,
"net_earnings": 269.92,
"tips": 34.44
}
calendar_summary
| Field | Format | Notes |
|---|---|---|
year | String | The year associated with the calendar income. This will start in the most recent year + extend back to the earliest year of data. |
calendar_year_gross_income | Float or null | The sum of the gross income received within that calendar year. If less than 12 months of data is available, the data will not be annualized. |
calendar_year_net_income | Float or null | The sum of the net income received within that calendar year. If less than 12 months of data is available, the data will not be annualized. |
Example of summary:
{
"income": {
"payroll": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"provider_name": "Walmart, Inc.",
"pay_frequency": "WEEKLY",
"provider_type": "EMPLOYER",
"annual_gross_income": 12340,
"annual_net_income": 8233,
"calendar_summary": [
{
"year": "2025",
"calendar_year_gross_income": 10296,
"calendar_year_net_income": 7696,
},
{
"year": "2024",
"calendar_year_gross_income": 9260,
"calendar_year_net_income": 7134,
},
{
"year": "2023",
"calendar_year_gross_income": 1245,
"calendar_year_net_income": 843,
},
]
"gigs_annual_gross_earnings": null,
"gigs_annual_deposited_amount": null,
"gigs_annual_net_earnings": null,
"statements": [
{
"pay_date": "2025-08-25",
"pay_period_start": "2025-08-18",
"pay_period_end": "2025-08-24",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 10296,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 7696
},
{
"pay_date": "2025-08-18",
"pay_period_start": "2025-08-11",
"pay_period_end": "2025-08-17",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 10098,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 7548
}
]
},
],
}
}
documents
This array will contain items if:
- the applicant has uploaded documents for income verification
- the applicant has uploaded bank statements for asset verification
- the applicant has connected a payroll account for income verification that is not a gig connection
| Field | Format | Notes |
|---|---|---|
source_id | String | The identifier for the source that reported the income information. See source_id |
source_uuid | UUID | The unique identifier for the source instance. |
document_type | String | The type of document uploaded. See document_type |
document_id | UUID | The identifier for the document. |
available_date | Full Date or null | The date the document was made available to the end user. |
source_filepath | String | The file path used for downloading an applicant's document. |
irregularity_detection | Object | See irregularity_detection |
Example where an applicant has uploaded one document and one bank statement:
{
"documents": [
{
"source_id": "NOVA_DOCUMENT",
"source_uuid": "a3bb189e-8bf9-3888-9912-ace4e6543002",
"document_type": "DOCUMENT",
"document_id": "a3bb189e-8bf9-3888-9912-ace4e6543002",
"available_date": null,
"source_filepath": "65bf7135-4eb8-4342-a7c2-0380322b3d59/a3bb189e-8bf9-3888-9912-ace4e6543002.pdf"
},
{
"source_id": "OCROLUS",
"source_uuid": "550e8400-e29b-41d4-a716-446655440000",
"document_type": "BANK_STATEMENT",
"document_id": "314986b3-6ae3-48ef-98ae-ace06900d6f8",
"available_date": null,
"source_filepath": "65bf7135-4eb8-4342-a7c2-0380322b3d59/550e8400-e29b-41d4-a716-446655440000.pdf",
"irregularity_detection": {
"status": "NOT_DETECTED",
"reasons": [],
"file_type": "pdf",
"genuine_pdf": true,
"version": "3.1"
}
}
]
}
Payroll connection documents
For each payroll connection used for income verification, the documents node will have up to 15 items (paystubs). These items will have the same source_uuid, "source_id":"USA_ARGYLE", but a distinct document_id. Note that if it is a gig connection there will be 0 items.
In this example, the applicant has connected two different payroll accounts:
{
"stated_employers": [
{
"name": "Pet Food Express",
"input_method": "CONSUMER_INPUT",
"verification_sources": [{
"source_id": "USA_ARGYLE",
"source_uuid": "a3bb189e-8bf9-3888-9912-ace4e6543002",
"source_type": "PAYROLL", // note the source_type is PAYROLL
"status": "SUCCESS",
"substatus": null
}],
"skipped_reason": null
},
{
"name": "Pet Club",
"input_method": "CONSUMER_INPUT",
"verification_sources": [{
"source_id": "USA_ARGYLE",
"source_uuid": "3f2504e0-4f89-11d3-9a0c-0305e82c330",
"source_type": "PAYROLL", // note the source_type is PAYROLL
"status": "SUCCESS",
"substatus": null
}],
"skipped_reason": null
}
],
"employment": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "a3bb189e-8bf9-3888-9912-ace4e6543002",
"employer_name": "Pet Food Express",
...
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "3f2504e0-4f89-11d3-9a0c-0305e82c3301",
"employer_name": "Pet Club",
...
},
],
"documents": [
// First connection has 1 paystub
{
"source_id": "USA_ARGYLE",
"source_uuid": "a3bb189e-8bf9-3888-9912-ace4e6543002",
"document_type": "PAYSTUB",
"document_id": "550e8400-e29b-41d4-a716-446655440000",
"available_date": "2025-06-30",
"source_filepath": "a3bb189e-8bf9-3888-9912-ace4e6543002/550e8400-e29b-41d4-a716-446655440000.pdf"
},
// Second connection has 2 paystubs
{
"source_id": "USA_ARGYLE",
"source_uuid": "3f2504e0-4f89-11d3-9a0c-0305e82c3301",
"document_type": "PAYSTUB",
"document_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"available_date": "2025-06-23",
"source_filepath": "3f2504e0-4f89-11d3-9a0c-0305e82c3301/a1b2c3d4-e5f6-7890-abcd-ef1234567890.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "3f2504e0-4f89-11d3-9a0c-0305e82c3301",
"document_type": "PAYSTUB",
"document_id": "8b3e1f2a-4c5d-6e7f-8901-23456789abcd",
"available_date": "2025-06-16",
"source_filepath": "3f2504e0-4f89-11d3-9a0c-0305e82c3301/8b3e1f2a-4c5d-6e7f-8901-23456789abcd.pdf"
}
]
}
Benefit connection documents
For each benefit connection used for income verification, the documents node will have 1 item (benefit letter). This item will have "source_id":"USA_ARGYLE".
In this example, the applicant has connected a single benefit account:
{
"stated_employers": [
{
"name": "Social Security",
"input_method": "CONSUMER_INPUT",
"verification_sources": [{
"source_id": "USA_ARGYLE",
"source_uuid": "a3bb189e-8bf9-3888-9912-ace4e6543002",
"source_type": "PAYROLL", // note the source_type is PAYROLL
"status": "SUCCESS",
"substatus": null
}],
"skipped_reason": null
}
],
"employment": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "a3bb189e-8bf9-3888-9912-ace4e6543002",
"employer_name": "Social Security",
...
},
],
"documents": [
// Connection has 1 benefit letter
{
"source_id": "USA_ARGYLE",
"source_uuid": "a3bb189e-8bf9-3888-9912-ace4e6543002",
"document_type": "BENEFIT",
"document_id": "550e8400-e29b-41d4-a716-446655440000",
"available_date": "2025-03-01",
"source_filepath": "a3bb189e-8bf9-3888-9912-ace4e6543002/550e8400-e29b-41d4-a716-446655440000.pdf"
}
]
}
Bank statement upload documents
During asset verification, the applicant has the option to upload bank statements for an account if they cannot connect it directly. For each account, the documents node will have exactly 6 items (separate bank statements). These items will have the same source_uuid, "source_id":"OCROLUS", but a distinct document_id.
In this example, the applicant has uploaded bank statements for one bank account:
{
"assets": {
"account_details": [{
"source_id": "OCROLUS",
"source_uuid": "a3bb189e-8bf9-3888-9912-ace4e6543002",
"institution_name": "Citizens Bank",
...
}]
},
"documents": [
// Connection has 6 bank statements
{
"source_id": "OCROLUS",
"source_uuid": "a3bb189e-8bf9-3888-9912-ace4e6543002",
"document_type": "BANK_STATEMENT",
"document_id": "550e8400-e29b-41d4-a716-446655440000",
"available_date": null,
"source_filepath": "a3bb189e-8bf9-3888-9912-ace4e6543002/550e8400-e29b-41d4-a716-446655440000.pdf",
"irregularity_detection": {
"status": "NOT_DETECTED",
"reasons": [],
"file_type": "pdf",
"genuine_pdf": true,
"version": "3.1"
}
},
{
"source_id": "OCROLUS",
"source_uuid": "a3bb189e-8bf9-3888-9912-ace4e6543002",
"document_type": "BANK_STATEMENT",
"document_id": "e7f6a5b4-c3d2-e1f0-9a8b-7c6d5e4f3a2b",
"available_date": null,
"source_filepath": "a3bb189e-8bf9-3888-9912-ace4e6543002/e7f6a5b4-c3d2-e1f0-9a8b-7c6d5e4f3a2b.pdf",
"irregularity_detection": {
"status": "NOT_DETECTED",
"reasons": [],
"file_type": "pdf",
"genuine_pdf": true,
"version": "3.1"
}
},
{
"source_id": "OCROLUS",
"source_uuid": "a3bb189e-8bf9-3888-9912-ace4e6543002",
"document_type": "BANK_STATEMENT",
"document_id": "5f4e3d2c-1b0a-9988-7766-554433221100",
"available_date": null,
"source_filepath": "a3bb189e-8bf9-3888-9912-ace4e6543002/5f4e3d2c-1b0a-9988-7766-554433221100.pdf",
"irregularity_detection": {
"status": "NOT_DETECTED",
"reasons": [],
"file_type": "pdf",
"genuine_pdf": true,
"version": "3.1"
}
},
{
"source_id": "OCROLUS",
"source_uuid": "a3bb189e-8bf9-3888-9912-ace4e6543002",
"document_type": "BANK_STATEMENT",
"document_id": "9a8c7d6-e5f4-3021-9876-543210fedcba",
"available_date": null,
"source_filepath": "a3bb189e-8bf9-3888-9912-ace4e6543002/9a8c7d6-e5f4-3021-9876-543210fedcba.pdf",
"irregularity_detection": {
"status": "NOT_DETECTED",
"reasons": [],
"file_type": "pdf",
"genuine_pdf": true,
"version": "3.1"
}
},
{
"source_id": "OCROLUS",
"source_uuid": "a3bb189e-8bf9-3888-9912-ace4e6543002",
"document_type": "BANK_STATEMENT",
"document_id": "2d1c0b9a-8978-6756-4534-231209876543",
"available_date": null,
"source_filepath": "a3bb189e-8bf9-3888-9912-ace4e6543002/2d1c0b9a-8978-6756-4534-231209876543.pdf",
"irregularity_detection": {
"status": "NOT_DETECTED",
"reasons": [],
"file_type": "pdf",
"genuine_pdf": true,
"version": "3.1"
}
},
{
"source_id": "OCROLUS",
"source_uuid": "a3bb189e-8bf9-3888-9912-ace4e6543002",
"document_type": "BANK_STATEMENT",
"document_id": "7e6d5c4b-3a29-1807-6543-21098fedcba9",
"available_date": null,
"source_filepath": "a3bb189e-8bf9-3888-9912-ace4e6543002/7e6d5c4b-3a29-1807-6543-21098fedcba9.pdf",
"irregularity_detection": {
"status": "NOT_DETECTED",
"reasons": [],
"file_type": "pdf",
"genuine_pdf": true,
"version": "3.1"
}
}
]
}
Generic document upload documents
If the applicant has uploaded documents for income verification, the documents node will have up to 3 items (separate documents) from the same income source. These items will have the same source_uuid, "source_id":"NOVA_DOCUMENT", but a distinct document_id.
In this example, the applicant has uploaded two documents for one income source:
{
"stated_employers": [
{
"name": "Pet Food Express",
"input_method": "NOVA_DOCUMENT",
"verification_sources": [
{
"source_id": "NOVA_DOCUMENT",
"source_uuid": "a3bb189e-8bf9-3888-9912-ace4e6543002",
"source_type": "DOCUMENT", // note the source_type is DOCUMENT
"status": "SUCCESS",
"substatus": null
}
],
"skipped_reason": null
}
],
"documents": [
{
"source_id": "NOVA_DOCUMENT",
"source_uuid": "a3bb189e-8bf9-3888-9912-ace4e6543002",
"document_type": "DOCUMENT",
"document_id": "8b3e1f2a-4c5d-6e7f-8901-23456789abcd",
"available_date": null,
"source_filepath": "a3bb189e-8bf9-3888-9912-ace4e6543002/8b3e1f2a-4c5d-6e7f-8901-23456789abcd.pdf"
},
{
"source_id": "NOVA_DOCUMENT",
"source_uuid": "a3bb189e-8bf9-3888-9912-ace4e6543002",
"document_type": "DOCUMENT",
"document_id": "1a2b3c4d-5e6f-7890-abcd-ef0123456789",
"available_date": null,
"source_filepath": "a3bb189e-8bf9-3888-9912-ace4e6543002/1a2b3c4d-5e6f-7890-abcd-ef0123456789.pdf"
}
]
}
irregularity_detection
This node will contain details about any irregularities detected on bank statements.
| Field | Format | Notes |
|---|---|---|
status | String | See irregularity_detection status values |
reasons | Array | See irregularity_detection reasons values |
file_type | String or null | See irregularity_detection file_types values |
genuine_pdf | Boolean or null | True only if document is exceptionally genuine, not provided otherwise |
version | String | The version of the fraud algorithm used to generate the results |
Example irregularity_detection field with status NOT_DETECTED and the genuine_pdf flag:
{
"irregularity_detection": {
"status": "NOT_DETECTED",
"reasons": [],
"file_type": "pdf",
"genuine_pdf": true,
"version": "3.0"
}
}
Example irregularity_detection field with status REVIEW:
{
"irregularity_detection": {
"status": "REVIEW",
"reasons": [
{
"reason": "Edited Content Detected",
"severity": "Low Risk"
}
],
"file_type": "pdf",
"genuine_pdf": null,
"version": "3.0"
}
}
Example irregularity_detection field with status DETECTED and multiple reasons:
{
"irregularity_detection": {
"status": "DETECTED",
"reasons": [
{
"reason": "Edited Content Detected",
"severity": "High Risk"
},
{
"reason": "Unusual Document Source Detected",
"severity": "Medium Risk"
}
],
"file_type": "pdf",
"genuine_pdf": null,
"version": "3.0"
}
}
irregularity detection reasons []
Specific reasons supporting the provided irregularity_detection status.
| Field | Format | Notes |
|---|---|---|
reason | String | See the irregularity_detection_reason table |
severity | String | See the irregularity_detection_severity table |
application_completeness_checks
Nova checks information across the report to check for specific inconsistencies or indicators that the compliance officers will need to follow up with applicants for additional information.
| Field | Format | Notes |
|---|---|---|
check | String | See check |
value | Boolean | Represents if the check has passed or failed |
Example:
"application_completeness_checks": [
{
"check": "MISSING_DEPOSIT_ACCOUNTS_DETECTED",
"value": false
},
{
"check": "PRIMARY_ACCOUNT_NOT_DETECTED",
"value": false
},
{
"check": "VENMO_TRANSACTIONS_DETECTED",
"value": true
},
{
"check": "CASHAPP_TRANSACTIONS_DETECTED",
"value": false
},
{
"check": "ZELLE_TRANSACTIONS_DETECTED",
"value": true
},
{
"check": "PAYPAL_TRANSACTIONS_DETECTED",
"value": true
},
{
"check": "SKIPPED_INCOME",
"value": true
}
]
Tables
account_type
Values of the account_type field.
| Value |
|---|
CASH_EQUIVALENT |
CREDIT_CARD |
INVESTMENT |
INSTALLMENT |
MORTGAGE |
OTHER |
base_pay_period
| Value |
|---|
HOURLY |
DAILY |
WEEKLY |
BI_WEEKLY |
SEMI_MONTHLY |
MONTHLY |
ANNUAL |
SALARY |
check
| Value | Description |
|---|---|
MISSING_DEPOSIT_ACCOUNTS_DETECTED | Flags if there are any direct deposit accounts found in payroll data that were not connected via bank connection |
PRIMARY_ACCOUNT_NOT_DETECTED | No primary account was detected |
VENMO_TRANSACTIONS_DETECTED | Any transactions detected from Venmo in the last 12 months, per keyword searching |
CASHAPP_TRANSACTIONS_DETECTED | Any transactions detected from CashApp in the last 12 months, per keyword searching |
ZELLE_TRANSACTIONS_DETECTED | Any transactions detected from Zelle in the last 12 months, per keyword searching |
PAYPAL_TRANSACTIONS_DETECTED | Any transactions detected from PayPal in the last 12 months, per keyword searching |
SKIPPED_INCOME | Consumer skipped verification of any income streams |
document_type
| Value | Description |
|---|---|
BANK_STATEMENT | A bank statement uploaded by the applicant for asset verification |
BENEFIT | A benefit letter pulled from a benefits provider for income verification |
DOCUMENT | A document uploaded by the applicant for income verification |
PAYSTUB | A paystub pulled from a payroll provider for income verification |
employment_status
Values of the employment[].employment_status field.
| Value |
|---|
active |
terminated |
employment_type
Values of the employment[].employment_type field.
| Value |
|---|
contract |
fulltime |
parttime |
input_method
| Value | Description |
|---|---|
CONSUMER_INPUT | The stated employer was provided by the applicant |
DETECTED | The stated employer was detected by Nova Credit |
inquiry_type
The human-readable labels are shown when creating and viewing products in the Nova Credit Dashboard. The value column shows the values that are returned in the JSON.
| Human-readable label | Value |
|---|---|
Monitoring | MONITORING |
Credit Card | CREDIT_CARD |
Vehicle Auto | VEHICLE_AUTO |
Vehicle Other | VEHICLE_OTHER |
Mortgage | MORTGAGE |
Personal | PERSONAL |
Student | STUDENT |
Utility | UTILITY |
Commercial | COMMERCIAL |
Consumer | CONSUMER |
Tenant Screening | TENANT |
Other | OTHER |
irregularity_detection file_type
Values of the file_type field in the irregularity_detection node.
| Value |
|---|
pdf |
image |
unsupported |
irregularity_detection reason
Values of the reason field in the irregularity_detection.reasons node.
| Value |
|---|
Serial Fraud Detected |
Edited Content Detected |
Suspicious Modification Detected |
Browser/Os Processed |
No Textual Document Detected |
Unusual Document Source Detected |
Screenshot Detected |
PDF/Image Converted |
Suspicious Format Detected |
Editing Software Detected |
Others |
irregularity_detection severity
Values of the severity field in the irregularity_detection.reasons node.
| Value |
|---|
High Risk |
Medium Risk |
Low Risk |
irregularity_detection status
Values of the status field in the irregularity_detection node.
| Value | Description |
|---|---|
NOT_DETECTED | No irregularities were detected on the file |
DETECTED | Irregularities were detected on the file |
REVIEW | Minor fraud indications detected, manual review recommended |
pay_frequency
Values of the pay_frequency field.
| Value |
|---|
| null |
WEEKLY |
BI_WEEKLY |
SEMI_MONTHLY |
MONTHLY |
QUARTERLY |
provider_type
Values of the provider_type field.
| Value |
|---|
| null |
EMPLOYER |
GIG |
BENEFITS |
PLATFORM |
responsibility
Values of the responsibility field.
| Value | Description |
|---|---|
INDIVIDUAL | The individual is solely responsible for the account |
JOINT | The individual is jointly responsible for the account |
skipped_reason
If the inflow was not verified, the reason the applicant provided for skipping.
| Value | Description |
|---|---|
| "No longer receiving this income" | The applicant has chosen this value from a dropdown |
| "Duplicate income" | The applicant has chosen this value from a dropdown |
| "Incorrect or unknown income source" | The applicant has chosen this value from a dropdown |
| "One-time refund or account transfer" | The applicant has chosen this value from a dropdown |
| "Declined all verification options" | The applicant did not select any verification options |
| (other) | The applicant has manually entered a reason |
source_id
A human-readable identifier for the source, unique within the context of the report.
| Value | Description |
|---|---|
MANUAL | Data was manually entered by the applicant |
NOVA_DOCUMENT | Data was sourced from a document uploaded by the applicant |
OCROLUS | Data was sourced from an uploaded bank statement |
USA_AKOYA | Data was sourced from a bank connection through Akoya |
USA_ARGYLE | Data was sourced from a payroll provider through Argyle |
USA_FIN | Data was sourced from a bank connection through Finicity |
USA_MX | Data was sourced from a bank connection through MX |
USA_RAI | Data was sourced through Resistant AI |
source_type
The following are values for stated_employers[].verification_sources[].source_type:
| Value | Description |
|---|---|
DOCUMENT | Data was sourced from a document |
PAYROLL | Data was sourced from a payroll provider |
The following are values for assets[].failed_connections[].source_type:
| Value | Description |
|---|---|
BANK_TRANSACTION | Data was sourced from a bank connection |
FRAUD | Data was sourced from fraud analysis |
status
If the status is the overall status of an application, the following columns are relevant:
- Terminal means that this overall status is final and will not change
- Report Available means that a report can be retrieved for the application or
publicToken - Webhook means that there is a webhook available for this status
| Status | Description | Terminal? | Report Available? | Webhook? |
|---|---|---|---|---|
INVITED | The applicant has been sent an invite, such as through the Invite API or in the Nova Dashboard | ✗ | ✗ | ✗ |
INITIALIZED | The /connect/initialization endpoint has been used | ✗ | ✗ | ✗ |
PENDING | A visit has been initialized upon opening the NovaConnect widget | ✗ | ✗ | ✓ |
SUCCESS | The data source has successfully provided information on the applicant | ✓ | ✓ | ✓ |
EXPIRED | The visit has expired before the applicant was able to complete the flow. This will be sent if no completion 5 days after initial widget opened, invite sent, or initialization endpoint called | ✓ | ✗ | ✓ |
NOT_AUTHENTICATED | The applicant was unable to connect to a valid account or the applicant did not upload supported documents within the allowed retry attempts | ✓ | ✗ | ✓ |
ERROR | An error occurred and the report could not be compiled. If there isn't a detailed substatus, send a message to your Nova Credit Representative with the publicToken | ✓ | ✗ | ✓ |
SKIPPED | The applicant opted to skip all steps in the application. | ✓ | ✗ | ✓ |
SUPPLIER_UNRESPONSIVE | The applicant has encountered a data supplier outage while going through the widget. They may need to go through NovaConnect again at a later time | ✓ | ✗ | ✓ |
The following statuses can be attached to a specific source:
| Status | Description |
|---|---|
PENDING | The source was started but never completed |
SUCCESS | See above |
NOT_AUTHENTICATED | See above |
ERROR | See above |
SKIPPED | The applicant opted to skip the source. |
SUPPLIER_UNRESPONSIVE | See above |
substatus
Additional insight on certain cases that occur when fetching or parsing a report.
These substatuses may accompany a webhook with an ERROR status:
| Value | Description |
|---|---|
INVALID_PREFILLS_PII_MISSING | Prefills required for the IN Report are missing. |
INVALID_PREFILL_KEY | A prefill field has been passed in that is not supported for the current API version. (Only returned in sandbox.) |
INVALID_PREFILL_ADDRESS | The address sent via prefill must be a string with max length 100 characters and contain a valid street address. |
INVALID_PREFILL_CITY | The city sent via prefill must be a string with max length 100. |
INVALID_PREFILL_DOB | The birthday sent via prefill is missing or not in YYYY-MM-DD format. |
INVALID_PREFILL_EMAIL | The email sent via prefill must be a valid email with max length 100 characters. |
INVALID_PREFILL_FIRST_NAME | The first name sent via prefill must be a string less than 255 characters and contain only alphabetical, unicode, dots, apostraphes and dashes. |
INVALID_PREFILL_LAST_NAME | The last name sent via prefill must be a string less than 255 characters and contain only alphabetical, unicode, dots, apostraphes and dashes. |
INVALID_PREFILL_INCOME | The stated annual income sent via prefill must be an integer between 0 and 2147483647. |
INVALID_PREFILL_PHONE | The phone number sent via prefill must be a string with max length 255 characters. |
INVALID_PREFILL_STATE | The state sent via prefill is missing or not in a valid two letter US state or territory code. |
INVALID_PREFILL_ZIP | The zip code sent via prefill must a string with a valid USA zip code. |
The following substatuses can be attached to a specific source:
| Source Status | Source Substatus | Description |
|---|---|---|
ERROR | INCOMPLETE_INFORMATION | The source did not provide critical fields |
NOT_AUTHENTICATED | E_BANKING_NOT_SUPPORTED | The connected bank does not support e-banking features |
NOT_AUTHENTICATED | INCOMPATIBLE_ACCOUNT_TYPES_SUBMITTED | The user only submitted debt accounts (e.g. credit card). |
NOT_AUTHENTICATED | MFA_REQUIRED_ON_FETCH | Multi-factor authentication failed or was required but not completed |
Report Examples
Primary example (verification with bank + payroll connection)
{
"meta": {
"public_token": "65bf7135-4eb8-4342-a7c2-0380322b3d59",
"user_args": null,
"created_at": "2025-02-07T23:10:51.987Z",
"api_version": "1.0.0",
"external_id": null,
"status": "SUCCESS",
"substatus": null,
"nova_report_revision": null,
"consumer_id": "b281e335-9d19-4aa7-b559-e74d08a05cf4",
"consumer_external_id": "472cbdc9-cf31-4117-a095-e27e2db054e5"
},
"product": {
"name": "Village Communities",
"product_id": "12d1e755-3d82-445d-84e6-b67b5ff7c70d",
"inquiry_type": "TENANT"
},
"stated_employers": [
{
"name": "Walmart",
"input_method": "CONSUMER_INPUT",
"verification_sources": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"source_type": "PAYROLL",
"status": "SUCCESS",
"substatus": null
}
]
},
{
"name": "Social Security",
"input_method": "CONSUMER_INPUT",
"verification_sources": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"source_type": "PAYROLL",
"status": "SUCCESS",
"substatus": null
}
]
}
],
"identities": [
{
"source_id": "CONSUMER_INPUT",
"source_uuid": null,
"first_name": "Raymond",
"last_name": "Marshal",
"full_name": "Raymond Marshal",
"emails": ["raymond@email.com"],
"matching": {
"full_name": {
"matched_sources": [
{
"source_id": "USA_AKOYA",
"source_uuid": "753c4285-9331-4502-b02b-5064904f33ce"
},
{
"source_id": "USA_FIN",
"source_uuid": "550e8400-e29b-41d4-a716-446655440000"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
}
],
"unmatched_sources": []
}
}
},
{
"source_id": "USA_AKOYA",
"source_uuid": "753c4285-9331-4502-b02b-5064904f33ce",
"first_name": null,
"last_name": null,
"full_name": "RAYMOND MARSHAL",
"emails": []
},
{
"source_id": "USA_FIN",
"source_uuid": "550e8400-e29b-41d4-a716-446655440000",
"first_name": null,
"last_name": null,
"full_name": "RAYMOND MARSHAL",
"emails": []
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"first_name": null,
"last_name": null,
"full_name": "RAYMOND J MARSHAL",
"emails": []
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"first_name": null,
"last_name": null,
"full_name": "RAYMOND MARSHAL",
"emails": []
}
],
"employment": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"employer_name": "Walmart, Inc.",
"employer_address_line_1": "702 SW 8th Street",
"employer_address_line_2": null,
"employer_city": "Bentonville",
"employer_state": "Arkansas",
"employment_type": "parttime",
"employment_status": "active",
"job_title": "Cashier",
"hire_date": "2023-03-01",
"termination_date": null,
"base_pay_period": "HOURLY",
"base_pay_amount": 24.22,
"matching": {
"employer_name": {
"matched_employer_name": [
{
"stated_employer": "Walmart"
}
],
"unmatched_employer_name": []
},
"direct_deposit_accounts": {
"matched_direct_deposit_accounts": [
{
"matched_account_id": "fd058f61-56d3-4150-ad9f-ff899b55f799",
"truncated_account_number": "475462",
"institution_name": "Chase"
}
],
"unmatched_direct_deposit_accounts": []
}
}
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"employer_name": "Social Security Administration",
"employer_address_line_1": "1100 West High Rise",
"employer_address_line_2": null,
"employer_city": "Baltimore",
"employer_state": "Maryland",
"employment_type": "benefit",
"employment_status": "active",
"job_title": null,
"hire_date": "2022-01-01",
"termination_date": null,
"base_pay_period": "MONTHLY",
"base_pay_amount": null,
"matching": {
"employer_name": {
"matched_employer_name": [
{
"stated_employer": "Social Security"
}
],
"unmatched_employer_name": []
},
"direct_deposit_accounts": {
"matched_direct_deposit_accounts": [
{
"matched_account_id": "738a6d6e-23be-40c8-a236-39c5659a09a1",
"truncated_account_number": "47205726",
"institution_name": "Alpine Bank"
}
],
"unmatched_direct_deposit_accounts": []
}
}
}
],
"assets": {
"account_details": [
{
"source_id": "USA_AKOYA",
"source_uuid": "753c4285-9331-4502-b02b-5064904f33ce",
"account_id": "fd058f61-56d3-4150-ad9f-ff899b55f799",
"owner_full_name": "RAYMOND MARSHAL",
"institution_name": "Chase",
"account_name": "Checking Account",
"account_type": "CASH_EQUIVALENT",
"date_first_transaction": "2020-01-27",
"last_statement_end_date": null,
"truncated_account_number": "475462",
"responsibility": "INDIVIDUAL",
"addresses": [
{
"address_id": "6d4d5fff-25ee-4ba0-8247-9bc75b900378",
"address": "5445 ALTON PKWY IRVINE CA 92614",
"street": null,
"city": null,
"zipcode": null,
"state": null
}
],
"current_balance": 577.63,
"six_months_average_balance": 432.55,
"twelve_months_income_from_assets": 12.61
},
{
"source_id": "USA_FIN",
"source_uuid": "550e8400-e29b-41d4-a716-446655440000",
"account_id": "738a6d6e-23be-40c8-a236-39c5659a09a1",
"owner_full_name": "RAYMOND MARSHAL",
"institution_name": "Alpine Bank",
"account_name": "Checking Account",
"account_type": "CASH_EQUIVALENT",
"date_first_transaction": "2025-02-27",
"last_statement_end_date": null,
"truncated_account_number": "47205726",
"responsibility": null,
"addresses": [
{
"address_id": "6d4d5fff-25ee-4ba0-8247-9bc75b900378",
"address": "5445 ALTON PKWY IRVINE CA 92614",
"street": null,
"city": null,
"zipcode": null,
"state": null
}
],
"current_balance": 643.78,
"six_months_average_balance": 337.54,
"twelve_months_income_from_assets": 11.67
}
],
"inflows": [
{
"inflow_id": "f3f0d372-a0f7-402f-835e-67ce6db2a75f",
"account_id": "fd058f61-56d3-4150-ad9f-ff899b55f799",
"description": "walmart irvine superstore",
"deposited_annual_income": 10296,
"deposited_recent_income": 7696
},
{
"inflow_id": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d",
"account_id": "fd058f61-56d3-4150-ad9f-ff899b55f799",
"description": "soc secur treas XXX",
"deposited_annual_income": 12345,
"deposited_recent_income": 12345
},
{
"inflow_id": "c33632a0-1d6a-11eb-806e-1f1356d092eb",
"account_id": "738a6d6e-23be-40c8-a236-39c5659a09a1",
"description": "VENMO CASHOUT PPD ID",
"deposited_annual_income": 480,
"deposited_recent_income": 488
}
],
"matched_income_sources": [
{
"stated_employer": "Social Security",
"matched_inflow_id": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
},
{
"stated_employer": "Walmart",
"matched_inflow_id": "f3f0d372-a0f7-402f-835e-67ce6db2a75f"
}
]
},
"income": {
"payroll": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"provider_name": "Walmart, Inc.",
"provider_type": "EMPLOYER",
"annual_gross_income": 10296.0,
"annual_net_income": 7696.0,
"pay_frequency": "WEEKLY",
"gigs_annual_gross_earnings": null,
"gigs_annual_deposited_amount": null,
"gigs_annual_net_earnings": null,
"gig_summaries": [],
"calendar_summary": [
{
"year": "2025",
"calendar_year_gross_income": 6675.43,
"calendar_year_net_income": 4989.71
},
{
"year": "2024",
"calendar_year_gross_income": 3620.57,
"calendar_year_net_income": 2706.29
}
],
"statements": [
{
"pay_date": "2025-08-25",
"pay_period_start": "2025-08-18",
"pay_period_end": "2025-08-24",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 10296,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 7696
},
{
"pay_date": "2025-08-18",
"pay_period_start": "2025-08-11",
"pay_period_end": "2025-08-17",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 10098,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 7548
},
{
"pay_date": "2025-08-11",
"pay_period_start": "2025-08-04",
"pay_period_end": "2025-08-10",
"hours_worked": 38.5,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 9900,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 7400
},
{
"pay_date": "2025-08-04",
"pay_period_start": "2025-07-28",
"pay_period_end": "2025-08-03",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 9702,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 7252
},
{
"pay_date": "2025-07-28",
"pay_period_start": "2025-07-21",
"pay_period_end": "2025-07-27",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 9504,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 7104
},
{
"pay_date": "2025-07-21",
"pay_period_start": "2025-07-14",
"pay_period_end": "2025-07-20",
"hours_worked": 35.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 9306,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 6956
},
{
"pay_date": "2025-07-14",
"pay_period_start": "2025-07-07",
"pay_period_end": "2025-07-13",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 9108,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 6808
},
{
"pay_date": "2025-07-07",
"pay_period_start": "2025-06-30",
"pay_period_end": "2025-07-06",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 8910,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 6660
},
{
"pay_date": "2025-06-30",
"pay_period_start": "2025-06-23",
"pay_period_end": "2025-06-29",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 8712,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 6512
},
{
"pay_date": "2025-06-23",
"pay_period_start": "2025-06-16",
"pay_period_end": "2025-06-22",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 8514,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 6364
},
{
"pay_date": "2025-06-16",
"pay_period_start": "2025-06-09",
"pay_period_end": "2025-06-15",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 8316,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 6216
},
{
"pay_date": "2025-06-09",
"pay_period_start": "2025-06-02",
"pay_period_end": "2025-06-08",
"hours_worked": 38.5,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 8118,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 6068
},
{
"pay_date": "2025-06-02",
"pay_period_start": "2025-05-26",
"pay_period_end": "2025-06-01",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 7920,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 5920
},
{
"pay_date": "2025-05-26",
"pay_period_start": "2025-05-19",
"pay_period_end": "2025-05-25",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 7722,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 5772
},
{
"pay_date": "2025-05-19",
"pay_period_start": "2025-05-12",
"pay_period_end": "2025-05-18",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 7524,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 5624
},
{
"pay_date": "2025-05-12",
"pay_period_start": "2025-05-05",
"pay_period_end": "2025-05-11",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 7326,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 5476
},
{
"pay_date": "2025-05-05",
"pay_period_start": "2025-04-28",
"pay_period_end": "2025-05-04",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 7128,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 5328
},
{
"pay_date": "2025-04-28",
"pay_period_start": "2025-04-21",
"pay_period_end": "2025-04-27",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 6930,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 5180
},
{
"pay_date": "2025-04-21",
"pay_period_start": "2025-04-14",
"pay_period_end": "2025-04-20",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 6732,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 5032
},
{
"pay_date": "2025-04-14",
"pay_period_start": "2025-04-07",
"pay_period_end": "2025-04-13",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 6534,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 4884
},
{
"pay_date": "2025-04-07",
"pay_period_start": "2025-03-31",
"pay_period_end": "2025-04-06",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 6336,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 4736
},
{
"pay_date": "2025-03-31",
"pay_period_start": "2025-03-24",
"pay_period_end": "2025-03-30",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 6138,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 4588
},
{
"pay_date": "2025-03-24",
"pay_period_start": "2025-03-17",
"pay_period_end": "2025-03-23",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 5940,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 4440
},
{
"pay_date": "2025-03-17",
"pay_period_start": "2025-03-10",
"pay_period_end": "2025-03-16",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 5742,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 4292
},
{
"pay_date": "2025-03-10",
"pay_period_start": "2025-03-03",
"pay_period_end": "2025-03-09",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 5544,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 4144
},
{
"pay_date": "2025-03-03",
"pay_period_start": "2025-02-24",
"pay_period_end": "2025-03-02",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 5346,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 3996
},
{
"pay_date": "2025-02-24",
"pay_period_start": "2025-02-17",
"pay_period_end": "2025-02-23",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 5148,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 3848
},
{
"pay_date": "2025-02-17",
"pay_period_start": "2025-02-10",
"pay_period_end": "2025-02-16",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 4950,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 3700
},
{
"pay_date": "2025-02-10",
"pay_period_start": "2025-02-03",
"pay_period_end": "2025-02-09",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 4752,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 3552
},
{
"pay_date": "2025-02-03",
"pay_period_start": "2025-01-27",
"pay_period_end": "2025-02-02",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 4554,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 3404
},
{
"pay_date": "2025-01-27",
"pay_period_start": "2025-01-20",
"pay_period_end": "2025-01-26",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 4356,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 3256
},
{
"pay_date": "2025-01-20",
"pay_period_start": "2025-01-13",
"pay_period_end": "2025-01-19",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 4158,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 3108
},
{
"pay_date": "2025-01-13",
"pay_period_start": "2025-01-06",
"pay_period_end": "2025-01-12",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 3960,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 2960
},
{
"pay_date": "2025-01-06",
"pay_period_start": "2024-12-30",
"pay_period_end": "2025-01-05",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 3762,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 2812
},
{
"pay_date": "2024-12-30",
"pay_period_start": "2024-12-23",
"pay_period_end": "2024-12-29",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 3564,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 2664
},
{
"pay_date": "2024-12-23",
"pay_period_start": "2024-12-16",
"pay_period_end": "2024-12-22",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 3366,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 2516
},
{
"pay_date": "2024-12-16",
"pay_period_start": "2024-12-09",
"pay_period_end": "2024-12-15",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 3168,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 2368
},
{
"pay_date": "2024-12-09",
"pay_period_start": "2024-12-02",
"pay_period_end": "2024-12-08",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 2970,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 2220
},
{
"pay_date": "2024-12-02",
"pay_period_start": "2024-11-25",
"pay_period_end": "2024-12-01",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 2772,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 2072
},
{
"pay_date": "2024-11-25",
"pay_period_start": "2024-11-18",
"pay_period_end": "2024-11-24",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 2574,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 1924
},
{
"pay_date": "2024-11-18",
"pay_period_start": "2024-11-11",
"pay_period_end": "2024-11-17",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 2376,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 1776
},
{
"pay_date": "2024-11-11",
"pay_period_start": "2024-11-04",
"pay_period_end": "2024-11-10",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 2178,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 1628
},
{
"pay_date": "2024-11-04",
"pay_period_start": "2024-10-28",
"pay_period_end": "2024-11-03",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 1980,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 1480
},
{
"pay_date": "2024-10-28",
"pay_period_start": "2024-10-21",
"pay_period_end": "2024-10-27",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 1782,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 1332
},
{
"pay_date": "2024-10-21",
"pay_period_start": "2024-10-14",
"pay_period_end": "2024-10-20",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 1584,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 1184
},
{
"pay_date": "2024-10-14",
"pay_period_start": "2024-10-07",
"pay_period_end": "2024-10-13",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 1386,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 1036
},
{
"pay_date": "2024-10-07",
"pay_period_start": "2024-09-30",
"pay_period_end": "2024-10-06",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 1188,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 888
},
{
"pay_date": "2024-09-30",
"pay_period_start": "2024-09-23",
"pay_period_end": "2024-09-29",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 990,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 740
},
{
"pay_date": "2024-09-23",
"pay_period_start": "2024-09-16",
"pay_period_end": "2024-09-22",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 792,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 592
},
{
"pay_date": "2024-09-16",
"pay_period_start": "2024-09-09",
"pay_period_end": "2024-09-15",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 594,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 444
},
{
"pay_date": "2024-09-09",
"pay_period_start": "2024-09-02",
"pay_period_end": "2024-09-08",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 396,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 296
},
{
"pay_date": "2024-09-02",
"pay_period_start": "2024-08-26",
"pay_period_end": "2024-09-01",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 198,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 148
}
]
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"provider_name": "Social Security Administration",
"provider_type": "BENEFITS",
"annual_gross_income": 13526.0,
"annual_net_income": 12624.0,
"pay_frequency": "MONTHLY",
"gigs_annual_gross_earnings": null,
"gigs_annual_deposited_amount": null,
"gigs_annual_net_earnings": null,
"gig_summaries": [],
"calendar_summary": [
{
"year": "2025",
"calendar_year_gross_income": 7890.12,
"calendar_year_net_income": 7364
},
{
"year": "2024",
"calendar_year_gross_income": 5635.8,
"calendar_year_net_income": 5260
}
],
"statements": [
{
"pay_date": "2025-08-01",
"pay_period_start": "2025-07-01",
"pay_period_end": "2025-07-31",
"hours_worked": null,
"gross_total_earnings_amount_current": 1127.16,
"gross_total_earnings_amount_ytd": 9017.28,
"net_total_earnings_amount_current": 1052.0,
"net_total_earnings_amount_ytd": 8416.0
},
{
"pay_date": "2025-07-01",
"pay_period_start": "2025-06-01",
"pay_period_end": "2025-06-30",
"hours_worked": null,
"gross_total_earnings_amount_current": 1127.16,
"gross_total_earnings_amount_ytd": 7890.12,
"net_total_earnings_amount_current": 1052.0,
"net_total_earnings_amount_ytd": 7364.0
},
{
"pay_date": "2025-06-01",
"pay_period_start": "2025-05-01",
"pay_period_end": "2025-05-31",
"hours_worked": null,
"gross_total_earnings_amount_current": 1127.16,
"gross_total_earnings_amount_ytd": 6762.96,
"net_total_earnings_amount_current": 1052.0,
"net_total_earnings_amount_ytd": 6312.0
},
{
"pay_date": "2025-05-01",
"pay_period_start": "2025-04-01",
"pay_period_end": "2025-04-30",
"hours_worked": null,
"gross_total_earnings_amount_current": 1127.16,
"gross_total_earnings_amount_ytd": 5635.8,
"net_total_earnings_amount_current": 1052.0,
"net_total_earnings_amount_ytd": 5260.0
},
{
"pay_date": "2025-04-01",
"pay_period_start": "2025-03-01",
"pay_period_end": "2025-03-31",
"hours_worked": null,
"gross_total_earnings_amount_current": 1127.16,
"gross_total_earnings_amount_ytd": 4508.64,
"net_total_earnings_amount_current": 1052.0,
"net_total_earnings_amount_ytd": 4208.0
},
{
"pay_date": "2025-03-01",
"pay_period_start": "2025-02-01",
"pay_period_end": "2025-02-28",
"hours_worked": null,
"gross_total_earnings_amount_current": 1127.16,
"gross_total_earnings_amount_ytd": 3381.48,
"net_total_earnings_amount_current": 1052.0,
"net_total_earnings_amount_ytd": 3156.0
},
{
"pay_date": "2025-02-01",
"pay_period_start": "2025-01-01",
"pay_period_end": "2025-01-31",
"hours_worked": null,
"gross_total_earnings_amount_current": 1127.16,
"gross_total_earnings_amount_ytd": 2254.32,
"net_total_earnings_amount_current": 1052.0,
"net_total_earnings_amount_ytd": 2104.0
},
{
"pay_date": "2025-01-01",
"pay_period_start": "2024-12-01",
"pay_period_end": "2024-12-31",
"hours_worked": null,
"gross_total_earnings_amount_current": 1127.16,
"gross_total_earnings_amount_ytd": 1127.16,
"net_total_earnings_amount_current": 1052.0,
"net_total_earnings_amount_ytd": 1052.0
},
{
"pay_date": "2024-12-01",
"pay_period_start": "2024-11-01",
"pay_period_end": "2024-11-30",
"hours_worked": null,
"gross_total_earnings_amount_current": 1127.16,
"gross_total_earnings_amount_ytd": 13525.92,
"net_total_earnings_amount_current": 1052.0,
"net_total_earnings_amount_ytd": 12624.0
},
{
"pay_date": "2024-11-01",
"pay_period_start": "2024-10-01",
"pay_period_end": "2024-10-31",
"hours_worked": null,
"gross_total_earnings_amount_current": 1127.16,
"gross_total_earnings_amount_ytd": 12398.76,
"net_total_earnings_amount_current": 1052.0,
"net_total_earnings_amount_ytd": 11572.0
},
{
"pay_date": "2024-10-01",
"pay_period_start": "2024-09-01",
"pay_period_end": "2024-09-30",
"hours_worked": null,
"gross_total_earnings_amount_current": 1127.16,
"gross_total_earnings_amount_ytd": 11271.6,
"net_total_earnings_amount_current": 1052.0,
"net_total_earnings_amount_ytd": 10520.0
},
{
"pay_date": "2024-09-01",
"pay_period_start": "2024-08-01",
"pay_period_end": "2024-08-31",
"hours_worked": null,
"gross_total_earnings_amount_current": 1127.16,
"gross_total_earnings_amount_ytd": 10144.44,
"net_total_earnings_amount_current": 1052.0,
"net_total_earnings_amount_ytd": 9468.0
}
]
}
],
"documents": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "cf0fa8ef-a79e-4e2a-a829-3a9a61db66e3",
"available_date": "2025-10-30",
"source_filepath": "cf0fa8ef-a79e-4e2a-a829-3a9a61db66e3/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "7f3e9c82-4d5a-4b8e-9f2c-1a6b8e4d7c3f",
"available_date": "2025-10-23",
"source_filepath": "7f3e9c82-4d5a-4b8e-9f2c-1a6b8e4d7c3f/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"available_date": "2025-10-16",
"source_filepath": "f47ac10b-58cc-4372-a567-0e02b2c3d479/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "6ba7b812-9dad-11d1-80b4-00c04fd430c8",
"available_date": "2025-10-09",
"source_filepath": "6ba7b812-9dad-11d1-80b4-00c04fd430c8/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "9d8c7b6a-5e4f-3210-abcd-ef9876543210",
"available_date": "2025-10-02",
"source_filepath": "9d8c7b6a-5e4f-3210-abcd-ef9876543210/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "1a2b3c4d-5e6f-7890-abcd-123456789abc",
"available_date": "2025-09-25",
"source_filepath": "1a2b3c4d-5e6f-7890-abcd-123456789abc/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "8f7e6d5c-4b3a-2190-fedc-ba9876543210",
"available_date": "2025-09-18",
"source_filepath": "8f7e6d5c-4b3a-2190-fedc-ba9876543210/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "fedcba98-7654-3210-9876-543210fedcba",
"available_date": "2025-09-11",
"source_filepath": "fedcba98-7654-3210-9876-543210fedcba/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "24681357-9bdf-ace0-2468-13579bdfac24",
"available_date": "2025-09-04",
"source_filepath": "24681357-9bdf-ace0-2468-13579bdfac24/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "97531246-8ace-0bdf-9753-1246acedbf97",
"available_date": "2025-08-29",
"source_filepath": "97531246-8ace-0bdf-9753-1246acedbf97/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "abcdef12-3456-7890-abcd-ef1234567890",
"available_date": "2025-08-22",
"source_filepath": "abcdef12-3456-7890-abcd-ef1234567890/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "1122aabb-ccdd-eeff-1122-aabbccddeeff",
"available_date": "2025-08-15",
"source_filepath": "1122aabb-ccdd-eeff-1122-aabbccddeeff/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "9988ffee-ddcc-bbaa-9988-ffeeddccbbaa",
"available_date": "2025-08-08",
"source_filepath": "9988ffee-ddcc-bbaa-9988-ffeeddccbbaa/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "deadbeef-cafe-babe-dead-beefcafebabe",
"available_date": "2025-08-01",
"source_filepath": "deadbeef-cafe-babe-dead-beefcafebabe/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "c0ffee00-d00d-face-c0ff-ee00d00dface",
"available_date": "2025-07-24",
"source_filepath": "c0ffee00-d00d-face-c0ff-ee00d00dface/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"document_type": "BENEFIT",
"document_id": "550e8400-e29b-41d4-a716-446655440000",
"available_date": "2025-07-17",
"source_filepath": "550e8400-e29b-41d4-a716-446655440000/6ba7b810-9dad-11d1-80b4-00c04fd430c8.pdf"
}
]
},
"application_completeness_checks": [
{
"check": "MISSING_DEPOSIT_ACCOUNTS_DETECTED",
"value": false
},
{
"check": "PRIMARY_ACCOUNT_NOT_DETECTED",
"value": false
},
{
"check": "VENMO_TRANSACTIONS_DETECTED",
"value": true
},
{
"check": "CASHAPP_TRANSACTIONS_DETECTED",
"value": false
},
{
"check": "ZELLE_TRANSACTIONS_DETECTED",
"value": false
},
{
"check": "PAYPAL_TRANSACTIONS_DETECTED",
"value": false
},
{
"check": "SKIPPED_INCOME",
"value": false
}
]
}
Document example (verification with bank statements + document upload)
{
"meta": {
"public_token": "a1b2c3d4-5e6f-7890-abcd-ef1234567890",
"user_args": null,
"created_at": "2025-09-07T23:10:51.987Z",
"api_version": "1.0.0",
"external_id": null,
"status": "SUCCESS",
"substatus": null,
"nova_report_revision": null,
"consumer_id": "b281e335-9d19-4aa7-b559-e74d08a05cf4",
"consumer_external_id": "472cbdc9-cf31-4117-a095-e27e2db054e5"
},
"product": {
"name": "Village Communities",
"product_id": "9f8e7d6c-5b4a-3928-1764-fedcba098765",
"inquiry_type": "TENANT"
},
"stated_employers": [
{
"name": "Uber",
"input_method": "CONSUMER_INPUT",
"verification_sources": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "b2c3d4e5-f678-9012-3456-789abcdef012",
"source_type": "PAYROLL",
"status": "SUCCESS",
"substatus": null
}
]
},
{
"name": "Unemployment",
"input_method": "CONSUMER_INPUT",
"verification_sources": [
{
"source_id": "NOVA_DOCUMENT",
"source_uuid": "d4e5f678-9012-3456-789a-bcdef0123456",
"source_type": "DOCUMENT",
"status": "SUCCESS",
"substatus": null
}
]
},
// This income source was skipped and applicant provided a reason
{
"name": "Alimony",
"input_method": "CONSUMER_INPUT",
"verification_sources": [],
"skipped_reason": "No longer receiving this income"
}
],
"identities": [
{
"source_id": "CONSUMER_INPUT",
"source_uuid": null,
"first_name": "Raymond",
"last_name": "Marshal",
"full_name": "Raymond Marshal",
"emails": ["raymond@email.com"],
"matching": {
"full_name": {
"matched_sources": [
{
"source_id": "OCROLUS",
"source_uuid": "e5f67890-1234-5678-9abc-def012345678"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "b2c3d4e5-f678-9012-3456-789abcdef012"
}
],
"unmatched_sources": []
}
}
},
{
"source_id": "OCROLUS",
"source_uuid": "e5f67890-1234-5678-9abc-def012345678",
"first_name": null,
"last_name": null,
"full_name": "RAYMOND MARSHAL",
"emails": []
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "b2c3d4e5-f678-9012-3456-789abcdef012",
"first_name": null,
"last_name": null,
"full_name": "RAYMOND MARSHAL",
"emails": []
}
],
"employment": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "b2c3d4e5-f678-9012-3456-789abcdef012",
"employer_name": "Uber",
"employer_address_line_1": "1725 3rd St",
"employer_address_line_2": null,
"employer_city": "San Francisco",
"employer_state": "California",
"employment_type": "contract",
"employment_status": "active",
"job_title": "Driver",
"hire_date": "2025-03-01",
"termination_date": null,
"base_pay_period": null,
"base_pay_amount": null,
"matching": {
"employer_name": {
"matched_employer_name": [
{
"stated_employer": "Uber"
}
],
"unmatched_employer_name": []
},
"direct_deposit_accounts": {
"matched_direct_deposit_accounts": [
{
"matched_account_id": "f6789012-3456-789a-bcde-f01234567890",
"truncated_account_number": "475462",
"institution_name": "Redstone Federal Credit Union"
}
],
"unmatched_direct_deposit_accounts": []
}
}
}
],
"assets": {
"account_details": [
{
"source_id": "OCROLUS",
"source_uuid": "e5f67890-1234-5678-9abc-def012345678",
"account_id": "f6789012-3456-789a-bcde-f01234567890",
"owner_full_name": "RAYMOND MARSHAL",
"institution_name": "Redstone Federal Credit Union",
"account_name": "Checking Account",
"account_type": "CASH_EQUIVALENT",
"date_first_transaction": "2020-01-27",
"last_statement_end_date": "2025-08-31",
"truncated_account_number": "475462",
"responsibility": "INDIVIDUAL",
"addresses": [
{
"address_id": "78901234-5678-9abc-def0-123456789012",
"address": "5445 ALTON PKWY IRVINE CA 92614",
"street": null,
"city": null,
"zipcode": null,
"state": null
}
],
"current_balance": 612.47,
"six_months_average_balance": 458.73,
"twelve_months_income_from_assets": 13.42
}
],
"inflows": [
{
"inflow_id": "89012345-6789-abcd-ef01-23456789abcd",
"account_id": "f6789012-3456-789a-bcde-f01234567890",
"description": "uber instant pay st louis mo",
"deposited_annual_income": 3847,
"deposited_recent_income": 4102
},
{
"inflow_id": "9abcdef0-1234-5678-9abc-def012345678",
"account_id": "f6789012-3456-789a-bcde-f01234567890",
"description": "CA unemp dept of labor",
"deposited_annual_income": 2345,
"deposited_recent_income": 2345
}
],
"matched_income_sources": [
{
"stated_employer": "Unemployment",
"matched_inflow_id": "9abcdef0-1234-5678-9abc-def012345678"
},
{
"stated_employer": "Uber",
"matched_inflow_id": "89012345-6789-abcd-ef01-23456789abcd"
}
],
// User had one attempted bank connection for asset verification that failed
"failed_connections": [
{
"source_id": "USA_FIN",
"source_uuid": "abcdef01-2345-6789-abcd-ef0123456789",
"source_type": "BANK_TRANSACTION",
"institution": "Chime",
"status": "ERROR",
"sub_status": "MFA_FETCH_REQUIRED"
}
]
},
"income": {
"payroll": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "b2c3d4e5-f678-9012-3456-789abcdef012",
"provider_name": "UberDrive",
"provider_type": "GIG",
"annual_gross_income": null,
"annual_net_income": null,
"pay_frequency": null,
"gigs_annual_gross_earnings": 27212.78,
"gigs_annual_deposited_amount": 23715.6,
"gigs_annual_net_earnings": 22281.13,
"gig_summaries": [
{
"pay_summary_start": "2025-10-18",
"pay_summary_end": "2025-10-24",
"gross_earnings": 621.21,
"deposited_amount": 553.73,
"net_earnings": 527.04,
"tips": 38.86
},
{
"pay_summary_start": "2025-10-11",
"pay_summary_end": "2025-10-17",
"gross_earnings": 769.66,
"deposited_amount": 660.37,
"net_earnings": 646.71,
"tips": 22.98
},
{
"pay_summary_start": "2025-10-04",
"pay_summary_end": "2025-10-10",
"gross_earnings": 371.89,
"deposited_amount": 336.47,
"net_earnings": 295.47,
"tips": 39.89
},
{
"pay_summary_start": "2025-09-27",
"pay_summary_end": "2025-10-03",
"gross_earnings": 310.89,
"deposited_amount": 262.14,
"net_earnings": 251.66,
"tips": 9.92
},
{
"pay_summary_start": "2025-09-20",
"pay_summary_end": "2025-09-26",
"gross_earnings": 618.1,
"deposited_amount": 556.96,
"net_earnings": 510.75,
"tips": 0
},
{
"pay_summary_start": "2025-09-13",
"pay_summary_end": "2025-09-19",
"gross_earnings": 905.07,
"deposited_amount": 825.72,
"net_earnings": 750.16,
"tips": 34.48
},
{
"pay_summary_start": "2025-09-06",
"pay_summary_end": "2025-09-12",
"gross_earnings": 428.17,
"deposited_amount": 372.15,
"net_earnings": 372.15,
"tips": 24.17
},
{
"pay_summary_start": "2025-08-30",
"pay_summary_end": "2025-09-05",
"gross_earnings": 273.91,
"deposited_amount": 236.61,
"net_earnings": 206.29,
"tips": 8.88
},
{
"pay_summary_start": "2025-08-23",
"pay_summary_end": "2025-08-29",
"gross_earnings": 553.13,
"deposited_amount": 472.76,
"net_earnings": 453.69,
"tips": 19.95
},
{
"pay_summary_start": "2025-08-16",
"pay_summary_end": "2025-08-22",
"gross_earnings": 354.58,
"deposited_amount": 242.34,
"net_earnings": 235.41,
"tips": 0
},
{
"pay_summary_start": "2025-08-09",
"pay_summary_end": "2025-08-15",
"gross_earnings": 475.23,
"deposited_amount": 420.88,
"net_earnings": 395.23,
"tips": 30.72
},
{
"pay_summary_start": "2025-08-02",
"pay_summary_end": "2025-08-08",
"gross_earnings": 432.43,
"deposited_amount": 401.2,
"net_earnings": 387.89,
"tips": 0
},
{
"pay_summary_start": "2025-07-26",
"pay_summary_end": "2025-08-01",
"gross_earnings": 331.04,
"deposited_amount": 306.37,
"net_earnings": 264.38,
"tips": 0
},
{
"pay_summary_start": "2025-07-19",
"pay_summary_end": "2025-07-25",
"gross_earnings": 272.08,
"deposited_amount": 233.67,
"net_earnings": 217.64,
"tips": 19.31
},
{
"pay_summary_start": "2025-07-12",
"pay_summary_end": "2025-07-18",
"gross_earnings": 487.97,
"deposited_amount": 441.84,
"net_earnings": 433.64,
"tips": 23.2
},
{
"pay_summary_start": "2025-07-05",
"pay_summary_end": "2025-07-11",
"gross_earnings": 371.26,
"deposited_amount": 274.47,
"net_earnings": 256.23,
"tips": 30.68
},
{
"pay_summary_start": "2025-06-28",
"pay_summary_end": "2025-07-04",
"gross_earnings": 228.8,
"deposited_amount": 201.71,
"net_earnings": 184.63,
"tips": 0
},
{
"pay_summary_start": "2025-06-21",
"pay_summary_end": "2025-06-27",
"gross_earnings": 536.43,
"deposited_amount": 463.1,
"net_earnings": 442.76,
"tips": 0
},
{
"pay_summary_start": "2025-06-14",
"pay_summary_end": "2025-06-20",
"gross_earnings": 692.75,
"deposited_amount": 567.1,
"net_earnings": 557.34,
"tips": 6.95
},
{
"pay_summary_start": "2025-06-07",
"pay_summary_end": "2025-06-13",
"gross_earnings": 618.9,
"deposited_amount": 547.38,
"net_earnings": 506.34,
"tips": 0
},
{
"pay_summary_start": "2025-05-31",
"pay_summary_end": "2025-06-06",
"gross_earnings": 739.85,
"deposited_amount": 653.05,
"net_earnings": 600.27,
"tips": 46.67
},
{
"pay_summary_start": "2025-05-24",
"pay_summary_end": "2025-05-30",
"gross_earnings": 512.5,
"deposited_amount": 439.07,
"net_earnings": 404.94,
"tips": 15.01
},
{
"pay_summary_start": "2025-05-17",
"pay_summary_end": "2025-05-23",
"gross_earnings": 572.35,
"deposited_amount": 475.58,
"net_earnings": 475.58,
"tips": 0
},
{
"pay_summary_start": "2025-05-10",
"pay_summary_end": "2025-05-16",
"gross_earnings": 669.68,
"deposited_amount": 568.57,
"net_earnings": 554.94,
"tips": 0
},
{
"pay_summary_start": "2025-05-03",
"pay_summary_end": "2025-05-09",
"gross_earnings": 292.31,
"deposited_amount": 256.95,
"net_earnings": 234.59,
"tips": 0
},
{
"pay_summary_start": "2025-04-26",
"pay_summary_end": "2025-05-02",
"gross_earnings": 604.81,
"deposited_amount": 512.91,
"net_earnings": 502.92,
"tips": 0
},
{
"pay_summary_start": "2025-04-19",
"pay_summary_end": "2025-04-25",
"gross_earnings": 469.9,
"deposited_amount": 411.33,
"net_earnings": 373.86,
"tips": 12.14
},
{
"pay_summary_start": "2025-04-12",
"pay_summary_end": "2025-04-18",
"gross_earnings": 772.98,
"deposited_amount": 718.64,
"net_earnings": 643.98,
"tips": 0
},
{
"pay_summary_start": "2025-04-05",
"pay_summary_end": "2025-04-11",
"gross_earnings": 632.32,
"deposited_amount": 546.57,
"net_earnings": 532.63,
"tips": 47.23
},
{
"pay_summary_start": "2025-03-29",
"pay_summary_end": "2025-04-04",
"gross_earnings": 511.34,
"deposited_amount": 419.39,
"net_earnings": 419.39,
"tips": 2.34
},
{
"pay_summary_start": "2025-03-22",
"pay_summary_end": "2025-03-28",
"gross_earnings": 551.59,
"deposited_amount": 513.24,
"net_earnings": 473.84,
"tips": 15.66
},
{
"pay_summary_start": "2025-03-15",
"pay_summary_end": "2025-03-21",
"gross_earnings": 969.56,
"deposited_amount": 859.09,
"net_earnings": 795.85,
"tips": 24.76
},
{
"pay_summary_start": "2025-03-08",
"pay_summary_end": "2025-03-14",
"gross_earnings": 541.62,
"deposited_amount": 486.72,
"net_earnings": 486.72,
"tips": 20.4
},
{
"pay_summary_start": "2025-03-01",
"pay_summary_end": "2025-03-07",
"gross_earnings": 423.57,
"deposited_amount": 372.1,
"net_earnings": 328.29,
"tips": 0
},
{
"pay_summary_start": "2025-02-22",
"pay_summary_end": "2025-02-28",
"gross_earnings": 287.93,
"deposited_amount": 271.91,
"net_earnings": 246.52,
"tips": 0
},
{
"pay_summary_start": "2025-02-15",
"pay_summary_end": "2025-02-21",
"gross_earnings": 718.36,
"deposited_amount": 634.04,
"net_earnings": 571.55,
"tips": 6.74
},
{
"pay_summary_start": "2025-02-08",
"pay_summary_end": "2025-02-14",
"gross_earnings": 633.36,
"deposited_amount": 543.81,
"net_earnings": 494.67,
"tips": 20.5
},
{
"pay_summary_start": "2025-02-01",
"pay_summary_end": "2025-02-07",
"gross_earnings": 507.88,
"deposited_amount": 440.52,
"net_earnings": 415.8,
"tips": 8.28
},
{
"pay_summary_start": "2025-01-25",
"pay_summary_end": "2025-01-31",
"gross_earnings": 288.26,
"deposited_amount": 237.51,
"net_earnings": 213.32,
"tips": 0
}
],
"statements": []
}
],
// Applicant uploaded 6 bank statements from one account for asset verification
"documents": [
{
"source_id": "OCROLUS",
"source_uuid": "bcdef012-3456-789a-bcde-f01234567890",
"document_type": "BANK_STATEMENT",
"document_id": "cdef0123-4567-89ab-cdef-012345678901",
"available_date": null,
"source_filepath": "a1b2c3d4-5e6f-7890-abcd-ef1234567890/bcdef012-3456-789a-bcde-f01234567890.pdf",
"irregularity_detection": {
"status": "NOT_DETECTED",
"reasons": [],
"file_type": "pdf",
"genuine_pdf": true,
"version": "3.1"
}
},
{
"source_id": "OCROLUS",
"source_uuid": "bcdef012-3456-789a-bcde-f01234567890",
"document_type": "BANK_STATEMENT",
"document_id": "def01234-5678-9abc-def0-123456789012",
"available_date": null,
"source_filepath": "a1b2c3d4-5e6f-7890-abcd-ef1234567890/bcdef012-3456-789a-bcde-f01234567890.pdf",
"irregularity_detection": {
"status": "NOT_DETECTED",
"reasons": [],
"file_type": "pdf",
"genuine_pdf": true,
"version": "3.1"
}
},
{
"source_id": "OCROLUS",
"source_uuid": "bcdef012-3456-789a-bcde-f01234567890",
"document_type": "BANK_STATEMENT",
"document_id": "ef012345-6789-abcd-ef01-234567890123",
"available_date": null,
"source_filepath": "a1b2c3d4-5e6f-7890-abcd-ef1234567890/bcdef012-3456-789a-bcde-f01234567890.pdf",
"irregularity_detection": {
"status": "NOT_DETECTED",
"reasons": [],
"file_type": "pdf",
"genuine_pdf": true,
"version": "3.1"
}
},
{
"source_id": "OCROLUS",
"source_uuid": "bcdef012-3456-789a-bcde-f01234567890",
"document_type": "BANK_STATEMENT",
"document_id": "f0123456-789a-bcde-f012-3456789abcde",
"available_date": null,
"source_filepath": "a1b2c3d4-5e6f-7890-abcd-ef1234567890/bcdef012-3456-789a-bcde-f01234567890.pdf",
"irregularity_detection": {
"status": "NOT_DETECTED",
"reasons": [],
"file_type": "pdf",
"genuine_pdf": true,
"version": "3.1"
}
},
{
"source_id": "OCROLUS",
"source_uuid": "bcdef012-3456-789a-bcde-f01234567890",
"document_type": "BANK_STATEMENT",
"document_id": "01234567-89ab-cdef-0123-456789abcdef",
"available_date": null,
"source_filepath": "a1b2c3d4-5e6f-7890-abcd-ef1234567890/bcdef012-3456-789a-bcde-f01234567890.pdf",
"irregularity_detection": {
"status": "NOT_DETECTED",
"reasons": [],
"file_type": "pdf",
"genuine_pdf": true,
"version": "3.1"
}
},
{
"source_id": "OCROLUS",
"source_uuid": "bcdef012-3456-789a-bcde-f01234567890",
"document_type": "BANK_STATEMENT",
"document_id": "12345678-9abc-def0-1234-56789abcdef0",
"available_date": null,
"source_filepath": "a1b2c3d4-5e6f-7890-abcd-ef1234567890/bcdef012-3456-789a-bcde-f01234567890.pdf",
"irregularity_detection": {
"status": "NOT_DETECTED",
"reasons": [],
"file_type": "pdf",
"genuine_pdf": true,
"version": "3.1"
}
},
// Applicant uploaded 1 document for one income source for income verification
{
"source_id": "NOVA_DOCUMENT",
"source_uuid": "23456789-abcd-ef01-2345-6789abcdef01",
"document_type": "DOCUMENT",
"document_id": "c3d4e5f6-7890-1234-5678-9abcdef01234",
"available_date": null,
"source_filepath": "a1b2c3d4-5e6f-7890-abcd-ef1234567890/23456789-abcd-ef01-2345-6789abcdef01.pdf"
}
]
},
"application_completeness_checks": [
{
"check": "MISSING_DEPOSIT_ACCOUNTS_DETECTED",
"value": false
},
{
"check": "PRIMARY_ACCOUNT_NOT_DETECTED",
"value": false
},
{
"check": "VENMO_TRANSACTIONS_DETECTED",
"value": false
},
{
"check": "CASHAPP_TRANSACTIONS_DETECTED",
"value": false
},
{
"check": "ZELLE_TRANSACTIONS_DETECTED",
"value": false
},
{
"check": "PAYPAL_TRANSACTIONS_DETECTED",
"value": true
},
{
"check": "SKIPPED_INCOME",
"value": true
}
]
}
Income only example (verification of income only)
{
"meta": {
"public_token": "e1f2a3b4-5c6d-4890-abcd-ef1234567890",
"user_args": null,
"created_at": "2025-09-07T23:10:51.987Z",
"api_version": "1.0.0",
"external_id": null,
"status": "SUCCESS",
"substatus": null,
"nova_report_revision": null,
"consumer_id": "b281e335-9d19-4aa7-b559-e74d08a05cf4",
"consumer_external_id": "472cbdc9-cf31-4117-a095-e27e2db054e5"
},
"product": {
"name": "Village Communities",
"product_id": "a2b3c4d5-6e7f-4928-8764-fedcba098765",
"inquiry_type": "TENANT"
},
"stated_employers": [
{
"name": "Target",
"input_method": "CONSUMER_INPUT",
"verification_sources": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012",
"source_type": "PAYROLL",
"status": "SUCCESS",
"substatus": null
}
]
},
{
"name": "Child Support",
"input_method": "CONSUMER_INPUT",
"verification_sources": [
{
"source_id": "NOVA_DOCUMENT",
"source_uuid": "d5e6f789-0123-4456-889a-bcdef0123456",
"source_type": "DOCUMENT",
"status": "SUCCESS",
"substatus": null
}
]
}
],
"identities": [
{
"source_id": "CONSUMER_INPUT",
"source_uuid": null,
"first_name": "Raymond",
"last_name": "Marshal",
"full_name": "Raymond Marshal",
"emails": ["raymond@email.com"],
"matching": {
"full_name": {
"matched_sources": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012"
}
],
"unmatched_sources": []
}
}
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012",
"first_name": null,
"last_name": null,
"full_name": "RAYMOND MARSHAL",
"emails": []
}
],
"employment": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012",
"employer_name": "Target",
"employer_address_line_1": "1725 3rd St",
"employer_address_line_2": null,
"employer_city": "Minneapolis",
"employer_state": "Minnesota",
"employment_type": "full time",
"employment_status": "active",
"job_title": "Cashier",
"hire_date": "2023-03-01",
"termination_date": null,
"base_pay_period": "HOURLY",
"base_pay_amount": 22.22,
"matching": {
"employer_name": {
"matched_employer_name": [
{
"stated_employer": "Target"
}
],
"unmatched_employer_name": []
}
}
}
],
"income": {
"payroll": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012",
"provider_name": "Target, Inc.",
"provider_type": "EMPLOYER",
"annual_gross_income": 28100.0,
"annual_net_income": 23900.0,
"pay_frequency": "BIWEEKLY",
"gigs_annual_gross_earnings": null,
"gigs_annual_deposited_amount": null,
"gigs_annual_net_earnings": null,
"gig_summaries": [],
"statements": [
{
"pay_date": "2025-08-15",
"pay_period_start": "2025-08-01",
"pay_period_end": "2025-08-14",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 19458,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 16540
},
{
"pay_date": "2025-08-01",
"pay_period_start": "2025-07-18",
"pay_period_end": "2025-07-31",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 18377,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 15620
},
{
"pay_date": "2025-07-18",
"pay_period_start": "2025-07-04",
"pay_period_end": "2025-07-17",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 17296,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 14700
},
{
"pay_date": "2025-07-04",
"pay_period_start": "2025-06-20",
"pay_period_end": "2025-07-03",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 16215,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 13780
},
{
"pay_date": "2025-06-20",
"pay_period_start": "2025-06-06",
"pay_period_end": "2025-06-19",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 15134,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 12860
},
{
"pay_date": "2025-06-06",
"pay_period_start": "2025-05-23",
"pay_period_end": "2025-06-05",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 14053,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 11940
},
{
"pay_date": "2025-05-23",
"pay_period_start": "2025-05-09",
"pay_period_end": "2025-05-22",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 12972,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 11020
},
{
"pay_date": "2025-05-09",
"pay_period_start": "2025-04-25",
"pay_period_end": "2025-05-08",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 11891,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 10100
},
{
"pay_date": "2025-04-25",
"pay_period_start": "2025-04-11",
"pay_period_end": "2025-04-24",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 10810,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 9180
},
{
"pay_date": "2025-04-11",
"pay_period_start": "2025-03-28",
"pay_period_end": "2025-04-10",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 9729,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 8260
},
{
"pay_date": "2025-03-28",
"pay_period_start": "2025-03-14",
"pay_period_end": "2025-03-27",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 8648,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 7340
},
{
"pay_date": "2025-03-14",
"pay_period_start": "2025-02-28",
"pay_period_end": "2025-03-13",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 7567,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 6420
},
{
"pay_date": "2025-02-28",
"pay_period_start": "2025-02-14",
"pay_period_end": "2025-02-27",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 6486,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 5500
},
{
"pay_date": "2025-02-14",
"pay_period_start": "2025-01-31",
"pay_period_end": "2025-02-13",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 5405,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 4580
},
{
"pay_date": "2025-01-31",
"pay_period_start": "2025-01-17",
"pay_period_end": "2025-01-30",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 4324,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 3660
},
{
"pay_date": "2025-01-17",
"pay_period_start": "2025-01-03",
"pay_period_end": "2025-01-16",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 3243,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 2740
},
{
"pay_date": "2025-01-03",
"pay_period_start": "2024-12-20",
"pay_period_end": "2025-01-02",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 1081,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 920
},
{
"pay_date": "2024-12-20",
"pay_period_start": "2024-12-06",
"pay_period_end": "2024-12-19",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 28081,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 23869
},
{
"pay_date": "2024-12-06",
"pay_period_start": "2024-11-22",
"pay_period_end": "2024-12-05",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 27000,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 22949
},
{
"pay_date": "2024-11-22",
"pay_period_start": "2024-11-08",
"pay_period_end": "2024-11-21",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 27000,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 22949
},
{
"pay_date": "2024-11-08",
"pay_period_start": "2024-10-25",
"pay_period_end": "2024-11-07",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 25919,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 22029
},
{
"pay_date": "2024-10-25",
"pay_period_start": "2024-10-11",
"pay_period_end": "2024-10-24",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 24838,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 21109
},
{
"pay_date": "2024-10-11",
"pay_period_start": "2024-09-27",
"pay_period_end": "2024-10-10",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 23757,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 20189
},
{
"pay_date": "2024-09-27",
"pay_period_start": "2024-09-13",
"pay_period_end": "2024-09-26",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 22676,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 19269
},
{
"pay_date": "2024-09-13",
"pay_period_start": "2024-08-30",
"pay_period_end": "2024-09-12",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 21595,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 18349
},
{
"pay_date": "2024-08-30",
"pay_period_start": "2024-08-16",
"pay_period_end": "2024-08-29",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 20514,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 17429
},
{
"pay_date": "2024-08-16",
"pay_period_start": "2024-08-02",
"pay_period_end": "2024-08-15",
"hours_worked": 80.0,
"gross_total_earnings_amount_current": 1081,
"gross_total_earnings_amount_ytd": 19433,
"net_total_earnings_amount_current": 920,
"net_total_earnings_amount_ytd": 16509
}
]
}
]
},
"documents": [
// Applicant uploaded 1 document for one income source for income verification
{
"source_id": "NOVA_DOCUMENT",
"source_uuid": "d5e6f789-0123-4456-889a-bcdef0123456",
"document_type": "DOCUMENT",
"document_id": "c4d5e6f7-8901-4234-8678-9abcdef01234",
"available_date": null,
"source_filepath": "e1f2a3b4-5c6d-4890-abcd-ef1234567890/e6f78901-2345-4678-9abc-def012345678.pdf"
},
// Applicant has paystubs from one payroll account for income verification
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012",
"document_type": "PAYSTUB",
"document_id": "f7890123-4567-489a-bcde-f01234567890",
"available_date": "2025-08-15",
"source_filepath": "e1f2a3b4-5c6d-4890-abcd-ef1234567890/b3c4d5e6-7f80-4012-8456-789abcdef012_001.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012",
"document_type": "PAYSTUB",
"document_id": "89012345-6789-4bcd-ef01-234567890123",
"available_date": "2025-08-01",
"source_filepath": "e1f2a3b4-5c6d-4890-abcd-ef1234567890/b3c4d5e6-7f80-4012-8456-789abcdef012_002.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012",
"document_type": "PAYSTUB",
"document_id": "90123456-789a-4cde-f012-3456789abcde",
"available_date": "2025-07-18",
"source_filepath": "e1f2a3b4-5c6d-4890-abcd-ef1234567890/b3c4d5e6-7f80-4012-8456-789abcdef012_003.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012",
"document_type": "PAYSTUB",
"document_id": "01234567-89ab-4def-0123-456789abcdef",
"available_date": "2025-07-04",
"source_filepath": "e1f2a3b4-5c6d-4890-abcd-ef1234567890/b3c4d5e6-7f80-4012-8456-789abcdef012_004.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012",
"document_type": "PAYSTUB",
"document_id": "12345678-9abc-4ef0-1234-56789abcdef0",
"available_date": "2025-06-20",
"source_filepath": "e1f2a3b4-5c6d-4890-abcd-ef1234567890/b3c4d5e6-7f80-4012-8456-789abcdef012_005.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012",
"document_type": "PAYSTUB",
"document_id": "23456789-abcd-4f01-2345-6789abcdef01",
"available_date": "2025-06-06",
"source_filepath": "e1f2a3b4-5c6d-4890-abcd-ef1234567890/b3c4d5e6-7f80-4012-8456-789abcdef012_006.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012",
"document_type": "PAYSTUB",
"document_id": "3456789a-bcde-4012-3456-789abcdef012",
"available_date": "2025-05-23",
"source_filepath": "e1f2a3b4-5c6d-4890-abcd-ef1234567890/b3c4d5e6-7f80-4012-8456-789abcdef012_007.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012",
"document_type": "PAYSTUB",
"document_id": "456789ab-cdef-4123-4567-89abcdef0123",
"available_date": "2025-05-09",
"source_filepath": "e1f2a3b4-5c6d-4890-abcd-ef1234567890/b3c4d5e6-7f80-4012-8456-789abcdef012_008.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012",
"document_type": "PAYSTUB",
"document_id": "56789abc-def0-4234-5678-9abcdef01234",
"available_date": "2025-04-25",
"source_filepath": "e1f2a3b4-5c6d-4890-abcd-ef1234567890/b3c4d5e6-7f80-4012-8456-789abcdef012_009.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012",
"document_type": "PAYSTUB",
"document_id": "6789abcd-ef01-4345-6789-abcdef012345",
"available_date": "2025-04-11",
"source_filepath": "e1f2a3b4-5c6d-4890-abcd-ef1234567890/b3c4d5e6-7f80-4012-8456-789abcdef012_010.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012",
"document_type": "PAYSTUB",
"document_id": "789abcde-f012-4456-789a-bcdef0123456",
"available_date": "2025-03-28",
"source_filepath": "e1f2a3b4-5c6d-4890-abcd-ef1234567890/b3c4d5e6-7f80-4012-8456-789abcdef012_011.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012",
"document_type": "PAYSTUB",
"document_id": "89abcdef-0123-4567-89ab-cdef01234567",
"available_date": "2025-03-14",
"source_filepath": "e1f2a3b4-5c6d-4890-abcd-ef1234567890/b3c4d5e6-7f80-4012-8456-789abcdef012_012.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012",
"document_type": "PAYSTUB",
"document_id": "9abcdef0-1234-4678-9abc-def012345678",
"available_date": "2025-02-28",
"source_filepath": "e1f2a3b4-5c6d-4890-abcd-ef1234567890/b3c4d5e6-7f80-4012-8456-789abcdef012_013.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012",
"document_type": "PAYSTUB",
"document_id": "abcdef01-2345-4789-abcd-ef0123456789",
"available_date": "2025-02-14",
"source_filepath": "e1f2a3b4-5c6d-4890-abcd-ef1234567890/b3c4d5e6-7f80-4012-8456-789abcdef012_014.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "b3c4d5e6-7f80-4012-8456-789abcdef012",
"document_type": "PAYSTUB",
"document_id": "bcdef012-3456-489a-bcde-f01234567890",
"available_date": "2025-01-31",
"source_filepath": "e1f2a3b4-5c6d-4890-abcd-ef1234567890/b3c4d5e6-7f80-4012-8456-789abcdef012_015.pdf"
}
]
}
Partial report
In this example, the applicant dropped off before finishing the entire process:
{
"meta": {
"public_token": "65bf7135-4eb8-4342-a7c2-0380322b3d59",
"user_args": null,
"created_at": "2025-02-07T23:10:51.987Z",
"api_version": "1.0.0",
"external_id": null,
"status": "SUCCESS",
"substatus": null,
"nova_report_revision": null,
"consumer_id": "b281e335-9d19-4aa7-b559-e74d08a05cf4",
"consumer_external_id": "472cbdc9-cf31-4117-a095-e27e2db054e5"
},
"product": {
"name": "Village Communities",
"product_id": "12d1e755-3d82-445d-84e6-b67b5ff7c70d",
"inquiry_type": "TENANT"
},
"stated_employers": [
{
"name": "Walmart",
"input_method": "CONSUMER_INPUT",
"verification_sources": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"source_type": "PAYROLL",
"status": "SUCCESS",
"substatus": null
}
]
},
// Applicant dropped off before verifying this income source
{
"name": "Social Security",
"input_method": "CONSUMER_INPUT",
"verification_sources": []
}
],
"identities": [
{
"source_id": "CONSUMER_INPUT",
"source_uuid": null,
"first_name": "Raymond",
"last_name": "Marshal",
"full_name": "Raymond Marshal",
"emails": ["raymond@email.com"],
"matching": {
"full_name": {
"matched_sources": [
{
"source_id": "USA_AKOYA",
"source_uuid": "753c4285-9331-4502-b02b-5064904f33ce"
},
{
"source_id": "USA_FIN",
"source_uuid": "550e8400-e29b-41d4-a716-446655440000"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
],
"unmatched_sources": []
}
}
},
{
"source_id": "USA_AKOYA",
"source_uuid": "753c4285-9331-4502-b02b-5064904f33ce",
"first_name": null,
"last_name": null,
"full_name": "RAYMOND MARSHAL",
"emails": []
},
{
"source_id": "USA_FIN",
"source_uuid": "550e8400-e29b-41d4-a716-446655440000",
"first_name": null,
"last_name": null,
"full_name": "RAYMOND MARSHAL",
"emails": []
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"first_name": null,
"last_name": null,
"full_name": "RAYMOND J MARSHAL",
"emails": []
}
],
"employment": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"employer_name": "Walmart, Inc.",
"employer_address_line_1": "702 SW 8th Street",
"employer_address_line_2": null,
"employer_city": "Bentonville",
"employer_state": "Arkansas",
"employment_type": "parttime",
"employment_status": "active",
"job_title": "Cashier",
"hire_date": "2023-03-01",
"termination_date": null,
"base_pay_period": "SALARY",
"base_pay_amount": 133000.22,
"matching": {
"employer_name": {
"matched_employer_name": [
{
"stated_employer": "Walmart"
}
],
"unmatched_employer_name": []
},
"direct_deposit_accounts": {
"matched_direct_deposit_accounts": [
{
"matched_account_id": "fd058f61-56d3-4150-ad9f-ff899b55f799",
"truncated_account_number": "475462",
"institution_name": "Chase"
}
],
"unmatched_direct_deposit_accounts": []
}
}
}
],
"assets": {
"account_details": [
{
"source_id": "USA_AKOYA",
"source_uuid": "753c4285-9331-4502-b02b-5064904f33ce",
"account_id": "fd058f61-56d3-4150-ad9f-ff899b55f799",
"owner_full_name": "RAYMOND MARSHAL",
"institution_name": "Chase",
"account_name": "Checking Account",
"account_type": "CASH_EQUIVALENT",
"date_first_transaction": "2020-01-27",
"last_statement_end_date": null,
"truncated_account_number": "475462",
"responsibility": "INDIVIDUAL",
"addresses": [
{
"address_id": "6d4d5fff-25ee-4ba0-8247-9bc75b900378",
"address": "5445 ALTON PKWY IRVINE CA 92614",
"street": null,
"city": null,
"zipcode": null,
"state": null
}
],
"current_balance": 577.63,
"six_months_average_balance": 432.55,
"twelve_months_income_from_assets": 12.61
},
{
"source_id": "USA_FIN",
"source_uuid": "550e8400-e29b-41d4-a716-446655440000",
"account_id": "738a6d6e-23be-40c8-a236-39c5659a09a1",
"owner_full_name": "RAYMOND MARSHAL",
"institution_name": "Alpine Bank",
"account_name": "Checking Account",
"account_type": "CASH_EQUIVALENT",
"date_first_transaction": "2025-02-27",
"last_statement_end_date": null,
"truncated_account_number": "47205726",
"responsibility": null,
"addresses": [
{
"address_id": "6d4d5fff-25ee-4ba0-8247-9bc75b900378",
"address": "5445 ALTON PKWY IRVINE CA 92614",
"street": null,
"city": null,
"zipcode": null,
"state": null
}
],
"current_balance": 643.78,
"six_months_average_balance": 337.54,
"twelve_months_income_from_assets": 11.67
}
],
"inflows": [
{
"inflow_id": "f3f0d372-a0f7-402f-835e-67ce6db2a75f",
"account_id": "fd058f61-56d3-4150-ad9f-ff899b55f799",
"description": "walmart irvine superstore",
"deposited_annual_income": 10296,
"deposited_recent_income": 7696
},
{
"inflow_id": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d",
"account_id": "fd058f61-56d3-4150-ad9f-ff899b55f799",
"description": "soc secur treas XXX",
"deposited_annual_income": 12345,
"deposited_recent_income": 12345
},
{
"inflow_id": "c33632a0-1d6a-11eb-806e-1f1356d092eb",
"account_id": "738a6d6e-23be-40c8-a236-39c5659a09a1",
"description": "VENMO CASHOUT PPD ID",
"deposited_annual_income": 480,
"deposited_recent_income": 488
}
],
"matched_income_sources": [
{
"stated_employer": "Social Security",
"matched_inflow_id": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
},
{
"stated_employer": "Walmart",
"matched_inflow_id": "f3f0d372-a0f7-402f-835e-67ce6db2a75f"
}
]
},
"income": {
"payroll": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"provider_name": "Walmart, Inc.",
"provider_type": "EMPLOYER",
"annual_gross_income": 10296.0,
"annual_net_income": 7696.0,
"pay_frequency": "WEEKLY",
"gigs_annual_gross_earnings": null,
"gigs_annual_deposited_amount": null,
"gigs_annual_net_earnings": null,
"gig_summaries": [],
"statements": [
{
"pay_date": "2025-08-25",
"pay_period_start": "2025-08-18",
"pay_period_end": "2025-08-24",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 10296,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 7696
},
{
"pay_date": "2025-08-18",
"pay_period_start": "2025-08-11",
"pay_period_end": "2025-08-17",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 10098,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 7548
},
{
"pay_date": "2025-08-11",
"pay_period_start": "2025-08-04",
"pay_period_end": "2025-08-10",
"hours_worked": 38.5,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 9900,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 7400
},
{
"pay_date": "2025-08-04",
"pay_period_start": "2025-07-28",
"pay_period_end": "2025-08-03",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 9702,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 7252
},
{
"pay_date": "2025-07-28",
"pay_period_start": "2025-07-21",
"pay_period_end": "2025-07-27",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 9504,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 7104
},
{
"pay_date": "2025-07-21",
"pay_period_start": "2025-07-14",
"pay_period_end": "2025-07-20",
"hours_worked": 35.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 9306,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 6956
},
{
"pay_date": "2025-07-14",
"pay_period_start": "2025-07-07",
"pay_period_end": "2025-07-13",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 9108,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 6808
},
{
"pay_date": "2025-07-07",
"pay_period_start": "2025-06-30",
"pay_period_end": "2025-07-06",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 8910,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 6660
},
{
"pay_date": "2025-06-30",
"pay_period_start": "2025-06-23",
"pay_period_end": "2025-06-29",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 8712,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 6512
},
{
"pay_date": "2025-06-23",
"pay_period_start": "2025-06-16",
"pay_period_end": "2025-06-22",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 8514,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 6364
},
{
"pay_date": "2025-06-16",
"pay_period_start": "2025-06-09",
"pay_period_end": "2025-06-15",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 8316,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 6216
},
{
"pay_date": "2025-06-09",
"pay_period_start": "2025-06-02",
"pay_period_end": "2025-06-08",
"hours_worked": 38.5,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 8118,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 6068
},
{
"pay_date": "2025-06-02",
"pay_period_start": "2025-05-26",
"pay_period_end": "2025-06-01",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 7920,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 5920
},
{
"pay_date": "2025-05-26",
"pay_period_start": "2025-05-19",
"pay_period_end": "2025-05-25",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 7722,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 5772
},
{
"pay_date": "2025-05-19",
"pay_period_start": "2025-05-12",
"pay_period_end": "2025-05-18",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 7524,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 5624
},
{
"pay_date": "2025-05-12",
"pay_period_start": "2025-05-05",
"pay_period_end": "2025-05-11",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 7326,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 5476
},
{
"pay_date": "2025-05-05",
"pay_period_start": "2025-04-28",
"pay_period_end": "2025-05-04",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 7128,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 5328
},
{
"pay_date": "2025-04-28",
"pay_period_start": "2025-04-21",
"pay_period_end": "2025-04-27",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 6930,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 5180
},
{
"pay_date": "2025-04-21",
"pay_period_start": "2025-04-14",
"pay_period_end": "2025-04-20",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 6732,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 5032
},
{
"pay_date": "2025-04-14",
"pay_period_start": "2025-04-07",
"pay_period_end": "2025-04-13",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 6534,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 4884
},
{
"pay_date": "2025-04-07",
"pay_period_start": "2025-03-31",
"pay_period_end": "2025-04-06",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 6336,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 4736
},
{
"pay_date": "2025-03-31",
"pay_period_start": "2025-03-24",
"pay_period_end": "2025-03-30",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 6138,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 4588
},
{
"pay_date": "2025-03-24",
"pay_period_start": "2025-03-17",
"pay_period_end": "2025-03-23",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 5940,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 4440
},
{
"pay_date": "2025-03-17",
"pay_period_start": "2025-03-10",
"pay_period_end": "2025-03-16",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 5742,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 4292
},
{
"pay_date": "2025-03-10",
"pay_period_start": "2025-03-03",
"pay_period_end": "2025-03-09",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 5544,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 4144
},
{
"pay_date": "2025-03-03",
"pay_period_start": "2025-02-24",
"pay_period_end": "2025-03-02",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 5346,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 3996
},
{
"pay_date": "2025-02-24",
"pay_period_start": "2025-02-17",
"pay_period_end": "2025-02-23",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 5148,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 3848
},
{
"pay_date": "2025-02-17",
"pay_period_start": "2025-02-10",
"pay_period_end": "2025-02-16",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 4950,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 3700
},
{
"pay_date": "2025-02-10",
"pay_period_start": "2025-02-03",
"pay_period_end": "2025-02-09",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 4752,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 3552
},
{
"pay_date": "2025-02-03",
"pay_period_start": "2025-01-27",
"pay_period_end": "2025-02-02",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 4554,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 3404
},
{
"pay_date": "2025-01-27",
"pay_period_start": "2025-01-20",
"pay_period_end": "2025-01-26",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 4356,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 3256
},
{
"pay_date": "2025-01-20",
"pay_period_start": "2025-01-13",
"pay_period_end": "2025-01-19",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 4158,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 3108
},
{
"pay_date": "2025-01-13",
"pay_period_start": "2025-01-06",
"pay_period_end": "2025-01-12",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 3960,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 2960
},
{
"pay_date": "2025-01-06",
"pay_period_start": "2024-12-30",
"pay_period_end": "2025-01-05",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 3762,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 2812
},
{
"pay_date": "2024-12-30",
"pay_period_start": "2024-12-23",
"pay_period_end": "2024-12-29",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 3564,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 2664
},
{
"pay_date": "2024-12-23",
"pay_period_start": "2024-12-16",
"pay_period_end": "2024-12-22",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 3366,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 2516
},
{
"pay_date": "2024-12-16",
"pay_period_start": "2024-12-09",
"pay_period_end": "2024-12-15",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 3168,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 2368
},
{
"pay_date": "2024-12-09",
"pay_period_start": "2024-12-02",
"pay_period_end": "2024-12-08",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 2970,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 2220
},
{
"pay_date": "2024-12-02",
"pay_period_start": "2024-11-25",
"pay_period_end": "2024-12-01",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 2772,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 2072
},
{
"pay_date": "2024-11-25",
"pay_period_start": "2024-11-18",
"pay_period_end": "2024-11-24",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 2574,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 1924
},
{
"pay_date": "2024-11-18",
"pay_period_start": "2024-11-11",
"pay_period_end": "2024-11-17",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 2376,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 1776
},
{
"pay_date": "2024-11-11",
"pay_period_start": "2024-11-04",
"pay_period_end": "2024-11-10",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 2178,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 1628
},
{
"pay_date": "2024-11-04",
"pay_period_start": "2024-10-28",
"pay_period_end": "2024-11-03",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 1980,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 1480
},
{
"pay_date": "2024-10-28",
"pay_period_start": "2024-10-21",
"pay_period_end": "2024-10-27",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 1782,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 1332
},
{
"pay_date": "2024-10-21",
"pay_period_start": "2024-10-14",
"pay_period_end": "2024-10-20",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 1584,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 1184
},
{
"pay_date": "2024-10-14",
"pay_period_start": "2024-10-07",
"pay_period_end": "2024-10-13",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 1386,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 1036
},
{
"pay_date": "2024-10-07",
"pay_period_start": "2024-09-30",
"pay_period_end": "2024-10-06",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 1188,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 888
},
{
"pay_date": "2024-09-30",
"pay_period_start": "2024-09-23",
"pay_period_end": "2024-09-29",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 990,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 740
},
{
"pay_date": "2024-09-23",
"pay_period_start": "2024-09-16",
"pay_period_end": "2024-09-22",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 792,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 592
},
{
"pay_date": "2024-09-16",
"pay_period_start": "2024-09-09",
"pay_period_end": "2024-09-15",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 594,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 444
},
{
"pay_date": "2024-09-09",
"pay_period_start": "2024-09-02",
"pay_period_end": "2024-09-08",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 396,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 296
},
{
"pay_date": "2024-09-02",
"pay_period_start": "2024-08-26",
"pay_period_end": "2024-09-01",
"hours_worked": 40.0,
"gross_total_earnings_amount_current": 198,
"gross_total_earnings_amount_ytd": 198,
"net_total_earnings_amount_current": 148,
"net_total_earnings_amount_ytd": 148
}
]
}
],
"documents": [
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "cf0fa8ef-a79e-4e2a-a829-3a9a61db66e3",
"available_date": "2025-08-25",
"source_filepath": "cf0fa8ef-a79e-4e2a-a829-3a9a61db66e3/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "7f3e9c82-4d5a-4b8e-9f2c-1a6b8e4d7c3f",
"available_date": "2025-08-18",
"source_filepath": "7f3e9c82-4d5a-4b8e-9f2c-1a6b8e4d7c3f/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"available_date": "2025-08-11",
"source_filepath": "f47ac10b-58cc-4372-a567-0e02b2c3d479/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "6ba7b812-9dad-11d1-80b4-00c04fd430c8",
"available_date": "2025-08-04",
"source_filepath": "6ba7b812-9dad-11d1-80b4-00c04fd430c8/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "9d8c7b6a-5e4f-3210-abcd-ef9876543210",
"available_date": "2025-07-28",
"source_filepath": "9d8c7b6a-5e4f-3210-abcd-ef9876543210/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "1a2b3c4d-5e6f-7890-abcd-123456789abc",
"available_date": "2025-07-21",
"source_filepath": "1a2b3c4d-5e6f-7890-abcd-123456789abc/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "8f7e6d5c-4b3a-2190-fedc-ba9876543210",
"available_date": "2025-07-14",
"source_filepath": "8f7e6d5c-4b3a-2190-fedc-ba9876543210/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "fedcba98-7654-3210-9876-543210fedcba",
"available_date": "2025-07-07",
"source_filepath": "fedcba98-7654-3210-9876-543210fedcba/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "24681357-9bdf-ace0-2468-13579bdfac24",
"available_date": "2025-06-30",
"source_filepath": "24681357-9bdf-ace0-2468-13579bdfac24/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "97531246-8ace-0bdf-9753-1246acedbf97",
"available_date": "2025-06-23",
"source_filepath": "97531246-8ace-0bdf-9753-1246acedbf97/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "abcdef12-3456-7890-abcd-ef1234567890",
"available_date": "2025-06-16",
"source_filepath": "abcdef12-3456-7890-abcd-ef1234567890/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "1122aabb-ccdd-eeff-1122-aabbccddeeff",
"available_date": "2025-06-09",
"source_filepath": "1122aabb-ccdd-eeff-1122-aabbccddeeff/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "550e8400-e29b-41d4-a716-446655440000",
"available_date": "2025-06-02",
"source_filepath": "9988ffee-ddcc-bbaa-9988-ffeeddccbbaa/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "deadbeef-cafe-babe-dead-beefcafebabe",
"available_date": "2025-05-26",
"source_filepath": "deadbeef-cafe-babe-dead-beefcafebabe/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
},
{
"source_id": "USA_ARGYLE",
"source_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"document_type": "PAYSTUB",
"document_id": "c0ffee00-d00d-face-c0ff-ee00d00dface",
"available_date": "2025-05-19",
"source_filepath": "c0ffee00-d00d-face-c0ff-ee00d00dface/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf"
}
]
},
"application_completeness_checks": [
{
"check": "MISSING_DEPOSIT_ACCOUNTS_DETECTED",
"value": false
},
{
"check": "PRIMARY_ACCOUNT_NOT_DETECTED",
"value": false
},
{
"check": "VENMO_TRANSACTIONS_DETECTED",
"value": true
},
{
"check": "CASHAPP_TRANSACTIONS_DETECTED",
"value": false
},
{
"check": "ZELLE_TRANSACTIONS_DETECTED",
"value": false
},
{
"check": "PAYPAL_TRANSACTIONS_DETECTED",
"value": false
},
{
"check": "SKIPPED_INCOME",
"value": true
}
]
}
Sandbox Environment
The sandbox environment provides a safe testing space to integrate and validate your implementation before going to production. This guide covers everything you need to know about testing in sandbox mode.
Overview
The sandbox environment allows you to:
- Access predefined test user profiles with different data scenarios
- Simulate various response states and error conditions
- Validate your webhook integration
- Test both assets and income sections of the AFH report
For general information about sandbox vs. production environments, see the Quickstart Guide.
Accessing Sandbox Reports
To retrieve a sandbox report, you must provide specific test user information through the NovaConnect widget's prefill functionality. The prefill data can match one of our predefined test profiles exactly. If the prefill data is different from the user profile you select in the UI, it will appear in unmatched_sources in the matching[] section of the report.
You could also prefill using a test email you have access to, that will help you go through the end-to-end user journey.
For sandbox testing, any address value can be passed in the required address field.
Required Information
Each test user requires the following prefill fields:
firstName- The test user's first namelastName- The test user's last namedateOfBirth- Date of birth in YYYY-MM-DD formatemail- The test user's email addressstate- The test user's statestatedEmployerNames- statedEmployerNames - The names of the applicant's current employers, with a minimum of 1 name and a maximum of 6 names
Learn more about implementing prefill in the Quickstart Guide.
User Profiles
We have one test user for the full E2E Eligibility Compass report flow, with a number of variations allowing for testing different scenarios.
Prefill information
firstName- AnnielastName- AffordabledateOfBirth- 6/18/1995email-annie@email.comstate- MOstatedEmployerNames- Walmart, Uber, Social Security- NOTE: These are the three supported employers in sandbox. You may use any combination of the above stated employers as a prefill information. They can also be “added” in the flow.
Asset testing
When proceeding through the flow in sandbox mode, connect up to 6 Bank Connections / Bank Statement uploads.
If testing a bank connection is selected:
- Select a bank from the tiles available
- Select either "Annie" or "Simulate Error" to simulate a response
If you'd like to test bank statements:
- Type “abc testing bank” in the bank selector payroll
- Select “Try another method" (this will appear when there are no search results)
- Supply 6 total bank statements, with at least one bank statement with a filename that matches against a known test user:
| Filename | Outcome |
|---|---|
annie.pdf | Valid statement with normal transaction history |
annie_detected.pdf | Statement with irregularities detected |
Income testing
When proceeding through the flow in sandbox mode, for each stated employer you can choose to either verify with payroll or with documents.
If payroll is selected:
- Select a provider from the drop down
- Select either “Test User” or “Argyle Error” to simulate a response
If payroll is skipped and the user proceeds to document upload:
- Upload any document meeting the requirements
- Up to 4 documents can be uploaded for each income source
Simulating Error States
Expired Session
- Set
lastNametoexpiresoonin the prefill data - Result: Triggers an EXPIRED status in 5 minutes instead of the standard 5 days
- Use Case: Tests timeout handling, and allows for partial report generation
Supplier Unresponsive
To test a Supplier Unresponsive response for bank connections:
- Choose Mikomo Bank and click "Simulate Supplier Outage", or choose MX and click "Simulate Supplier Unresponsive"
- Result: Triggers a SUPPLIER_UNRESPONSIVE status for the corresponding bank connection
- Use Case: Test error handling for aggregator connection failures
To test a Supplier Unresponsive response during income verification:
- In the Argyle Simulator, click on "Argyle Supplier Unresponsive" button
- Result: Triggers a SUPPLIER_UNRESPONSIVE status for the corresponding payroll connection
- Use Case: Test error handling for payroll connection failures
Webhooks
Webhooks are the mechanism that Nova Credit uses to inform you of core initialization and completion steps for each NovaConnect widget interaction. A session is initialized when the NovaConnect widget is opened. One session can consist of multiple suppliers, and these supplier-flow outcomes are recorded and attached to the webhook body in the history node.
We make a POST API call to the webhook callback URL that you provide. Webhooks can be managed in the Developer tab on the Nova Credit Dashboard, where you must set your callback URL and can toggle your various event subscriptions on and off. Some events or statuses are subscribed to by default.
Webhook Event Types
Each Webhook API call will contain one of the event types listed below in the JSON body:
| Event Type | Description |
|---|---|
VISIT | A single NovaConnect widget interaction, which can consist of multiple suppliers. Only one terminal status outcome is sent per widget open; other supplier-flow outcomes are recorded and attached to the webhook in the history node |
REGENERATED_VISIT | Only occurs for reports that have been regenerated. This event type also includes a novaReportRevision in the webhook body. |
Webhook Status Codes
View the status table to see the full list of statuses, with the "Webhook" column representing which ones correspond to a webhook call.
Webhook Body
| Webhook Body Key | Description |
|---|---|
eventType | Event Type (see event type table above) corresponding to this webhook |
status | Status (see status code table above) corresponding to this webhook |
substatus | A more detailed status. See substatus types |
publicToken | Unique UUID associated with this status, which can be used to retrieve the Nova Credit report |
externalId | Optional unique identifier passed in by the Nova Credit customer (you) with this application. This key will only be present if externalId was passed in |
userArgs | Optional string passed in by the Nova Credit customer (you) with this application. This key will only be present if userArgs was passed in |
eventId | Unique ID for the webhook |
eventCreatedTime | Webhook event timestamp |
reportType | The type of Nova Credit report. |
consumerId | Unique identifier of the consumer associated with this status. Only returned if NovaConnect Consumer Endpoints BETA feature is enabled. |
consumerExternalId | Optional unique identifier from your system of the consumer associated with this status. Only returned if NovaConnect Consumer Endpoints BETA feature is enabled. |
Example:
{
eventType: 'VISIT',
status: 'SUCCESS',
publicToken: '6b986690-458b-11e7-98fb-a71570ea65a6',
externalId: '25ad7063-fe76-437a-b4d8-3662ba4cc9c7',
userArgs: '235234224',
eventId: '028d9354-3991-46c4-97df-bd6c2ff09733',
eventCreatedTime: '2025-09-26T33:15:23.17Z',
reportType: 'Eligibility Compass',
consumerId: 'b281e335-9d19-4aa7-b559-e74d08a05cf4',
consumerExternalId: '472cbdc9-cf31-4117-a095-e27e2db054e5'
}
Webhook Failures
When a webhook fails we retry posting with an exponential increase in the time between each attempt. For example, the first retry happens after 1 second, the second after 2 seconds etc.
| Number of Attempts | Time Until Retry if Unsuccessful |
|---|---|
| 1 | 1 second |
| 2 | 2 seconds |
| 3 | 4 seconds |
| 4 | 8 seconds |
| ... | ... |
This strategy allows for several retries within a few minutes but expands to daily retries in the case of an outage, allowing customers to restore before receiving the callback. However, if a callback is still unsuccessful after one week we do not continue retrying.
For more information, please visit the server integration section in our Quickstart Guide.
Webhook Signature
Nova Credit optionally signs webhook payloads in order to allow for trust verification of inbound webhook requests.
When configured, the webhook request will contain these additional headers:
| Header | Value |
|---|---|
X-Timestamp | timestamp of request generation |
X-Nova-Signature | SHA256 HMAC digest of request timestamp and payload, period-delimited. Your Webhook Signatures Secret Key is found under the Webhooks section on the Developer tab of your Nova Credit Dashboard. |
Please contact your Nova Credit account manager to enable this feature.
Example verification of signature:
const crypto = require('crypto');
const signature = req.get('X-Nova-Signature');
const timestamp = req.get('X-Timestamp');
const checkPayload = `${timestamp}.${JSON.stringify(req.body)}`;
const checkDigest = crypto.createHmac('sha256', '< webhook secret key >')
.update(checkPayload)
.digest('base64');
return crypto.timingSafeEquals(signature, checkDigest);
For more information, please visit the server integration section in our Quickstart Guide.
Error Codes & Responses
At Nova Credit, we distinguish between two status message deliveries:
- Delivered by Nova Credit to the webhook
- If you call a resource endpoint Nova Credit provides a status in the response
Resource Endpoint Errors
When an error occurs while calling the endpoints the Nova Credit servers send back a JSON object with the following format:
{
"error": "UNKNOWN_CUSTOMER",
"terminated": true
}
Error Codes
The Nova Credit endpoints return the following HTTP status codes and error messages:
| HTTP Status Code | Error | Description |
|---|---|---|
| 200 | - | The request was successful. |
| 400 | MALFORMED_HEADERS | The request headers are incorrectly formatted. |
| 400 | MISSING_INPUT | An input is missing that the endpoint expected. |
| 400 | INVALID_PUBLIC_ID | The public ID is not valid. |
| 401 | EXPIRED_TOKEN | The access_token you're sending in the request headers has expired. Please request a new one. |
| 403 | UNKNOWN_CUSTOMER | The public_id or client_id Nova Credit received in the request from is not recognized. Check your credentials in the Nova Credit Dashboard. |
| 403 | UNAUTHORIZED | The client_id and secret_key combination is not recognized. Check your credentials in the Nova Credit Dashboard. |
| 403 | ORIGIN_UNAUTHORIZED | The origin of the request is not whitelisted on the Nova Credit servers for CORS. |
| 404 | INVALID_EXTERNAL_ID | The external ID is not valid. |
| 404 | INVALID_TOKEN | The public_token or access_token is not valid for reasons other than expiration. |
| 408 | REQUEST_TIMEOUT | The request timed out. |
| 500 | INTERNAL_ERROR | Something went wrong. Please send a note to your Nova Credit Representative with additional details so we can investigate. |
Changelog
We're always working to improve the Nova Credit platform! Here's a snapshot of API features we're shipping and bugs we're squashing.
2026 January
- Added
hours_workedfield to income.payroll.statements
2025 December
- Updated descriptions for employment fields:
base_pay_period,base_pay_amount, andtermination_date- Clarified that
base_pay_rateandbase_pay_periodcan be null
- Clarified that
- Updated descriptions for income.payroll fields:
annual_gross_incomeandannual_net_income - Renamed "pay_period" table to
base_pay_periodto match the field name - Added "available_date" field to documents
- Add
E_BANKING_NOT_SUPPORTEDsubstatus for errors when connected institution doesn't support e-banking features - Added
direct_deposit_accountsnode to employment- Updated report samples to also include
direct_deposit_accountsnode
- Updated report samples to also include
2025 November
- Rename docs from "Affordable Housing" to "Eligibility Compass"
- Updated
reportTypein webhook example to "Eligibility Compass" - Renamed
6_month_average_balancetosix_months_average_balancein assets.account_details - Renamed
12_month_income_from_assetstotwelve_months_income_from_assetsin assets.account_details - Updated the maximum number of documents that can be uploaded for each income source to 4 in Income testing
- Updated example in identities to have one bank source and one payroll source
- Populated Sandbox - Asset testing section
- Added Simulating Error States - Supplier Unresponsive
- Updates to employment fields:
- Added
base_pay_period,base_pay_amount, andtermination_date - Removed
estimated_hire_date
- Added
- Updates to income.payroll fields:
- Added
annual_gross_incomeandannual_net_income - Removed
estimated_gross_annual_incomeandestimated_net_annual_income
- Added
- Added values to (pay_frequency)[#tables-pay_frequency]:
SEMI_MONTHLY,MONTHLY,QUARTERLY - Added pay_period table
- Add
institutionto assets.failed_connections - Add 'calendar_summary' to income.payroll
2025 October
- Fixed examples in employment and identities
- Added
SKIPPEDto statuses - Added
BENEFITto document_type, which is returned when applicant connects a benefits provider- Updated Primary example
- Removed
primary_account_detectedfrom assets.account_details - Added
account_idto assets.inflows node - Added
consumer_idandconsumer_external_idto report meta - Added
consumerIdandconsumerExternalIdto webhook body - Updated the description of the status
NOT_AUTHENTICATED - Added
MFA_REQUIRED_ON_FETCHandINCOMPATIBLE_ACCOUNT_TYPES_SUBMITTEDas substatuses underNOT_AUTHENTICATED - Removed
INCOMPATIBLE_ACCOUNT_TYPES_SUBMITTEDas substatuses underERROR - Added gig specific compute fields to income
2025 September
- Initial documentation created