---
title: "Create Inbox Checkout Link"
method: POST
path: "/setup/inbox-checkout"
tags: ["Setup"]
---

# Create Inbox Checkout Link

`POST /setup/inbox-checkout`

## Request

- Base URL: `https://api.supersend.io/v2`
- URL: `https://api.supersend.io/v2/setup/inbox-checkout`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/supersend/apis/supersend-api/docs/setup/inbox-checkout/post.ts> (a function with typed inputs; its response is checked against the schema)

Plans sending domains and inboxes without spending money, then returns a prefilled checkout
link for a human to review and pay. **Nothing is charged by this call.**

Domains can be new (checked that they can be bought) or ones the organization already has:
bought through SuperSend, or connected with `POST /domains/connect`. Owned domains come back
with `owned: true` and `price_per_year: 0`; only their inboxes are charged. Inbox limits count
the inboxes already on a domain (5 per domain, one provider per domain).

After payment, DNS is set up automatically and new inboxes appear within 24-48 hours and start
warming. The exception is a connected domain registered outside SuperSend
(`nameserver_change_required: true`): a few minutes after payment,
`POST /domains/{id}/verify` returns the two nameservers to set at its registrar, and its
inboxes are created once they're live. Track progress with `GET /setup`.

## Request body

- InboxCheckoutRequest
  - `team_id` string, uuid: Team the inboxes are for. Defaults to the caller's default team.
  - `domains` object[], required: Domains to buy, or that the organization already has (bought or connected). Each domain must be unique.
    - `domain` string, required
    - `provider` 'smtp' | 'outlook' | 'google' | 'azure', required: `azure` = Microsoft 365 on its own Azure tenant: exactly 50 inboxes per domain for $49/month.
  - `mailboxes` object[]: Inboxes to create. Each mailbox's domain must be in `domains`, and every non-azure domain needs at least one. Azure domains are filled to 50 automatically; mailboxes listed for them only set the sender names.
    - `username` string, required: Part before the @ (lowercased).
    - `domain` string, required
    - `first_name` string, required
    - `last_name` string, required
    - `signature` string

## Response `200`

Checkout link and cost estimate (nothing charged)

- InboxCheckoutResponse
  - `success` boolean
  - `request_id` string
  - `data` InboxCheckout
    - `object` string
    - `url` string, uri: Prefilled dashboard checkout for the human to review and pay.
    - `team` object
      - `id` string, uuid
      - `name` string
    - `domains` object[]
      - `domain` string
      - `provider` 'smtp' | 'outlook' | 'google' | 'azure'
      - `owned` boolean: Already in the organization; no domain charge.
      - `id` string, uuid: Domain ID (owned domains only).
      - `price_per_year` number: USD (0 for owned domains)
      - `nameserver_change_required` boolean: Owned domains only. True for a connected domain registered outside SuperSend whose nameservers must change after payment (get them from `POST /domains/{id}/verify`).
    - `mailboxes` object[]
      - `email` string
      - `provider` 'smtp' | 'outlook' | 'google'
    - `azure_domains` object[]: Azure domains in the cart (50 inboxes each).
      - `domain` string
      - `mailboxes` integer
      - `price_per_month` number
    - `estimated_cost` object
      - `currency` string
      - `domains_per_year` number
      - `mailboxes_per_month` number
    - `next` string: What to tell the user next.

## Other responses

- `400`: Bad Request - Invalid parameters
- `401`: Unauthorized - Invalid or missing API key
- `403`: Forbidden - Access denied
- `404`: Not Found - Resource does not exist
- `422`: One or more domains can't be bought. `error.details.unavailable` lists each domain and why.

## Changes

- **2026-10-07** `b531caea83bd`: 1 warning, 6 info
  - added the new `azure` enum value to the `allOf[subschema #2]/data/domains/items/provider` response property for the response status `200`
  - the request property `mailboxes` became optional
  - added the new `azure` enum value to the request property `domains/items/provider`
  - added the optional property `allOf[subschema #2]/data/azure_domains` to the response with the `200` status
  - …3 more
- **2026-10-03** `e4e7dcbc09be`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/supersend/apis/supersend-api/changes/setup/inbox-checkout/post.md)

---

[API](https://skmtc.dev/supersend/apis/supersend-api.md) - [All operations](https://skmtc.dev/supersend/apis/supersend-api/llms.txt) - [OpenAPI document](https://skmtc.dev/supersend/apis/supersend-api/revisions/b3893a7781b1?raw)
