Skip to main content
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

Instant Verification

Real-time account balances and transaction data

Direct from Source

Data from Chase, Bank of America, and thousands more

Cash Flow Analysis

30/60/90-day balance averages and deposit patterns

Fraud Detection

Verified ownership and large deposit flagging

What you get

Account Information

  • Account type (checking, savings, money market, CD, investment)
  • Verified account holder name and ownership
  • Current and available balances
  • Routing number and masked account number

Transaction History

  • Up to 2 years of transaction history (30-730 days via days_requested)
  • Date, description, amount, and type
  • Direct deposit identification

Summary & Analytics

  • 30/60/90-day average balances
  • Balance history
  • Currency and metadata

Documents

  • Bank statements (PDF)
  • Account verification letter

Use cases

Confirm the borrower has sufficient liquid assets to cover the down payment and closing costs for auto or personal loans with collateral requirements.
Evaluate total liquid assets across checking, savings, and investment accounts to determine borrower financial stability.
Analyze deposit and withdrawal patterns to assess repayment capacity, especially useful for self-employed or gig-economy borrowers.
Verify account ownership and flag unusual patterns such as large unexplained deposits or inconsistent account activity.

Data coverage

Financial Institutions

Truv connects to major banks and credit unions:
Institution TypeExamples
National banksChase, Bank of America, Wells Fargo, Citi
Regional banksPNC, US Bank, TD Bank
Credit unionsNavy Federal, State Employees CU
Online banksAlly, Marcus, Discover
InvestmentFidelity, Charles Schwab, Vanguard

How to implement

Choose your integration path based on your tech stack:
PathCode requiredBest for
Smart RoutingMinimalPayroll-first with document fallback
Truv DashboardNoneManual orders, pilot testing
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 —>
For a full implementation walkthrough including webhook handling and Truv Bridge setup, see the Smart Routing guide.

Report structure

When you retrieve asset data via the API, the response contains a links array with accounts, balances, and transactions per financial institution.
FieldPathExample
Account typelinks[].accounts[].typeCHECKING, SAVINGS
Masked numberlinks[].accounts[].mask"1234"
Account holderlinks[].accounts[].owners[].full_name"John Smith"
Current balancelinks[].accounts[].balances.current"15420.50"
Direct depositlinks[].accounts[].transactions[].is_direct_deposittrue
30-day avgsummary.avg_30"14500.00"
{
  "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": []
        }
      ]
    }
  ]
}

API reference

Bridge Token

Create tokens for Truv Bridge

Assets Report

Retrieve asset data

Accounts

Financial account details

Users

Create and manage users

Best practices

Use the large_deposit_threshold from the report and review transactions that exceed it:
const largeDeposits = report.links
  .flatMap(link => link.accounts)
  .flatMap(account => account.transactions)
  .filter(t => t.type === "CREDIT" && t.amount >= report.large_deposit_threshold);
Filter for direct deposits to verify recurring income:
const directDeposits = report.links
  .flatMap(link => link.accounts)
  .flatMap(account => account.transactions)
  .filter(t => t.is_direct_deposit);
Use the report-level summary or aggregate across all linked accounts:
// 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 }));

Next steps

Smart Routing

Payroll-first with document fallback

Bank Aggregation

Transaction-level bank data