# Simulate transfer state change

Changes the transfer status to the specified state. The available state transitions are:

- processing — from incoming_payment_waiting
- funds_converted — from processing. Refer to regional guides for special regional requirements.
- outgoing_payment_sent — from funds_converted
- bounced_back — from outgoing_payment_sent
- funds_refunded — from bounced_back.

{% admonition type="info" %}
Important notes
 - Simulation is not supported for email transfers.
 - Fund the transfer first before calling any simulation endpoints.
 - Even if funding moves the transfer to a processing state, you must still call the /processing simulation endpoint.
 - Although the simulation request may respond immediately, processing is asynchronous - wait at least 5 seconds between simulation calls.
{% /admonition %}

### Sandbox refund simulation behaviour {% #sandbox-refund %}

When simulating funds_refunded, a transfers#refund webhook is delivered with a simulated refund_amount. The amount is calculated as follows:

- SWIFT payouts: A random fee between 5-15% is deducted from the source amount. This is non-deterministic — each simulation produces a different refund amount. This is intended for testing your partial refund handling flow.
- Non-SWIFT payouts: The full source amount is refunded.

The simulated refund amount only applies to the webhook payload. Balances and the sandbox UI will always reflect the full refund amount regardless of payout method, so the webhook refund_amount may differ from what is shown in balances and the sandbox UI for SWIFT transfers.  
This simulation is not suitable for reconciliation testing between webhook amounts and balances.

Endpoint: GET /v1/simulation/transfers/{transferId}/{status}
Security: UserToken

## Path parameters:

  - `transferId` (integer, required)
    The ID of the transfer to simulate.

  - `status` (string, required)
    The target transfer status.
    Enum: "processing", "funds_converted", "outgoing_payment_sent", "bounced_back", "funds_refunded"

## Header parameters:

  - `X-External-Correlation-Id` (string)
    Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.
    Example: "f47ac10b-58cc-4372-a567-0e02b2c3d479"


## Response 200 fields
