> ## 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.

# Income & Employment for Government

> Income and employment verification for government benefits programs

Income & Employment (VOIE) verification provides instant access to client income and employment data directly from payroll providers. For public sector agencies, this replaces manual pay stub collection and employer phone calls with real-time, source-verified data.

## Benefits

<CardGroup cols={2}>
  <Card title="Eliminate manual entry" icon="keyboard">Replace employer phone calls and paper forms with instant payroll data</Card>
  <Card title="Broad coverage" icon="users">Connects to payroll providers covering 85%+ of US employees. See [coverage](/developers/coverage-payroll) for details.</Card>
  <Card title="Source-verified data" icon="shield-check">Data comes directly from payroll systems — no self-reported documents</Card>
  <Card title="Faster processing" icon="bolt">Seconds instead of days for income and employment verification</Card>
</CardGroup>

***

## What you get

### Income Data

* **Current income:** Base salary, hourly rate, tips, commission, bonus, overtime
* **Pay frequency:** Weekly, bi-weekly, semi-monthly, monthly
* **YTD earnings:** Year-to-date gross and net pay
* **Deductions:** Federal/state taxes, benefits, garnishments, child support
* **Pay history:** Historical pay statements across multiple pay periods

### Employment Data

* **Employer information:** Name, address, phone number, EIN
* **Employment status:** Active, terminated, on leave
* **Employment dates:** Start date, end date (if applicable)
* **Job title:** Current position and department
* **Work schedule:** Full-time, part-time, hours per week

### Documents

* Pay stubs (PDF)
* W-2 forms (when available)
* Employment verification letter

***

## Government use cases

<AccordionGroup>
  <Accordion title="Benefits eligibility (SNAP, TANF, Medicaid)" icon="hand-holding-dollar">
    Verify household income against program thresholds. Income & Employment verification captures all income streams, including gig work and multiple employers, giving a complete picture for means-tested programs.

    **Typical product:** `income` (automatically includes employment data)
  </Accordion>

  <Accordion title="Child care and housing subsidies" icon="house">
    Determine eligibility and subsidy amounts based on verified income. Pay frequency and YTD data help normalize income across different pay schedules.

    **Typical product:** `income` (automatically includes employment data)
  </Accordion>

  <Accordion title="Renewals and eligibility reviews" icon="rotate">
    Refresh income data automatically at recertification time using the [Order Refresh API](/api-reference/orders/orders_create_refresh_order). When the client's payroll session is still active, Truv pulls fresh pay statements, updated YTD earnings, and current employment status — no client action needed.

    If the session has expired, create a new order and send a verification link through your renewal workflow. The client re-authenticates through Bridge.

    For programs with periodic eligibility reviews, most refreshes succeed automatically. For annual recertification, plan for re-authentication on a larger share of cases. See [Data Refresh](/developers/integration/embedded-orders/data-refresh) for implementation details.

    **Typical product:** `income` (automatically includes employment data)
  </Accordion>

  <Accordion title="SSA and government benefit verification" icon="landmark">
    Truv connects to the **Social Security Administration (SSA)** as a distinct provider. This covers clients whose primary income is Social Security benefits rather than payroll employment.

    **Benefit type classification:** The `job_title` field in the employment response identifies the specific benefit type. Values include:

    * `"Disability"` -- SSDI benefits
    * `"Survivors"` -- Survivor benefits
    * `"Retirement"` -- Retirement benefits

    **What you receive:** SSA income returns a **Benefits Verification Letter** rather than standard paystubs. This letter confirms the benefit type and monthly payment amount. Standard payroll fields like `w2s`, deductions, and pay frequency are not applicable for SSA connections.

    **Bank transaction fallback:** Government benefit deposits can also be detected through bank transaction analysis. Include the `assets` product in your order to capture bank-deposited benefit payments when the client cannot authenticate directly with SSA.

    **Sandbox testing:** In Bridge, search for SSA as the provider and authenticate with `goodlogin` / `goodpassword`.

    **Typical product:** `income` (automatically includes employment data)
  </Accordion>
</AccordionGroup>

***

## Data coverage

Truv connects to payroll providers covering 85%+ of US employees, including ADP, Paychex, Workday, UKG, Paylocity, Gusto, and 100+ more. See the [coverage page](/developers/coverage-payroll) for the full provider list.

### Supported income types

| Income type          | How it's captured                                                           |
| -------------------- | --------------------------------------------------------------------------- |
| W-2 employment       | Direct payroll connection                                                   |
| 1099 contractors     | Payroll provider connection                                                 |
| Multiple employers   | Client connects each employer separately                                    |
| Gig / on-demand work | Payroll connection (e.g., Uber, DoorDash) or bank transactions via `assets` |
| Self-employment      | Bank transactions via `assets` product                                      |

<Tip>
  For the most complete income picture, include `income` and `assets` products in your order. The `income` product automatically includes employment data — no need to request `employment` separately. This captures W-2 payroll **and** bank-deposited income from self-employment, gig work, and other non-payroll sources.
</Tip>

***

## How to implement

| Path                                                            | Code required | Best for                                          |
| --------------------------------------------------------------- | ------------- | ------------------------------------------------- |
| [Customer Portal](/government/integration/customer-portal)      | Minimal       | Self-service client verification                  |
| [Caseworker Portal](/government/integration/caseworker-portal)  | None          | Caseworker-initiated orders via Dashboard         |
| [Document Processing](/government/products/document-processing) | Minimal       | Upload pay stubs and tax documents for extraction |

