TEASEDocs
ProductsLinkDomains

Buy a domain in the panel

Search, pay, and get a domain that's already live — no registrar account, no DNS to configure.

Buying goes through us end to end: we register the domain with our registrar, point its DNS at our edge, and hand it into your panel already active — the same Domain row a connected domain gets, seeded with the same default audience, so nothing downstream (buttons, backgrounds) treats it differently.

Ordering is gated by buy_domain_enabled. While it's off, search and pricing still work so the feature stays discoverable, but placing an order returns 503 buy_domain_disabled — "Domain purchase is coming soon."

Search and order

POST /api/admin/domains/buy/search with {query, tlds?} checks availability and price across a curated set of TLDs (.com .net .org .io .link .co .xyz by default). Price is the registrar's cost marked up (price = round(cost × factor) + flat, never below cost).

POST /api/admin/domains/buy/order with {domain} creates a NOWPayments invoice for the marked-up price and returns a checkout_url. Nothing is registered yet — this step only takes the order and the payment.

  • 409 domain_unavailable — someone else registered it since your search.
  • 429 too_many_open_orders — you already have 10 unpaid quoted orders; pay or let them go before starting another.

GET /api/admin/domains/buy lists your purchases and their status.

What happens after you pay

A confirmed payment runs the activation pipeline in order: paid → re-check availability one last time → registering → register with the registrar → dns_set (DNS pointed at our edge) → active — at which point the domain appears in your panel exactly like a connected one.

If registration fails at any step (the name got taken between order and payment, a registrar error), the purchase lands in register_failed with refund_due: true — the money is never silently kept.

Activation is idempotent on the payment reference, so a retried payment notification never double-registers or double-charges.

What's next

Already own a domain you'd rather use? See Connect your own domain. Don't want to buy anything yet? See Get a free link.

On this page