Skip to main content
Verify borrower income, employment, and assets from your loan origination system without embedding any UI. The loan officer creates an order with borrower PII, Truv sends a verification link via email or SMS, and verified data flows back through webhooks.
Integration pattern: Hosted Orders | Products: VOIE, VOE, VOA | Demo: LOS
If you use a supported LOS (ICE Encompass, Blue Sage, Vesta, Dark Matter Empower, BYTE), see LOS Integrations instead.

Get started

1

Run the demo

Clone and run the LOS demo to see hosted order creation and borrower outreach working locally.
git clone https://github.com/truvhq/demo-apps.git
cd demo-apps
npm install && npm start
Open http://localhost:5173, select Mortgage > LOS Integration, add a test borrower, and send a verification request. The demo creates an order, displays the share_url, and tracks webhooks as the borrower completes verification.See full setup instructions for ngrok and environment configuration.
2

Understand the API flow

The demo follows this sequence:
  1. Create an order — Your server sends borrower PII (name, email, phone) and selected products to POST /v1/orders/. The response includes an order_id and share_url.
  2. Truv sends the verification link — Truv delivers the share_url to the borrower via email and/or SMS. The borrower completes verification on Truv’s hosted page on their own device.
  3. Receive webhooks — Truv sends an order-status-updated webhook when the borrower completes verification. Verify the signature using the X-Webhook-Sign header with HMAC-SHA256.
  4. Retrieve reports — Fetch the VOIE report with POST /v1/users/{user_id}/reports/ or the assets report with POST /v1/users/{user_id}/assets/reports/.
3

Review the code

Each step maps to a specific file in the demo. Use these as reference when building your integration.
StepDemo fileAPI reference
Order creationserver/routes/orders.jsPOST /v1/orders/
Borrower outreach UIsrc/demos/LOS.jsxHosted Orders
Webhook verificationserver/webhooks.jsWebhook events
Report retrievalserver/routes/user-reports.jsIncome reports

Mortgage-specific configuration

Borrower contact information

Include both email and phone to maximize completion rates. Truv sends the verification link through both channels.
{
  "products": ["income", "assets"],
  "first_name": "John",
  "last_name": "Doe",
  "email": "john.doe@example.com",
  "phone": "4155554193",
  "ssn": "222233333",
  "external_user_id": "loan_123"
}

SSN for GSE matching

Include the borrower’s SSN in the order to enable GSE report matching for Fannie Mae D1C and Freddie Mac AIM.

Automate order creation

Trigger orders automatically based on loan milestones: application submitted, conditional approval, or pre-closing. Automated triggers reduce manual steps and get verification links to borrowers faster.
Use external_user_id to link orders to your internal loan file. This enables tracking across multiple borrowers and verification types for the same loan.

Next steps

Dashboard orders

Create orders manually through the Truv Dashboard with no code

CSV bulk upload

Upload orders in bulk for high-volume pipelines

GSE Testing

Validate Fannie Mae D1C and Freddie Mac AIM eligibility

Hosted Orders Guide

Full implementation guide for order creation, notifications, and data retrieval