---
title: "Get Billing Overview"
method: GET
path: "/v1/billing"
tags: ["billing"]
---

# Get Billing Overview

`GET /v1/billing`

## Request

- Base URL: `https://api.elaan.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.elaan.io/v1/billing`
- Auth: none declared

## Headers

- `authorization` string, nullable

## Response `200`

Successful Response

- BillingOverviewResponse
  - `plan` string, required
  - `status` string, required
  - `billing_period` string, nullable, required
  - `current_period_end` string, date-time, nullable, required
  - `limits` PlanLimitsResponse, required
    - `included_active_contacts` integer, nullable, required
    - `max_brands` integer, nullable, required
  - `has_billing_account` boolean, required
  - `checkout` CheckoutConfigResponse, required: Everything the console needs to open the Paddle.js overlay checkout: the client-side token (public by design — it can only open checkouts), the environment flag, the tenant reference to stamp into `customData`, and the price id per self-serve tier (`"pro:monthly"` → `pri_…`). `tenant_ref` is *signed* rather than a raw tenant id: `customData` is set in the browser, so an unsigned id would be a claim anyone could make about any tenant. Minted here because this endpoint is already authenticated and tenant-scoped — a caller can only ever get a reference to their own tenant.
    - `client_token` string, required
    - `environment` string, required
    - `tenant_ref` string, required
    - `prices` object, required

## Other responses

- `422`: Validation Error

---

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