> ## Documentation Index
> Fetch the complete documentation index at: https://docs.truv.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Assets for Lending

> Asset verification for consumer lending

Verify borrower bank account balances, ownership, and transaction history for lending decisions. Truv pulls data directly from financial institutions, giving you a verified view of borrower liquidity.

***

## Benefits

<CardGroup cols={2}>
  <Card title="Instant Verification" icon="bolt">Real-time account balances and transaction data</Card>
  <Card title="Direct from Source" icon="building-columns">Data from Chase, Bank of America, and thousands more</Card>
  <Card title="Cash Flow Analysis" icon="chart-line">30/60/90-day balance averages and deposit patterns</Card>
  <Card title="Fraud Detection" icon="shield-check">Verified ownership and large deposit flagging</Card>
</CardGroup>

***

## What you get

<CardGroup cols={2}>
  <Card title="Account Information" icon="building-columns">
    * Account type (checking, savings, money market, CD, investment)
    * Verified account holder name and ownership
    * Current and available balances
    * Routing number and masked account number
  </Card>

  <Card title="Transaction History" icon="receipt">
    * Up to 2 years of transaction history (30-730 days via `days_requested`)
    * Date, description, amount, and type
    * Direct deposit identification
  </Card>

  <Card title="Summary & Analytics" icon="chart-line">
    * 30/60/90-day average balances
    * Balance history
    * Currency and metadata
  </Card>

  <Card title="Documents" icon="file-lines">
    * Bank statements (PDF)
    * Account verification letter
  </Card>
</CardGroup>

***

## Use cases

<AccordionGroup>
  <Accordion title="Down payment verification" icon="house">
    Confirm the borrower has sufficient liquid assets to cover the down payment and closing costs for auto or personal loans with collateral requirements.
  </Accordion>

  <Accordion title="Liquid asset assessment" icon="piggy-bank">
    Evaluate total liquid assets across checking, savings, and investment accounts to determine borrower financial stability.
  </Accordion>

  <Accordion title="Cash flow underwriting" icon="chart-line">
    Analyze deposit and withdrawal patterns to assess repayment capacity, especially useful for self-employed or gig-economy borrowers.
  </Accordion>

  <Accordion title="Fraud detection" icon="shield-check">
    Verify account ownership and flag unusual patterns such as large unexplained deposits or inconsistent account activity.
  </Accordion>
</AccordionGroup>

***

## Data coverage

### Financial Institutions

Truv connects to major banks and credit unions:

| Institution Type | Examples                                  |
| ---------------- | ----------------------------------------- |
| National banks   | Chase, Bank of America, Wells Fargo, Citi |
| Regional banks   | PNC, US Bank, TD Bank                     |
| Credit unions    | Navy Federal, State Employees CU          |
| Online banks     | Ally, Marcus, Discover                    |
| Investment       | Fidelity, Charles Schwab, Vanguard        |

***

## How to implement

Choose your integration path based on your tech stack:

| Path                                               | Code required | Best for                             |
| -------------------------------------------------- | ------------- | ------------------------------------ |
| [Smart Routing](/credit/integration/smart-routing) | Minimal       | Payroll-first with document fallback |
| [Truv Dashboard](/developers/dashboard)            | None          | Manual orders, pilot testing         |

<Tip>
  **Combine with Income & Employment for a complete picture.** Request both `assets` and `income` product types in a single order to verify both income and liquidity. [Learn about Income & Employment -->](/credit/products/income-employment)
</Tip>

For a full implementation walkthrough including webhook handling and [Truv Bridge](/developers/sdks/overview) setup, see the [Smart Routing guide](/credit/integration/smart-routing).

***

## Report structure

When you retrieve asset data via the API, the response contains a `links` array with accounts, balances, and transactions per financial institution.

