refund.reversed
Completed refund reversed after a chain reorg.
A previously completed refund lost its chain confirmation. The exact terminal ledger effect was mirrored and the restored merchant reserve released in the same transaction as this event.
Schema version: 1. This event applies to refunds of accepted funds, including individual returns confirmed in the dashboard. It does not cover returns of payments not credited to the merchant; poll /v1/refunds?invoice_id=… for complete coverage.
The amounts and destination describe the original refund. network_fee, network_fee_currency and network_fee_network describe the measured cost whose booking was reversed; they are not a new merchant charge.
Read GET refund, retain the original transaction hash and reopen reconciliation for this return. Do not automatically issue a replacement: the transaction may be re-included on the chain. Re-inclusion requires operator review and does not automatically rebook the merchant debit or send another refund.
This event does not reverse or cancel the original incoming invoice payment. invoice.payment_reversed describes that separate event.
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.reversed" · 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.recipient_amount· string · RequiredFormat: decimal · Pattern: ^\d+(.\d+)?$
-
data.merchant_debit_amount· string · RequiredFormat: decimal · Pattern: ^\d+(.\d+)?$
-
data.destination· string · Required—
-
data.tx_hash· string · Required—
-
data.network_fee· string · RequiredFormat: decimal · Pattern: ^\d+(.\d+)?$
-
data.network_fee_currency· string · Required—
-
data.network_fee_network· string · Required—
-
data.status· "reversed" · Required—
Example — version 1#
{
"id": "00000000-0000-0000-0000-000000000020",
"event_seq": 184205,
"type": "refund.reversed",
"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-22T10: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",
"recipient_amount": "5.00",
"merchant_debit_amount": "5.10",
"destination": "0x0000000000000000000000000000000000000001",
"tx_hash": "0x0000000000000000000000000000000000000000000000000000000000000001",
"network_fee": "0.00005",
"network_fee_currency": "ETH",
"network_fee_network": "ethereum",
"status": "reversed"
}
}See delivery and envelope, signature verification, and business processes.