---
title: "Billing summary for the caller's billing account"
method: GET
path: "/v2/billing"
tags: ["Billing"]
---

# Billing summary for the caller's billing account

`GET /v2/billing`

## Request

- Base URL: `https://api.infolang.ai`
- URL: `https://api.infolang.ai/v2/billing`
- Auth: HTTP bearer

The caller IS the billing account, so this is exact: plan and subscription status both come from their `profiles` row and the invoices from Stripe. Quota pools at the account, so the plan that sizes the pool lives on the account.

Still prefer `GET /v2/workspaces/{id}/billing` when you know which workspace you are rendering — it answers the same question about a named workspace's owner.

`self_serve_checkout` reports whether this deployment can take a payment RIGHT NOW, at the price the pricing page shows. It is `true` only when a payment processor is wired AND its configured prices reconcile with the published catalog — amount, currency, and monthly interval. When it is `false` the checkout and portal routes answer `503 not_configured`, and a client should hide Upgrade / Manage billing and offer a contact route instead.

It is deliberately NOT just "is Stripe configured": a price edited in the Stripe dashboard takes the button away rather than breaking it, which is the difference between a contact route and a failed checkout.

## Response `200`

Plan, status, and invoice history

- object
  - `plan` string, required
  - `billing_status` 'active' | 'past_due' | 'suspended' | 'free', required
  - `invoices` object[], required
    - `id` string, required
    - `date` string, required
    - `amount_usd` number, required
    - `status` string, required
    - `url` string
  - `self_serve_checkout` boolean, required
  - `has_active_subscription` boolean, required
  - `cancel_at_period_end` boolean, required
  - `current_period_end` string, nullable, required

## Other responses

- `401`: Missing or invalid session token
- `403`: Caller lacks a grant on the workspace, or role too low. Or `lane_not_supported` — an `il_live_`/`il_test_`/`il_oauth_` credential, though valid, was presented to a route that accepts the session lane only
- `500`: internal_error — unexpected failure (e.g. billing backend misconfigured or unreachable)

---

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