---
title: "Get Checkout Session Status"
method: GET
path: "/billing/checkout-session-status"
tags: ["billing"]
---

# Get Checkout Session Status

`GET /billing/checkout-session-status`

Verify a Stripe checkout session so the success page can gate its UI.

Unauthenticated — any visitor with a session_id can call this, but
only valid Stripe session IDs will yield ``paid=True``.

Args:
    request: FastAPI request (required by SlowAPI rate limiter).
    session_id: Stripe checkout session ID (cs_...) from the success redirect.

Returns:
    Minimal verified status (no PII exposed).

## Query parameters

- `session_id` string, required — Stripe checkout session ID from the success URL

## Response `200`

Successful Response

- CheckoutSessionStatusResponse — Verified status of a Stripe checkout session. Returned from ``GET /billing/checkout-session-status`` so the unauthenticated success page can confirm that the session_id corresponds to a paid session before rendering the confirmation.
  - `paid` boolean, required
  - `status` string, nullable — Stripe session status (e.g. 'complete', 'open', 'expired')
  - `payment_status` string, nullable — Stripe payment status (e.g. 'paid', 'unpaid', 'no_payment_required')

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/pioneer/apis/brain-api.md) · [All operations](https://skmtc.net/pioneer/apis/brain-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/pioneer/brain-api/revisions/31dfe831e079/schema)
