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

# Follow-up Verification

> Verify co-borrowers and complete post-application verification using the Follow-up demo

Handle co-borrowers, multiple employers, and post-application verification by creating multiple orders linked to a single loan file. Each borrower completes verification independently through [Truv Bridge](/developers/sdks/overview), and your system aggregates the results.

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

***

## Get started

<Steps>
  <Step title="Run the demo">
    Clone and run the [POS Tasks demo](/developers/demos/mortgage/pos-tasks) to see multi-task verification 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 Tasks**, enter an Application ID, and complete verification for each task 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. **Create orders for each task** — Your server calls [POST /v1/orders/](/api-reference/orders/orders_create) once per product (income, employment, assets). All orders share the same `external_user_id` so Truv links them to one borrower.
    2. **Initialize Bridge per task** — Your frontend opens [Truv Bridge](/developers/sdks/overview) with each order's `bridge_token`. Set `isOrder: true` to use the Orders flow.
    3. **Borrower completes verification** — The borrower connects payroll providers for income and employment, and financial institutions for assets. Each task runs through Bridge independently.
    4. **Receive webhooks** — Truv sends an `order-status-updated` [webhook](/api-reference/webhooks) when each task 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/`, the [VOE report](/api-reference/user-income-and-employment-reports/users_reports) with `is_voe: true`, 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 (batch) | [`src/demos/FollowUp.jsx`](https://github.com/truvhq/demo-apps/blob/main/src/demos/FollowUp.jsx)                                   | [POST /v1/orders/](/api-reference/orders/orders_create)                           |
    | Bridge initialization  | [`src/components/screens/BridgeScreen.jsx`](https://github.com/truvhq/demo-apps/blob/main/src/components/screens/BridgeScreen.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

### Link orders with external\_user\_id

All orders for a single loan share the same `external_user_id`. This lets Truv link multiple verifications to one borrower and enables [data refresh](/developers/integration/embedded-orders/data-refresh) across connections.

```json theme={null}
{
  "products": ["income"],
  "external_user_id": "loan-001-primary",
  "first_name": "John",
  "last_name": "Doe",
  "ssn": "222233333"
}
```

### Common mortgage scenarios

| Scenario                    | Products           | Orders                        |
| --------------------------- | ------------------ | ----------------------------- |
| Purchase with co-borrower   | `income`, `assets` | 1 per borrower                |
| Refinance (single borrower) | `income`           | 1                             |
| Self-employed borrower      | `income`, `assets` | 1                             |
| Multiple employers          | `income`           | 1 order, multiple connections |

### SSN for GSE matching

Include the borrower's SSN in each order to enable GSE report matching for [Fannie Mae D1C](/mortgage/d1c-aim/fannie-mae) and [Freddie Mac AIM](/mortgage/d1c-aim/freddie-mac).

***

## Next steps

<CardGroup cols={2}>
  <Card title="Data Refresh" icon="rotate" href="/developers/integration/embedded-orders/data-refresh">
    Pull fresh data from existing connections without borrower action
  </Card>

  <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="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>
