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

# Transaction simulators

We provide a payment simulators for card payments, allowing you
to test card payments, redirect payments, and push payments respectively.

These simulators do not connect to any PSP and instead provide mocked responses
based on the amounts or other values passed in.

<Note>
  We also provide a way to [simulate real-time account
  updates](/guides/features/account-updater/real-time#simulator).
</Note>

## Setup

To set up a simulator, head over to your sandbox dashboard.
Once there, each simulator will be available to set up with a custom merchant ID. This ID does
not serve any purpose.

Please note that simulators are not available in production environments.

## Test values

### Payments

When creating a payment, the following test values can be used to simulate various error codes.

| Simulator amount | `error_code`                       |
| :--------------- | :--------------------------------- |
| 200001           | `canceled_payment_method`          |
| 200002           | `disputed_transaction`             |
| 200003           | `duplicate_transaction`            |
| 200004           | `expired_authorization`            |
| 200005           | `expired_payment_method`           |
| 200006           | `incorrect_billing_address`        |
| 200007           | `incorrect_country`                |
| 200008           | `incorrect_currency`               |
| 200009           | `incorrect_cvv`                    |
| 200010           | `incorrect_expiry_date`            |
| 200011           | `insufficient_funds`               |
| 200012           | `issuer_decline`                   |
| 200013           | `other_decline`                    |
| 200014           | `requires_buyer_authentication`    |
| 200015           | `refused_transaction`              |
| 200016           | `service_decline`                  |
| 200017           | `suspected_fraud`                  |
| 200018           | `unavailable_payment_method`       |
| 200019           | `unknown_payment_method`           |
| 200020           | `unsupported_transaction`          |
| 200021           | `unsupported_payment_method`       |
| 200022           | `cancelled_buyer_approval`         |
| 300001           | `insufficient_service_permissions` |
| 300002           | `invalid_amount`                   |
| 300003           | `invalid_payment_method`           |
| 300004           | `invalid_service_configuration`    |
| 300005           | `invalid_service_credentials`      |
| 300006           | `invalid_service_response`         |
| 300007           | `invalid_tax_identifier`           |
| 300008           | `missing_billing_address`          |
| 300009           | `missing_cvv`                      |
| 300010           | `missing_shipping_address`         |
| 300011           | `missing_tax_identifier`           |
| 300012           | `refund_period_expired`            |
| 300013           | `service_error`                    |
| 300014           | `service_network_error`            |
| 300015           | `service_rate_limit`               |
| 400001           | `internal_error`                   |
| 400002           | `invalid_billing_address`          |
| 400003           | `invalid_operation`                |
| 400004           | `invalid_request_parameters`       |
| 400005           | `invalid_service_request`          |
| 400006           | `invalid_shipping_address`         |
| 400007           | `service_resource_conflict`        |
| 400008           | `unexpected_state`                 |
| 400009           | `unknown_error`                    |
| 400010           | `unknown_service_resource`         |
| 400011           | `unsupported_country`              |
| 400012           | `unsupported_currency`             |
| 400013           | `unrecognised_country`             |
| 400014           | `unrecognised_currency`            |
| 400015           | `unrecognised_payment_method`      |
| 400016           | `unrecognised_scheme`              |
| 400017           | `unsupported_scheme`               |

### Captures

When capturing an authorized payment, the following responses can be simulated.

When creating a payment, the following test values can be used to simulate various error codes.

| Simulator amount | `status`                  |
| :--------------- | :------------------------ |
| 10               | `authorization_succeeded` |
| 20               | `capture_pending`         |
| 30               | `authorization_succeeded` |
| 40               | `authorization_succeeded` |

Our API does not currently return error codes for failed captures in the API,
but the values 10, 30, and 40 will provide different error codes in a future
release.

<Warning>
  Transactions in a `capture_pending` state can be moved to the next state using [webhooks](./webhooks).
</Warning>

### Refunds

When refunding a card payment, the following responses can be simulated.

When creating a payment, the following test values can be used to simulate various error codes.

| Simulator amount | `status`     |
| :--------------- | :----------- |
| 1                | `declined`   |
| 2                | `processing` |
| 3                | `failed`     |
| 4                | `failed`     |

Our API does not currently return error codes for failed refunds in the API,
but values 3, and 4 will provide different error codes in a future release.
