---
title: "Start a checkout"
method: POST
path: "/v1/billing/checkout"
tags: ["Billing"]
---

# Start a checkout

`POST /v1/billing/checkout`

## Request

- Base URL: `https://api.signvoy.com`
- URL: `https://api.signvoy.com/v1/billing/checkout`
- Auth: one of:
  - API key in header `X-Workspace-Id`
  - HTTP bearer

Creates a Stripe-hosted Checkout Session for the chosen plan and returns its URL. Redirect the browser to it with a full-page navigation. Pass `seats` to buy more than the plan bundles in the same transaction. Seats already in use beyond what the plan bundles are included in the first invoice, so nobody loses access on upgrade.

## Request body

- SelectPlanDto
  - `plan` 'pro' | 'team', required: Plan to subscribe to or move to
  - `interval` 'month' | 'year', required: Billing interval. Annual is billed once for twelve months at a 20% discount.
  - `seats` number: Total seats to buy, including the ones the plan already bundles — the same number the dashboard displays. Omit it to buy exactly what the plan bundles, or what the account already occupies if that is more. Values below the seats currently in use are raised to that floor.

## Response `200`

Checkout URL

- BillingRedirectDto
  - `url` string, required: Stripe-hosted URL to send the browser to

## Other responses

- `403`: Not the workspace owner

---

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