---
title: "Get Subscription Status"
method: GET
path: "/v1/billing/subscription-status"
tags: ["Billing", "billing"]
---

# Get Subscription Status

`GET /v1/billing/subscription-status`

## Request

- Base URL: `https://client.api.prod.orsay.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://client.api.prod.orsay.ai/v1/billing/subscription-status`
- Auth: HTTP bearer

Fast status check - queries DynamoDB only (no Stripe API calls).
Use this for polling and subscription guards.

HasActiveSubscription includes BypassSubscriptionCheck so the frontend
can rely on this single field for access decisions.

NOTE: This is `def` (not `async def`) because it only does synchronous
PynamoDB I/O. FastAPI automatically runs `def` handlers in a thread pool,
so they don't block the event loop or other concurrent requests.

## Response `200`

Successful Response

- SubscriptionStatusResponse
  - `HasActiveSubscription` boolean, required
  - `Subscription` SubscriptionStatusInfo, required: Lightweight subscription status (no Stripe API calls)
    - `Status` string, required
    - `ProductId` string, required
    - `CurrentPeriodEnd` string, date-time, required
    - `CancelAtPeriodEnd` boolean, required
    - `SubscriptionActivated` boolean
    - `LastPayment` LastPaymentInfo: The last Stripe invoice this org actually paid. Stamped by the `invoice.paid` webhook, so it costs no Stripe call to read. The app reports it to analytics as revenue, deduped on InvoiceId.
      - `InvoiceId` string, required
      - `AmountInCents` integer, required
      - `Currency` string, required
      - `PaidAt` string, date-time, required
      - `Description` string, nullable
      - `IsFirstPayment` boolean, required
  - `OrgExists` boolean

## Changes

- **2026-08-28** `af835efaf8bc`: 2 info
  - added the optional property `Subscription/anyOf[subschema #1: SubscriptionStatusInfo]/LastPayment` to the response with the `200` status
  - added the optional property `Subscription/anyOf[subschema #1: SubscriptionStatusInfo]/SubscriptionActivated` to the response with the `200` status

[Operation history](https://skmtc.dev/orsay/apis/orsay-api/changes/v1/billing/subscription-status/get.md)

---

[API](https://skmtc.dev/orsay/apis/orsay-api.md) - [All operations](https://skmtc.dev/orsay/apis/orsay-api/llms.txt) - [OpenAPI document](https://skmtc.dev/orsay/apis/orsay-api/revisions/988a26cafef5?raw)
