Skip to documentationDocumentation
On this page

refund.completed

Refund completed on-chain.

The refund transfer completed on-chain.

Money and processing#

Close this refund once and retain its transaction hash. The measured network cost has its own network_fee_currency and network_fee_network; these fields can differ from the refund pair and are currently absent from the REST refund response.

Actual network cost is separate from the configured commercial charge and is not added again to merchant_debit_amount. A partial refund completes this refund object, not every possible refund of its invoice.

A later chain reorganization can reverse this completion. Handle refund.reversed and reconcile the return instead of assuming that delivery can never change.

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.completed" · 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.recipient_amount · string · Required

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

  • data.merchant_debit_amount · string · Required

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

  • data.destination · string · Required

    —

  • data.tx_hash · string · Required

    —

  • data.network_fee · string · Required

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

  • data.network_fee_currency · string · Required

    —

  • data.network_fee_network · string · Required

    —

  • data.status · "completed" · Required

    —

Example — version 1#

json example
{
  "id": "00000000-0000-0000-0000-000000000001",
  "event_seq": 184203,
  "type": "refund.completed",
  "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",
    "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": "completed"
  }
}

See delivery and envelope, signature verification, and business processes.