# Transfer state change

Triggered every time a transfer's status is updated.
* Event type: `transfers#state-change`
* Profile level subscriptions: Supported
* Application level subscriptions: Supported

For topup-to-balance transfers, `transfers#state-change` events are **not** triggered.
To listen to these, subscribe to the `balances#update` event instead.
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.

Endpoint: POST transfers#state-change

## Header parameters:

  - `X-Signature-SHA256` (string)
    RSA-SHA256 signature of the request body, Base64 encoded. Verify this against the [Wise public key](/guides/developer/webhooks/event-handling#requests) to ensure the request is authentic and has not been tampered with.

  - `X-Delivery-Id` (string)
    Unique identifier for this webhook delivery attempt.

  - `X-Test-Notification` (boolean)
    Present with the value `true` if this is a test notification sent to verify your callback URL during subscription setup.

## Request fields (application/json):

  - `schema_version` (string)
    Version of the event schema. Determined by the `schema_version` on your [webhook subscription](/api-reference/legacy/webhook).
    Enum: "4.0.0"

  - `subscription_id` (string)
    ID of the webhook subscription that triggered this event.
    Example: 01234567-89ab-cdef-0123-456789abcdef

  - `event_type` (string)
    Event type identifier
    Example: transfers#state-change

  - `sent_at` (string)
    Timestamp when the event was sent.
    Example: 2020-01-01T12:34:56.123Z

  - `data` (object)

  - `data.resource` (object)

  - `data.resource.type` (string)
    Resource type
    Example: transfer

  - `data.resource.id` (integer)
    Transfer ID
    Example: 111

  - `data.resource.profile_id` (integer)
    Profile ID of the transfer owner.
    Example: 222

  - `data.resource.account_id` (integer)
    Recipient account ID
    Example: 333

  - `data.current_state` (string)
    Current transfer status. See [Transfer Statuses](/guides/product/send-money/tracking-transfers) for possible values.
    Example: processing

  - `data.previous_state` (string | null)
    Previous transfer status. Note that this will be null for newly created transfers.
    Example: incoming_payment_waiting

  - `data.occurred_at` (string)
    Timestamp when the state change occurred.
    Example: 2020-01-01T12:34:56.789Z

## Response 200 fields (application/json):

  - `status` (string)
    Example: ok

