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

# Personal Lending

> Use payroll data, banking reports, and uploaded documents in personal lending workflows.

Applicants can share payroll data, connect bank accounts, or upload documents for a personal lending application. Choose the products and data required by your lending policy.

## Choose products

<CardGroup cols={3}>
  <Card title="Payroll" icon="money-check-dollar" href="#payroll">
    Retrieve payroll records for your application or underwriting workflow.
  </Card>

  <Card title="Banking" icon="building-columns" href="#banking">
    Use Banking Verifications for income and asset reports.
  </Card>

  <Card title="Document uploads" icon="file-lines" href="#document-uploads">
    Receive uploaded files and retrieve OCR and authenticity results when enabled.
  </Card>
</CardGroup>

Create one Argyle user for the applicant and store the user ID with the application record. Reuse it across products and when the applicant returns.

## Payroll

Use the Data APIs when your application needs direct access to payroll records. Common data sets include:

* [Identities](/api-reference/identities) for employer, employment status, job, pay, and hire-date information.
* [Paystubs](/api-reference/paystubs) for recent income history.
* [Payroll Documents](/api-reference/payroll-documents) when source files are required.
* [Deposit Destinations](/api-reference/deposit-destinations) for paycheck-allocation information.

If your workflow needs a completed payroll report, use [Payroll Verifications](/verifications/verification-types/payroll).

### Connect payroll accounts

Launch [embedded Link](/link/initialization/overview) inside your application, or send an [email/SMS invitation](/api-reference/invites/send-an-invite). For invitations, store the invite ID with the applicant's user ID.

When your application collects the employer name first, use [Employer Search](/api-reference/employer-search) to check coverage. [Direct login](/workflows/account-connections#direct-login) can take the applicant to a known source.

Track each connected account independently. The [`accounts.connected`](/api-reference/accounts-webhooks/connected) webhook confirms successful authentication, but does not mean payroll data is ready.

### Retrieve payroll data

1. Retrieve employment information after the [`identities.added`](/api-reference/identities-webhooks/added) webhook, and handle subsequent identity updates.
2. Subscribe to the [`paystubs.partially_synced`](/api-reference/paystubs-webhooks/partially-synced) webhook with `config.days_synced` set to the history your lending policy requires. Retrieve paystubs using the account and available dates from the webhook.
3. Also handle the [`paystubs.fully_synced`](/api-reference/paystubs-webhooks/fully-synced) webhook, because an account can complete without a partial-sync event.
4. Use the [`users.fully_synced`](/api-reference/users-webhooks/fully-synced) webhook when waiting for all initial data across the applicant's newly connected payroll accounts.

Follow [Data Delivery and Readiness](/overview/data-delivery#retrieving-paystubs) for multiple accounts, missing partial-sync events, and timeouts. Check that the returned records meet the required history and field requirements before continuing.

Use the `employment` field to [match identities, paystubs, and payroll documents](/overview/data-structure/employments) for the same job. An account can contain records from multiple jobs. Filtering by employment excludes unmatched records; retrieve all records first when those records are also needed.

## Banking

Use [Banking Verifications](/verifications/verification-types/banking) when the applicant will share banking information for an income or asset report.

1. If the applicant already has a user from payroll or document collection, reuse that user ID. Otherwise, create a user. Update any missing [required banking details](/verifications/quickstart#create-a-user) before ordering the verification.
2. Order the required report, such as `voi` for income or `voai` for assets and income.
3. Create a session and launch its link with the [banking SDK](/verifications/verification-types/banking#embedded-banking). Hosted banking invitations must be enabled by Argyle before use.
4. Wait for the `verifications.updated` webhook and retrieve the report PDF or JSON when its status is `completed` or `completed_with_errors`.

Use verification status to determine banking report readiness. Payroll synchronization events do not apply to this path.

## Document uploads

Offer documents as an initial option or when an applicant cannot connect an account. A [document-upload-only Flow](/workflows/document-processing#document-upload-only) lets the applicant upload files in Link without a payroll connection. If you already collect documents outside Link, [upload them through the API](/api-reference/user-uploads/upload-a-document).

Retrieve files through [User Uploads](/api-reference/user-uploads). When OCR is enabled, use [OCR completion and failure webhooks](/integrations/ocr/ocrolus#ocr-webhooks) to track processing and retrieve the results from `metadata.ocr_documents[]`. Authenticity results have their own webhook.

See [OCR and Authenticity](/integrations/ocr/ocrolus) for supported documents, result fields, and errors. Doc VOI is designed for mortgage income calculations; standalone document collection and OCR use the User Uploads API.

## Incomplete and returning applicants

Subscribe to the [`accounts.updated`](/api-reference/accounts-webhooks/updated) webhook with `config.include_resource = true` for payroll connection status changes. Set an application-level timeout for requests that do not produce the required records.

* Return the existing user to [Reconnect an Account](/workflows/reconnecting-accounts) when credentials or MFA need attention.
* Let the applicant upload additional documents through the same document Flow.
* Use [Ongoing Refresh](/overview/ongoing-refresh) if it is enabled for your organization and your lending workflow requires records after the initial decision.

For incomplete banking sessions or report errors, follow [Recovery and Errors](/verifications/recovery-and-errors).
