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

# KYC Reuse

> Reuse an existing Sumsub verification to onboard customers without repeating KYC

KYC reuse lets you onboard a customer with identity verification (KYC) they already completed on your own Sumsub account, instead of asking them to submit documents and complete a liveness check again. You pass a Sumsub share token when creating the customer, and Lumx imports the existing applicant data.

<Note>
  KYC reuse is only available for individual customers. Business customers must go through the standard [Business Verification (KYB)](/guides/business-verification) flow.
</Note>

## Prerequisites

* A data-sharing agreement between you and Lumx on Sumsub. Both parties must agree to share applicant data before tokens can be exchanged. Contact [compliance@lumx.io](mailto:compliance@lumx.io) to set this up.
* Your own Sumsub account with the customer already verified as an applicant
* An API key from the [Dashboard](https://dashboard.lumx.io)
* Your environment base URL (see [Environments](/get-started/environments))

## Example flow

The exact steps depend on what your Sumsub applicant already contains: data imported through the share token doesn't need to be submitted again, and Lumx may still require anything that's missing. The flow below shows a common scenario where the identity documents and liveness check are reused, and the remaining requirements are completed on Lumx.

In practice, you'll still need to send the additional information (Step 4). Reuse typically saves the document upload and liveness check, not the questionnaire. The minimum data Lumx needs is the same as [Create a Customer](/guides/create-a-customer).

<Steps>
  <Step title="Generate a share token on Sumsub">
    Generate a share token for the applicant using the [Sumsub share token endpoint](https://docs.sumsub.com/reference/generate-share-token). The token authorizes Lumx to import the applicant's verification data from your Sumsub account.

    Share tokens are single-use and expire after the `ttlInSecs` you set when generating them. Sumsub invalidates a token once it's used, so generate a fresh one for each attempt.
  </Step>

  <Step title="Create the customer with the share token">
    Send a `POST` request to `/customers` with the customer's information and the `shareToken` field. The customer data must match the applicant data on Sumsub.

    ```bash Request theme={null}
    curl -X POST https://api-sandbox.lumx.io/customers \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "shareToken": "_act-sbx-jwt-token-from-sumsub",
        "type": "INDIVIDUAL",
        "name": "William Default",
        "taxId": "123.456.789-00",
        "birthDate": "1990-01-01",
        "country": "BRA",
        "email": "william.default@example.com",
        "accounts": ["BRL"]
      }'
    ```

    The `shareToken` field is optional. Omitting it creates a customer that goes through the standard [Individual Verification (KYC)](/guides/individual-verification) flow. For the full list of fields, see [Create a Customer](/guides/create-a-customer).
  </Step>

  <Step title="Accept terms of service">
    The customer must still accept the Lumx terms of service. Send a `POST` request to `/customers/{id}/tos` to get the acceptance URL and share it with your customer.

    ```bash Request theme={null}
    curl -X POST https://api-sandbox.lumx.io/customers/{id}/tos \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "redirectUrl": "https://yourapp.com/onboarding/next-step"
      }'
    ```

    ```json Response theme={null}
    {
      "url": "https://dashboard.lumx.io/tos/sandbox/eyJhbGciOiJSUzI1...",
      "expiresAt": "2026-04-09T16:00:00Z"
    }
    ```
  </Step>

  <Step title="Send additional information">
    Send a `PATCH` request to `/customers/{id}/additional-information` with the customer's personal and transactional information.

    ```bash Request theme={null}
    curl -X PATCH https://api-sandbox.lumx.io/customers/{id}/additional-information \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "type": "INDIVIDUAL",
        "phone": "+5511999999999",
        "firstName": "William",
        "middleName": "",
        "lastName": "Default",
        "address": {
          "country": "BRA",
          "line1": "Rua das Flores, 123",
          "city": "São Paulo",
          "state": "SP",
          "postalCode": "01234-567"
        },
        "monthlyVolumeInUSD": "5000",
        "transactionVolumeInUSD": "1000",
        "jurisdictions": ["BRA", "USA", "OTHERS"],
        "involvedActivities": ["NONE"],
        "transactionCounterparties": ["SELF", "MERCHANTS_SUPPLIERS"],
        "professionalSituation": "EMPLOYEE",
        "professionalOccupation": "Software Engineer",
        "sourceOfFunds": "EMPLOYMENT"
      }'
    ```

    For the accepted values of each field, see [Individual Verification (KYC)](/guides/individual-verification#verification-flow) and the [API Reference](/api-reference/customers/send-additional-information).
  </Step>

  <Step title="Start the verification">
    Send a `POST` request to `/customers/{id}/verifications` to start the verification. Because the documents and liveness check are imported from Sumsub, there is no liveness step to trigger it automatically, so you start it explicitly.

    ```bash Request theme={null}
    curl -X POST https://api-sandbox.lumx.io/customers/{id}/verifications \
      -H "Authorization: Bearer YOUR_API_KEY"
    ```

    Monitor the verification status by [reading the customer](/api-reference/customers/read-a-customer) or subscribing to [webhooks](/developer/webhooks). Once the status reaches `APPROVED`, the customer can move money.
  </Step>
</Steps>

## Errors

Sending a `shareToken` for a business customer is rejected. Reuse is only available for individuals. If customer creation fails with a share token, the most common causes are a token that's expired, already used, or generated for a different applicant. Share tokens are single-use, so generate a fresh one and create the customer again. If reuse keeps failing, fall back to the standard [Individual Verification (KYC)](/guides/individual-verification) flow.

## Related resources

<CardGroup cols="2">
  <Card title="Create a Customer" href="/guides/create-a-customer">
    Register individual and business customers.
  </Card>

  <Card title="Individual Verification (KYC)" href="/guides/individual-verification">
    The standard verification flow without reuse.
  </Card>

  <Card title="Identity Verification" href="/compliance/identity-verification">
    Full compliance requirements.
  </Card>

  <Card title="Webhooks" href="/developer/webhooks">
    Receive real-time status updates.
  </Card>
</CardGroup>
