# Verification of Assets and Income (VOAI)
source: https://developer.mastercard.com/open-finance-us/documentation/products/lend/reports/voai/index.md

## Overview {#overview}

Verification of Assets and Income (VOAI) combines asset
verification with deposit-based income analysis in a single report.
It aggregates balances across accounts (with 2- and 6-month average balance views),
identifies income streams from deposits (up to 24 months as available),
and includes signals such as NSF presence.

Learn more about Mastercard's Assets and Balances [Assets and Balances](https://developer.mastercard.com/open-finance-us/documentation/products/lend/product-solutions/index.md#assets-and-balances) and
[Income \& Employment](https://developer.mastercard.com/open-finance-us/documentation/products/lend/product-solutions/index.md#income--employment) products.

### Key Product Features {#key-product-features}

* **Account Owner:** See the listed account owner name and address to assist in fraud reduction
* **Assets Summary**: Provided as a balance summary across all accounts, and includes the current balance, the average 2-month daily balance, and the average 6-month daily balance
* **Data History**: Length of history is customizable up to 24 months (defaults to 2 months)
* **Deposit Income Streams**: Always provides the full 24 months of deposit history as available. Defaults to only include Moderate and High confidence income streams, but can be adjusted to include Low confidence streams as well.
* **Non-Sufficient Funds (NSF) Summary:** The presence of NSFs can be a key indicator of financial distress

#### Additional Product Information {#additional-product-information}

* **Connected Accounts Summary:** Includes information such as the financial institution (FI) name, last four digits of the account number, account type, and balance.
* **FI Certification Type** : Verification of Income (VOI). Each FI goes through a certification process to make sure the right data is consistently provided to make the product successful. See [the list of certified FIs](https://developer.mastercard.com/open-finance-us/documentation/financial-institution/supported-institutions/index.md) for this product.
* **Report Refreshes**: This report can be refreshed with new data as long as the accounts are still connected, and consent is active. Refreshes are provided at no cost within 60 days after the first report is created. A report pulled after this period will incur a new charge. This report can also be refreshed as a Verification of Employment (VOE) Transactions.
* **Supported Account Types**: Checking, Savings, Money Market, CD, Investment account types, Education Savings, Health Savings Account
* **Supported Report Format:** JSON and PDF

Note: This report may ONLY be furnished for a Fair Credit Reporting Act (FCRA) purpose such as credit, insurance, or employment, and only pursuant to a permissible purpose certification by the report user. Provision and use of this report is subject to all applicable obligations of the FCRA.

### Use Cases {#use-cases}

The VOAI product can be used for the following use cases:

* Auto
* Credit Card Issuance
* Credit Line Management
* Customer / Portfolio Monitoring
* Debt Collection
* [Mortgage Lending](https://developer.mastercard.com/open-finance-us/documentation/usecases/mortgage-lending/index.md)
* Personal Financial Management
* Personal Lending
* Servicing
* Small and Medium Business
* Tenant Screening

## How it Works {#how-it-works}

### Prerequisites {#prerequisites}

This product is dependent on the customer linking their bank accounts via Data Connect. Refer to [Generating Reports](https://developer.mastercard.com/open-finance-us/documentation/products/lend/generating-reports/index.md) for more information.

* [Generate the required credentials](https://developer.mastercard.com/open-finance-us/documentation/quick-start-guide/index.md#generate-your-credentials)
* [Create Access Token](https://developer.mastercard.com/open-finance-us/documentation/quick-start-guide/index.md#step-1---create-access-token)
* [Create a customer record](https://developer.mastercard.com/open-finance-us/documentation/customer-records/index.md#active-customers)
* [Create a consumer record](https://developer.mastercard.com/open-finance-us/documentation/customer-records/index.md#consumers)
* [Generate a Data Connect URL](https://developer.mastercard.com/open-finance-us/documentation/connect/generate-2-connect-url-apis/index.md) and [link customer accounts](https://developer.mastercard.com/open-finance-us/documentation/connect/index.md#the-connect-flow)

### Generate VOAI Report {#generate-voai-report}

To generate or refresh a VOAI report, use the following endpoint:

API Reference: `POST /decisioning/v2/customers/{customerId}/voaHistory`

The response will include the status of the report generation and a
report ID. A notification is sent when report generation is finished
(see [Report Webhooks](https://developer.mastercard.com/open-finance-us/documentation/webhooks/webhooks-report/index.md)).

#### Implementation Notes {#implementation-notes}

* Use the `fromDate` parameter to customize the transaction history included in the report up to 24 months maximum. By default, 2 months of history will be aggregated as available. The income stream transactions will always show the full history up to 24 months as available.
* Customize which accounts are included in the report using the `accountIds` parameter. By default, the report includes all supported account types.
* If the Non-Sufficient Funds (NSF) information is not desired set the `showNsf` parameter to `false`.
* Customize the income streams returned in this report based on the confidence level. This input is called `incomeStreamConfidenceMinimum`. All income streams whose confidence level is greater than or equal to the number requested are provided. By default, the report will default to only include Moderate and High confidence income streams. Receiving all income streams may be desirable based on your implementation and use case.
  * High confidence levels correspond to `confidence` values of 75 and 100.
  * Moderate confidence levels correspond to a `confidence` value of 50.
  * Low confidence levels correspond to `confidence` values of 0 and 25.
* Streams with confidence levels of Moderate or High are considered income. Streams with a confidence level of Low are considered non-income. Receiving all income streams may be desirable based on the use case.

### Get VOAI Report {#get-voai-report}

Once the report is generated, retrieve the report using one of the Get
Report endpoints: [Get Reports](https://developer.mastercard.com/open-finance-us/documentation/products/lend/get-reports/index.md).

#### Example VOAI Report {#example-voai-report}

The Get Report APIs response contains different data depending on the
type of report requested. The following example shows what a successful
JSON response could look like when getting a VOA report. Examples are
meant for reference only and may lag production changes.

```json
{
  "id": "u4hstnyak45g",
  "portfolioId": "dyr6weqd2yhb-1-port",
  "customerType": "active",
  "customerId": 1000006677,
  "requestId": "sfb7x1we9w",
  "title": "Mastercard Open Banking Verification of Asset and Income - Transactions",
  "consumerId": "ac39e237c7619a4ecf014b8d399c0696",
  "consumerSsn": "6789",
  "disputeStatement": "Invalid data present.",
  "requesterName": "Decisioning API",
  "endUser": {
    "name": "ABC Apartments",
    "address": "123 Main St",
    "city": "Murray",
    "state": "UT",
    "zip": "84123",
    "phone": "555-2106",
    "email": "customerservice@example.com",
    "url": "example.com"
  },
  "constraints": {
    "accountIds": [
      "1000535275",
      "1000535276"
    ],
    "fromDate": 1577986990,
    "reportCustomFields": [
      {
        "label": "loanID",
        "value": "12345",
        "shown": true
      },
      {
        "label": "trackingID",
        "value": "5555",
        "shown": true
      },
      {
        "label": "loanType",
        "value": "car",
        "shown": false
      },
      {
        "label": "vendorID",
        "value": "1613aa23",
        "shown": true
      },
      {
        "label": "vendorName",
        "value": "PSC Finance",
        "shown": false
      }
    ],
    "showNsf": false
  },
  "type": "voaHistory",
  "status": "success",
  "createdDate": 1588350269,
  "startDate": 1572625469,
  "endDate": 1588350269,
  "days": 230,
  "seasoned": true,
  "institutions": {
    "id": 101732,
    "name": "FinBank",
    "urlHomeApp": "https://finbank.prod.fini.city/CCBankImageMFA/login.jsp",
    "accounts": {
      "id": 6001966289,
      "number": "1111",
      "ownerName": "JOHN DOE",
      "ownerAddress": "924 GAINSVILLE HIGHWAY SUITE 130 BUFORD, GA 30518",
      "ownerAsOfDate": 1652114265,
      "name": "Checking",
      "type": "checking",
      "currency": "USD",
      "aggregationStatusCode": 0,
      "balance": 509.37,
      "balanceDate": 1652114265,
      "averageMonthlyBalance": 507.37,
      "totNumberInsufficientFundsFeeDebitTxAccount": 0,
      "totNumberDaysSinceMostRecentInsufficientFundsFeeDebitTxAccount": 0,
      "transactions": {
        "id": 100000527471,
        "amount": 22.21,
        "postedDate": 1582286400,
        "description": "FINICITY INC PAYROLL",
        "memo": "Finicity amount credit",
        "investmentTransactionType": "dividend",
        "normalizedPayee": "Finicity",
        "institutionTransactionId": "100000000",
        "category": "Paycheck"
      },
      "asset": {
        "type": "checking",
        "currentBalance": 1000,
        "twoMonthAverage": -1865.96,
        "sixMonthAverage": -7616.01,
        "beginningBalance": -17795.6
      },
      "details": {
        "interestMarginBalance": -50000,
        "availableCashBalance": 1500,
        "vestedBalance": 300000,
        "currentLoanBalance": 0,
        "availableBalanceAmount": 1000,
        "marginBalance": 100,
        "currentBalance": 1000
      },
      "position": {
        "id": 637054,
        "currency": "USD",
        "symbol": "MCD",
        "securityName": "Common Stock",
        "units": 5,
        "marketValue": 1403.55,
        "currentPrice": 280.71,
        "securityType": "Stock"
      },
      "incomeStreams": {
        "id": "dens28i3vsch-voah",
        "name": "none",
        "status": "ACTIVE",
        "estimateInclusion": "MODERATE",
        "confidence": 70,
        "cadence": {
          "startDate": 1577986990,
          "stopDate": 1587986990,
          "days": 14
        },
        "netMonthly": [
          {
            "month": 1522562400,
            "net": 2004.77
          }
        ],
        "netAnnual": 110475.7,
        "projectedNetAnnual": 0,
        "estimatedGrossAnnual": 0,
        "projectedGrossAnnual": 151609,
        "averageMonthlyIncomeNet": 9206.31,
        "incomeStreamMonths": 18,
        "transactions": [
          {
            "id": 100000527471,
            "amount": 22.21,
            "postedDate": 1582286400,
            "description": "FINICITY INC PAYROLL",
            "normalizedPayee": "Finicity",
            "institutionTransactionId": "100000000",
            "category": "Paycheck"
          }
        ]
      }
    }
  },
  "assets": {
    "currentBalance": 1000,
    "twoMonthAverage": -1865.96,
    "sixMonthAverage": -7616.01,
    "beginningBalance": -17795.6
  },
  "consolidatedAvailableBalance": 2345
}
```

A human-readable PDF version of the report is available which is great
for underwriters or any other manual viewing of the report.

How to read a VOAI report:
[VOAI_Report_HTR.pdf](https://static.developer.mastercard.com/content/open-finance-us/uploads/reports/lend/VOAI_Report_HTR.pdf) (2MB)

## Testing {#testing}

Refer to [Generating Reports -- Testing](https://developer.mastercard.com/open-finance-us/documentation/products/lend/generating-reports/index.md#testing).
Ensure you use a test profile that contains supported account types
such as [Profile_03](https://developer.mastercard.com/open-finance-us/documentation/integration-and-testing/test-the-apis/index.md#oauth-connection-profiles).
