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

# POS Application

> Embed income, employment, and asset verification in your borrower portal using the Application demo

Verify borrower income, employment, and assets in real-time by embedding Truv Bridge directly in your point-of-sale system. The borrower searches for their employer, connects their accounts, and completes verification without leaving your application.

<Info>
  **Integration pattern:** [Embedded Orders](/developers/integration/embedded-orders/overview) | **Products:** VOIE, VOE, VOA | **Demo:** [POS Application](/developers/demos/mortgage/pos-application)
</Info>

<Note>
  If you use a supported POS platform (nCino, Floify, BeSmartee, LenderLogix, TidalWave, Lodasoft), see [POS Integrations](/mortgage/integration/pos-overview) instead.
</Note>

***

## Get started

<Steps>
  <Step title="Run the demo">
    Clone and run the [POS Application demo](/developers/demos/mortgage/pos-application) to see the full borrower verification flow 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 > POS Application**, and walk through a verification using sandbox credentials (`goodlogin` / `goodpassword`).

    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. **Search for employer** — Your server calls [GET /v1/company-mappings-search/](/api-reference/companies/company_autocomplete_search) to find the borrower's employer by name. For asset verification, search financial institutions with [GET /v1/providers/](/api-reference/data-providers/providers-list).
    2. **Create an order** — Your server sends borrower PII and selected products to [POST /v1/orders/](/api-reference/orders/orders_create). The response includes a `bridge_token` and `user_id`.
    3. **Initialize Bridge** — Your frontend opens [Truv Bridge](/developers/sdks/overview) with the `bridge_token`. Set `isOrder: true` and optionally pass `companyMappingId` to [deeplink](/developers/integration/embedded-orders/deeplinking) directly to the employer.
    4. **Receive webhooks** — Truv sends an `order-status-updated` [webhook](/api-reference/webhooks) when verification completes. Verify the signature using the `X-Webhook-Sign` header with HMAC-SHA256.
    5. **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                                                                     |
    | --------------------- | -------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
    | Employer search       | [`src/components/CompanySearch.jsx`](https://github.com/truvhq/demo-apps/blob/main/src/components/CompanySearch.jsx) | [Company Search](/api-reference/companies/company_autocomplete_search)            |
    | 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)                           |
    | Bridge initialization | [`src/demos/Application.jsx`](https://github.com/truvhq/demo-apps/blob/main/src/demos/Application.jsx)               | [Bridge SDK](/developers/sdks/overview)                                           |
    | 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

### Products

Request both income and assets for mortgage verification by passing `products: ["income", "assets"]` in the order. The `income` product includes employment data automatically — you don't need to pass `employment` separately.

### 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):

```json theme={null}
{
  "products": ["income", "assets"],
  "ssn": "222233333",
  "first_name": "John",
  "last_name": "Doe",
  "external_user_id": "borrower_123"
}
```

### External user ID

Use `external_user_id` to link multiple orders to the same borrower across your system. This enables [follow-up verifications](/mortgage/integration/embedded-orders) and data continuity.

***

## Next steps

<CardGroup cols={2}>
  <Card title="Deeplinking" icon="link" href="/developers/integration/embedded-orders/deeplinking">
    Skip the employer search screen when you already know the borrower's employer
  </Card>

  <Card title="Co-borrowers" icon="users" href="/mortgage/integration/embedded-orders">
    Handle multiple borrowers and employers in a single loan file
  </Card>

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

  <Card title="Embedded Orders Guide" icon="book-open" href="/developers/integration/embedded-orders/overview">
    Full implementation guide for order creation, Bridge, callbacks, and data retrieval
  </Card>
</CardGroup>
