---
title: "Start an account-bound Stripe Checkout Session"
method: POST
path: "/api/v1/billing/checkout"
tags: ["Billing"]
---

# Start an account-bound Stripe Checkout Session

`POST /api/v1/billing/checkout`

## Request

- Base URL: `https://fonteum.com`
- URL: `https://fonteum.com/api/v1/billing/checkout`
- Auth: API key in cookie `__fnt_dev`

Browser endpoint. Requires an active Fonteum developer-session cookie, resolves the signed-in developer account's Stripe Customer, and creates a hosted Checkout Session bound with `client_reference_id` and account/plan metadata. The returned Stripe URL ultimately redirects to `/checkout/success?session_id={CHECKOUT_SESSION_ID}`. Self-serve products are paid Line-B API tiers and the one-time $129 signed certificate; recurring Line-A monitoring is not published or accepted until its fulfillment exists. This endpoint is not authenticated by the Bearer API key.

## Request body

- object
  - `planId` 'a-certificate' | 'b-builder' | 'b-scale' | 'b-business', required
  - `interval` 'month' | 'year' | 'once', required

## Response `200`

Hosted Stripe Checkout URL. Response is `no-store`.

- object
  - `url` string, uri, required

## Other responses

- `400`: Invalid JSON, plan, interval, or non-self-serve selection.
- `401`: No active developer account session.
- `409`: The account already has a subscription or another subscription Checkout reservation is in progress.
- `429`: Checkout burst limit exceeded.
- `503`: Checkout is disabled until both Stripe secrets exist; certificate Checkout also requires the established signing key.

---

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