---
title: "Transfer state change"
method: POST
path: "transfers#state-change"
tags: ["webhook-event", "transfer"]
---

# Transfer state change

`POST transfers#state-change` (webhook)

Triggered every time a transfer's status is updated.

* Event type: `transfers#state-change`
* Profile level subscriptions: Supported
* Application level subscriptions: Supported

{% admonition type="warning" %}
For topup-to-balance transfers, `transfers#state-change` events are **not** triggered.
To listen to these, subscribe to the `balances#update` event instead.
{% /admonition %}

Events may not be delivered in the order they occurred. Use `data.occurred_at` to reconcile the order.
See the [Event ordering guide](/guides/developer/webhooks/event-ordering) for details.

See the [Webhooks guide](/guides/developer/webhooks) for setup instructions, signature verification, and best practices.

## Headers

- `X-Signature-SHA256` string
- `X-Delivery-Id` string, uuid
- `X-Test-Notification` boolean

## Payload

- union
  - V4004
    - `schema_version` '4.0.0' — Version of the event schema. Determined by the `schema_version` on your [webhook subscription](/api-reference/webhook).
    - `subscription_id` string, uuid — ID of the webhook subscription that triggered this event.
    - `event_type` string — Event type identifier
    - `sent_at` string, date-time — Timestamp when the event was sent.
    - `data` object
      - `resource` object
        - `type` string — Resource type
        - `id` integer — Transfer ID
        - `profile_id` integer — Profile ID of the transfer owner.
        - `account_id` integer — Recipient account ID
      - `current_state` string — Current transfer status. See [Transfer Statuses](/guides/product/send-money/tracking-transfers) for possible values.
      - `previous_state` string, nullable — Previous transfer status. Note that this will be null for newly created transfers.
      - `occurred_at` string, date-time — Timestamp when the state change occurred.
  - V2004
    - `schema_version` '2.0.0' — Version of the event schema. Determined by the `schema_version` on your [webhook subscription](/api-reference/webhook).
    - `subscription_id` string, uuid — ID of the webhook subscription that triggered this event.
    - `event_type` string — Event type identifier
    - `sent_at` string, date-time — Timestamp when the event was sent.
    - `data` object
      - `resource` object
        - `type` string — Resource type
        - `id` integer — Transfer ID
        - `profile_id` integer — Profile ID of the transfer owner.
        - `account_id` integer — Recipient account ID
      - `current_state` string — Current transfer status. See [Transfer Statuses](/guides/product/send-money/tracking-transfers) for possible values.
      - `previous_state` string, nullable — Previous transfer status. Note that this will be null for newly created transfers.
      - `occurred_at` string, date-time — Timestamp when the state change occurred.

## Acknowledgement `200`

Return any `2xx` status to acknowledge receipt of the event.

- object
  - `status` string

---

[API](https://skmtc.net/wise/apis/platform-api.md) · [All operations](https://skmtc.net/wise/apis/platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/wise/platform-api/revisions/4907a1d269ab/schema)
