partner

POST /v1/partner/customers/{externalId}/domain-orders

Place a domain order for one of your customers, unpaid.

All partner endpoints

All developer docs

Authentication

Send an API key as a bearer token. The key must carry the partner.domains permission; a key without it is refused with 403, not 404.

This endpoint takes no organisation id. Your key already identifies the organisation it belongs to, and the response is scoped to it.

Try it

Replace anything in angle brackets with your own values, and the key placeholder with a key from your dashboard.

curl -X POST https://api.zinndigital.com/v1/partner/customers/{externalId}/domain-orders \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "return_url": <string>, "cancel_url": <string>, "items": <PartnerDomainItem[]>, "currency": <string> }'

Signed in? The API console in your dashboard fills in your real organisation id and your own key, and runs the request against the live API so you can see the actual response. Open this endpoint in the API console

Details

Prices every line from our catalogue, re-verifies every availability token and places the order pending_payment. ⛔ Nothing is charged here and no payment method is touched: the customer pays on the hosted page named by pay_url, and their browser is sent back to return_url (or cancel_url) with only ?order=<human_ref>&status=paid (or cancelled) appended. Both URLs must be https on a host allowlisted for your programme, matched exactly — anything else is a 422 and no order is placed. pay_url carries a secret that is stored nowhere and shown only in this response; it lives 24 hours. Idempotency-Key is required — a retry returns the same order with a fresh pay_url rather than buying the name twice. Requires partner.domains.

Parameters

NameTypeRequiredWhat it is
externalId (path)stringYesYOUR id for that customer — whatever your own system calls them. It is what makes linking idempotent, and it is scoped to your partner programme: another partner's id is a 404
Idempotency-Key (header)stringNoClient-generated key that makes an unsafe request replay-safe: the server stores the first response and returns it verbatim for repeats.

Request body

NameTypeRequiredWhat it is
return_urlstringYesWhere the customer's browser goes once the order is paid. https, on a host allowlisted for your programme (exact match, default port, no userinfo).
cancel_urlstringYesWhere the browser goes if the customer leaves without paying. Same rules.
localestringNoThe language the payment page opens in.
itemsPartnerDomainItem[]Yes
currencystringYes
billing_countrystringNoOverrides the country on the customer's billing profile for this order.

Response

NameTypeRequiredWhat it is
order_idstringYes
human_refstringYesThe reference the payment page returns to you as ?order=.
pay_urlstringNoOnly in the response that placed (or replayed) the order: the hosted page the customer pays on. It carries a secret that is stored nowhere — treat it as one.
pay_expires_atstringNo
org_idstringYes
statusstringYespending_payment for a freshly placed order; afterwards the order's lifecycle (paid, fulfilling, completed, partially_fulfilled, canceled, …).
currencystringYes
subtotal_minorintegerYes
tax_minorintegerYes
total_minorintegerYes
linesPartnerOrderLine[]Yes

Errors this endpoint can return

401 · 403 · 404 · 409 · 422 · 429