Skip to content

Create a Stripe Checkout Session for the requested plan tier

POST
/api/v1/billing/checkout
curl --request POST \
--url https://api.ultimateteam.ai/api/v1/billing/checkout \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <X-API-Key>' \
--data '{ "plan_tier": "example", "return_to": "example", "tenant_id": "example" }'

Return a hosted Stripe Checkout URL for the requested plan tier.

Validation:

  • plan_tier must be one of :data:PUBLIC_PLAN_NAMES.
  • tenant_id MUST match the authenticated user’s tenant – a cross-tenant request is rejected 403.

Enterprise returns the existing sales email destination without a Stripe call.

Media typeapplication/json
CheckoutRequest

POST /checkout request body.

object
plan_tier
required
Plan Tier

Public plan name – one of [‘business’, ‘enterprise’, ‘pro’, ‘professional’, ‘starter’]

string
return_to
Any of:
string
<= 2048 characters
tenant_id
required
Tenant Id

Target tenant UUID (must match auth context).

string
Examplegenerated
{
"plan_tier": "example",
"return_to": "example",
"tenant_id": "example"
}

Successful Response

Media typeapplication/json
CheckoutResponse

POST /checkout response body.

For Enterprise plans, checkout_url is the sales email destination and session_id is None; no payment session is created.

object
checkout_url
required
Checkout Url
string
session_id
Any of:
string
Examplegenerated
{
"checkout_url": "example",
"session_id": "example"
}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
ctx
Context
object
input
Input
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
Examplegenerated
{
"detail": [
{
"ctx": {},
"input": "example",
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
]
}