---
title: "Account billing snapshot (plan, cycle, balance, caps, status)"
method: GET
path: "/v1/billing"
tags: ["Usage"]
---

# Account billing snapshot (plan, cycle, balance, caps, status)

`GET /v1/billing`

The billing "wallet/statement" view: current plan, billing cycle,
accrued balance + remaining credits this period, spend caps, and
payment / access status. This is the billing half of the legacy
`/v1/usage-stats` snapshot — the per-product consumption half is metering
and lives on `GET /v1/usage`.

Usage-based (Metronome) accounts get a populated `balance`; legacy Stripe
accounts get `balance: null` plus a deprecated `legacy.limits` block and,
when payment-blocked, `status.openInvoiceUrl` / `status.declineReason`.

## Response `200`

Billing snapshot

- BillingSnapshot — Account billing state — plan, cycle, balance, spend caps, and payment / access status. Returned by `GET /v1/billing`.
  - `billingSystem` 'metronome' | 'stripe'
  - `plan` object
    - `name` string
    - `isUsageBased` boolean
  - `period` object — Current billing cycle. `start`/`end` are resolved for usage-based accounts only.
    - `start` string, date-time, nullable
    - `end` string, date-time, nullable
    - `anchorDay` integer — Day-of-month the cycle resets.
  - `balance` object, nullable — Accrued spend + remaining credits this cycle. `null` for fixed-subscription (Stripe) plans.
    - `accruedThisPeriodCents` integer
    - `creditsRemainingCents` integer
  - `caps` object
    - `xSpendUsedCents` integer
    - `xSpendLimitCents` integer, nullable — Monthly X-API spend cap; null = unlimited.
  - `status` object
    - `hasAccess` boolean
    - `suspended` boolean
    - `suspendedAt` string, date-time, nullable
    - `suspensionReason` string, nullable
    - `openInvoiceUrl` string, nullable — Hosted invoice URL for dunning (Stripe).
    - `declineReason` string, nullable
    - `autoUpgradeEnabled` boolean
  - `legacy` object — Deprecated plan entitlements (Stripe only); absent for usage-based accounts.
    - `limits` object
      - `uploads` integer
      - `profiles` integer

## Other responses

- `401` — Unauthorized
- `404` — Resource not found

---

[API](https://skmtc.net/zernio/apis/zernio-api.md) · [All operations](https://skmtc.net/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zernio/zernio-api/versions/f81ca70ea6b9/schema)
