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

# Identity verification

> Verify your customers' identities with face-matching liveness checks against government-issued IDs

<Info>
  Identity verification is currently a **request access** feature. [Join the waitlist](https://admin.shopify.com/apps/supercycle) from your Supercycle home page to enable it on your store.
</Info>

<Note>
  This page covers the new identity verification flow. The previous Stripe Identity integration (configured under **Settings > Risk**) is being retired — stores on the new flow no longer use it. If you're still on Stripe Identity, contact support to migrate.
</Note>

Merchants choose which products require an ID check, and within each product can narrow further to specific **method options** — for example, a product where only the 7-day rental period (Calendar) or the Pro plan (Membership) needs verification while shorter periods or the Basic plan don't. Once a flagged option is in a customer's cart, they're prompted to verify on the thank you page and from their customer account. Approval is tracked at the customer level — a single approved verification fulfils every outstanding request that customer has.

## Setup

<Steps>
  <Step title="Open a product and pick a cycle method">
    In your Shopify admin, go to **Supercycle > Products** and open the product you want to gate behind ID verification. Select the **Calendar**, **Membership**, or **Subscription** method tab — verification is configured at the option level on each method, so a product with multiple methods needs the flag turned on per method.
  </Step>

  <Step title="Turn on Require ID verification on each option">
    Each method has a list of options (rental periods on Calendar, plans on Membership and Subscription). Click an option to open its modal, find the **Require ID verification** checkbox, tick it, and save.

    The option list shows an **ID verification** column with a **Required** / **Not required** badge so you can see at a glance which options will trigger a check.
  </Step>

  <Step title="(Optional) Bulk-apply across many options">
    From **Supercycle > Products**, click **Method options** in the top right, pick a method, select the options you want, then use the **3-dot (…) menu** in the bulk action bar to **Apply ID verification required**.
  </Step>

  <Step title="Add the Checkout requirements block to the Thank you page">
    Go to [Settings > Checkout](https://admin.shopify.com/settings/checkout), customize the checkout, switch to the **Thank you** page, and add the **Checkout requirements** app block. Save.

    The block reads each line's `_cycle` intent data and shows a collapsible row for every outstanding requirement on the order — ID verification when a flagged option was purchased, and [contract signing](/documentation/configuration/risk/esignatures) when a template is attached. Each row links to the matching app-proxy flow (`/identity_verification` or `/contracts`). If the customer is already verified and no other requirements apply, the block renders nothing.
  </Step>

  <Step title="Add the Account requirements page to customer accounts">
    Go to [Settings > Customer accounts](https://admin.shopify.com/settings/customer_accounts), open the customer account editor, and add the **Account requirements** page from the Supercycle extensions. Use **Add to menu** so customers can reach the **Requirements** page from their account navigation.

    The page lists outstanding ID verification requests alongside any unsigned [e-signature contracts](/documentation/configuration/risk/esignatures) on the customer's account.
  </Step>

  <Step title="(Optional) Edit the customer-facing copy">
    Go to [Settings > Languages](https://admin.shopify.com/apps/supercycle/settings/languages), open **Edit content** for a language, and update the **Requirements** strings. The same copy is shared by the checkout **Checkout requirements** block, the customer account **Requirements** page, and the app-proxy pages at `/identity_verification` and `/contracts`. Supercycle shows these strings in the buyer's storefront language when that language is active in both Shopify and Supercycle.
  </Step>
</Steps>

## How customers verify

When a customer checks out with a flagged cycle, Supercycle creates an **identity verification request** against their account. Customers can complete the check from any of these surfaces:

* **Thank you page** — the **Checkout requirements** block shows immediately after checkout. The ID verification row expands by default when it is the first outstanding requirement, with a button that opens the Persona embed at `<your_proxy_url>/identity_verification`.
* **Customer account** — the **Requirements** page (from the **Account requirements** extension) shows the current status and lets them resume an in-progress verification or retry a failed one.

The verification page lives at `<your_proxy_url>/identity_verification` on your store. It renders inside your theme layout — headings and text use your theme's typography, and action buttons use the **Button class** from **Methods style** in the Supercycle Engine app embed ([theme setup](/documentation/setup/theme-setup#update-style-settings)).

## Request verification manually

You can ask a customer to verify their identity even if they haven't bought a flagged cycle — useful when you need an extra check before fulfilling a rental, or when a previous request expired.

<Steps>
  <Step title="Open the customer's profile">
    In Supercycle, open the customer's profile.
  </Step>

  <Step title="Find the Risk section">
    In the **Risk** section, find **Identity verification not requested**.
  </Step>

  <Step title="Request ID verification">
    Select **Request ID verification**.
  </Step>
</Steps>

Supercycle creates an outstanding verification request, tags the customer in Shopify with **ID Verification Required**, and surfaces the verification prompt on their **Requirements** page the next time they sign in. If the customer already has an open request, selecting the button refreshes the tag without creating a duplicate.

### Request verification from POS

Store staff can start ID verification directly from Shopify POS using the **Verify ID** action on the order details and post-purchase screens. POS displays a QR code and a shareable link that customers can use to verify on their own phone, and the screen updates automatically once they're done.

See [Verify a customer's ID on POS](/documentation/point-of-sale/pos-overview#verify-a-customers-id-on-pos) for the staff-facing steps.

## Check customer verification status

The button is hidden once the customer has an outstanding request or an approved verification.

## Check verification status

A customer's verification status is shown on their profile in Supercycle. From there you can:

* See the current status (pending, submitted, in review, completed, on hold, expired) and result (approved, rejected, inconclusive).
* Open **View details** to inspect the full verification record, including the documents and reports returned.
* Filter the Customers and Rentals pages by Identity status (see below).

<Frame>
  <img src="https://mintcdn.com/supercycle/XbKBsdX_PulItpyX/images/customer-risk.png?fit=max&auto=format&n=XbKBsdX_PulItpyX&q=85&s=7281e6a90fba448c58edce5cfe80df79" alt="" width="340" height="176" data-path="images/customer-risk.png" />
</Frame>

## Filter by Identity status

The **Identity status** filter on the Customers and Rentals pages narrows the list to customers whose verification has reached a particular outcome. Approval is a customer-level property: one approved verification clears every outstanding request that customer has, so a customer is matched against the most favourable outcome they've reached.

| Filter value | Matches customers who…                                                                                                                        |
| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
| Verified     | Have at least one **approved** verification. Earlier rejections don't disqualify them.                                                        |
| Failed       | Have a **rejected** verification and have not since reached an approval.                                                                      |
| Unverified   | Have a verification request but no resolved verification yet (still pending or in review). Customers who never had a request are not matched. |

Use **Verified** to find customers who can rent without further checks, **Failed** to follow up with customers whose verification didn't pass, and **Unverified** to chase customers who started but haven't completed a check.

## Statuses

| Status    | Meaning                                                               |
| --------- | --------------------------------------------------------------------- |
| Pending   | Request created, customer has not started yet.                        |
| Submitted | Customer has completed the flow; awaiting a decision.                 |
| In review | The submission is being manually reviewed.                            |
| Completed | A final result has been returned.                                     |
| On hold   | Verification paused — contact support.                                |
| Expired   | The verification link expired; the customer needs to start a new one. |

| Result       | Meaning                                                                      |
| ------------ | ---------------------------------------------------------------------------- |
| Approved     | Identity verified. All outstanding requests for this customer are fulfilled. |
| Rejected     | Identity could not be verified. The customer can retry.                      |
| Inconclusive | The provider couldn't determine a result. The customer can retry.            |

## FAQs

<AccordionGroup>
  <Accordion title="Which provider runs the verification checks?">
    Supercycle currently uses [Persona](https://withpersona.com) to run identity verification. We may swap providers in the future — we'll always select the solution that best serves our merchants, and any change will be transparent to your customers.
  </Accordion>

  <Accordion title="Why was Stripe Identity replaced?">
    The new integration offers stronger document support, manual review, and richer status reporting. The provider-agnostic data model also means we can swap or add providers in the future without changing your setup.
  </Accordion>

  <Accordion title="How is this different from the old Stripe Identity setup?">
    The previous Stripe Identity flow was configured globally under **Settings > Risk** (verification type, document types, live capture, matching selfie). The new flow has no global configuration — you turn on **Require ID verification** per method option, and Persona handles the document/selfie logic. **Settings > Risk** still has an **ID verification** section, but it only summarizes the feature and links to **Products** so you can manage which options require a check.
  </Accordion>

  <Accordion title="What happens if a customer has multiple cycles that require verification?">
    Approval is a customer-level property. One approved verification fulfils every outstanding request that customer has, regardless of how many cycles triggered them.
  </Accordion>

  <Accordion title="Are there other identity verification providers?">
    Supercycle ships with a single built-in provider. There are also third-party Shopify apps such as [RealID](https://apps.shopify.com/real-id), [iDenfy](https://apps.shopify.com/idenfy-id-verification) and [Engage Message](https://apps.shopify.com/em-id-and-age-verification) that you can run alongside Supercycle.
  </Accordion>
</AccordionGroup>
