---
title: "Subscription and access state for your shops"
method: GET
path: "/account/subscription"
tags: ["Account & Billing"]
---

# Subscription and access state for your shops

`GET /account/subscription`

Your account's billable seats with live Stripe billing state, so a consumer can answer **"is this account still entitled to the data I'm reading?"** without screen-scraping the portal.

Each seat carries `plan`, `unit_amount` (minor units), `status`, the live `stripe_status`, `current_period_end`, `trial_end`, `cancel_at` and `access_expires_on` — the cancel-grace date after which a canceled seat stops granting access.

Only seats linked to shops this key can reach are returned, plus any unassigned seats (which name no shop). Read `collection_method` and `attempt_count` before treating `past_due` as a payment failure: invoice-billed customers sit in `past_due` legitimately, and `attempt_count == 0` means Stripe never attempted a charge.

Read-only — plan changes and cancellation are portal-only.

## Response `200`

Successful Response

- AccountSubscriptionResponse
  - `has_stripe_customer` boolean, required — False when this account has never been billed through Stripe.
  - `data` AccountSubscriptionItem[], required
    - `subscription_item_id` string, nullable — Stripe subscription-item id (si_...).
    - `shop_id` integer, nullable — Shop this seat is linked to; null when unassigned.
    - `shop_name` string, nullable
    - `plan` string, nullable — Human-readable plan name and billing cycle.
    - `interval` string, nullable — monthly, yearly, ...
    - `unit_amount` integer, nullable — Seat price in the minor units of the billing currency.
    - `status` string, nullable — Reacher-side seat state: null/active, subscription_canceled (in the paid-through grace window), or archived.
    - `stripe_status` string, nullable — Live Stripe subscription status (active, trialing, past_due, canceled, ...). Null when Stripe was unreachable.
    - `current_period_end` string, nullable — End of the current billing period.
    - `trial_end` string, nullable — Trial end date (YYYY-MM-DD).
    - `cancel_at` string, nullable — Scheduled cancellation date (YYYY-MM-DD).
    - `access_expires_on` string, nullable — Cancel-grace expiry (YYYY-MM-DD) — the date a canceled seat stops granting access. Set only while status is subscription_canceled.
    - `next_payment_attempt` string, nullable — Next Stripe payment retry date (YYYY-MM-DD).
    - `collection_method` string, nullable — charge_automatically or send_invoice. Invoice-billed customers sit in past_due legitimately — that is not a card failure.
    - `attempt_count` integer, nullable — Charge attempts on the latest invoice. 0 means Stripe has never attempted a charge, so nothing has failed.

---

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