organizations

Confirm Seat Checkout

Reconcile a returning buyer against Stripe without waiting for the webhook.

checkout.session.completed remains the authority, and this endpoint applies exactly the same idempotent function it does. It exists because a customer who has just paid must not be staring at an unprovisioned org while a delivery is slow, retrying, or - as happened here on 2026-08-29 - pointed somewhere that could never accept it. Whichever path arrives first wins and the other becomes a no-op.

post/api/v1/orgs/{org_id}/checkout/confirm

Request

  • Base URL: https://app.ctlsurf.com (the document declares no server; this is the origin it was published from)
  • URL: https://app.ctlsurf.com/api/v1/orgs/{org_id}/checkout/confirm
  • Auth: HTTP bearer

Path parameters

org_idstring uuid required

Request body

session_idstring required

Response

Successful Response

idstring uuid required
namestring required
planstring required
owner_user_idstring uuid required
hard_cap_centsinteger nullable
subscription_statusstring nullable
seats_usedinteger required
seat_limitinteger required
seats_purchasedinteger required
seats_scheduledinteger nullable
seat_price_usdnumber nullable
billing_enabledboolean
max_purchasable_seatsinteger required
included_minutes_per_seatinteger required
billing_modestring
allow_external_skill_sharingboolean
created_atstring date-time required

Changes

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