Skip to content

Simulate transfer state change

Request

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.

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.

Sandbox refund simulation behaviour

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.

Security
UserToken
Path
transferIdinteger, (int64)required

The ID of the transfer to simulate.

statusstringrequired

The target transfer status.

Enum:"processing""funds_converted""outgoing_payment_sent""bounced_back""funds_refunded"
Headers
X-External-Correlation-Idstring, (uuid), <= 36 characters

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
curl -i -X GET \
  'https://api.wise.com/v1/simulation/transfers/{transferId}/{status}' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'X-External-Correlation-Id: f47ac10b-58cc-4372-a567-0e02b2c3d479'

Responses

Transfer with updated status.

Headers
X-External-Correlation-Idstring, (uuid), <= 36 characters

Echoed back when X-External-Correlation-Id was included in the request. Learn more.

Example:"f47ac10b-58cc-4372-a567-0e02b2c3d479"
x-trace-idstring

Unique trace identifier assigned by Wise. Useful when contacting support about a specific request.

Example:"fba501b6d453b96789f52338f019341f"
Bodyapplication/json
Response
{ "id": 15574445, "user": 294205, "targetAccount": 7993919, "sourceAccount": null, "quote": 113379, "status": "processing", "reference": "good times", "rate": 1.2151, "created": "2017-03-14 15:25:51", "business": null, "transferRequest": null, "details": { "reference": "good times" }, "hasActiveIssues": false, "sourceValue": 1000, "sourceCurrency": "EUR", "targetValue": 895.32, "targetCurrency": "GBP" }