---
title: "Start a card checkout for a data or smart-money plan; returns a Stripe payment page URL"
method: POST
path: "/v1/public/checkout"
tags: ["purchase"]
---

# Start a card checkout for a data or smart-money plan; returns a Stripe payment page URL

`POST /v1/public/checkout`

## Request

- Base URL: `https://outcometick.com`
- URL: `https://outcometick.com/v1/public/checkout`
- Auth: none required

Spends money or credits. An agent must show the quote to the user and get explicit approval before calling this. A person completes payment on the returned page; the key is shown on the return page and emailed. Pass apiKey to extend that key's subscription instead of getting a new one.

## Request body

- object
  - `planId` string, required
  - `kind` 'sub' | 'pass': sub renews monthly; pass is one-time
  - `locale` 'en' | 'zh': Decides the currency (zh pays in CNY) and the return page
  - `apiKey` string: Existing key to top up (proof of ownership)

## Response `200`

OK

- CheckoutUrl
  - `url` string, uri, required: Stripe-hosted payment page; a person opens it

## Other responses

- `400`: Bad request or key for another product
- `401`: apiKey not recognised
- `404`: Plan not available
- `429`: Rate limited; retry after the Retry-After header
- `503`: Temporarily unavailable; retry

---

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