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

# LOS Integration

> Send verification links to borrowers from your loan origination system using the LOS demo

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](/api-reference/webhooks).

<Info>
  **Integration pattern:** [Hosted Orders](/developers/integration/hosted-orders/new-user) | **Products:** VOIE, VOE, VOA | **Demo:** [LOS](/developers/demos/mortgage/los)
</Info>

<Note>
  If you use a supported LOS (ICE Encompass, Blue Sage, Vesta, Dark Matter Empower, BYTE), see [LOS Integrations](/mortgage/integration/los-overview) instead.
</Note>

***

## Get started

<Steps>
  <Step title="Run the demo">
    Clone and run the [LOS demo](/developers/demos/mortgage/los) to see hosted order creation and borrower outreach working locally.

    ```bash theme={null}
    git clone https://github.com/truvhq/demo-apps.git
    cd demo-apps
    npm install && npm start
    ```

    Open `http://localhost:5173`, select **Mortgage > LOS**, 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](/developers/quickstarts-overview#demo-apps) for ngrok and environment configuration.
  </Step>

  <Step title="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/](/api-reference/orders/orders_create). 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](/api-reference/webhooks) when the borrower completes verification. Verify the signature using the `X-Webhook-Sign` header with HMAC-SHA256.
    4. **Retrieve reports** — Fetch the [VOIE report](/api-reference/user-income-and-employment-reports/users_reports) with `POST /v1/users/{user_id}/reports/` or the [assets report](/api-reference/user-asset-verification-reports/assets-report-create) with `POST /v1/users/{user_id}/assets/reports/`.
  </Step>

  <Step title="Review the code">
    Each step maps to a specific file in the demo. Use these as reference when building your integration.

    | Step                 | Demo file                                                                                                      | API reference                                                                     |
    | -------------------- | -------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
    | Order creation       | [`server/routes/orders.js`](https://github.com/truvhq/demo-apps/blob/main/server/routes/orders.js)             | [POST /v1/orders/](/api-reference/orders/orders_create)                           |
    | Borrower outreach UI | [`src/demos/LOS.jsx`](https://github.com/truvhq/demo-apps/blob/main/src/demos/LOS.jsx)                         | [Hosted Orders](/developers/integration/hosted-orders/new-user)                   |
    | Webhook verification | [`server/webhooks.js`](https://github.com/truvhq/demo-apps/blob/main/server/webhooks.js)                       | [Webhooks](/api-reference/webhooks)                                               |
    | Report retrieval     | [`server/routes/user-reports.js`](https://github.com/truvhq/demo-apps/blob/main/server/routes/user-reports.js) | [Income reports](/api-reference/user-income-and-employment-reports/users_reports) |
  </Step>
</Steps>

***

## Mortgage-specific configuration

### Borrower contact information

Include both `email` and `phone` to maximize completion rates. Truv sends the verification link through both channels.

```json theme={null}
{
  "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](/mortgage/d1c-aim/fannie-mae) and [Freddie Mac AIM](/mortgage/d1c-aim/freddie-mac).

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

<Tip>
  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.
</Tip>

***

## Next steps

<CardGroup cols={2}>
  <Card title="Dashboard orders" icon="desktop" href="/developers/integration/manual-orders/new-user">
    Create orders manually through the Truv Dashboard with no code
  </Card>

  <Card title="CSV bulk upload" icon="file-csv" href="/developers/integration/manual-orders/csv-upload">
    Upload orders in bulk for high-volume pipelines
  </Card>

  <Card title="GSE Testing" icon="certificate" href="/developers/testing/gse-testing">
    Validate Fannie Mae D1C and Freddie Mac AIM eligibility
  </Card>

  <Card title="Hosted Orders Guide" icon="book-open" href="/developers/integration/hosted-orders/new-user">
    Full implementation guide for order creation, notifications, and data retrieval
  </Card>
</CardGroup>
