> ## Documentation Index
> Fetch the complete documentation index at: https://docs.argyle.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Mortgage

> Implement payroll, banking, and Doc VOI across the mortgage lifecycle.

Mortgage implementations use Verifications to order payroll, banking, and Doc VOI products through one lifecycle. The same user can complete multiple verification types as a loan moves from application through closing.

## Choose verification products

<CardGroup cols={3}>
  <Card title="Payroll" icon="money-check-dollar" href="/verifications/verification-types/payroll">
    Use payroll data borrowers share for income and employment reports.
  </Card>

  <Card title="Banking" icon="building-columns" href="/verifications/verification-types/banking">
    Use banking data borrowers share for asset, income, and transaction reports.
  </Card>

  <Card title="Doc VOI" icon="file-lines" href="/verifications/verification-types/document-voi">
    Use documents borrowers upload for mortgage income reports.
  </Card>
</CardGroup>

## Implementation workflow

<Steps>
  <Step title="Create or reuse the borrower">
    Maintain one Argyle [user](/overview/data-structure/users) for each borrower. Store the user ID with your application or loan record, and use [`external_id`](/overview/data-structure/users#external-identifiers) when you need to find the borrower by an identifier from your system.
  </Step>

  <Step title="Order each verification">
    Create a [verification](/api-reference/verifications/order-a-verification) for each required report type. Provide the user details required by that product before placing the order.
  </Step>

  <Step title="Start the borrower experience">
    Create a [session](/api-reference/verifications/create-a-session) when the borrower needs to connect a payroll or bank account or upload documents. Launch the returned URL through the appropriate embedded or hosted experience.
  </Step>

  <Step title="Track the lifecycle">
    Subscribe to the [`verifications.updated`](/api-reference/verifications-webhooks/updated) webhook with `config.include_resource = true`. Use verification status for backend decisions; Link callbacks are for the immediate frontend experience.
  </Step>

  <Step title="Retrieve the result">
    When the verification reaches `completed` or `completed_with_errors`, download the PDF or JSON from the authenticated URLs in the verification resource.
  </Step>
</Steps>

## Returning borrowers

Do not create another user when a borrower returns later in the loan. Reuse the original user and choose the return path that matches the request:

* Use [instant refresh](/verifications/re-verification#instant-refresh) when the existing connection or uploaded documents can support a new report.
* Create a new active verification and session when the borrower needs to connect another account or provide new documents.
* Create another session for the same active verification if the borrower left before completing the original session.

See [Recovery and Errors](/verifications/recovery-and-errors) for invalid user details, incomplete sessions, and other recovery paths.

## Reports and source documents

Treat the verification webhook as the report-readiness signal. If you also need paystubs or payroll documents, use the employment IDs in the report JSON to limit those requests to employments included in the report.

* Review [Reports and Source Documents](/verifications/reports-and-source-documents).
* Connect Argyle to [Point of Sale Systems](/integrations/pos-los/point-of-sale-systems) or [Loan Origination Systems](/integrations/pos-los/loan-origination-systems).
* See [Day 1 Certainty® and AIM](/integrations/d1c-aim/verifications) for supported GSE workflows and reference-ID guidance.

Start with the [Verifications Quickstart](/verifications/quickstart) for complete request examples.
