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

# Test cases

> Recommended test cases for validating your Yapily integration in the sandbox environment. Covers payment flows, data access scenarios, and error conditions to verify.

We have grouped the recommended sandboxes for testing specific scenarios and authorisation flows.

***

# **Single redirect**

Below, you will discover the suggested sandboxes tailored for executing [single redirect](/open-banking-flow/user-authorisation/single-redirect) authorisation flow

## **United Kingdom**

UK banks do not require the providing payer details; therefore, only the following properties are required:

```json theme={null}
{
    "applicationUserId": "single-payment-tutorial",
    "institutionId": "modelo-sandbox",
    "callback": "https://display-parameters.com/",
    "paymentRequest": {
      "type": "DOMESTIC_PAYMENT",
      "reference": "Bills Coffee Shop", //maximum of 18 characters
      "paymentIdempotencyId": "c0ab9b09c20c4ec7a77e", //maximum of 35 characters
      "amount": {
        "amount": 8.70,
        "currency": "GBP"
      },
      "payee": {
        "name": "BILLS COFFEE LTD",
        "accountIdentifications": [
          {
            "type": "ACCOUNT_NUMBER",
            "identification": "{accountNumber}"
          },
          {
            "type": "SORT_CODE",
            "identification": "{sortCode}"
          }
        ]
      }
    }
  }
```

### Natwest Sandbox

Institution ID: natwest-sandbox

Supported Features:

* Payments:
  * Single payment
  * Periodic payments
* Data:
  * Accounts
  * Transactions

