product_type value on the bridge token or order differs (income for VOIE, employment for VOE).
In Truv Bridge, search for the Truv Payroll Provider to use any of these credentials.
Quick start
Usegoodlogin / goodpassword for the happy path. A successful login returns a complete VOIE report with bi-weekly paystubs, an annual income summary, W-2s, and bank account allocations.
For the underlying JSON shape, see the User Income and Employment Report object.
Sample response — captured from a live sandbox order. Expand a credential to see the response it returns.
goodlogin / goodpassword — full VOIE report shape
goodlogin / goodpassword — full VOIE report shape
The complete report a successful payroll connection returns: employment metadata, an annual income summary, per-pay-period statements (one shown; the rest follow the same shape), W-2s, and bank account allocations. Captured from a live sandbox order. Pay-period, earnings, and deduction arrays are truncated here for length.
Credential scenarios
Every credential here connects through the Truv Payroll Provider and returns the same report shape as Quick start — the Sample responses panels show only the fields that differ. TheVOIE-* scenario ID is a stable test-case identifier you can cite in tickets.
Every scenario below uses the password
goodpassword — only the username changes. The error scenarios are the exception: there the password field carries the trigger.Pay frequency
All four scenarios return SSN991-91-9991; only the pay cadence differs.
Use these to validate your handling of
pay_frequency (W, BW, SM, M, SA) and to confirm your annualization logic across cadences.
Sample responses
Sample responses
- Weekly (W)
- Semi-monthly (SM)
- Monthly (M)
- Semi-annual (SA)
Same report shape as the quick-start response above;
pay_frequency is W and statements arrive weekly.Earnings composition
These credentials connect through the Truv Payroll Provider. They return paychecks where pay includes more than base wages. Use them to check how your decisioning reads thebonus and commission statement fields, their *_ytd totals, and the earnings[].category on each line.
Sample responses
Sample responses
- Bonus (C1)
- Bonus + commission (C2)
- Commission-only (C3)
Bonus payments land on some statements and not others.
bonus is null on a statement with no bonus. bonus_ytd adds up across the year, and annual_income_summary[].bonus carries the yearly total.Employment type
Sample responses
Sample responses
- Full-time (E1)
- Part-time (E2)
- Partial data (E3)
- Min data (E4)
- Multi-employer (E5)
- Same-employer (E6)
- Ended (E7)
Salaried full-time employee with regular paystubs.
Tenure
Use these credentials when your decisioning depends on the borrower’s tenure with their current employer — for example, PLL eligibility rules that require a minimum employment length, or income-stability decisioning that looks at months at current employer.
Both credentials produce the same response shape as
goodlogin / goodpassword — the only difference is that start_date is set to a date inside the last 12 months. Use one or the other (or both) when your QA matrix has multiple sub-12-month scenarios that need distinct credentials.
Sample responses
Sample responses
- Under 12 mo (T1)
- Under 12 mo alt (T2)
start_date falls inside the last 12 months. Use to confirm tenure-based eligibility logic.Benefits and special cases
Both scenarios return SSN9988.
Retirement, disability, and Veterans benefits: Search for the benefit type in Truv Bridge (for example, “SSA” for Social Security or “VA Benefits”), pick a login method, and use
goodlogin / goodpassword. Retirement and disability return a Social Security Administration Benefits Verification Letter. Veterans Benefits return a VA Benefit Summary Letter via the Veterans Affairs provider, or a retirement paystub via the DFAS myPay provider.
Sample responses
Sample responses
- Military (B1)
- Unemployment (B2)
Military service member pay record.
Gig and shift workers
Gig provider connections return different field coverage than W-2 payroll connections. DoorDash returns gross pay and hours but no net pay or deductions; Uber returns gross and net pay but no hours. Validate your decisioning logic against partial-coverage responses, not against the assumption that every field will be populated.
Sample response — gig / earned wage access
Sample response — gig / earned wage access
Gig worker with earned wage access; field coverage differs from W-2 payroll.
Income changes and outliers
These credentials connect through the Truv Payroll Provider. Each returns a statement history with a clear value pattern. One trends up, one trends down, one holds high values, and one carries a single spike. Use them to check how your trend, averaging, and outlier logic reads movement across statements instead of a single period.pay.raise and pay.reduction only show their pattern across the full statement set. Read the statements[] array from oldest to newest, not just latest_statement. outlier.paystub returns normal statements with one spike. Check each statement value, not the average alone.Sample responses
Sample responses
- Pay raise (D1)
- Pay reduction (D2)
- Extreme income (D3)
- Outlier paystub (D4)
gross_pay rises on every statement, so the most recent statement is the highest. The values in the sample below show the trend.Error scenarios
VOIE shares the universal authentication-error credentials. Use these to test your error handling and retry UX.
See Task lifecycle for the full status reference and the meaning of each error state.
Fraud and suspicious documents
Document-uploaded VOIE uses filename-driven triggers in sandbox to simulate fraud detection. The full filename → task status +error_message map lives on the Test Documents page.
For interpreting is_suspicious on the report, fraud-tier behavior, and recommended manual-review workflows, see Fraud Detection & Manual Review.
Webhook events
When testing VOIE end to end, your webhook endpoint receives onetask-status-updated event per status transition plus one order-status-updated event per connection when the user finishes the order.
Sample webhook payloads
Sample webhook payloads
Per-task event (one per employer connection):Order event (one per connection — fires for each unique
link_id when the user closes Bridge via Finish and Share, so an order with more than one connection emits multiple order-status-updated events):tracking_info is the reliable mapping key, see the Orders object reference.
Mortgage VOIE (GSE testing)
For Fannie Mae Day 1 Certainty and Freddie Mac AIM testing — with borrower test accounts that map to specific GSE submission outcomes — see GSE Testing and the credential tables on the Fannie Mae D1C and Freddie Mac AIM pages.Next steps
Bridge Widget Guide
Mint a bridge token and embed the widget
Embedded Orders
Order-driven VOIE with auto-generated reports
GSE Testing
Fannie Mae D1C and Freddie Mac AIM workflows
Report Object
JSON schema for the VOIE report