refund.failed
Refund failed, reserved funds released.
Refund execution failed. The reserved merchant debit and the in-flight refundable amount were released.
Money and processing#
Use refund_id and invoice_id to reconcile the failure. New events use destination_rejected when the destination was rejected, or internal_error for other execution failures, in reason. Previously recorded events retain their original text when retried; handle unfamiliar values as an unspecified failure. This payload does not include every commercial amount or fee; GET the refund for its full representation.
A replacement refund is a new business request after checking current eligibility and available funds. A completed refund losing chain confirmation is reported separately as refund.reversed; that event is not permission to send a replacement.
Schema version 1#
Fields are taken from the public OpenAPI contract. Required nullable fields must be present and may contain null.
-
id· string · RequiredStable event UUID for merchant-side idempotency. · Format: uuid
-
event_seq· integer · RequiredGlobal event sequence. Gaps are possible; it does not establish delivery or processing order. · Format: int64
-
type· "refund.failed" · Required—
-
schema_version· 1 · Required—
-
environment· "live" | "test" · Required—
-
merchant_id· string · RequiredFormat: uuid
-
subject_type· "refund" · Required—
-
subject_id· string · RequiredFormat: uuid
-
occurred_at· string · RequiredCanonical business occurrence timestamp. · Format: date-time
-
data· object · RequiredUnknown properties are rejected
-
data.refund_id· string · RequiredFormat: uuid
-
data.invoice_id· string · RequiredFormat: uuid
-
data.currency· string · Required—
-
data.network· string · Required—
-
data.environment· "live" | "test" · Required—
-
data.amount· string · RequiredFormat: decimal · Pattern: ^\d+(.\d+)?$
-
data.reason· string · RequiredMerchant-facing failure reason. Newly created events report destination_rejected for a rejected destination, or internal_error for other failures. Previously recorded events retain their original payloads.
-
data.status· "failed" · Required—
Example — version 1#
{
"id": "00000000-0000-0000-0000-000000000001",
"event_seq": 184203,
"type": "refund.failed",
"schema_version": 1,
"environment": "live",
"merchant_id": "00000000-0000-0000-0000-000000000002",
"subject_type": "refund",
"subject_id": "00000000-0000-0000-0000-000000000003",
"occurred_at": "2026-09-14T10:00:00Z",
"data": {
"refund_id": "00000000-0000-0000-0000-000000000003",
"invoice_id": "00000000-0000-0000-0000-000000000004",
"currency": "USDC",
"network": "ethereum",
"environment": "live",
"amount": "5.00",
"reason": "internal_error",
"status": "failed"
}
}See delivery and envelope, signature verification, and business processes.