# Transfer state change

Triggered every time a transfer's status is updated.
See the Webhooks guide for setup instructions, signature verification, and best practices.

Events may not be delivered in the order they occurred. Use data.occurred_at to reconcile the order.
See the Event Ordering guide for details.

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

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

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 to ensure the request is authentic and has not been tampered with.
    Example: "t7FMhk3OARMgwqz0LJXO..."

  - `X-Delivery-Id` (string)
    Unique identifier for this webhook delivery attempt.
    Example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"

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

## Response 200 fields (application/json):

  - `status` (string)
    Example: "ok"


