---
title: "Billing Status"
method: GET
path: "/api/v1/billing/status"
tags: ["billing"]
---

# Billing Status

`GET /api/v1/billing/status`

## Request

- Base URL: `https://api.badgeia.com`
- URL: `https://api.badgeia.com/api/v1/billing/status`
- Auth: none declared

Public — does NOT honour ``require_billing_enabled``.

Used by the frontend to decide whether to render the upgrade flow
(BILLING_ENABLED=true) or the "Pro — coming soon · sign up for early
access" panel (BILLING_ENABLED=false). Anonymous and authenticated
callers both need this — the /pricing page renders for anon visitors
and has to know what to show before there's a session.

## Response `200`

Successful Response

- BillingStatusResponse: Public flag surface — drives the /pricing + /settings UI branch. Unauthenticated by design. The flag is not user data; exposing it lets the marketing/pricing page (which serves anonymous visitors) make the same UI decision the authenticated dashboard does without two code paths. SWR on the frontend caches with `revalidateOnFocus` so a flag flip is picked up within seconds without a forced reload.
  - `enabled` boolean, required
  - `checkout_ready` boolean
  - `annual_checkout_ready` boolean
  - `team_checkout_ready` boolean
  - `mode` 'live' | 'test', nullable

---

[API](https://skmtc.dev/badgeia/apis/badge.md) · [All operations](https://skmtc.dev/badgeia/apis/badge/llms.txt) · [OpenAPI document](https://skmtc.dev/badgeia/apis/badge/revisions/7e7f7fee8b77?raw)
