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.
| Credential | Provider | Sample report |
|---|---|---|
goodlogin / goodpassword | Truv Payroll Provider | Bi-weekly VOIE PDF |
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) and to confirm your annualization logic across cadences.
Sample responses
Sample responses
- Weekly (W)
- Semi-monthly (SM)
- Monthly (M)
Same report shape as the quick-start response above;
pay_frequency is W and statements arrive weekly.Employment type
| Scenario | Username | SSN | What it returns |
|---|---|---|---|
VOIE-E1 | fulltime | 2211 | Full-time salesperson with regular salaried paystubs |
VOIE-E2 | hourly.part-time | 666382548 | Hourly part-time worker with variable hours per stub |
VOIE-E3 | partial.data | 2222 | Payroll connection succeeds but returns sparse employment metadata — job_title, job_type, and original_hire_date come back null. Use to validate your handling of null fields on the employment object. |
VOIE-E4 | goodlogin.min-data | 991-91-9991 | Minimal information returned (no W-2s, sparse statements) |
VOIE-E5 | multiple.employments | — | Multiple different employers attached to one applicant |
VOIE-E6 | multiple.employments2 | 7740 | Multiple same-employer positions (e.g. transferred roles) |
VOIE-E7 | nonactive | 1890 | Employment with an end_date set and is_active: false |
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.| Scenario | Username | Returns |
|---|---|---|
VOIE-T1 | goodlogin.tn1 | Active employment with less than 12 months tenure at the current employer |
VOIE-T2 | goodlogin.tn2 | Active employment with less than 12 months tenure at the current employer (alternate profile for multi-applicant test sets) |
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.
| Scenario | Username | What it returns |
|---|---|---|
VOIE-B1 | military | Military MyPay data via the DFAS myPay provider |
VOIE-B2 | unemployment | Weekly unemployment benefits |
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
| Scenario | Username | What it returns |
|---|---|---|
VOIE-G1 | goodlogin.shift | Gig worker with earned wage access — use for testing gig-payroll VOIE flows where hours and earnings cadence differ from W-2 payroll |
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.
Error scenarios
VOIE shares the universal authentication-error credentials. Use these to test your error handling and retry UX.| Scenario | Credential | Task status | Use it to test |
|---|---|---|---|
VOIE-X1 | goodlogin / no_data | no_data | Successful login, provider returns zero records |
VOIE-X2 | goodlogin / mfa | mfa → done | MFA flow — enter code 12345 |
VOIE-X3 | goodlogin / mfa_captcha | mfa → done | MFA captcha — enter answer 9M4BP |
VOIE-X4 | goodlogin / mfa_select | mfa → done | MFA verification-method selection |
VOIE-X5 | goodlogin / longcheck | parse → done (delayed) | ~30 second processing delay |
VOIE-X6 | error.user / login_error | login_error | Incorrect credentials |
VOIE-X7 | error.user / mfa_error | mfa_error | MFA verification failed |
VOIE-X8 | error.user / account_locked | account_locked | Account locked by provider |
VOIE-X9 | error.user / unavailable | unavailable | Provider under maintenance |
VOIE-X10 | error.user / error | error | Generic login error |
VOIE-X11 | error.user / config_error | config_error | Organization ID configuration failure |
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