---
title: "Refund webhooks"
method: POST
path: "refunds"
tags: ["Payments"]
---

# Refund webhooks

`POST refunds` (webhook)

Sent to the webhook URI you registered in Console when a refund succeeds or fails.

## Headers

- `Tl-Signature` string, required

## Payload

- union
  - WebhookRefundExecuted
    - `type` 'refund_executed', required
    - `event_version` 1, required: The version of the event schema.
    - `event_id` string, required: Unique ID of the event.
    - `refund_id` string, required: Unique ID for the refund
    - `payment_id` string, required: Unique ID for the Payment
    - `executed_at` string, datetime, required: Date and time the refund executed
    - `scheme_id` string: The unique identifier for the scheme.
    - `metadata` Metadata: Optional field for adding custom key-value data to a resource. This object can contain a maximum of 10 key-value pairs, each with a key with a maximum length of 40 characters and a non-null value with a maximum length of 500 characters.
  - WebhookRefundFailed
    - `type` 'refund_failed', required
    - `event_version` 1, required: The version of the event schema.
    - `event_id` string, required: Unique ID of the event.
    - `refund_id` string, required: Unique ID for the refund
    - `payment_id` string, required: Unique ID for the Payment
    - `failed_at` string, datetime, required: Date and time the refund failed
    - `failure_reason` string, required: The reason the outbound payment failed. Example values to expect: - `insufficient_funds` - `scheme_error` - `server_error` - `blocked` - `returned` - `account_not_valid`: the bank accounts associated with the given AIS consent are not valid. Note that this error is only relevant for `user_determined` beneficiaries. - `expired`: the user did not authorize the payout within the required timeframe. This error applies only to `user_determined` beneficiaries. - `verification_name_mismatch`: the name provided as part of a payout verification does not match the one available on the connected bank account - `verification_transaction_not_found`: the transaction details provided as part of a payout verification are not found within the associated bank account's transactions - `invalid_iban`: the beneficiary IBAN is invalid - `invalid_scan`: the beneficiary SCAN is invalid - `reversed`: the payment was reversed after settling - `unknown`: the failure could not be classified into a more specific reason Clients should handle unexpected values gracefully as a unknown failure.
    - `metadata` Metadata: Optional field for adding custom key-value data to a resource. This object can contain a maximum of 10 key-value pairs, each with a key with a maximum length of 40 characters and a non-null value with a maximum length of 500 characters.

## Acknowledgement `200`

Webhook Handled

---

[API](https://skmtc.dev/truelayer/apis/payments-api-v3.md) - [All operations](https://skmtc.dev/truelayer/apis/payments-api-v3/llms.txt) - [OpenAPI document](https://skmtc.dev/truelayer/apis/payments-api-v3/revisions/a7c585fc9b84?raw)
