billing
billing

Create Checkout

Create a Stripe Checkout session.

B-WEBHOOKS (R3 F2, F6) hardened auth posture:

  • The api_key_hash and email fields in the request body are rejected (400). A legacy client must upgrade.
  • The webhook credits the SERVER-RESOLVED subject from one of: * Authorization: Bearer <api_key> / X-API-Key → key's hash * X-Tenant-Id (+ X-User-Id) → tenant * body.checkout_token (server-minted, signed) → bound subject
  • Without any of those, /checkout returns 401. The anonymous topup flow must first call POST /v2/billing/checkout_token.
post/v2/billing/checkout

Request

  • Base URL: https://api.etymolt.com
  • URL: https://api.etymolt.com/v2/billing/checkout
  • Auth: none declared

Headers

X-Tenant-Idstring nullable
X-User-Idstring nullable
Authorizationstring nullable
X-API-Keystring nullable

Request body

skustring required
success_urlstring nullable
cancel_urlstring nullable
quantityinteger
api_key_hashstring nullable

DEPRECATED — rejected since 2026-05-17 (R3 F2/F6). The webhook credits the server-resolved identity from auth or from the checkout_token, never from the request body.

emailstring nullable

DEPRECATED — rejected since 2026-05-17 (R3 F2/F6). If you need to credit a specific email, mint a checkout_token via POST /v2/billing/checkout_token first.

checkout_tokenstring nullable

One-time signed token binding (subject, sku, exp). Minted by POST /v2/billing/checkout_token. Required when the caller has neither tenant auth nor a Bearer API key.

client_reference_idstring nullable

Response

Successful Response

urlstring required
session_idstring required
skustring required
stripe_price_idstring required
modestring required

Changes

No recorded changes to this operation across all 1 revision of this API.