---
title: "Buy a domain with a machine payment (no account)"
method: POST
path: "/domains/buy/mpp"
---

# Buy a domain with a machine payment (no account)

`POST /domains/buy/mpp`

## Request

- Base URL: `https://namemy.app/api/v1`
- URL: `https://namemy.app/api/v1/domains/buy/mpp`
- Auth: none required

Buy a domain with no account, API key or browser, paid with Stripe
machine payments (MPP). Call once without credentials to get a 402
`WWW-Authenticate: Payment` challenge for the final first-year price,
then retry the same request with `Authorization: Payment <credential>`
(for example a Link shared payment token). The domain is registered
for one year to `contact`, owned by `email` (default `contact.email`),
who is emailed a link to claim the account.

The price is always the server's quote; a body cannot set it. If the
quote changes between calls the retry gets a fresh 402. If
registration fails after payment while the domain is still for sale,
the payment is refunded (502); if the outcome is unclear, the order is
reviewed by hand (202) and the owner is emailed.

## Request body

- object
  - `domain` string, required
  - `years` 1
  - `contact` ContactInput, required
    - `firstName` string
    - `lastName` string
    - `email` string
    - `phone` string
    - `address1` string
    - `address2` string
    - `city` string
    - `state` string
    - `zip` string
    - `country` string: 2-letter ISO code
    - `organization` string
  - `email` string, email: Owner account email. Defaults to contact.email.

## Response `200`

Paid and registered. Carries a `Payment-Receipt` header.

- object
  - `domain` string
  - `orderId` string
  - `owner` object
    - `email` string
  - `pricePaid` number
  - `renewalPrice` number
  - `currency` string

## Other responses

- `202`: `order_under_review`: paid; registration is being confirmed and the owner will be emailed.
- `400`: `invalid_domain`, `years_unsupported`, `tld_unsupported` (.ai), `contact_required` (with `missing`), `invalid_contact` (with `fieldErrors`) or `invalid_email`. Nothing is charged.
- `402`: Payment required. The `WWW-Authenticate` header carries the MPP challenge; a declined credential also answers 402.
- `409`: `domain_unavailable`, `premium_unsupported` or `order_in_progress`. Nothing is charged.
- `429`: Too many requests from this address. Honor `Retry-After`.
- `502`: `registration_failed`: registration failed after payment; `refunded` says whether the payment was refunded.
- `503`: `mpp_unavailable` (machine payments are off) or `quote_unavailable` (no price right now; retry shortly).

## Changes

- **2026-10-20** `1c302ede4b63`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/namemy/apis/namemy-app-api/changes/domains/buy/mpp/post.md)

---

[API](https://skmtc.dev/namemy/apis/namemy-app-api.md) · [All operations](https://skmtc.dev/namemy/apis/namemy-app-api/llms.txt) · [OpenAPI document](https://skmtc.dev/namemy/apis/namemy-app-api/revisions/1c302ede4b63?raw)
