---
title: "Checkout"
method: POST
path: "/api/v1/billing/checkout"
tags: ["billing"]
---

# Checkout

`POST /api/v1/billing/checkout`

## Request

- Base URL: `https://api.nudgelink.co` (the document declares no server; this is the origin it was published from)
- URL: `https://api.nudgelink.co/api/v1/billing/checkout`
- Auth: HTTP bearer

Create a Stripe Checkout Session for the chosen plan and return its
hosted ``url``. The frontend redirects the browser to it. The subscription
is only persisted once Stripe fires ``checkout.session.completed`` to the
webhook below — we never trust the browser redirect alone.

## Request body

- StartSubscriptionRequest
  - `plan` string, required

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

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