ID Verification — Stripe Identity Integration
ID Verification — Stripe Identity Integration
Step 6 of the mandate form requires tenants to verify their identity using Stripe Identity. This protects against fraud and provides a verifiable record of identity linked to each Direct Debit mandate.
Overview
When a tenant reaches Step 6 of the mandate form, the service:
- Creates a Stripe Identity verification session via the Stripe API.
- Redirects the tenant to the Stripe-hosted verification flow.
- The tenant completes identity verification by submitting a passport or driving licence.
- Stripe processes the document and returns a result.
- The service receives the result via a Stripe webhook and updates the mandate record.
Supported Document Types
- Passport
- Driving licence
Verification Statuses
Once verification is processed, the mandate is updated with one of the following statuses:
| Status | Description |
|---|---|
verified | Identity was successfully confirmed by Stripe. |
unverified | Verification was not completed or the document was rejected. |
requires_input | Additional information or a document resubmission is needed. |
Mandate Submission Gating
Mandate submission is blocked unless the tenant's verification status is verified. Tenants with a status of unverified or requires_input cannot proceed to the confirmation step until verification is successfully completed.
This check is enforced server-side — it cannot be bypassed by manipulating the form.
Data Stored on the Mandate
The following fields are persisted against the mandate record after ID verification:
| Field | Type | Description |
|---|---|---|
verification_status | enum | The outcome of the Stripe Identity check (verified, unverified, requires_input). |
stripe_verification_session_id | string | The unique Stripe session ID for audit and support purposes. |
Webhook Integration
Stripe delivers verification results asynchronously via webhook. The service listens for Stripe Identity webhook events and automatically updates the mandate record when a result is received. No polling is required.
Note: Ensure the Stripe webhook secret and API keys are correctly configured in your environment. See the environment variable reference for required keys.
Mandate Form Flow (with ID Verification)
- Personal Information
- DD Terms & Conditions
- Payment Details
- Bank Details
- Video Verification
- ID Verification ← (Stripe Identity — this step)
- Right to Rent (property mandates only)
- Confirmation