public
POST /v1/public/checkout
Check out as a guest — create the account and place the order.
Autenticación
Este endpoint es público. No requiere credenciales ni organización; es lo que leen nuestro propio sitio de marketing y los motores de respuesta de IA.
Este endpoint no requiere ningún id de organización. Su clave ya identifica la organización a la que pertenece, y la respuesta está delimitada a ella.
Pruébalo
Reemplaza cualquier elemento entre corchetes angulares por tus propios valores, y el marcador de posición key con una clave de tu panel de control.
curl -X POST https://api.zinndigital.com/v1/public/checkout \
-H "Content-Type: application/json" \
-d '{ "cart_token": <string>, "email": <string>, "billing": <PublicBilling> }'¿Has iniciado sesión? La consola de la API en tu panel de control rellena el ID de tu organización real y tu propia clave, y ejecuta la solicitud contra la API en vivo para que puedas ver la respuesta real. Abre este endpoint en la consola de la API
Detalles
Converts an anonymous cart into a real tenant: it **creates the organization and the user at this point**, captures the billing details, and places an immutable order. Availability is **re-verified live** against the registrar first, so a name taken while the customer was typing aborts the whole call (`409`) with nothing created. Tax is computed against `billing.country` (§2.8). **It never takes a card, and what it does next depends entirely on the total.** The response is `{order_id, org_id, next}`: - `"payment"` — the order has something to pay and is left `pending_payment`. Taking payment is the authenticated step that follows, because a brand-new organization has no payment mandate on file. - `"done"` — the total is **zero** (a free trial, a zero-priced plan, a 100% discount), so the order is **settled and provisioned inside this call**: a zero `Payment` is recorded, the order becomes `paid`, and the fulfilment workflow starts. No gateway is contacted — a brand-new organization has none to resolve, and there is nothing to charge. Owner ruling 2026-08-09: *a free trial takes no card and starts immediately.* ⛔ Between that ruling and 2026-08-12 this endpoint answered `"done"` and performed **none** of it — the order stayed `pending_payment` with no payment, no fulfilment and no workflow, so the customer was told their trial had started and no site was ever built. Anything that keys off `next` should key off it alone; the order state now follows it. **Idempotent on the cart.** A double-submit — concurrent or an hour later — produces one organization, one user and one order; the repeat returns the same ids. There is no `Idempotency-Key` header to send: the cart token *is* the key. If the email already has an account the call is refused with `409` and nothing is created: the purchase must be completed signed in, so that an unauthenticated request can never attach an order to somebody else's tenant. The cart stays open.
Cuerpo de la solicitud
| Nombre | Tipo | Obligatorio | ¿Qué es esto? |
|---|---|---|---|
cart_token | string | Sí | — |
email | string | Sí | — |
password | string | No | Optional. Omit it and the account is created without a credential, so the customer sets one through the identity provider's own verified flow — which is the safer default, becau… |
name | string | No | — |
locale | string | No | — |
billing | PublicBilling | Sí | The buyer block. Only `country` is required, because tax is country- and currency-aware and an order with no jurisdiction has no determinable tax; the rest can be completed late… |
attribution | object | No | — |
Respuesta
| Nombre | Tipo | Obligatorio | ¿Qué es esto? |
|---|---|---|---|
order_id | Uuid | Sí | UUIDv7 identifier — sortable by creation time (docs/02 §8). |
org_id | Uuid | Sí | The organization created by this call — the customer's new tenant. |
next | string<payment, done> | Sí | What the client should do next. `payment` — the order exists and is `pending_payment`; nothing has been charged. `done` — the order totals **zero** and there is nothing to charg… |
Errores que este endpoint puede devolver
404 · 409 · 422 · 429 · 503