---
title: "Create Checkout"
method: POST
path: "/api/billing/checkout"
---

# Create Checkout

`POST /api/billing/checkout`

## 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/checkout`
- Auth: none declared

Start a hosted Stripe Checkout for a plan.

Cookie-only (`require_session_user`), like delete-account and the handle
move: this attaches a payment method to the account, and an API token —
which lives in an agent's config file — must not be able to buy anything.

## Request body

- CheckoutRequest: What to buy (C6a). The plan is checked against `plans.PLANS` and the pair against the configured prices at the route — this schema only pins the shape, so adding a tier needs no change here.
  - `plan` string
  - `interval` 'month' | 'year'

## Response `200`

Successful Response

- BillingSession: A hosted Stripe page the browser is sent to — checkout or portal.
  - `url` string, required

## Other responses

- `422`: Validation Error

---

[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)
