---
title: "Webhook event: refund.event.v1"
method: POST
path: "refund.event.v1"
---

# Webhook event: refund.event.v1

`POST refund.event.v1` (webhook)

Triggered throughout the refund lifecycle to indicate status changes and important events. This includes successful processing, failed attempts, rail selection optimization, and final settlement status.

## Payload

- object
  - `event_type` string, required — Type of the event
  - `event_id` string, uuid, required — UUID of the event
  - `account_id` string, uuid, required — UUID of the account associated with this event
  - `data` RefundEventV1, required
    - `id` string, uuid, required — Id.
    - `paykey` string, required — Paykey.
    - `description` string, nullable — Description.
    - `payment_rail` 'ach'
    - `paykey_details` PaykeyDetailsEventV1
      - `id` string, uuid, required — Id.
      - `customer_id` string, uuid, required — Customer id.
      - `label` string, required — Label.
      - `balance` integer, nullable — Balance.
    - `customer_details` CustomerDetailsEventV1
      - `id` string, uuid, required — Id.
      - `name` string, required — Name.
      - `email` string, required — Email.
      - `phone` string, required — Phone.
      - `customer_type` 'individual' | 'business', required
    - `amount` integer, required — Amount.
    - `currency` string, required — Currency.
    - `payment_date` string, date, required — Payment date.
    - `consent_type` 'internet' | 'signed', required
    - `device` DeviceInfoEventV1, required
      - `ip_address` string, required — Ip address.
    - `external_id` string, nullable — External id.
    - `config` PayoutConfigurationEventV1, required
    - `created_at` string, date-time, nullable — Created at.
    - `updated_at` string, date-time, nullable — Updated at.
    - `processed_at` string, date-time, nullable — Processed at.
    - `effective_at` string, date-time, nullable — Effective at.
    - `status` 'created' | 'scheduled' | 'failed' | 'cancelled' | 'on_hold' | 'pending' | 'paid' | 'reversed', required
    - `status_details` StatusDetailsEventV1, required
      - `message` string, required — A human-readable description of the current status.
      - `reason` 'insufficient_funds' | 'closed_bank_account' | 'invalid_bank_account' | 'invalid_routing' | 'disputed' | 'payment_stopped' | 'owner_deceased' | 'frozen_bank_account' | 'risk_review' | 'fraudulent' | 'duplicate_entry' | 'invalid_paykey' | 'payment_blocked' | 'amount_too_large' | 'too_many_attempts' | 'internal_system_error' | 'user_request' | 'ok' | 'other_network_return' | 'payout_refused' | 'validating' | 'auto_hold', required
      - `source` 'watchtower' | 'bank_decline' | 'customer_dispute' | 'user_action' | 'system', required
      - `code` string, nullable, required — The status code if applicable.
      - `changed_at` string, date-time, required — The time the status change occurred.
    - `status_history` StatusHistoryEventV1[], required — Status history.
      - `reason` 'insufficient_funds' | 'closed_bank_account' | 'invalid_bank_account' | 'invalid_routing' | 'disputed' | 'payment_stopped' | 'owner_deceased' | 'frozen_bank_account' | 'risk_review' | 'fraudulent' | 'duplicate_entry' | 'invalid_paykey' | 'payment_blocked' | 'amount_too_large' | 'too_many_attempts' | 'internal_system_error' | 'user_request' | 'ok' | 'other_network_return' | 'payout_refused' | 'validating' | 'auto_hold', required
      - `source` 'watchtower' | 'bank_decline' | 'customer_dispute' | 'user_action' | 'system', required
      - `message` string, required — A human-readable description of the status.
      - `code` string, nullable — The status code if applicable.
      - `changed_at` string, date-time, required — The time the status change occurred.
      - `status` 'created' | 'scheduled' | 'failed' | 'cancelled' | 'on_hold' | 'pending' | 'paid' | 'reversed', required
    - `funding_ids` string[], required — Funding Ids.
    - `metadata` object, nullable — Metadata.
    - `related_payments` object, nullable — Dictionary<Guid, RelatedPaymentEventTypeV1> represented as an object with GUID keys (paymentId), and enum for related payment type.

## Acknowledgement `200`

Webhook processed successfully

---

[API](https://skmtc.net/straddleio/apis/straddle-api.md) · [All operations](https://skmtc.net/straddleio/apis/straddle-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/straddleio/straddle-api/revisions/6e13cd88cda9/schema)
