public
POST /v1/public/checkout
Check out as a guest — create the account and place the order.
Doğrulama
Bu nöqtə açıqdır. O, heç bir etimadnamə və təşkilat tələb etmir — bu, öz marketinq saytımızın və süni intellekt cavab mühərriklərimizin oxuduğu hissədir.
Bu endpoint heç bir təşkilat ID-si tələb etmir. Sizin açarınız artıq aid olduğu təşkilatı müəyyən edir və cavab həmin təşkilat üçün məhdudlaşdırılır.
Sınaqdan keçir
Bucaqlı mötərizələrdə olan hór şeyi öz qiymətlərinizlə, açar yertutucusunu isə idarə panelinizdən bir açarla əvəz edin.
curl -X POST https://api.zinndigital.com/v1/public/checkout \
-H "Content-Type: application/json" \
-d '{ "cart_token": <string>, "email": <string>, "billing": <PublicBilling> }'Sistemə daxil olmusunuz? İdarə panelinizdəki API konsolu real təşkilatınızın identifikatorunu və öz açarınızı avtomatik doldurur, sorğunu canlı API-yə qarşı icra edir ki, siz faktiki cavabı görə biləsiniz. Bu son nöqtəni API konsolunda açın
Təfərrüatlar
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.
Sorğu gövdəsi
| Ad | Tip | Tələb olunur | Nədir |
|---|---|---|---|
cart_token | string | Bəli | — |
email | string | Bəli | — |
password | string | Xeyr | 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 | Xeyr | — |
locale | string | Xeyr | — |
billing | PublicBilling | Bəli | 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 | Xeyr | — |
Cavab
| Ad | Tip | Tələb olunur | Nədir |
|---|---|---|---|
order_id | Uuid | Bəli | UUIDv7 identifier — sortable by creation time (docs/02 §8). |
org_id | Uuid | Bəli | The organization created by this call — the customer's new tenant. |
next | string<payment, done> | Bəli | 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… |
Bu son nöqtənin qaytara biləcəyi xətalar
404 · 409 · 422 · 429 · 503