# Try fiat payments in simulator

> The sandbox environment provides a consistent simulation experience for pay-ins and payouts across all customer accounts. This ensures predictable behaviour regardless of the underlying partner or integration method.

The sandbox environment provides a consistent simulation experience for pay-ins and payouts across all customer accounts. This ensures predictable behaviour regardless of the underlying partner or integration method.

The simulation also supports testing in cases where a partner's sandbox environment is limited or unavailable. This allows you to validate payment flows and integration logic in a controlled setting before going live.

Note that this functionality is not enabled for all wallets. If you experience any issues when trying to use this simulator, contact Support.

## Pay-in simulator

To simulate pay-ins with different currencies and payment methods, in the sandbox environment, send the [`POST /payment/v2/payins/simulation`](../../api-explorer/endpoints/simulate-payin-v-2/) request with the following payload:

  
    ```json
    {
        "walletId": "acc:23090539331497:bVsk6:0",
        "remittanceInformation": "Invoice INV-2024-00142",
        "method": "FASTER_PAYMENT",
        "amount": 60.50,
        "currency": "GBP",
        "originator": {
            "name": "James Whitfield",
            "bankAccount": {
                "accountNumber": "GB87SYPE04082500000904",
                "accountNumberFormat": "IBAN",
                "bankCode": "SRLGGB2L"
            }
        }
    }
    ```
  
  
    ```json
    {
        "walletId": "acc:23090539331497:bVsk6:0",
        "remittanceInformation": "Payment for order 78432",
        "method": "SEPA_INST",
        "amount": 100,
        "currency": "EUR",
        "originator": {
            "name": "Sophie Muller",
            "bankAccount": {
                "accountNumber": "IE29AIBK93115212345678",
                "accountNumberFormat": "IBAN",
                "bankCode": "AIBKIE2D"
            }
        }
    }
    ```
  
  
    ```json
    {
        "walletId": "acc:23090539331497:bVsk6:0",
        "remittanceInformation": "Ref 90215 - Monthly subscription",
        "method": "ACH",
        "amount": 120.60,
        "currency": "USD",
        "originator": {
            "name": "Michael Torres",
            "bankAccount": {
                "accountNumber": "026009593",
                "accountNumberFormat": "ABA",
                "bankCode": "BOFAUS3N"
            }
        }
    }
    ```
  
  
    ```json
    {
        "walletId": "acc:23090539331497:bVsk6:0",
        "remittanceInformation": "Wire transfer - Contract 2024-A1",
        "method": "SWIFT",
        "amount": 2000.40,
        "currency": "USD",
        "originator": {
            "name": "Horizon Trading Ltd",
            "bankAccount": {
                "accountNumber": "US64BOFA0260095931234567890",
                "accountNumberFormat": "IBAN",
                "bankCode": "BOFAUS3N"
            }
        }
    }
    ```
  

The details of a `beneficiary` are unnecessary for simulating a pay-in because `walletId` provides specific information for the wallet to be credited.

It is also advisable to subscribe to the pay-in webhook to stay informed about changes to the wallet balance resulting from the simulated pay-in. See [Configure webhooks](../create-webhook-listener) for more information.

:::info 📘 Not all USD wallets support all payment methods
See the process of Wallet Profiles.
All payment methods and currencies are subject to change and enhancements with further optionality.
:::

## Payout simulator

The standard payout flow is shown on the diagram:

![](/img/bvnk/test-integration/payout-simulator-flow.png)

In the BVNK simulator, you can test the following behaviours:

| Flow | Customer Reference Prefix | Description |
| :--- | :------------------------ | :---------- |
| NORMAL | Not Applicable | Standard process that does not require a prefix to simulate a payout. |
| FAILED | `FAILED` | This flow is used to simulate a failure on the banking partner side such as the payment scheme rejecting the payout. |
| RETURN | `RETURN` | This process simulates a successful payout, followed by a return event.In this scenario, the payout initially appears to be successful, as it has been submitted to the beneficiary's bank. However, the bank ultimately rejects the payment, or the customer decides to reverse the transaction. |

To test the previously mentioned behaviors in the sandbox environment, you can input the **customer reference prefix** from the flow you want to simulate. If you do not include a customer reference prefix, the system will default to the `NORMAL` flow as the expected behavior. For instance, if you wish to simulate a failed flow when requesting a payout, the reference should be formatted as `FAILED<my-own-reference>`.
