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

# Sandbox testing and simulation labels

> Use simulation labels to force KYC, KYB, and IDV outcomes in the Bastion sandbox during integration testing and UAT scenarios.

Bastion has introduced `simulation labels` that your team can use to simulate specific product flows in **sandbox**. We recommend using simulation labels during your testing efforts and UAT integration.

## Onboarding and KYC/KYB simulation

For sandbox KYC and KYB, you can use the `label` field when calling [`POST /v2/identities`](/v2/api-reference/identities/create-identity) to simulate KYC outcomes and submit dummy KYC/KYB information. Once [`POST /v2/identities/{identity_id}/compliance`](/v2/api-reference/compliance/submit-compliance-data) is completed, the identity will transition to the state indicated by the simulation label.

| Scenario                                                                                          | Simulation Label                     |
| ------------------------------------------------------------------------------------------------- | ------------------------------------ |
| Simulate an approved onboarding with identity\_status = `ACTIVE`                                  | `sim-onboarding-result:approved`     |
| Simulate a rejected onboarding with identity\_status = `REJECTED`                                 | `sim-onboarding-result:rejected`     |
| Simulate a pending onboarding that requires IDV checks, with identity\_substatus = `IDV_REQUIRED` | `sim-onboarding-result:idv-required` |

**Example:**[`POST /v2/identities`](/v2/api-reference/identities/create-identity)

<CodeGroup>
  ```json theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
  {
    "label": "sim-onboarding-result:approved",
    "identityType": "IDENTITY_TYPE_INDIVIDUAL"
  }
  ```
</CodeGroup>

## Identity verification (IDV) simulation

For sandbox IDV checks, you can use the `labels` field when calling [`POST /v2/identities/{identityId}/id_verification`](/v2/api-reference/identity-verification/create-identity-verification-check) to simulate IDV outcomes. Note that `labels` is an array.

| Scenario                                                                    | Simulation Label                |
| --------------------------------------------------------------------------- | ------------------------------- |
| The IDV check is created and subsequently transitions to `APPROVED` status. | `sim-idv-check-result:approved` |
| The IDV check is created and subsequently transitions to `REJECTED` status. | `sim-idv-check-result:rejected` |

**Example:**[`POST /v2/identities/{identityId}/id_verification`](/v2/api-reference/identity-verification/create-identity-verification-check)

<CodeGroup>
  ```json theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
  {
    "redirect_url": "https://www.google.com",
    "reason": "ONBOARDING",
    "request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "labels": ["sim-idv-check-result:approved"]
  }
  ```
</CodeGroup>


## Related topics

- [Onboard a business customer](/guides/quickstarts/onboard-a-business-customer.md)
- [Onboard an individual customer](/guides/quickstarts/onboard-an-individual-customer.md)
- [Simulate Fiat Deposit](/v2/api-reference/simulation/simulate-fiat-deposit.md)
- [Sandbox vs. production environments](/guides/getting-started/sandbox-vs-production-environments.md)
- [Sandbox access and test API keys](/guides/getting-started/api-access-prerequisites.md)
