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.