---
title: "Start a checkout for a paid plan"
method: POST
path: "/api/dodo/checkout"
tags: ["Internal"]
---

# Start a checkout for a paid plan

`POST /api/dodo/checkout`

## Request

- Base URL: `https://api.volanea.com`
- URL: `https://api.volanea.com/api/dodo/checkout`
- Auth: HTTP bearer

Creates a Dodo-hosted checkout session for the given plan and returns its URL. The plan resolves to a Dodo product server-side. The plan flips only when the subscription webhook confirms payment. Hosted offering only — 409 when Dodo isn't configured.

## Request body

- object
  - `plan` 'starter' | 'growth' | 'scale', required: Enterprise is contact-us only.
  - `email` string, email: Optional — pre-fills the hosted checkout's customer field.
  - `name` string

## Response `200`

The checkout session to open.

- object
  - `checkout_url` string, required: Send the browser here.
  - `plan` 'starter' | 'growth' | 'scale', required

## Other responses

- `401`: Missing or invalid API key.
- `409`: Billing disabled, or the project already has an active subscription (manage it from the portal).
- `422`: Request validation failed (code `validation_error`, 422).

---

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