Sell through ours, from yours.
A public API, a TypeScript SDK, drop-in widgets and signed webhooks. Any website, on any host, can sell your plans with our checkout and client portal, in your design.
<!-- one script, then the widgets you want --> <script src="https://cdn.teculiar.net/embed/latest/teculiar.js" data-key="pk_live_…" data-base-url="https://yourdomain.com"></script> <teculiar-pricing-table></teculiar-pricing-table> <teculiar-checkout product="hosting-pro"></teculiar-checkout>
const tec = Teculiar.init({ publicKey: "pk_live_…" }); const plans = await tec.storefront.products(); tec.cart.add({ productId, productPriceId, quantity: 1 }); const quote = await tec.orders.preview({ items: tec.cart.toOrderItems() }); // the server prices the order; the browser never decides a total
# anonymous read with a publishable key curl https://yourdomain.com/api/v1/public/storefront/products \ -H "Teculiar-Key: pk_live_…" # every event is signed and retried invoice.paid · service.provisioned · domain.renewed
One script tag. Then the widgets you want.
The core is about 20 KB; each widget group loads only when its first widget appears.
Plain static pages. Teculiar's script does the selling. Yours can too.
<!-- one script, then the widgets you want --> <script src="https://cdn.teculiar.net/embed/latest/teculiar.js" data-key="pk_live_…" data-base-url="https://yourdomain.com"></script> <teculiar-pricing-table></teculiar-pricing-table> <teculiar-checkout product="hosting-pro"></teculiar-checkout>
const tec = Teculiar.init({ publicKey: "pk_live_…" }); const plans = await tec.storefront.products(); tec.cart.add({ productId, productPriceId, quantity: 1 }); const quote = await tec.orders.preview({ items: tec.cart.toOrderItems() }); // the server prices the order; the browser never decides a total
# anonymous read with a publishable key curl https://yourdomain.com/api/v1/public/storefront/products \ -H "Teculiar-Key: pk_live_…" # every event is signed and retried invoice.paid · service.provisioned · domain.renewed
Catalogue widgets live in your page. Money lives on ours.
Widgets that only show your catalogue run inside your page, sealed from its CSS. Widgets that hold a login, an invoice or a payment run in a frame on our address, so no script on your page can read them.
Your design, not ours.
Style the catalogue widgets with CSS variables and named parts. The frame widgets take the look you set under Embed appearance (colours, corners, font, density, light or dark, logo), served ready-styled. A saved setting always wins over a page, so nobody can restyle your checkout into something misleading.
78 public operations, described in one OpenAPI file.
Public keys (pk_) are safe in page source and work only from the websites you list. Secret keys (sk_) stay on your server. The TypeScript SDK wraps the same calls.
Build it yourself
42 events, signed and retried.
Orders, invoices, payments, services, domains, tickets, customers, content and settings. Every delivery is signed, so your endpoint can prove it came from us.
Get your keys in your own admin.
Every plan includes the API, the SDK and the widgets. Keys live under Admin → Settings → API keys.