Ask for an invitation
Menu

Webhook event

refund.unknown

The outcome could not be established (for example a broadcast timed out). Do not request it again. Reconciliation keeps reading the chain and will send .confirmed or .failed.

Type
refund.unknown
The object it carries
the refund object
Subscribe with
refund.unknown, refund.* or *

Example payload

The body of the request your endpoint receives, shown here over several lines. On the wire it is compact JSON; check its signature over the bytes exactly as they arrive.

Example payload

{
  "id": "evt_h9wz98pfwkv9hz6pzxddq59f",
  "object": "event",
  "livemode": true,
  "created": "2026-10-12T10:12:40.000Z",
  "type": "refund.unknown",
  "api_version": "2026-10-11",
  "data": {
    "object": {
      "id": "rf_z20ve49yz5hve8f0xsdchj2v",
      "object": "refund",
      "livemode": true,
      "created": "2026-10-12T10:00:00.000Z",
      "updated": "2026-10-12T10:12:40.000Z",
      "status": "unknown",
      "pending_reason": null,
      "order": "ord_0zymngngvf12b8b2cra7tb8e",
      "payment": "pay_2pe50hae6w2jk4sp1rcq5pae",
      "amount": "5.00",
      "currency": "USD",
      "reason": "requested_by_customer",
      "note": "One bag arrived damaged",
      "rate_basis": "order_rate",
      "deduct_network_fee": false,
      "source": {
        "wallet": "wal_bsfw07hymawmda7gg8jsyy3g",
        "asset": "base:usdc",
        "amount": "5.000000"
      },
      "destination": {
        "address": "0xdbF03B407c01E7cD3CBea99509d93f8DDDC8C6FB",
        "asset": "ethereum:usdc",
        "network": "ethereum",
        "supplied_by": "payer_claim",
        "saved_address": null
      },
      "address_claim": {
        "sent_to": "jane@example.com",
        "sent_at": "2026-10-12T09:40:00.000Z",
        "claimed_at": "2026-10-12T10:00:00.000Z",
        "expires_at": "2026-10-26T09:40:00.000Z"
      },
      "approvable_at": null,
      "delivery": {
        "rail": "relay",
        "amount_estimated": "4.930000",
        "route_fee": {
          "amount": "0.07",
          "currency": "USD"
        },
        "fee_bearer": "recipient"
      },
      "network_fee": null,
      "requested_by": {
        "type": "api_key",
        "id": "key_6e3gg2c6ea176xxdek2nar6v"
      },
      "approved_by": "mem_ceh1wpzdrpk13cnpcjy9w0fa",
      "approval_url": null,
      "approval_expires_at": "2026-10-19T10:00:00.000Z",
      "transaction_hash": null,
      "failure_code": "broadcast_outcome_unknown",
      "cancellation_reason": null,
      "approved_at": "2026-10-12T10:12:00.000Z",
      "sent_at": null,
      "confirmed_at": null,
      "metadata": {}
    },
    "previous_attributes": {
      "status": "signed",
      "failure_code": null
    }
  },
  "request": {
    "id": null,
    "idempotency_key": null
  },
  "pending_webhooks": 1
}

Fields of data.object

Fields of data.object in refund.unknown
FieldIn this example
id"rf_z20ve49yz5hve8f0xsdchj2v"
object"refund"
livemodetrue
created"2026-10-12T10:00:00.000Z"
updated"2026-10-12T10:12:40.000Z"
status"unknown"
pending_reasonnull
order"ord_0zymngngvf12b8b2cra7tb8e"
payment"pay_2pe50hae6w2jk4sp1rcq5pae"
amount"5.00"
currency"USD"
reason"requested_by_customer"
note"One bag arrived damaged"
rate_basis"order_rate"
deduct_network_feefalse
sourceAn object with wallet, asset, amount
destinationAn object with address, asset, network, supplied_by, saved_address
address_claimAn object with sent_to, sent_at, claimed_at, expires_at
approvable_atnull
deliveryAn object with rail, amount_estimated, route_fee, fee_bearer
network_feenull
requested_byAn object with type, id
approved_by"mem_ceh1wpzdrpk13cnpcjy9w0fa"
approval_urlnull
approval_expires_at"2026-10-19T10:00:00.000Z"
transaction_hashnull
failure_code"broadcast_outcome_unknown"
cancellation_reasonnull
approved_at"2026-10-12T10:12:00.000Z"
sent_atnull
confirmed_atnull
metadataAn object with no fields

What each field means is on the page of the refund object. data.previous_attributes holds the old values of exactly the fields that changed: here status, failure_code.

Endpoints behind it

Calls that change refunds. An event is also sent when a payer, the network, a timer or a person in the dashboard causes the change; the sentence above says which.