> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.crisscross.money/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.crisscross.money/_mcp/server.

# A refund failed (e.g. insufficient merchant balance or provider rejection).

POST 

Reference: https://docs.crisscross.money/api-reference/exchange/webhooks/refunds/refund-failed

## Request

### Payload

- `eventType` (string, required) — The event type — one of `refund.completed`, `refund.failed`, `refund.errored`, `refund.cancelled`.
- `timestamp` (datetime, required) — When the event was generated.
- `payload` (RefundTransaction, required) — The refund transaction record — the same object returned by Retrieve Payment Status (`GET /payment/{transactionId}`) for the refund's own `transactionId`. Additional transaction fields (processor references, FX details) may be present.

## Types

### RefundTransaction

The refund transaction record — the same object returned by Retrieve Payment Status (`GET /payment/{transactionId}`) for the refund's own `transactionId`. Additional transaction fields (processor references, FX details) may be present.

- `status` (enum, required) — Terminal status of the refund transaction. Mirrors the triggering event: `COMPLETED` → `refund.completed`, `FAILED` → `refund.failed`, `ERRORED` → `refund.errored`, `CANCELLED` → `refund.cancelled`.
  - Allowed values: `COMPLETED`, `FAILED`, `ERRORED`, `CANCELLED`
- `transactionId` (string, required) — The refund's own transaction identifier. UUID v7.
- `message` (string, required) — Human-readable status message.
- `merchantReference` (string, optional) — Merchant reference carried from the original payment.
- `identifiers` (map from string to string, optional) — Additional identifiers (e.g. `sessionId`) copied from the original payment, linking the refund back to it.