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

# Checkout

`POST /v1/billing/checkout`

## Request

- Base URL: `https://api.vicem.ai`
- URL: `https://api.vicem.ai/v1/billing/checkout`
- Auth: HTTP bearer

## Request body

- CheckoutRequest
  - `plan` 'vicem' | 'vicem_plus' | 'vicem_byo' | 'vicem_plus_byo', required
  - `interval` 'month' | 'year'
  - `from` 'billing' | 'onboarding'
  - `warm` boolean
  - `ui` 'hosted' | 'elements'

## Response `200`

OK

- CheckoutResponse
  - `ui` 'hosted' | 'elements'
  - `url` string, uri, required
  - `sessionRef` string
  - `started` true
  - `clientSecret` string
  - `publishableKey` string
  - `text` object
    - `lang` string, required
    - `submit` string, required
    - `afterSubmit` string, required
  - `expiresAt` string, date-time

## Other responses

- `400`: Invalid request (body not JSON, or schema validation failed).
- `401`: Missing, expired or invalid bearer token.
- `413`: Body over the limit (64 KB; 512 KB for contact import).
- `500`: Unexpected server error (reported to Sentry).

---

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