---
title: "Get business email purchase link"
method: POST
path: "/api/billing/business-email/purchase-url"
---

# Get business email purchase link

`POST /api/billing/business-email/purchase-url`

## Request

- Base URL: `https://app.base44.com`
- URL: `https://app.base44.com/api/billing/business-email/purchase-url`
- Auth: HTTP bearer

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Creates a one-time link to the checkout page for business email on one of your workspace's custom domains.

Pass a `domain` that's connected to an app in this workspace and verified. Find your domains with [List custom domains](/api-reference/list-custom-domains). The check uses the domain's last recorded status, so a domain you just connected may need to finish verifying first. The person who opens the link picks a plan and pays, and nothing is bought until they finish checkout. The new business email then appears in [Get business email status](/api-reference/get-business-email-status) as `PENDING_SETUP`.

Only the workspace owner can create the link. A workspace whose plan is paid through the App Store can't buy business email. A read-only token is refused, and workspace API keys aren't accepted.

<Note>The link signs whoever opens it in to your workspace's billing account, and it works once. Don't share it, and create a new link each time.</Note>

Each call returns a new link and buys nothing, so retrying is safe. Limited to 6 requests a minute per caller. Some workspaces have a different limit.

## Request body

- BusinessEmailDomainPayload
  - `domain` string, required: Custom domain the business email is for, without `www.`.

## Response `200`

A one-time checkout link.

- BillingPortalLink
  - `url` string, required: Link to open in the browser of the person who acts on it. Treat it as opaque. It works once, so create a new one each time.

## Other responses

- `400`: This workspace has no billing account for business email.
- `401`: Missing or invalid credentials.
- `403`: You aren't the workspace owner, your token is read-only, or the workspace's plan is paid through the App Store.
- `404`: `domain` isn't connected to an app in this workspace.
- `412`: `domain` isn't verified and connected yet.
- `422`: Validation Error
- `429`: Rate limit reached. Retry later.

## Changes

> 66 revisions in range; 1 not diffed.

- **2026-10-26** `395a6758864a`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/adexad/apis/base44-app-management-api/changes/api/billing/business-email/purchase-url/post.md)

---

[API](https://skmtc.dev/adexad/apis/base44-app-management-api.md) - [All operations](https://skmtc.dev/adexad/apis/base44-app-management-api/llms.txt) - [OpenAPI document](https://skmtc.dev/adexad/apis/base44-app-management-api/revisions/d877a932dc19?raw)
