Skip to documentationDocumentation
On this page

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 · Required

    Stable event UUID for merchant-side idempotency. · Format: uuid

  • event_seq · integer · Required

    Global 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 · Required

    Format: uuid

  • subject_type · "refund" · Required

    —

  • subject_id · string · Required

    Format: uuid

  • occurred_at · string · Required

    Canonical business occurrence timestamp. · Format: date-time

  • data · object · Required

    Unknown properties are rejected

  • data.refund_id · string · Required

    Format: uuid

  • data.invoice_id · string · Required

    Format: uuid

  • data.currency · string · Required

    —

  • data.network · string · Required

    —

  • data.environment · "live" | "test" · Required

    —

  • data.amount · string · Required

    Format: decimal · Pattern: ^\d+(.\d+)?$

  • data.reason · string · Required

    Merchant-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#

json example
{
  "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.