---
title: "Retrieve Refund"
method: GET
path: "/refunds/{id}"
tags: ["Refunds"]
---

# Retrieve Refund

`GET /refunds/{id}`

Returns one refund.

## Response `200`

refund retrieved

- Refund
  - `account_id` string, nullable, required — The account that issued the refund, prefixed `biz_`.
  - `amount` Money, required
    - `amount` string, required — The amount in major units, as an exact decimal string — `"10.00"` is ten dollars. A string so no float rounds it in transit.
    - `currency` string, required — Three-letter ISO 4217 currency code, lowercase.
    - `decimals` integer, required — How many decimal places the amount CARRIES — the precision the charge itself runs at.
    - `display_decimals` integer, required — How many decimal places to SHOW. Usually equal to `decimals`, and deliberately not always: COP is charged in centavos but written in whole pesos, so it is `2` and `0`. Format the number in your own locale using this.
  - `created_at` string, required — When the refund was requested, as an ISO 8601 timestamp.
  - `failure_message` string, nullable, required — The provider's own explanation of the failure, or null.
  - `failure_reason` 'bank_declined' | 'expired_or_canceled_card' | 'lost_or_stolen_card' | 'insufficient_funds' | 'charge_disputed' | 'not_refundable' | 'merchant_request' | 'unknown' | 'null', nullable, required — Why the refund failed, normalized across providers. Null unless the refund failed or was canceled.
  - `id` string, required — Refund ID, prefixed `rf_`.
  - `original_amount` Money, required
    - `amount` string, required — The amount in major units, as an exact decimal string — `"10.00"` is ten dollars. A string so no float rounds it in transit.
    - `currency` string, required — Three-letter ISO 4217 currency code, lowercase.
    - `decimals` integer, required — How many decimal places the amount CARRIES — the precision the charge itself runs at.
    - `display_decimals` integer, required — How many decimal places to SHOW. Usually equal to `decimals`, and deliberately not always: COP is charged in centavos but written in whole pesos, so it is `2` and `0`. Format the number in your own locale using this.
  - `payment_id` string, required — The payment this refund reverses, prefixed `pay_`.
  - `provider` string, required — The payment provider that processed the refund, such as `paypal` or `coinbase`.
  - `provider_created_at` string, nullable, required — When the provider created the refund, as an ISO 8601 timestamp.
  - `reason` 'duplicate' | 'fraudulent' | 'requested_by_customer' | 'expired_uncaptured_charge' | 'null', nullable, required — Why the refund was issued, when recorded.
  - `reference_status` 'available' | 'pending' | 'unavailable' | 'null', nullable, required — Whether a banking-network tracking reference is available for this refund.
  - `reference_type` 'acquirer_reference_number' | 'retrieval_reference_number' | 'system_trace_audit_number' | 'null', nullable, required — The kind of tracking reference, such as an acquirer reference number.
  - `reference_value` string, nullable, required — The tracking reference the buyer's bank can trace the refund by.
  - `status` 'pending' | 'requires_action' | 'succeeded' | 'failed' | 'canceled', required — Where the refund stands with the processor: `pending`, `requires_action`, `succeeded`, `failed`, or `canceled`.
  - `updated_at` string, required — When the refund last changed, as an ISO 8601 timestamp.
  - `visa_rdr` boolean, required — True when the card network initiated the refund through Rapid Dispute Resolution.

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `404` — Resource not found

## Changes

> 46 revisions in range; 1 not diffed.

- **2026-09-03** `697924df40d1` — 10 breaking, 12 warning, 38 info
  - the response property `reference_status` became nullable for the status `200`
  - the response property `reference_type` became nullable for the status `200`
  - added `#/components/schemas/Money, subschema #2` to the `amount` response property `oneOf` list for the response status `200`
  - the `amount` response's property type changed from `number` to no type for status `200`
  - …56 more
- **2026-08-28** `4da7133b2de7` — 3 warning
  - added the new `flex_pay` enum value to the `payment/payment_method_type/oneOf[#/components/schemas/PaymentMethodTypes]/` response property for the response status `200`
  - added the new `flex_pay` enum value to the `provider` response property for the response status `200`
  - added the new `gcash` enum value to the `payment/payment_method_type/oneOf[#/components/schemas/PaymentMethodTypes]/` response property for the response status `200`
- …earlier changes not shown

[Full history](https://skmtc.dev/whop/apis/whop-api/changes/refunds/:id/get.md)

---

[API](https://skmtc.dev/whop/apis/whop-api.md) · [All operations](https://skmtc.dev/whop/apis/whop-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/whop/whop-api/revisions/697924df40d1/schema)
