# Sandbox

The sandbox environment can be used to simulate and test a variety of scenarios you can encounter while using Teller without having to use real bank accounts.

> **Note**
>
> Use the sandbox environment by initializing Teller Connect with the `environment` property set to `sandbox`.

## Enrollments

Specific enrollment flows are triggered using a combination of the login credentials entered in Teller Connect after selecting an institution. In the sandbox environment, all institutions behave identically.

The valid login password is always `password` so if you want to simulate a bad credentials flow, all you need to do is provide a different value.

### Username Values

-   `username` _()_ - Leads to an immediate successful enrollment.

-   `otp` _()_ - Will follow an OTP MFA flow whereby the user will be asked to select a contact to send an OTP code. The correct code is `0000`

-   `challenge` _()_ - Triggers a knowledge-based MFA flow where the end-user is asked their favorite color. Your favorite color is `blue`.

-   `disconnected` _()_ - Results in a successful enrollment that will immediately disconnect upon the first request made to get data from it. Alternatively you can use any of the enrollment status reasons as usernames (e.g. `account_locked`).

-   `verify.microdeposit` _()_ - Used for testing the ['Verify Account Details via Microdeposit'](/docs/api/account/details#account-details-verification-via-microdeposit) flow.

## Payments

Sandbox payment flows are determined by the `memo` value that is used when issuing the create payment request. To get a payment that is immediately successful and does not require user intervention use any value (or none at all) that does not appear in the following list.

### Memo Values

-   `otp` _()_ - The create payment response will contain a `connect_token` that you can use to initialize Teller Connect and perform an OTP MFA flow whereby the user will be asked to select a contact to send an OTP code. The correct code is `0000`.

-   `otp_error` _()_ - This behaves similarly to the `otp` value but results in an error when the correct OTP code (`0000`) is used, simulating a failure from the financial institution. This failure can be observed with Teller Connect's `onFailure` hook.