How to Sell Domains in Your App (Without Becoming a Registrar)

To sell domains inside your app, you have three real routes: send users away with a registrar affiliate link, become a reseller on a wholesale platform, or call a buy-domain API that registers the domain with your user as the legal owner. The API route is the only one where you keep the checkout, set the price, and never touch registrar plumbing.
Which route you pick is one of those decisions where the architecture choice and the business choice are the same choice. So this post covers both: what each route costs to run, and what each one actually pays.
Why sell domains at all
If your product publishes anything at a URL (a storefront, a portfolio, a booking page, an AI-built mini-app), your users eventually ask two questions, in order. First: "can I use my own domain?" Then: "can I just buy one here?"
Every user you send to GoDaddy mid-onboarding is a user who might not come back today. Some never come back at all. Selling the domain inside your flow deletes the most confusing step of activation (DNS setup at a third-party registrar) and turns a support category into a revenue line.
We wrote about the user-side flow in how to let users buy domains inside your SaaS. This one is about the business side.
The three routes, compared
| Route | Who owns checkout | Who sets the price | Your revenue | Upfront cost | Ops burden |
|---|---|---|---|---|---|
| Affiliate links | The registrar | The registrar | One-time commission, program-dependent | $0 | None, but the user leaves your app |
| Reseller platform (OpenSRS, ResellerClub, Dynadot, NameSilo) | You | You | Retail minus wholesale | Pre-funded deposit, sometimes minimums | High: billing, ICANN compliance, renewals, support |
| Buy-domain API (Domainee, Entri Sell) | You | You (Domainee) / mostly the vendor (Entri Sell) | Retail minus wholesale minus flat fee (Domainee); commission (Entri Sell) | $0 | Low: the API holds the registrar account |
Route 1: affiliate links
The zero-effort option. You add "need a domain? get one at Namecheap" with your referral code. Commission programs vary, most pay once on the first purchase, and the rates move whenever the program feels like it.
The bigger cost is invisible. Your user is now on a registrar's website being upsold hosting and email, and the DNS setup that follows is the part they were always going to get wrong. Affiliate links are fine for a docs page. They are not "selling domains in your app". Your app is where the user is NOT.
Route 2: become a reseller
The classic answer, built for a different decade. Platforms like OpenSRS (Tucows), ResellerClub, NameSilo and Dynadot give you wholesale pricing against a pre-funded account balance, and you keep the full spread between wholesale and whatever you charge.
What the spread buys you is a second job. You are now the registrant-facing party for ICANN purposes: WHOIS accuracy, the verification-email flow, renewal notices on a compliance-mandated schedule, transfer-out requests, chargebacks on a product you cannot repossess. The APIs show their cPanel-era roots too. XML-over-GET is alive and well, and IP allowlisting breaks the first time your platform autoscales.
If domains ARE your product, this is the right route. If domains are a feature of your product, it rarely is.
Route 3: a buy-domain API
The 2026 answer. You call a REST API, the vendor holds the registrar relationship, the domain gets registered with your end-user as the legal owner of record, and you keep your own checkout and your own margin.
Domainee is a custom domains API for SaaS with a native MCP server, with 50 domains and 100 GB free. The Buy-a-Domain API prices every registration at wholesale plus a flat $1. A .com lands around $10 all-in, a .io around $31, a .ai around $81. You quote, add your markup, charge your user, pass the total through. No monthly minimum, no reseller contract, and your user never sees the upstream registrar because they never have an account there.
The other name in this bucket is Entri Sell, and the model is different: Entri runs more of the purchase and pays you a commission on it, on top of the Entri platform subscription, which starts at $249/mo with no free tier. The commission rate is not published. That matters, because a commission you cannot price is a margin you cannot forecast. If you already pay for Entri Connect and want a hands-off add-on, it is a reasonable fit. If you want to own the price and the checkout, it is not the same product.
The margin math
Take the standard case: your user wants janesbakery.com and you charge $15 for year one.
| Route | Your take on a $15 .com | You set the price? | Notes |
|---|---|---|---|
| Affiliate link | A few dollars, once | No | Program-dependent, first purchase only, user left your app to complete it |
| Reseller platform | Roughly $4 to $6 | Yes | Full spread, but you carry deposits, compliance and support |
| Domainee Buy-a-Domain API | Roughly $4 to $5 | Yes | Wholesale (about $9 to $10) plus $1 flat, everything after that is yours |
| Entri Sell | Unpublished commission | Mostly no | Paid on top of a $249/mo platform subscription |
Notice that reseller platforms and Domainee net out surprisingly close on a single .com. The difference is what you had to build and carry to earn it. On the reseller route the $4 comes with a compliance program. On the API route it comes with two HTTP calls.
And the margin is not really the point. The point is the activation step you deleted. A user who buys the domain inside your flow is live on their own URL minutes later, with DNS and SSL already correct, because the same call that registers the domain can connect it.
Shipping it: the whole integration
Two calls. Quote, then buy.
# 1) Quote the price (no charge)
curl https://api.domainee.dev/v1/domain-purchases/check \
--get --data-urlencode 'hostname=janesbakery.com' \
-H "Authorization: Bearer $DOMAINEE_API_KEY"
The quote returns wholesale, the $1 fee, and the total in cents. Add your markup, charge your user with your existing payment stack, then:
# 2) Buy + auto-connect to your app in one call
curl -X POST https://api.domainee.dev/v1/domain-purchases \
-H "Authorization: Bearer $DOMAINEE_API_KEY" \
-d '{
"hostname": "janesbakery.com",
"registrant": { "firstName": "Jane", "lastName": "Smith", "email": "jane@bakery.example", "phone": "+1.5551234567", "address1": "123 Main St", "city": "Portland", "stateOrProvince": "OR", "postalCode": "97201", "country": "US" },
"customerReference": "user_jane_42",
"autoConnect": { "originUrl": "https://janesbakery.acmesites.app" }
}'
customerReference tags the domain to your user, so "show Jane her domains" is a filtered GET instead of a join table you maintain forever. autoConnect registers the domain, provisions it on the edge with automatic SSL, and sets the DNS at the registrar in the same transaction. If any step fails, the whole purchase refunds automatically.
For availability checks before the quote (search-as-you-type in your buy flow), the free domain availability checker API covers it without burning authenticated quota. The full endpoint reference lives at /docs/api/domain-purchases, and if you want the whole field compared, that's the best buy-a-domain API for SaaS.
What about renewals, DNS and transfers?
Selling the domain is the first transaction of many. Whoever you pick has to answer for year two.
Renewals on Domainee are wholesale plus $1 again, charged per renewal, and you decide what your user pays. Reseller platforms leave renewal billing and dunning entirely to you, which is where a lot of reseller margin quietly goes to die.
DNS management comes up fast, because your user will want an MX record eventually. Domainee exposes DNS and nameserver endpoints so you can build that screen into your own dashboard. The MX record glossary entry helps if you are building the UI and want to explain record types to users.
Transfers out: users own their domains, so make leaving free. Domainee's EPP-code endpoint costs nothing. A route that charges "departure fees" is borrowing your reputation to make them.
FAQ
How do I sell domains in my app without becoming a registrar?
Use a buy-domain API. The vendor holds the registrar relationship, your user becomes the legal registrant, and your app keeps the checkout. You need no ICANN accreditation, no reseller contract and no pre-funded deposit.
What is a domain reseller API?
An API that gives you wholesale domain pricing to resell under your own brand. Classic reseller APIs (OpenSRS, ResellerClub, NameSilo, Dynadot) assume you run billing, compliance and support yourself. Modern buy-domain APIs move that burden to the vendor and charge a flat fee or commission instead.
What is the difference between Entri Sell and Domainee?
Entri Sell pays you an unpublished commission on purchases and runs on top of Entri's platform subscription, which starts at $249/mo. Domainee charges wholesale plus a flat $1 per registration with no subscription, and you set your own retail price. The deeper comparison is in our Entri alternative breakdown.
How much margin is there in selling domains?
On a $15 .com you net roughly $4 to $5 through a flat-fee API after wholesale. The margin scales with your markup and your TLD mix (a .ai carries far more absolute margin than a .com). Most teams treat the margin as a bonus. The activation win is the reason to ship it.
Can the purchased domain connect to my app automatically?
Yes. Pass autoConnect with your origin URL on the buy call and the domain is registered, provisioned with SSL and pointed at your app in one transaction. Your user never touches DNS. That connection layer is the same custom domains API that handles bring-your-own domains.