# 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

{% 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 for details.

See the Webhooks guide 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 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

## Request fields (application/json):

  - `body` (any) — one of (discriminator: schema_version):
    - 4.0.0:
      - `schema_version` (string)
        Version of the event schema. Determined by the schema_version on your [webhook subscription](/api-reference/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"
    - 2.0.0:
      - `schema_version` (string)
        Version of the event schema. Determined by the schema_version on your [webhook subscription](/api-reference/webhook).
        Enum: "2.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:56Z"
      - `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:56Z"

## Response 200 fields (application/json):

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