***

## Report structure

### API Response

The Income & Employment response uses the `IncomeCheck` schema. The top-level object contains an `employments` array, where each entry includes nested `company`, `profile`, income fields, and `statements`.

| Field          | Path                          | Example              |
| -------------- | ----------------------------- | -------------------- |
| Annual income  | `employments[].income`        | `"70000.00"`         |
| Income period  | `employments[].income_unit`   | `YEARLY`             |
| Pay frequency  | `employments[].pay_frequency` | `BW` (Bi-Weekly)     |
| Employer       | `employments[].company.name`  | `"Acme Corporation"` |
| Pay statements | `employments[].statements[]`  | Array of pay stubs   |
| W-2 forms      | `employments[].w2s[]`         | Array of W-2 docs    |

<Accordion title="View full response example" icon="code">
  ```json theme={null}
  {
    "id": "24d7e80942ce4ad58a93f70ce4115f5c",
    "status": "done",
    "finished_at": "2024-01-20T14:30:00Z",
    "access_token": "48427a36d43c4d5aa6324bc06c692456",
    "provider": "adp",
    "employments": [
      {
        "id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
        "income": "60000.00",
        "income_unit": "YEARLY",
        "pay_rate": "2307.69",
        "pay_frequency": "BW",
        "is_active": true,
        "job_title": "Medical Technician",
        "job_type": "F",
        "start_date": "2021-06-15",
        "original_hire_date": "2021-06-15",
        "company": {
          "name": "City General Hospital",
          "address": {
            "street": "500 Main St",
            "city": "Springfield",
            "state": "IL",
            "zip": "62701"
          },
          "phone": "2175550100",
          "ein": "37-1234567"
        },
        "profile": {
          "first_name": "Maria",
          "last_name": "Garcia"
        },
        "statements": [
          {
            "pay_date": "2024-01-19",
            "net_pay": "1780.00",
            "net_pay_ytd": "1780.00",
            "gross_pay": "2450.00",
            "gross_pay_ytd": "2450.00",
            "hours": "80.00",
            "basis_of_pay": "H"
          }
        ],
        "w2s": [
          {
            "year": 2023,
            "wages": "58000.00",
            "federal_tax": "7200.00",
            "gross_pay": "58000.00"
          }
        ]
      }
    ]
  }
  ```
</Accordion>

<Info>
  For the full schema, see the [Income & Employment reports reference](/api-reference/user-income-and-employment-reports/object).
</Info>

***

## API reference

<CardGroup cols={2}>
  <Card title="Orders" icon="file-circle-plus" href="/api-reference/orders/object">Create and manage verification orders</Card>
  <Card title="Income Report" icon="file-lines" href="/api-reference/account-link-income-and-employment-reports/link_detail_reports_income">Retrieve income verification data</Card>
  <Card title="Employment Report" icon="building" href="/api-reference/account-link-income-and-employment-reports/link_detail_reports_employment">Retrieve employment data</Card>
  <Card title="Webhooks" icon="webhook" href="/api-reference/webhooks">Receive status notifications</Card>
</CardGroup>

***

## Best practices

<AccordionGroup>
  <Accordion title="Request 12 months of history" icon="calendar">
    For benefits eligibility, 12 months provides enough data to calculate average monthly income and identify seasonal patterns. See the [Create Order API reference](/api-reference/orders/orders_create) for all available fields.
  </Accordion>

  <Accordion title="Capture all income streams" icon="money-bill-wave">
    Many benefits clients have multiple income sources: part-time jobs, gig work, seasonal employment. Include both `income` and `assets` products so clients can connect payroll **and** bank accounts in one session.
  </Accordion>

  <Accordion title="Use deeplinking when you know the employer" icon="link">
    If your agency already has the client's employer on file, pass a `company_mapping_id` to skip the employer search screen. This improves completion rates. [Learn more about deeplinking](/developers/integration/embedded-orders/deeplinking).
  </Accordion>

  <Accordion title="Set the locale for threshold languages" icon="globe">
    Pass the `locale` parameter when creating an order to render Bridge, emails, and SMS in the client's preferred language. See [threshold languages](/government/overview#threshold-languages) for supported languages.
  </Accordion>

  <Accordion title="Use self-certification for income confirmation" icon="file-lines">
    Enable [self-certification](/developers/integration/embedded-orders/self-certification) so clients can review and confirm the income and employment data Truv retrieves. This is especially useful for clients with multiple income sources or irregular pay.
  </Accordion>
</AccordionGroup>

***

## Next steps

<CardGroup cols={2}>
  <Card title="Implementation Guide" icon="code" href="/government/integration/customer-portal">
    Step-by-step technical setup
  </Card>

  <Card title="Overview" icon="sitemap" href="/government/overview">
    Integration scenarios across all channels
  </Card>

  <Card title="Customer Portal" icon="desktop" href="/government/integration/customer-portal">
    API examples and code patterns
  </Card>

  <Card title="Testing" icon="flask" href="/developers/testing/test-credentials">
    Sandbox test credentials
  </Card>
</CardGroup>
