---
title: "Integrations | Veriff.com"
slug: "how-to-create-an-integration"
description: "Learn about Veriff's test and live integrations, how to create and test them to ensure seamless data exchange in your applications."
tags: ["Create Integration", "Find Integration", "Integrations", "Live Integration", "Test Integration"]
updated: 2025-07-31T09:39:31Z
published: 2025-07-31T09:39:31Z
---

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

# Integrations

To exchange data with you, we use integrations. It is a collection of settings, and are distinguished from each other by API keys.

## Integration types

There are two types of integrations: [**test integrations**](/v1/docs/how-to-create-an-integration#test-integration) and [**live integrations**](/v1/docs/how-to-create-an-integration#live-integration).

### Test integration

Test integrations are **used for development**. These are automatically created for you as soon as you onboard with Veriff. Any verification session done in the test integrations **do not count towards paid usage**.

> [!CAUTION]
> Stress testing without prior agreement with Veriff is not allowed

Veriff does not provide a decision****for sessions created in the test integration, **you need to trigger the decisions yourself**.

*→ Log in to Veriff Customer Portal to see the*[*Forcing the status and data of the verification session when testing?*](https://help.veriff.com/en/articles/3492920-forcing-the-status-and-data-of-the-verification-session-when-testing)[↗] *article in Veriff Knowledge Base*

### Live integration

A Live integration is created as per your requirements and it is **used for production**. It requires a working webhook URL. Verification sessions done in the live integrations **will count towards paid usage** and **Veriff provides a decisions** for those.

*→ Log in to Veriff Customer Portal to see this bundle of*[*articles*](https://help.veriff.com/en/collections/1900851-integration)[↗]*in the Veriff Knowledge Base for more information about integrations*

---

## Create an integration

Integrations are created in Veriff Customer Portal.

1. **Log in via the link**sent to you in your **signup email**
2. Navigate to **All integrations** on the left hand menu
3. Click on the **Add Integration** button
4. Create a suitable name for the integration
5. Choose the type of the integration (**Test** or **Live**)

![Veriff interface showing 'All integrations' and 'Add Integration' options for users.](https://cdn.document360.io/5c26138b-b1e9-404e-a2e4-c83a49245be7/Images/Documentation/GettingStarted_Create integration.jpg)

![Interface for naming the integration and options to select between test and live integration types](https://cdn.document360.io/5c26138b-b1e9-404e-a2e4-c83a49245be7/Images/Documentation/GettingStarted_Add Integration Details.jpg)

---

## Find your integration

Integrations are located in Veriff Customer Portal.

1. **Log in** **via the link** sent to you in your **signup email**
2. Navigate to **All integrations** on the left hand menu
3. Find the integration from the list and click on it

![Page in Veriff Customer Portal showing the list of available integrations. The user needs to hover on integration's name to open it](https://cdn.document360.io/5c26138b-b1e9-404e-a2e4-c83a49245be7/Images/Documentation/GettingSarted_Find Integration.jpg)

---

## Integrations testing guide

### You have an active account with Veriff

Please talk to you solutions engineer if you wish to check the quality of Veriff’s responses.

You will have one test integration pre-created for you in the Veriff Customer Portal. The test integration will be used by you to test the communication between Veriff's and your system and to see how the responses are handled.

You can create more test integrations if needed.

> [!NOTE]
> Verification sessions generated for test integrations are not billed and not verified by Veriff

### You do not have an active account with Veriff

Select plan on the [Self-Serve](https://www.veriff.com/plans/self-serve)[↗] page. The plan comes with a free trial, allowing you create a test integration for testing, before you start to use the live integration.

### Test Checklists

#### **Test verification session**

- [ ] New session link aka `sessionURL` is generated
- [ ] Session data is saved with your record
- [ ] Sessions with odd names can be started
- [ ] Can you receive and perform actions on sessions with `vendorData`
- [ ] Can you receive and perform actions on sessions with `endUserId`
- [ ] End-user is granted access to your platform after receiving an `approved` decision
- [ ] End-user is notified about verification failure after receiving `resubmission` or `declined` decision
- [ ] End-user is prompted to try again after receiving `resubmission` decision. Note that the end-user has 9 resubmission attempts, the 10th attempt is an automatic decline. See the [Cap on the number of resubmissions](https://devdocs.veriff.com/docs/verification-session-decisions#cap-on-the-number-of-resubmissions) subsection in Integrations article for more info.
- [ ] In case of resubmitted session, end-user is directed to same `sessionURL`
- [ ] In case of disrupted session (browser close, end-user logout, etc.,), the end-user should be directed back to earlier session
- [ ] In case generated session is over 7 days old (and thus in `expired` or `abandoned` status), a new session is generated
- [ ] At end of verification, the `callbackURL` redirects back to the correct place in your platform

*→ If you want to trigger the decisions yourself, Log in to Veriff Customer Portal to see the*[*Forcing the status and data of the verification session when testing*](https://help.veriff.com/en/articles/3492920-forcing-the-status-and-data-of-the-verification-session-when-testing)[↗] *article in Veriff Knowledge Base*

#### Test security

- [ ] A webhook with wrong `API key` should not be accepted
- [ ] A webhook with mismatched `X-HMAC-SIGNATURE` should not be accepted
- [ ] A webhook with invalid JSON should not break or crash your server

#### Test responses

Test that all the response types are accepted:

- [ ] Approved (decision endpoint)
- [ ] Declined (decision endpoint)
- [ ] Resubmission (decision endpoint)
- [ ] Review (decision endpoint)
- [ ] Expired (decision endpoint)
- [ ] Abandoned (decision endpoint)

Explanations and use cases of these have been listed in the [Verification session status codes (table)](/v1/docs/verification-session-status-codes-table) → decision codes 9001 to 9121.

#### Test verification process in your app

Test the handling of best cases as well as edge cases:

- [ ] Approved end-users handled or notified as appropriate
- [ ] Declined end-users handled as appropriate, your back office notified if necessary
- [ ] In case of resubmission request, end-user is invited back to try again using the same `sessionURL`
- [ ] In case of `expired` or `abandoned` session (after 7 days), the end-user is not offered to continue from same session, new `sessionURL` is created

#### Test mobile native platforms

Test our demo app by downloading it from the app store.

[**iOS**](https://apps.apple.com/us/app/veriff/id1467907532?ls=1) [↗]

[**Android**](https://play.google.com/store/apps/details?id=com.veriff.demo) [↗]

#### Test API upload

**Required tools**

- Veriff's integration demo js-integration-demo-master.zip below

[](https://cdn.document360.io/5c26138b-b1e9-404e-a2e4-c83a49245be7/Images/Documentation/js-integration-demo-master.zip)js-integration-demo-master392.76 KB[**](https://cdn.document360.io/5c26138b-b1e9-404e-a2e4-c83a49245be7/Images/Documentation/js-integration-demo-master.zip)
- Node.js (download from [Node.js org](https://nodejs.org/en/download/)[↗] )
- Notepad/TextEdit (default in Windows/Mac) or Notepad++ (download from [Notepad++](https://notepad-plus-plus.org/)[↗] )

**Step by step**

1. Download and install Node.js
2. Download and extract js-integration-demo-master.zip
3. Open Command (Windows) or Terminal (Mac) on your local computer.
4. Navigate to js-integration-demo-master folder `cd C:\Users\User\Desktop\Veriff API)`.
5. Run command `&gt;npm` install
6. Open `app.js` with your text editing app (Notepad/TextEdit) and update `'API-Public-Key'` (aka API key) and `'API-Private-Key'` (aka shared secret key) to your integration’s keys (see <meta charset="utf-8">[API Documentation and reference](https://devdocs.veriff.com/apidocs)[↗] article).
  1. Tokens must be in single quotes.
7. Save the file

```node-repl
const API_TOKEN = process.env.API_TOKEN || 'API-Public-Key';
const API_SECRET = process.env.API_SECRET || 'API-Private-Key';
const API_URL = process.env.API_URL || 'https://api.staging.vrff.io/v1';
const WEBHOOK_PORT = process.env.WEBHOOK_PORT || 3002;
const IMAGE_DIR = process.env.IMAGE_DIR || 'documents'
```

1. Run the app.js `node app.js`
  1. Now the verification session is created and it is being processed.
  2. Check the dashboard in Veriff Customer Portal to review the data extracted and decision made by Veriff.

---

## Changelog

| Date | Description |
| --- | --- |
| Jul 31, 2025 | Fix typo |
| Jul 10, 2025 | Batch testing guide moved to [Service quality batch testing](/v1/docs/service-quality-testing) article |
| Mar 12, 2025 | Documentation published |

An environment created according to customer's needs to carry out, manage and observe verifications.

You can find the list of your integrations in **Veriff Customer Portal**> **All** **Integrations**page (you need to be logged in).

A **unique identifier of an integration.**

A **required parameter for authentication: i**t is used to create the `X-AUTH-CLIENT header` value for **API requests**.

Occasionally, referred to as the "API public key" or "Publishable key".

You can find it in**Veriff Customer Portal**> **API keys** page (you need to be logged in).

A session during which the end-user is verified. It starts when a session is created, it can contain several attempts (i.e. steps of uploading media, sending additional data etc.) and it ends when a conclusive decision (“approved”, “declined”, “expired”/”abandoned”) is granted.

Each verification session receives an unique ID, aka the **session ID**, which can be added to the API URL when making API requests.

This is returned after the end-user's data has been analysed and the system has reached a conclusion about the end-user's verification session.

Can be `approved`, `declined`, `resubmission_requested`, `expired` or `abandoned`.

Only if previously agreed with Veriff, you may also be receiving `review`.

An address to where Veriff sends the webhook request payload. The webhook URL is on your side and needs to be able to accept payloads from Veriff.

Veriff customer back-office, a dashboard where you can see your end-users' verification data.

Depending on your setup, you may be required to access the environment via station.veriff.com or hub.veriff.com. Always **check your sign-up email** and make sure that you **log in via correct address**.

**Mandatory parameter for authentication**, used to **sign the payload to create the X-HMAC-SIGNATURE** for API requests.

This is a **secret credential**. You can find it in **Veriff Customer Portal** > **Integration** tab (you need to be logged in).

Occasionally, referred to as the "API private key" or the "Private key".

## Related

- [Getting Started](/getting-started.md)
- [Sign up with Veriff](/signing-up.md)
- [Log in to Veriff Customer Portal](/logging-in.md)
- [Webhooks Guide](/webhooks-guide.md)
- [Intro to the API](/quick-guide-of-idv-using-the-api.md)
- [Intro to the SDK](/quick-guide-of-idv-using-the-sdks-1.md)
