---
title: "Test scenarios"
description: "Test your integration."
url: "https://docs.adyen.com/classic-platforms/test-scenarios"
source_url: "https://docs.adyen.com/classic-platforms/test-scenarios.md"
canonical: "https://docs.adyen.com/classic-platforms/test-scenarios"
last_modified: "2020-10-26T10:15:00+01:00"
language: "en"
---

# Test scenarios

Test your integration.

[View source](/classic-platforms/test-scenarios.md)

This page is for classic Adyen for Platforms integrations. If you are just starting your implementation, refer to our [new integration guide](/adyen-for-platforms-model) instead.

Adyen for Platforms provides you with a set of predefined test scenarios to test your integration. To test the scenarios, you need to create certain account holder states. This page explain how to:

* Create account holders in the states you need.
* Use the predefined test scenarios.

## Create an account holder in the payout state

Select the account holder type to see the relevant examples below:

### Tab: Individual account holder

1. Make a POST [/createAccountHolder](https://docs.adyen.com/api-explorer/#/Account/createAccountHolder) request to create an account holder. In your request, specify:

   * `address.city`: **PASSED**
   * `bankAccountDetails.ownerCity`: **PASSED** for all banks accounts. At least one bank account must be defined.
   * `bankAccountDetails.ownerName`: **TestData**
   * `individualDetails.name.lastName`: **TestData**
   * `legalEntity`: **Individual**

   **/createAccountHolder request**

   ```json
   {
       "accountHolderCode":"YOUR_UNIQUE_ACCOUNTHOLDER_CODE",
       "accountHolderDetails":{
           "address":{
               "city":"PASSED",
               "country":"NL",
               "houseNumberOrName":"1",
               "postalCode":"1234AB",
               "street":"Main Street"
           },
           "bankAccountDetails":[
               {
                   "countryCode":"NL",
                   "currencyCode":"EUR",
                   "iban":"NL13TEST0123456789",
                   "ownerCity":"PASSED",
                   "ownerCountryCode":"NL",
                   "ownerHouseNumberOrName":"1",
                   "ownerName":"TestData",
                   "ownerPostalCode":"1234AB",
                   "ownerStreet":"Main Street"
               }
           ],
           "email":"a.holder@example.com",
           "individualDetails":{
               "name":{
                   "firstName":"Anthony",
                   "gender":"MALE",
                   "lastName":"TestData"
               },
               "personalData":{
                   "dateOfBirth":"2001-04-27"
               }
           },
           "phoneNumber":{
               "phoneCountryCode":"NL",
               "phoneNumber":"0612345678",
               "phoneType":"Landline"
           },
           "webAddress":"https://www.example.com"
       },
       "legalEntity":"Individual",
       "processingTier":3
   }
   ```

2. Upload a photo ID on a Hosted Onboarding Page (HOP) or through an API request.

   * Hosted Onboarding Page

     * Upload a document with a **PASSED** file name. For example, **PASSED.jpg**.

   * API

     * Make a POST [/uploadDocument](https://docs.adyen.com/api-explorer/#/Account/uploadDocument) request to upload a passport. In your request, specify:

       * `documentContent`: A Base64-encoded image larger than 1000 bytes.
       * `documentType`: **PASSPORT**
       * `description`: **PASSED**

     When uploading photo ID, the account holder is set to the limitless state. This means the account holder requires the highest level of KYC checks.

     **/uploadDocument request for passport upload**

     ```json
     {
         "documentContent":"JVBERi0xLjcKJeLjz9MKMSAwIG9iaiAKPDwKL1N1YnR5cGUgL0ltYWdlCi9UeXBlIC9YT2JqZWN0Ci9XaWR0aCAxMzYyCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9IZWlnaHQgNjI0Ci9CaXRzUGVyQ29tcG9uZW50IDgKL0xlbmd0aCA0MDA2NQovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCj4+CnN0cmVhbQp4nO3dB3gU1aRU9GCg==",
         "documentDetail": {
             "accountHolderCode":"YOUR_UNIQUE_ACCOUNTHOLDER_CODE",
             "description":"PASSED",
             "documentType":"PASSPORT",
             "filename":"document_name_passport.pdf"
         }
     }
     ```

3. Upload a bank statement on a Hosted Onboarding Page (HOP) or through an API request.

   * Hosted Onboarding Page

     * Upload a document with a **PASSED** file name. For example, **PASSED.pdf**.

   * API

     * Make another POST [/uploadDocument](https://docs.adyen.com/api-explorer/#/Account/uploadDocument) request to upload a bank statement:

   **/uploadDocument request for bank statement upload**

   ```json
   {
       "documentContent":"JVBERi0xLjcKJeLjz9MKMSAwIG9iaiAKPDwKL1N1YnR5cGUgL0ltYWdlCi9UeXBlIC9YT2JqZWN0Ci9XaWR0aCAxMzYyCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9IZWlnaHQgNjI0Ci9CaXRzUGVyQ29tcG9uZW50IDgKL0xlbmd0aCA0MDA2NQovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCj4+CnN0cmVhbQp4nO3dB3gU1aRU9GCg==",
       "documentDetail": {
           "accountHolderCode": "YOUR_UNIQUE_ACCOUNTHOLDER_CODE",
           "bankAccountUUID": "{hint:The /createAccountHolder response contains a bankAccountUUID}THE_BANK_ACCOUNT_UUID_WHICH_NEEDS_VERIFICATION{/hint}",
           "description": "PASSED",
           "documentType": "BANK_STATEMENT",
           "filename": "document_name_bank_statement.pdf"
       }
   }
   ```

   The individual account holder now has its identity, document and bank statement verified.

### Tab: Business account holder

1. Make a POST [/createAccountHolder](https://docs.adyen.com/api-explorer/#/Account/createAccountHolder) request to create an account holder. In your request, specify :

   * `address.city`: **PASSED**
   * `bankAccountDetails.ownerName`: **TestData**
   * `bankAccountDetails.ownerCity`: **PASSED** for all banks accounts. At least one bank account must be defined.
   * `businessDetails.legalBusinessName`: **TestData**
   * `businessDetails.shareholders.address.city`: **PASSED** for each shareholder.
   * `businessDetails.shareholders.name.lastName`: **TestData** for each shareholder
   * `legalEntity`: **Business**

   **/createAccountHolder request**

   ```json
   {
       "accountHolderCode":"YOUR_UNIQUE_ACCOUNTHOLDER_CODE",
       "accountHolderDetails":{
           "address":{
               "city":"PASSED",
               "country":"NL",
               "houseNumberOrName":"1",
               "postalCode":"1234AB",
               "street":"Main Street"
           },
           "bankAccountDetails":[
               {
                   "countryCode":"NL",
                   "currencyCode":"EUR",
                   "iban":"NL13TEST0123456789",
                   "ownerCity":"PASSED",
                   "ownerCountryCode":"NL",
                   "ownerHouseNumberOrName":"1",
                   "ownerName":"TestData",
                   "ownerPostalCode":"1234AB",
                   "ownerStreet":"Main Street"
               }
           ],
           "businessDetails":{
               "doingBusinessAs":"Furniture shop",
               "legalBusinessName":"TestData",
               "registrationNumber":"123456789",
               "shareholders":[
                   {
                       "address":{
                           "city":"PASSED",
                           "country":"NL",
                           "houseNumberOrName":"1",
                           "postalCode":"1234AB",
                           "street":"Main Street"
                       },
                       "email":"testshareholder@example.com",
                       "name":{
                           "firstName":"Anthony",
                           "gender":"MALE",
                           "lastName":"TestData"
                       },
                       "personalData":{
                           "dateOfBirth":"2001-04-27"
                       }
                   }
               ],
               "taxId":"1234567890"
           },
           "email":"a.holder@example.com",
           "phoneNumber":{
               "phoneCountryCode":"NL",
               "phoneNumber":"0612345678",
               "phoneType":"Landline"
           },
           "webAddress":"https://www.example.com"
       },
       "legalEntity":"Business",
       "processingTier":3
   }
   ```

2. Upload a photo ID on a Hosted Onboarding Page (HOP) or through an API request.

   * Hosted Onboarding Page

     * Upload a document with a **PASSED** file name. For example, **PASSED.jpg**.

   * API

     * Make a POST [/uploadDocument](https://docs.adyen.com/api-explorer/#/Account/uploadDocument) request to upload a passport. In your request, specify:

       * `documentType`: **PASSPORT**
       * `description`: **PASSED**

     When uploading photo ID, the account holder is set to the limitless state. This means the account holder requires the highest level of KYC checks.

     **/uploadDocument request for passport upload**

     ```json
     {
         "documentContent":"JVBERi0xLjcKJeLjz9MKMSAwIG9iaiAKPDwKL1N1YnR5cGUgL0ltYWdlCi9UeXBlIC9YT2JqZWN0Ci9XaWR0aCAxMzYyCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9IZWlnaHQgNjI0Ci9CaXRzUGVyQ29tcG9uZW50IDgKL0xlbmd0aCA0MDA2NQovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCj4+CnN0cmVhbQp4nO3dB3gU1aRU9GCg==",
         "documentDetail":{
             "shareholderCode":"{hint:The /createAccountHolder response contains a shareholderCode}THE_SHAREHOLDER_WHICH_NEEDS_VERIFICATION{/hint}",
             "accountHolderCode":"YOUR_UNIQUE_ACCOUNTHOLDER_CODE",
             "description":"PASSED",
             "documentType":"PASSPORT",
             "filename":"document_name_passport.pdf"
         }
     }
     ```

3. Upload a bank statement on a Hosted Onboarding Page (HOP) or through an API request.

   * Hosted Onboarding Page

     * Upload a document with a **PASSED** file name. For example, **PASSED.pdf**.

   * API

     * Make another POST [/uploadDocument](https://docs.adyen.com/api-explorer/#/Account/uploadDocument) request to upload a bank statement:

     **/uploadDocument request for bank statement upload**

     ```json
     {
         "documentContent":"JVBERi0xLjcKJeLjz9MKMSAwIG9iaiAKPDwKL1N1YnR5cGUgL0ltYWdlCi9UeXBlIC9YT2JqZWN0Ci9XaWR0aCAxMzYyCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9IZWlnaHQgNjI0Ci9CaXRzUGVyQ29tcG9uZW50IDgKL0xlbmd0aCA0MDA2NQovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCj4+CnN0cmVhbQp4nO3dB3gU1aRU9GCg==",
         "documentDetail":{
             "accountHolderCode":"YOUR_UNIQUE_ACCOUNTHOLDER_CODE",
             "bankAccountUUID": "{hint:The /createAccountHolder response contains a bankAccountUUID}THE_BANK_ACCOUNT_UUID_WHICH_NEEDS_VERIFICATION{/hint}",
             "description":"PASSED",
             "documentType":"BANK_STATEMENT",
             "filename":"bank_statement.png"
         }
     }
     ```

The account holder now has its company, identity, document and bank statement verified.

## An account holder with one of KYC checks set to FAILED

Select the account holder type to see the relevant examples below:

### Tab: Individual account holder

Make a POST [/createAccountHolder](https://docs.adyen.com/api-explorer/#/Account/createAccountHolder) request to create an account holder. In your request, specify:

* `address.city`: **FRAUD**
* `bankAccountDetails.ownerCity`: **FRAUD** for all banks accounts. At least one bank account must be defined.
* `bankAccountDetails.ownerName`: **TestData**
* `individualDetails.name.lastName`: **TestData**
* `legalEntity`: **Individual**

Here is an example of creating a suspended Individual legal entity account holder with its payouts blocked:

**/createAccountHolder request**

```json
{
  	"accountHolderCode": "YOUR_UNIQUE_ACCOUNT_HOLDER_CODE",
  	"accountHolderDetails": {
    	"address": {
      		"city": "FRAUD",
      		"country": "NL",
      		"houseNumberOrName": "1",
      		"postalCode": "1234AB",
      		"street": "Main Street"
    	},
    	"bankAccountDetails": [
    	   {
        		"countryCode": "NL",
        		"currencyCode": "EUR",
        		"iban": "NL13TEST0123456789",
        		"ownerCity": "FRAUD",
        		"ownerCountryCode": "NL",
        		"ownerHouseNumberOrName": "1",
        		"ownerName": "TestData",
        		"ownerPostalCode": "1234AB",
        		"ownerStreet": "Main Street"
      	   }
    	],
		"email": "a.holder@example.com",
    	"individualDetails": {
      		"name": {
        		"firstName": "Anthony",
        		"gender": "MALE",
        		"lastName": "TestData"
      		},
      		"personalData": {
        		"dateOfBirth": "2001-04-27"
      		}
    	},
    	"phoneNumber": {
      		"phoneCountryCode": "NL",
      		"phoneNumber": "0612345678",
      		"phoneType": "Landline"
    		},
    	"webAddress": "https://www.example.com"
  		},
  	"legalEntity": "Individual",
  	"processingTier": 2
}
```

### Tab: Business account holder

Make a POST [/createAccountHolder](https://docs.adyen.com/api-explorer/#/Account/createAccountHolder) request to create an account holder. In your request, specify:

* `address.city`: **FRAUD**
* `bankAccountDetails.ownerCity`: **FRAUD** for all banks accounts. At least one bank account must be defined.
* `businessDetails.shareholders.address.city`: **FRAUD**
* `businessDetails.shareholders.name.lastName`: **TestData**
* `bankAccountDetails.ownerName`: **TestData**
* `legalEntity`: **Business**

Here is an example of creating a suspended Business legal entity account holder with its payouts blocked:

**/createAccountHolder request**

```json
{
	"accountHolderCode": "YOUR_UNIQUE_ACCOUNT_HOLDER_CODE",
	"accountHolderDetails": {
	"address": {
  		"city": "FRAUD",
      		"country": "NL",
      		"houseNumberOrName": "1",
      		"postalCode": "1234AB",
      		"street": "Main Street"
        },
        "bankAccountDetails": [
      		{
        		"countryCode": "NL",
        		"currencyCode": "EUR",
        		"iban": "NL13TEST0123456789",
        		"ownerCity": "FRAUD",
        		"ownerCountryCode": "NL",
        		"ownerHouseNumberOrName": "1",
        		"ownerName": "TestData",
        		"ownerPostalCode": "1234AB",
        		"ownerStreet": "Main Street"
      		}
    	],
        "businessDetails": {
      		"doingBusinessAs": "Furniture shop",
      		"legalBusinessName": "TestData",
      		"registrationNumber": "123456789",
      		"shareholders": [
        			{
          			"address": {
            			"city": "FRAUD",
            			"country": "NL",
            			"houseNumberOrName": "1",
            			"postalCode": "1234AB",
            			"street": "Main Street"
          			},
          			"email": "testshareholder@example.com",
          			"name": {
            			"firstName": "Anthony",
            			"gender": "MALE",
            			"lastName": "TestData"
         			},
          			"personalData": {
            			"dateOfBirth": "2001-04-27"
          				}
        			}
      		],
     		"taxId": "1234567890"
    	},
    	"email": "a.holder@example.com",
    	"phoneNumber": {
              "phoneCountryCode": "NL",
              "phoneNumber": "0612345678",
              "phoneType": "Landline"
        },
        "webAddress": "https://www.example.com"
    },
  	"legalEntity": "Business",
  	"processingTier": 1
}
```

## An account holder with one of KYC checks set to INVALID\_DATA

* Set `address.city` to **INVALIDDATA**.
* Set `bankAccount.ownerCity` to **INVALIDDATA** for all banks accounts, which should be marked as Failed.
* Set `description` to **INVALIDDATA** for a passport, if you need its KYC check to be marked as Failed.

## An account holder with a PASSPORT\_VERIFICATION KYC check set to INVALID\_DATA

You can do this on a Hosted Onboarding Page (HOP) or through an API request.

* Hosted Onboarding Page

  * Upload a document with **INVALIDDATA** in the file name. For example, **INVALIDDATA.jpg**.

* API

  * Make a POST [/uploadDocument](https://docs.adyen.com/api-explorer/#/Account/uploadDocument) request with:

    * `documentContent`: A Base64-encoded image larger than 1000 bytes.
    * `documentType`: **PASSPORT**
    * `description`: **INVALIDDATA**

## Inactivate an account holder and schedule a refund

* Set `address.city` to **INACTIVEDEADLINECITY**.

The `/refundNotPaidOutTransfers` call is scheduled to be performed in 6 weeks.

## Inactivate an account holder and make a refund

* Set `address.city` to **REFUNDDEADLINECITY**.

In this case the `/refundNotPaidOutTransfers` call is performed immediately.

## See also

* [API Reference](/classic-platforms/api)
* [Error codes](/classic-platforms/error-codes)
* [Payouts](/classic-platforms/payouts)
* [Verification process](/classic-platforms/verification-process)
