---
title: "Changes to Create billing checkout"
method: POST
path: "/v1/billing/checkout"
---

# Changes to Create billing checkout

`POST /v1/billing/checkout`

> Every recorded change to this endpoint, newest first.

## Timeline

Changed in 2 of 50 revisions.

- **2026-07-02** `024ff3141fd7` — 4 breaking, 3 info
- **2026-06-05** `3985c6090c91` — 18 breaking, 6 warning, 77 info

## Changes

- **2026-07-02** `024ff3141fd7` — 4 breaking, 3 info
  - the request property `reason` became not nullable
  - the request property `reason` became required
  - removed the required property `checkout/expiresAt` from the response with the `200` status
  - removed the required property `ok` from the response with the `200` status
  - added the new optional request property `target_plan`
  - added the new optional request property `top_up_usd_cents`
  - added the required property `checkout/reason` to the response with the `200` status
- **2026-06-05** `3985c6090c91` — 18 breaking, 6 warning, 77 info
  - the `reason` request property's maxLength was decreased to `200`
  - the response property `checkout_url` became nullable for the status `400`
  - the response property `checkout_url` became nullable for the status `401`
  - the response property `checkout_url` became nullable for the status `429`
  - the response property `checkout_url` became nullable for the status `500`
  - the response property `checkout_url` became optional for the status `400`
  - the response property `checkout_url` became optional for the status `401`
  - the response property `checkout_url` became optional for the status `429`
  - the response property `checkout_url` became optional for the status `500`
  - the `agent_instruction` response property's maxLength was unset from `1000` for the response status `400`
  - the `agent_instruction` response property's maxLength was unset from `1000` for the response status `401`
  - the `agent_instruction` response property's maxLength was unset from `1000` for the response status `429`
  - the `agent_instruction` response property's maxLength was unset from `1000` for the response status `500`
  - the `message` response property's maxLength was unset from `240` for the response status `400`
  - the `message` response property's maxLength was unset from `240` for the response status `401`
  - the `message` response property's maxLength was unset from `240` for the response status `429`
  - the `message` response property's maxLength was unset from `240` for the response status `500`
  - removed the required property `checkout/reason` from the response with the `200` status
  - the optional response header `Retry-After` removed for the status `200`
  - the optional response header `Retry-After` removed for the status `400`
  - the optional response header `Retry-After` removed for the status `401`
  - the optional response header `Retry-After` removed for the status `500`
  - changed the pattern of the request property `reason` from `^[\s\S]{1,512}$` to `^[\s\S]{0,8192}$`
  - removed the request property `target_plan`
  - the request property `reason` became nullable
  - the request property `reason` became optional
  - the `reason` request property's minLength was decreased from `1` to `0`
  - removed the `database_unavailable` enum value from the `code` response property for the response status `400`
  - removed the `database_unavailable` enum value from the `code` response property for the response status `401`
  - removed the `database_unavailable` enum value from the `code` response property for the response status `429`
  - removed the `database_unavailable` enum value from the `code` response property for the response status `500`
  - removed the `invalid_cpu_limit` enum value from the `code` response property for the response status `400`
  - removed the `invalid_cpu_limit` enum value from the `code` response property for the response status `401`
  - removed the `invalid_cpu_limit` enum value from the `code` response property for the response status `429`
  - removed the `invalid_cpu_limit` enum value from the `code` response property for the response status `500`
  - removed the `invalid_health_endpoint` enum value from the `code` response property for the response status `400`
  - removed the `invalid_health_endpoint` enum value from the `code` response property for the response status `401`
  - removed the `invalid_health_endpoint` enum value from the `code` response property for the response status `429`
  - removed the `invalid_health_endpoint` enum value from the `code` response property for the response status `500`
  - removed the `invalid_memory_limit` enum value from the `code` response property for the response status `400`
  - …61 more

---

[Operation](https://skmtc.dev/tovuk/apis/tovuk-api/docs/v1/billing/checkout/post.md) · [API](https://skmtc.dev/tovuk/apis/tovuk-api.md) · [Page](https://skmtc.dev/tovuk/apis/tovuk-api/changes/v1/billing/checkout/post)
