---
title: "Purchase pass"
method: POST
path: "/v1/purchase_pass"
tags: ["billing"]
---

# Purchase pass

`POST /v1/purchase_pass`

## Request

- Base URL: `https://api.trylitos.com`
- URL: `https://api.trylitos.com/v1/purchase_pass`
- Auth: OAuth 2 (authorization code, authorization URL `https://api.trylitos.com/oauth/authorize`, token URL `https://api.trylitos.com/oauth/token`, scopes: `billing:write`)

Buy a Litos+ pass with a payment the student approved in this conversation: the payment method or card token (pm_... or tok_...) of a one-time Stripe Link card, or a Stripe shared payment token (spt_...) where the seller account supports it. Charges the exact pass price once and grants access immediately; a pass bought while one is active starts when the current one ends. Retry with the same idempotency_key after a timeout; it never charges twice.

## Request body

- object
  - `plan_id` 'litos_plus_week' | 'litos_plus_month' | 'litos_plus_quarter', required
  - `idempotency_key` string, uuid, required: A UUID chosen once per purchase attempt
  - `payment` object, required
    - `provider` 'stripe'
    - `token` string: spt_... shared payment token, or tok_... card token
    - `payment_method` string: pm_... payment method

## Response `200`

The operation's result. Shapes mirror the Litos dashboard routes they proxy.

- object

## Other responses

- `4XX`: A refusal, carrying `error` (a sentence) and usually `code`.

---

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