---
title: "List Refunds"
method: GET
path: "/refunds"
tags: ["Refunds"]
---

# List Refunds

`GET /refunds`

Lists refunds, newest first. Without filters this is every refund the caller can read; narrow it to one payment with `payment_id`, one account with `account_id`, or one buyer with `user_id`.

## Query parameters

- `account_id` string
- `payment_id` string
- `user_id` string
- `created_before` string, date-time
- `created_after` string, date-time
- `order` 'created_at'
- `direction` 'asc' | 'desc'
- `first` integer
- `after` string
- `last` integer
- `before` string

## Response `200`

refunds listed

- object
  - `data` Refund[], required
    - `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.
  - `page_info` object, required
    - `end_cursor` string, nullable, required
    - `has_next_page` boolean, required
    - `has_previous_page` boolean, required
    - `start_cursor` string, nullable, required

## Other responses

- `400` — unsupported sort field
- `401` — Unauthorized
- `404` — Resource not found

## Changes

> 46 revisions in range; 1 not diffed.

- **2026-09-03** `697924df40d1` — 10 breaking, 12 warning, 36 info
  - the response property `data/items/reference_status` became nullable for the status `200`
  - the response property `data/items/reference_type` became nullable for the status `200`
  - added `#/components/schemas/Money, subschema #2` to the `data/items/amount` response property `oneOf` list for the response status `200`
  - the `data/items/amount` response's property type changed from `number` to no type for status `200`
  - …54 more
- **2026-08-28** `4da7133b2de7` — 1 warning
  - added the new `flex_pay` enum value to the `data/items/provider` response property for the response status `200`
- **2026-08-18** `f67a043e3190` — 1 breaking, 3 info
  - the `query` request parameter `direction` was restricted to a list of enum values
  - added the new enum value `asc` to the `query` request parameter `direction`
  - added the new enum value `desc` to the `query` request parameter `direction`
  - for the `query` request parameter `direction`, the type was generalized from no type to `string`
- **2026-08-04** `ca841fbd6786` — 1 warning
  - added the new `braintree` enum value to the `data/items/provider` response property for the response status `200`
- **2026-07-26** `60bbb4a6ffbc` — 1 warning
  - added the new `masspay` enum value to the `data/items/provider` response property for the response status `200`

[Change history](https://skmtc.dev/whop/apis/whop-api/changes/refunds/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)
