---
title: "List recurring eSIM periods"
canonical: "https://bird.com/docs/api/reference/list-esim-recurring-periods"
---

# List recurring eSIM periods

`GET /v1/esim/subscriptions/{subscription_id}/periods`

Returns funded periods with their original charges, confirmed credits, and delivery orders. Unfunded renewals do not create a paid period.

## Code samples

**CLI**

```sh
bird esim recurring-subscriptions periods <subscription-id>
```

Examples: [CLI](/docs/api/reference/list-esim-recurring-periods.cli.md) · [MCP](/docs/api/reference/list-esim-recurring-periods.mcp.md) · [cURL](/docs/api/reference/list-esim-recurring-periods.curl.md)

## Example response `200`

```json
{
  "next_cursor": "eyJ2IjoxLCJzIjoiXCIyMDI2LTA1LTI1VDE0OjAzOjEwWlwiIiwiaSI6IjAxOTJmM2IxLTRjN2UtN2EyYi05ZDYxLThmM2E1YzJlN2I0MCJ9",
  "prev_cursor": null,
  "refresh_cursor": "eyJ2IjoxLCJzIjoiXCIyMDI2LTA1LTI1VDE2OjQyOjAxWlwiIiwiaSI6IjAxOTJmM2IxLTllMDQtN2NkMy1iODE3LTJhNmY0ZDFjOGUwOSJ9",
  "data": [
    {
      "delivery_mode": "exact_period",
      "status": "pending",
      "net_amount": {
        "amount": "0.00995",
        "currency_code": "USD"
      },
      "tax_amount": {
        "amount": "0.00995",
        "currency_code": "USD"
      },
      "total_amount": {
        "amount": "0.00995",
        "currency_code": "USD"
      },
      "wallet_transaction_id": "wtx_01krdgeqcxet5s7t44vh8rt9mg",
      "refund_transaction_id": "wtx_01krdgeqcxet5s7t44vh8rt9mg",
      "order_id": "eor_01krdgeqcxet5s7t44vh8rt9mg",
      "order_status": "scheduled"
    }
  ]
}
```

## Path parameters

- `subscription_id` (string): The recurring eSIM service.

## Query parameters

- `limit` (integer): Maximum number of items to return per page.
- `starting_after` (string): Cursor from the `next_cursor` field of a previous list response. Returns items immediately after the cursor position in the current sort order.
- `ending_before` (string): Cursor from the `prev_cursor` or `refresh_cursor` field of a previous list response. Returns items immediately before the cursor position in the current sort order. `prev_cursor` returns the preceding page. `refresh_cursor` anchors at the first row of that response, which on a newest-first sort is how to fetch the items that have appeared since.

## Response body

- `next_cursor` (nullable string, required): Cursor for the next page. Pass back as `starting_after` to advance forward. `null` when no next page exists.
- `prev_cursor` (nullable string, required): Cursor for the previous page. Pass back as `ending_before` to step backward. `null` when no previous page exists.
- `refresh_cursor` (nullable string, required): Refresh anchor, the first row of this response. Pass back as `ending_before` to fetch what precedes it in the current sort order. On a newest-first sort those are the items that have appeared since; on any other sort they are the items that sort earlier, so refreshing such a list means re-fetching it instead. Non-`null` whenever `data` is non-empty; `null` only on an empty page. Distinct from `prev_cursor`.
- `data` (array of object, required)
- `data.delivery_mode` (string, required)

  Relationship between the paid period and package delivery.

  - `exact_period`: the package covers the accepted paid interval.
  - `recurring_top_up`: each funded period purchases a standard package. Activation, expiry, and accumulation follow that package’s terms.

  Possible values: `exact_period`, `recurring_top_up`
- `data.period_start` (string, required): Start of the funded billing period. Package activation follows the accepted delivery mode.
- `data.period_end` (string, required): End of the paid billing period. A recurring top-up package can expire at a different time; check the package’s expiry.
- `data.status` (string, required)

  Delivery outcome of a paid period.

  - `pending`: package delivery has not been confirmed, including an uncertain network outcome.
  - `completed`: the package was delivered.
  - `failing`: delivery failed and the credit is being processed.
  - `failed`: failure processing is complete. Check `refund_transaction_id` for an issued credit.

  Possible values: `pending`, `completed`, `failing`, `failed`
- `data.net_amount` (object, required)
- `data.net_amount.amount` (string, required): Decimal amount as a string, in major currency units.
- `data.net_amount.currency_code` (string, required): ISO 4217 currency code.
- `data.tax_amount` (object, required)
- `data.tax_amount.amount` (string, required): Decimal amount as a string, in major currency units.
- `data.tax_amount.currency_code` (string, required): ISO 4217 currency code.
- `data.total_amount` (object, required)
- `data.total_amount.amount` (string, required): Decimal amount as a string, in major currency units.
- `data.total_amount.currency_code` (string, required): ISO 4217 currency code.
- `data.wallet_transaction_id` (nullable string, required): Original wallet charge, or null for a free period.
- `data.refund_transaction_id` (nullable string, required): Confirmed wallet credit after definitive failure, or null when no credit was issued.
- `data.order_id` (nullable string, required): Delivery order, or null before fulfillment starts.
- `data.order_status` (nullable string, required): Delivery order state, or null before fulfillment starts.

## Related resources

- [Should I use a Bird SDK or call the API directly?](/explained/platform/should-i-use-an-sdk-or-call-the-api-directly) (answer)
- [Build your first integration](/learn/paths/integration) (course)
- [Send your first email](/docs/get-started/send-your-first-email) (docs)

[Get an implementation brief](/learn/workspace?topic=api-basics)