[Natwest Sandbox login credentials](/resources/sandbox/sandbox-credentials#natwest-sandbox)

***

### Modelo Sandbox

Modelo Sandbox follows the [OBIE OAS](https://openbankinguk.github.io/read-write-api-site3/v3.1.9/profiles/) (OpenAPI Specification).

Institution ID: modelo-sandbox

Supported Features:

* Payments:
  * Single payment
  * Scheduled payments
  * Periodic payments
  * Bulk payments
* Data:
  * Accounts
  * Identity
  * Transactions

[Modelo Sandbox login credentials](/resources/sandbox/sandbox-credentials#modelo-sandbox)

**Note**: AIS Consents expire after 10 minutes

***

### Mock ASPSP

Institution IDs:

* mock-sandbox
* mock-sandbox-v1

Supported Features:

* Payments:
  * Single payment
  * Scheduled payments
  * Periodic payments
  * Bulk payments
* Data:
  * Accounts
  * Transactions

[Mock ASPSP login credentials](/resources/sandbox/sandbox-credentials#modelo-sandbox)

***

### Lloyds Banking Group Sandboxes

Institution IDs:

* lloyds-sandbox
* halifax-sandbox
* bankofscotland-sandbox
* mbna-sandbox

Supported Features:

* Payments:
  * Single payment
  * Scheduled payments
  * Periodic payments
  * [readRefund](/payments/payment-resources/reverse-payments) supported
* Data:
  * Accounts
  * Transactions

[Lloyds Banking Group Sandboxes credentials](/resources/sandbox/sandbox-credentials#lloyds-banking-group-sandboxes)

***

## **European (without payer)**

Institutions outside the UK usually require to provide payer details, however it is not currently required in the following EU countries:

* France
* Spain
* Portugal
* Ireland

The API request in these countries require the following properties:

```json theme={null}
{
    "applicationUserId": "single-payment-tutorial",
    "institutionId": "unicajabanco-sandbox",
    "callback": "https://display-parameters.com/",
    "paymentRequest": {
      "type": "DOMESTIC_PAYMENT",
      "reference": "Bill Payment", //maximum of 140 characters
      "paymentIdempotencyId": "c0ab9b09c20c4ec7a77e", //maximum of 35 characters
      "amount": {
        "amount": 5,
        "currency": "EUR"
      },
      "payee": {
        "name": "Jane Doe",
        "address": {
          "country": "ES",
          "postCode": "48310",
          "townName": "Elantxobe",
          "addressLines": ["Avenida Cervantes 5"]
        },
        "accountIdentifications": [
          {
            "type": "IBAN",
            "identification": "ES2621030001350000000001"
          }
        ]
      }
    }
  }
```

### Unicaja Banco Sandbox

Institution ID: unicajabanco-sandbox

Supported Features:

* Payments:
  * Single payment
  * Scheduled payments
  * Periodic payments
* Data:
  * Accounts
  * Transactions

[Unicaja Banco Sandbox credentials](/resources/sandbox/sandbox-credentials#unicaja-banco-sandbox)

***

### SNS Bank Sandbox

Institution ID: snsbank-sandbox

Supported Features:

* Payments:
  * Single payment
  * Scheduled payments
  * Periodic payments
* Data:
  * Accounts
  * Transactions

[SNS Bank Sandbox credentials](/resources/sandbox/sandbox-credentials#sns-bank-sandbox)

***

### Modelo Sandbox

Institution ID: modelo-sandbox

Supported Features:

* Payments:
  * Single payment
  * Scheduled payments
  * Periodic payments
* Data:
  * Accounts
  * Identity
  * Transactions

[Modelo Sandbox credentials](/resources/sandbox/sandbox-credentials#modelo-sandbox)

**Note**: AIS Consents expire after 10 minutes

***

## **European (with payer)**

Initiating payments outside of UK, France, Spain, Portugal and Ireland requires specifying payer details, therefore the request should include payer name and their IBAN.

Additionally, some of the institutions require [PSU Identifier](/open-banking-flow/user-authorisation/psu-identifiers) that has to be obtained from the customer:

```json theme={null}
curl -L -X POST 'https://api.yapily.com/payment-auth-requests' \
  -H 'Content-Type: application/json' \
  -H 'psu-id: 6154033403' \
  -u 'APPLICATION_KEY:APPLICATION_SECRET' \
  -d '{
    "applicationUserId": "single-payment-tutorial",
    "institutionId": "deutschebank-sandbox",
    "callback": "https://display-parameters.com/",
    "paymentRequest": {
      "type": "DOMESTIC_PAYMENT",
      "reference": "Bill Payment", //maximum of 140 characters
      "paymentIdempotencyId": "c0ab9b09c20c4ec7a77e", //maximum of 35 characters
      "amount": {
        "amount": 5,
        "currency": "EUR"
      },
      "payee": {
        "name": "Jane Doe",
        "address": {
          "country": "DE",
          "postCode": "83458",
          "townName": "Schneizlreuth",
          "addressLines": ["Langenhorner Chaussee 27"]
        },
        "accountIdentifications": [
          {
            "type": "IBAN",
            "identification": "DE25648730420109480400"
          }
        ]
      },
      "payer": {
            "name": "John Doe",
            "accountIdentifications": [
                {
                    "type": "IBAN",
                    "identification": "DE17215730140403340300"
                }
            ]
        }
     }
  }'
```

### Deutsche Bank Sandbox

Institution ID: deutschebank-sandbox

Supported Features:

* Payments:
  * Single payment
  * Periodic payments
* Data:
  * Accounts
  * Transactions

**Note**: Payments above 50 EUR will fail.

[Deutsche Bank Sandbox credentials](/resources/sandbox/sandbox-credentials#deutsche-bank-sandbox)

***

### Postbank Bank Sandbox

Institution ID: postbank-sandbox

Supported Features:

* Payments:
  * Single payment
  * Periodic payments
* Data:
  * Accounts
  * Transactions

**Note**: Payments above 50 EUR will fail.

[Postbank Bank Sandbox credentials](/resources/sandbox/sandbox-credentials#postbank-bank-sandbox)

***

### Fineco Sandbox

* Institution ID: fineco-sandbox

Supported Features:

* Payments:
  * Single payment
  * Periodic payments
* Data:
  * Accounts
  * Transactions

**Note**: Sandbox returns static responses

[Fineco Sandbox credentials](/resources/sandbox/sandbox-credentials#fineco-sandbox)

***

### BAWAG PSK / Easybank Sandbox

Institution ID: bawag-sandbox

Supported Features:

* Payments:
  * Single payment
  * Scheduled payments
  * Periodic payments
* Data:
  * Accounts
  * Transactions

**Note**: AIS endpoints limited to 4 calls a day

[BAWAG PSK Sandbox credentials](/resources/sandbox/sandbox-credentials#bawag-psk-/-easybank-sandbox)

***

### Commerzbank AG Sandbox

Institution ID: commerzbank-sandbox

Supported Features:

* Payments:
  * Single payment
  * Periodic payments

- Data: Transactions not available

[Commerzbank Sandbox credentials](/resources/sandbox/sandbox-credentials#commerzbank-ag-sandbox)

***

# **Embedded authorisation**

Below, you will discover the suggested sandboxes tailored for executing [embedded authorisation](/open-banking-flow/user-authorisation/embedded) authorisation flow.

The initial embedded request should include the following properties:

```json theme={null}
{
    "applicationUserId": "single-payment-tutorial",
    "institutionId": "fiducia-sandbox",
    "userCredentials": {
      "id": "VRK1234567890ALL", //online banking username/id
      "password": "password" //online banking password
    },
    "paymentRequest": {
      "type": "DOMESTIC_PAYMENT",
      "reference": "Bill Payment", //maximum of 140 characters
      "paymentIdempotencyId": "c0ab9b09c20c4ec7a77e", //maximum of 35 characters
      "amount": {
        "amount": 5,
        "currency": "EUR"
      },
      "payee": {
        "name": "Jane Doe",
        "address": {
          "country": "DE",
          "postCode": "83458",
          "townName": "Schneizlreuth",
          "addressLines": ["Langenhorner Chaussee 27"]
        },
        "accountIdentifications": [
          {
            "type": "IBAN",
            "identification": "DE58648730420109499400"
          }
        ]
      },
      "payer": {
            "name": "John Doe",
            "accountIdentifications": [
                {
                    "type": "IBAN",
                    "identification": "DE39499999600000005111"
                }
            ]
        }
    }
  }
```

After that, the `userCredentials` object should be replaced with either `scaCode` or `selectedScaMethod.id` property depending on the returned consent status:

* `AWAITING_SCA_CODE` - provide `scaCode` when executing `PUT` method
* `AWAITING_SCA_METHOD` - provide `selectedScaMethod.id` when executing `PUT`. The options will be returned via the API
* `AWAITING_DECOUPLED_AUTHORIZATION` - poll [GET /consents/\{consent-id}](/api-reference/consents/get-consent) endpoint until the status changes.

### Oberbank Sandbox

Institution ID: oberbank-sandbox

Supported Features:

* Payments:
  * Single payment
  * Scheduled payments
  * Periodic payments
* Data:
  * Accounts
  * transactions

[Oberbank Sandbox credentials](/resources/sandbox/sandbox-credentials#oberbank-sandbox)

### Fiducia Sandbox

Institution ID: fiducia-sandbox

Supported Features:

* Payments:
  * Single payment
* Data: only authorisation flow - data endpoints are not available

[Fiducia Sandbox credentials](/resources/sandbox/sandbox-credentials#fiducia-sandbox)

**Note**:

Accounts and Transactions

* Support for both [Created Embedded Account Authorisation](/api-reference/authorisations/create-embedded-account-authorisation) and
  [Update Embedded Account Authorisation](/api-reference/authorisations/update-embedded-account-authorisation) authorisation endpoints
* No support for [Financial Data Endpoints](/api-reference/financial-data/get-accounts)

<Info>
  Consents created using [Created Embedded Account Authorisation](/api-reference/authorisations/create-embedded-account-authorisation)
  or [Update Embedded Account Authorisation](/api-reference/authorisations/update-embedded-account-authorisation) with the Fiducia sandbox will
  not be able to access any of the [Financial Data Endpoints](/api-reference/financial-data/get-accounts) due to a
  [restriction with the sandbox](https://storage.googleapis.com/static.yapily.com/images/documentation/2021/20210116_FGI_Documentation_XS2A_Test_Environment_V6.pdf).
</Info>

Fiducia Sandbox returns `ACCP` as the final payment status. As a result, this is mapped to `COMPLETED` in the Yapily API response for Fiducia Sandbox.

This is different from the Live institution.

For more information about this sandbox, see the
[FGI Documentation](https://storage.googleapis.com/static.yapily.com/images/documentation/2021/20210116_FGI_Documentation_XS2A_Test_Environment_V6.pdf).
