Skip to content

Simulate a transfer delivery update

Request

Triggers a synthetic transfers#delivery-update webhook for a transfer accessible to the caller. Create an eligible webhook subscription before calling this endpoint. See the delivery update guide for subscription setup and webhook handling.

  • Available in sandbox only, from API version 2026Q4.
  • Does not change the transfer or payout state and does not require a particular transfer state.
  • A 200 response confirms acceptance for webhook processing, not delivery to your callback. Webhook delivery is asynchronous and requires a matching subscription.

Each successful call generates a new observation. Repeating the request creates another observation rather than replaying the previous one. Correlate the response with the webhook using observation_id and occurred_at.

Security
UserToken
Path
transferIdinteger, (int64)required

The ID of the transfer to simulate. The caller must have access to this transfer.

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
Bodyapplication/jsonrequired
schemestring or null

Payment scheme to include in the observation. May be omitted or null.

Enum:"sepa_instant_credit_transfer"null
delivery_update_pathArray of strings, non-empty, uniquerequired

Delivery signals supported by the simulated route, not a history of events. Select one or more distinct values in this progression order: partner_accepted, recipient_provider_accepted, scheme_settled, account_credited, funds_available. Values may be skipped. The service validates the order and requires this array to contain delivery_update.

delivery_updatestringrequired

The delivery signal to simulate. Must be a member of delivery_update_path, but need not be its last item.

Enum:"partner_accepted""recipient_provider_accepted""scheme_settled""account_credited""funds_available"
estimated_delivery_atstring or null, (date-time)

Optional estimated delivery time. May be omitted or null. Published timestamps are truncated to milliseconds.

curl -i -X POST \
  'https://api.wise-sandbox.com/2026Q4/simulation/transfers/{transferId}/delivery-update' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-External-Correlation-Id: f47ac10b-58cc-4372-a567-0e02b2c3d479' \
  -d '{
    "scheme": "sepa_instant_credit_transfer",
    "delivery_update_path": [
      "recipient_provider_accepted",
      "scheme_settled"
    ],
    "delivery_update": "recipient_provider_accepted",
    "estimated_delivery_at": "2026-10-01T10:00:05.000Z"
  }'

Responses

Observation accepted for asynchronous webhook processing.

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
observation_idstring, (uuid)required

Server-generated observation identifier. Matches data.observation_id in the webhook.

occurred_atstring, (date-time)required

Server-generated observation time in UTC with millisecond precision. Matches data.occurred_at in the webhook.

Response
{ "observation_id": "550e8400-e29b-41d4-a716-446655440000", "occurred_at": "2026-10-01T10:00:00.123Z" }