> ## Documentation Index
> Fetch the complete documentation index at: https://docs.esimstory.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get a refund request

> Read back the refund request for one eSIM

Returns the refund request for one eSIM, in the same shape as
[Request a refund](https://docs.esimstory.com/endpoints/request-refund.md#response). Use it if you have no
webhook, or to check a decision you think you missed. The
[refund webhook](https://docs.esimstory.com/endpoints/webhooks.md#refund-events) is still the way to hear
about a decision as it happens — do not poll this in a loop.

## Path parameter

**topup\_id** `string` *required*

The unit's `topup_id`.

## Signing a GET

The body hash is taken over the empty string. See
[Authentication](https://docs.esimstory.com/authentication/overview.md).

```bash Endpoint theme={null}
GET /v1/api_partner/esims/20250129123456123456789012/refund
```

```json 200 theme={null}
{
  "topup_id": "20250129123456123456789012",
  "external_order_id": "ORDER-123456",
  "status": "rejected",
  "reason": "activation_failed",
  "note": "iPhone 13, installed before departure. No service in Tokyo with roaming on; restarted twice.",
  "rejection_reason": "esim_activated",
  "requested_at": "2026-10-28T03:12:45Z",
  "decided_at": "2026-10-29T01:20:00Z"
}
```

## Status

| `status` | Meaning | Final |
| - | - | - |
| `pending` | Received and waiting for review. `decided_at` is `null` | No |
| `approved` | Refunded. Settled as a credit on your next invoice | Yes |
| `rejected` | Not refunded. `rejection_reason` says why | Yes |

A decided request does not change again. Every field is described under
[Request a refund](https://docs.esimstory.com/endpoints/request-refund.md#response).

## Errors

| Status | `code` | Cause |
| - | - | - |
| `401` | `unauthorized` | Signature headers missing, expired or wrong |
| `404` | `not_found` | No eSIM with that `topup_id` on your account, or no refund request for it. `message` says which |
| `429` | — | Shares the 30-a-minute limit with Request a refund |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.