---
title: "Billing Summary"
method: GET
path: "/api/billing/summary"
---

# Billing Summary

`GET /api/billing/summary`

## Request

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

What the Plan section shows (C9 round 3): the subscription's state and
the last invoices, read live from Stripe. Cookie-only like the portal —
invoices carry a name and an address. An account that never checked out
gets an empty summary, not an error.

## Response `200`

Successful Response

- BillingSummary: The account page's Plan section (C9 round 3), read live from Stripe — no copy is kept here, so it cannot disagree with what Stripe bills.
  - `subscription` SubscriptionInfo
    - `plan` string, nullable
    - `status` string, required
    - `interval` string, nullable
    - `amount` integer, nullable
    - `currency` string, nullable
    - `current_period_end` integer, nullable
    - `cancel_at_period_end` boolean
    - `ends_at` integer, nullable
  - `invoices` InvoiceInfo[]
    - `id` string, required
    - `number` string, nullable
    - `created` integer, required
    - `total` integer, required
    - `currency` string, required
    - `status` string, nullable
    - `pdf_url` string, nullable
    - `hosted_url` string, nullable

---

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