| Field           | Path                                                  | Example               |
| --------------- | ----------------------------------------------------- | --------------------- |
| Account type    | `links[].accounts[].type`                             | `CHECKING`, `SAVINGS` |
| Masked number   | `links[].accounts[].mask`                             | `"1234"`              |
| Account holder  | `links[].accounts[].owners[].full_name`               | `"John Smith"`        |
| Current balance | `links[].accounts[].balances.current`                 | `"15420.50"`          |
| Direct deposit  | `links[].accounts[].transactions[].is_direct_deposit` | `true`                |
| 30-day avg      | `summary.avg_30`                                      | `"14500.00"`          |

<Accordion title="View full response example" icon="code">
  ```json theme={null}
  {
    "id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
    "large_deposit_threshold": "2500.00",
    "summary": {
      "avg_30": "9200.50",
      "avg_60": "8850.75",
      "avg_90": "8500.00",
      "balance": "23750.25"
    },
    "links": [
      {
        "accounts": [
          {
            "type": "CHECKING",
            "mask": "1234",
            "owners": [
              {
                "full_name": "Jane Smith"
              }
            ],
            "balances": {
              "balance": "8750.25",
              "available_balance": "8500.00"
            },
            "transactions": [
              {
                "transacted_at": "2024-01-15T10:30:00Z",
                "posted_at": "2024-01-15T14:00:00Z",
                "description": "DIRECT DEPOSIT - ACME CORP",
                "amount": "2650.00",
                "type": "CREDIT",
                "is_direct_deposit": true
              }
            ]
          },
          {
            "type": "SAVINGS",
            "mask": "5678",
            "owners": [
              {
                "full_name": "Jane Smith"
              }
            ],
            "balances": {
              "balance": "15000.00",
              "available_balance": "15000.00"
            },
            "transactions": []
          }
        ]
      }
    ]
  }
  ```
</Accordion>

***

## API reference

<CardGroup cols={2}>
  <Card title="Bridge Token" icon="key" href="/api-reference/bridge-token/object">Create tokens for Truv Bridge</Card>
  <Card title="Assets Report" icon="piggy-bank" href="/api-reference/user-asset-verification-reports/object">Retrieve asset data</Card>
  <Card title="Accounts" icon="building-columns" href="/api-reference/balances/object">Financial account details</Card>
  <Card title="Users" icon="user" href="/api-reference/users/object">Create and manage users</Card>
</CardGroup>

***

## Best practices

<AccordionGroup>
  <Accordion title="Check for large deposits" icon="magnifying-glass-dollar">
    Use the `large_deposit_threshold` from the report and review transactions that exceed it:

    ```javascript theme={null}
    const largeDeposits = report.links
      .flatMap(link => link.accounts)
      .flatMap(account => account.transactions)
      .filter(t => t.type === "CREDIT" && t.amount >= report.large_deposit_threshold);
    ```
  </Accordion>

  <Accordion title="Identify direct deposits" icon="calendar">
    Filter for direct deposits to verify recurring income:

    ```javascript theme={null}
    const directDeposits = report.links
      .flatMap(link => link.accounts)
      .flatMap(account => account.transactions)
      .filter(t => t.is_direct_deposit);
    ```
  </Accordion>

  <Accordion title="Aggregate balances across accounts" icon="building-columns">
    Use the report-level summary or aggregate across all linked accounts:

    ```javascript theme={null}
    // Use the report summary for quick totals
    const totalBalance = report.summary.balance;

    // Or aggregate per-account balances
    const perAccount = report.links
      .flatMap(link => link.accounts)
      .map(a => ({ type: a.type, mask: a.mask, current: a.balances.current }));
    ```
  </Accordion>
</AccordionGroup>

***

## Next steps

<CardGroup cols={2}>
  <Card title="Smart Routing" icon="route" href="/credit/integration/smart-routing">
    Payroll-first with document fallback
  </Card>

  <Card title="Bank Aggregation" icon="building-columns" href="/credit/products/bank-aggregation">
    Transaction-level bank data
  </Card>
</CardGroup>
