---
title: "Billing"
description: "The plan, pay as you go, invoices, and the links to pay."
url: "https://openemail.uk/docs/mcp/tools/billing"
area: "MCP server"
category: "Tools"
---

# Billing

The plan, pay as you go, invoices, and the links to pay.

## Billing tools

| Tool | What it does |
| --- | --- |
| getBilling | The plan of the workspace and what it includes, as Plans & Billing shows it: how it is billed, when it renews or ends and the next charge, the domains, this month’s sends, today’s AI actions and pay as you go. |
| listBillingPlans | Every plan, cheapest first, with its price, where it is sold and what it includes. |
| getBillingUsage | Sends and AI actions per day, and what pay as you go extras cost per month, as the Usage charts show them. `days` goes back up to 3,660 days, and `all` to the day the workspace was made. |
| listBillingAlerts | What the billing banner of the app would say now, most urgent first. |
| listBillingCountries | Every country code a billing address takes. |
| getPayAsYouGo | Pay as you go: whether extras are billed, the monthly limit and what they cost so far, the current period, the limits that can be chosen and the prices. |
| setPayAsYouGo | Turn pay as you go on or off. The first time, it returns a link where the person adds a card. In the app’s chat it always asks first. |
| setPayAsYouGoLimit | Set the monthly limit of pay as you go. In the app’s chat it always asks first. |
| confirmPayAsYouGo | After the person added the card, check that it was saved and record it. In the app’s chat it always asks first. |
| startPlanCheckout | The link to a checkout for a paid plan, for a workspace on Free. In the app’s chat it always asks first. |
| openBillingPortal | The link to the billing portal, where the plan is changed or cancelled and the card updated. In the app’s chat it always asks first. |
| listInvoices | Every charge with the state of its invoice, as History on Plans & Billing lists them, a page at a time. |
| getInvoice | The link to the invoice of one charge, a PDF, since a tool carries no file. |
| saveBillingDetails | Save the name and address billed on a charge, keep the address for later charges and start writing its invoice. In the app’s chat it always asks first. |

> Only the owner of the workspace reaches billing, through a client connected with every address. Reading needs `billing:read` and every change needs `billing:write`.

> Nothing is paid through a tool. A checkout, the billing portal and adding a card for pay as you go each return a link for the person to open, and they pay, change the card or cancel there.

> Some tools on this server make a change the REST API guards with a verification code, and ask for the same code. Until the client has verified a code in the last 60 minutes, or the person has chosen Allow changes for 60 minutes on it in Account → Connected apps, such a tool answers with a result that starts `Refused (step_up_required):` and changes nothing. `emptyAudience` never asks for a code. The API Authentication page lists every tool that asks, and shows how to ask for a code and verify it.

## Reference

### `getBilling`

The plan of this workspace and what it includes, as Plans & Billing shows it: how it is billed, when it renews or ends and the next charge, how many domains it holds, how much of this month's sends and today's AI actions are used, and pay as you go. Only the owner of the workspace reaches billing, through a client connected with every address.

- Scopes: `billing:read`.
- The app's assistant runs it without asking.
- Toolkit: `billing`.

**Inputs**

Takes no input.

Also available in: API [`GET /billing`](https://openemail.uk/docs/api/reference/billing#get-billing); SDK [`billing.get()`](https://openemail.uk/docs/sdk/reference/billing#get).

### `listBillingPlans`

Every plan, cheapest first, with its price, whether it is sold here and at which intervals, and what it includes. Prices are in US dollars. Only the owner of the workspace reaches billing, through a client connected with every address.

- Scopes: `billing:read`.
- The app's assistant runs it without asking.
- Toolkit: `billing`.

**Inputs**

Takes no input.

Also available in: API [`GET /billing/plans`](https://openemail.uk/docs/api/reference/billing#get-billing-plans); SDK [`billing.listPlans()`](https://openemail.uk/docs/sdk/reference/billing#listPlans).

### `getBillingUsage`

Sends and AI actions per day, and what pay as you go extras cost per month, as the Usage charts show them. days goes back 1 to 3660 days, 30 by default, and "all" goes back to the day the workspace was made. Days with no use are left out. Only the owner of the workspace reaches billing, through a client connected with every address.

- Scopes: `billing:read`.
- The app's assistant runs it without asking.
- Toolkit: `billing`.

**Inputs**

- `days` (`integer | string`)

Also available in: API [`GET /billing/usage`](https://openemail.uk/docs/api/reference/billing#get-billing-usage); SDK [`billing.getUsage()`](https://openemail.uk/docs/sdk/reference/billing#getUsage).

### `listBillingAlerts`

What the billing banner of the app would say now, most urgent first: a failed payment, paused pay as you go, sending or AI paused at a limit, a plan about to end, an allowance nearly used and a charge coming soon. Only the owner of the workspace reaches billing, through a client connected with every address.

- Scopes: `billing:read`.
- The app's assistant runs it without asking.
- Toolkit: `billing`.

**Inputs**

Takes no input.

Also available in: API [`GET /billing/alerts`](https://openemail.uk/docs/api/reference/billing#get-billing-alerts); SDK [`billing.listAlerts()`](https://openemail.uk/docs/sdk/reference/billing#listAlerts).

### `listBillingCountries`

Every country a billing address can be in, as the two-letter ISO 3166 codes saveBillingDetails takes as country. Only the owner of the workspace reaches billing, through a client connected with every address.

- Scopes: `billing:read`.
- The app's assistant runs it without asking.
- Toolkit: `billing`.

**Inputs**

Takes no input.

Also available in: API [`GET /billing/countries`](https://openemail.uk/docs/api/reference/billing#get-billing-countries); SDK [`billing.listCountries()`](https://openemail.uk/docs/sdk/reference/billing#listCountries).

### `getPayAsYouGo`

Pay as you go on this workspace: whether usage past the allowances is billed, the monthly limit and what extras cost so far, the current billing period, the limits that can be chosen and the prices. Only the owner of the workspace reaches billing, through a client connected with every address.

- Scopes: `billing:read`.
- The app's assistant runs it without asking.
- Toolkit: `billing`.

**Inputs**

Takes no input.

Also available in: API [`GET /billing/pay-as-you-go`](https://openemail.uk/docs/api/reference/billing#get-billing-pay-as-you-go); SDK [`billing.getPayAsYouGo()`](https://openemail.uk/docs/sdk/reference/billing#getPayAsYouGo).

### `setPayAsYouGo`

Turn pay as you go on or off, as the switch on Plans & Billing does. Off takes effect at once, and usage stops at the plan's allowances. On takes effect at once when a card is saved. The first time, it returns a link where the person adds a card on the billing provider's page: give them the link, and call confirmPayAsYouGo once they say they are done. Nothing is paid through this tool. It asks for a verification code, and in the app's chat it always asks first. Only the owner of the workspace reaches billing, through a client connected with every address.

- Scopes: `billing:write`.
- The app's assistant always asks first.
- Asks for a verification code, the same as [`PATCH /billing/pay-as-you-go`](https://openemail.uk/docs/api/reference/billing#patch-billing-pay-as-you-go).
- Toolkit: `billing`.

**Inputs**

- `enabled` (`boolean`, required)
- `theme` (`string`, one of `"light"`, `"dark"`): Light or dark, for the page the link opens. Left out, it follows the browser.
- `locale` (`string`, up to 35 characters): A language tag such as de or pt-PT, for the page the link opens.

Also available in: API [`PATCH /billing/pay-as-you-go`](https://openemail.uk/docs/api/reference/billing#patch-billing-pay-as-you-go); SDK [`billing.setPayAsYouGo()`](https://openemail.uk/docs/sdk/reference/billing#setPayAsYouGo).

### `setPayAsYouGoLimit`

Set the monthly spending limit of pay as you go, in US cents. Extras stop for the rest of a calendar month once it is reached. Pay as you go has to be set up first. It asks for a verification code, and in the app's chat it always asks first. Only the owner of the workspace reaches billing, through a client connected with every address.

- Scopes: `billing:write`.
- The app's assistant always asks first.
- Asks for a verification code, the same as [`PUT /billing/pay-as-you-go/limit`](https://openemail.uk/docs/api/reference/billing#put-billing-pay-as-you-go-limit).
- Toolkit: `billing`.

**Inputs**

- `limitCents` (`integer`, required): One of 1000, 2500, 5000, 10000, 25000, 50000, 100000, 250000, 500000.

Also available in: API [`PUT /billing/pay-as-you-go/limit`](https://openemail.uk/docs/api/reference/billing#put-billing-pay-as-you-go-limit); SDK [`billing.setPayAsYouGoLimit()`](https://openemail.uk/docs/sdk/reference/billing#setPayAsYouGoLimit).

### `confirmPayAsYouGo`

After the person added a card through the link setPayAsYouGo gave, check with the billing provider that it was saved and record it, as the app does when they come back. It asks for a verification code, and in the app's chat it always asks first. Only the owner of the workspace reaches billing, through a client connected with every address.

- Scopes: `billing:write`.
- The app's assistant always asks first.
- Asks for a verification code, the same as [`POST /billing/pay-as-you-go/confirm`](https://openemail.uk/docs/api/reference/billing#post-billing-pay-as-you-go-confirm).
- Toolkit: `billing`.

**Inputs**

Takes no input.

Also available in: API [`POST /billing/pay-as-you-go/confirm`](https://openemail.uk/docs/api/reference/billing#post-billing-pay-as-you-go-confirm); SDK [`billing.confirmPayAsYouGo()`](https://openemail.uk/docs/sdk/reference/billing#confirmPayAsYouGo).

### `startPlanCheckout`

Start buying a paid plan for a workspace on Free, as choosing a plan in the app does, and return the link to the checkout on the billing provider's page. Nothing is charged until the person pays there, so give them the link. A workspace that already pays for a plan changes it with openBillingPortal instead. interval is month or year, month by default. It asks for a verification code, and in the app's chat it always asks first. Only the owner of the workspace reaches billing, through a client connected with every address.

- Scopes: `billing:write`.
- The app's assistant always asks first.
- Asks for a verification code, the same as [`POST /billing/checkout`](https://openemail.uk/docs/api/reference/billing#post-billing-checkout).
- Toolkit: `billing`.

**Inputs**

- `plan` (`string`, required, one of `"starter"`, `"business"`, `"enterprise"`)
- `interval` (`string`, one of `"month"`, `"year"`)
- `theme` (`string`, one of `"light"`, `"dark"`): Light or dark, for the page the link opens. Left out, it follows the browser.
- `locale` (`string`, up to 35 characters): A language tag such as de or pt-PT, for the page the link opens.

Also available in: API [`POST /billing/checkout`](https://openemail.uk/docs/api/reference/billing#post-billing-checkout); SDK [`billing.startCheckout()`](https://openemail.uk/docs/sdk/reference/billing#startCheckout).

### `openBillingPortal`

A link to the billing portal, where the person changes or cancels the plan, updates the card and downloads past invoices, as Manage does in the app. Nothing changes until they act there. It asks for a verification code, and in the app's chat it always asks first. Only the owner of the workspace reaches billing, through a client connected with every address.

- Scopes: `billing:write`.
- The app's assistant always asks first.
- Asks for a verification code, the same as [`POST /billing/portal`](https://openemail.uk/docs/api/reference/billing#post-billing-portal).
- Toolkit: `billing`.

**Inputs**

- `theme` (`string`, one of `"light"`, `"dark"`): Light or dark, for the page the link opens. Left out, it follows the browser.
- `locale` (`string`, up to 35 characters): A language tag such as de or pt-PT, for the page the link opens.

Also available in: API [`POST /billing/portal`](https://openemail.uk/docs/api/reference/billing#post-billing-portal); SDK [`billing.openPortal()`](https://openemail.uk/docs/sdk/reference/billing#openPortal).

### `listInvoices`

Every charge of the workspace with the state of its invoice, as History on Plans & Billing lists them, newest first unless sort is oldest. search matches the plan, the invoice number, the charge id and the name billed. getInvoice returns the link to an invoice. Only the owner of the workspace reaches billing, through a client connected with every address.

- Scopes: `billing:read`.
- The app's assistant runs it without asking.
- Toolkit: `billing`.

**Inputs**

- `page` (`integer`, at least 1)
- `limit` (`integer`, at least 1, at most 100)
- `sort` (`string`, one of `"newest"`, `"oldest"`)
- `search` (`string`, up to 120 characters)

Also available in: API [`GET /billing/invoices`](https://openemail.uk/docs/api/reference/billing#get-billing-invoices); SDK [`billing.listInvoices()`](https://openemail.uk/docs/sdk/reference/billing#listInvoices).

### `getInvoice`

The link to the invoice of one charge, a PDF, since a tool carries no file. An invoice that was not written yet is written first, which takes a few seconds. Take the charge id from listInvoices. Only the owner of the workspace reaches billing, through a client connected with every address.

- Scopes: `billing:read`.
- The app's assistant runs it without asking.
- Toolkit: `billing`.

**Inputs**

- `orderId` (`string`, required, not empty)

Also available in: API [`GET /billing/invoices/{orderId}`](https://openemail.uk/docs/api/reference/billing#get-billing-invoices-orderid); SDK [`billing.getInvoice()`](https://openemail.uk/docs/sdk/reference/billing#getInvoice).

### `saveBillingDetails`

Save the name and address billed on a charge, as the Billing address dialog does, keep the address for later charges, and start writing its invoice. country is a two-letter code from listBillingCountries, and in the US and Canada state is its two-letter code. It asks for a verification code, and in the app's chat it always asks first. Only the owner of the workspace reaches billing, through a client connected with every address.

- Scopes: `billing:write`.
- The app's assistant always asks first.
- Asks for a verification code, the same as [`PUT /billing/invoices/{orderId}/details`](https://openemail.uk/docs/api/reference/billing#put-billing-invoices-orderid-details).
- Toolkit: `billing`.

**Inputs**

- `orderId` (`string`, required, not empty)
- `name` (`string`, required, 1 to 200 characters)
- `line1` (`string`, required, 1 to 200 characters)
- `line2` (`string`, up to 200 characters)
- `city` (`string`, required, 1 to 120 characters)
- `postalCode` (`string`, up to 40 characters)
- `state` (`string`, up to 60 characters)
- `country` (`string`, required, one of `"AD"`, `"AE"`, `"AF"`, `"AG"`, `"AI"`, `"AL"`, `"AM"`, `"AO"`, `"AQ"`, `"AR"`, `"AS"`, `"AT"`, `"AU"`, `"AW"`, `"AX"`, `"AZ"`, `"BA"`, `"BB"`, `"BD"`, `"BE"`, `"BF"`, `"BG"`, `"BH"`, `"BI"`, `"BJ"`, `"BL"`, `"BM"`, `"BN"`, `"BO"`, `"BQ"`, `"BR"`, `"BS"`, `"BT"`, `"BV"`, `"BW"`, `"BY"`, `"BZ"`, `"CA"`, `"CC"`, `"CD"`, `"CF"`, `"CG"`, `"CH"`, `"CI"`, `"CK"`, `"CL"`, `"CM"`, `"CN"`, `"CO"`, `"CR"`, `"CV"`, `"CW"`, `"CX"`, `"CY"`, `"CZ"`, `"DE"`, `"DJ"`, `"DK"`, `"DM"`, `"DO"`, `"DZ"`, `"EC"`, `"EE"`, `"EG"`, `"EH"`, `"ER"`, `"ES"`, `"ET"`, `"FI"`, `"FJ"`, `"FK"`, `"FM"`, `"FO"`, `"FR"`, `"GA"`, `"GB"`, `"GD"`, `"GE"`, `"GF"`, `"GG"`, `"GH"`, `"GI"`, `"GL"`, `"GM"`, `"GN"`, `"GP"`, `"GQ"`, `"GR"`, `"GS"`, `"GT"`, `"GU"`, `"GW"`, `"GY"`, `"HK"`, `"HM"`, `"HN"`, `"HR"`, `"HT"`, `"HU"`, `"ID"`, `"IE"`, `"IL"`, `"IM"`, `"IN"`, `"IO"`, `"IQ"`, `"IS"`, `"IT"`, `"JE"`, `"JM"`, `"JO"`, `"JP"`, `"KE"`, `"KG"`, `"KH"`, `"KI"`, `"KM"`, `"KN"`, `"KR"`, `"KW"`, `"KY"`, `"KZ"`, `"LA"`, `"LB"`, `"LC"`, `"LI"`, `"LK"`, `"LR"`, `"LS"`, `"LT"`, `"LU"`, `"LV"`, `"LY"`, `"MA"`, `"MC"`, `"MD"`, `"ME"`, `"MF"`, `"MG"`, `"MH"`, `"MK"`, `"ML"`, `"MM"`, `"MN"`, `"MO"`, `"MP"`, `"MQ"`, `"MR"`, `"MS"`, `"MT"`, `"MU"`, `"MV"`, `"MW"`, `"MX"`, `"MY"`, `"MZ"`, `"NA"`, `"NC"`, `"NE"`, `"NF"`, `"NG"`, `"NI"`, `"NL"`, `"NO"`, `"NP"`, `"NR"`, `"NU"`, `"NZ"`, `"OM"`, `"PA"`, `"PE"`, `"PF"`, `"PG"`, `"PH"`, `"PK"`, `"PL"`, `"PM"`, `"PN"`, `"PR"`, `"PS"`, `"PT"`, `"PW"`, `"PY"`, `"QA"`, `"RE"`, `"RO"`, `"RS"`, `"RW"`, `"SA"`, `"SB"`, `"SC"`, `"SD"`, `"SE"`, `"SG"`, `"SH"`, `"SI"`, `"SJ"`, `"SK"`, `"SL"`, `"SM"`, `"SN"`, `"SO"`, `"SR"`, `"SS"`, `"ST"`, `"SV"`, `"SX"`, `"SZ"`, `"TC"`, `"TD"`, `"TF"`, `"TG"`, `"TH"`, `"TJ"`, `"TK"`, `"TL"`, `"TM"`, `"TN"`, `"TO"`, `"TR"`, `"TT"`, `"TV"`, `"TW"`, `"TZ"`, `"UA"`, `"UG"`, `"UM"`, `"US"`, `"UY"`, `"UZ"`, `"VA"`, `"VC"`, `"VE"`, `"VG"`, `"VI"`, `"VN"`, `"VU"`, `"WF"`, `"WS"`, `"YE"`, `"YT"`, `"ZA"`, `"ZM"`, `"ZW"`)

Also available in: API [`PUT /billing/invoices/{orderId}/details`](https://openemail.uk/docs/api/reference/billing#put-billing-invoices-orderid-details); SDK [`billing.saveInvoiceDetails()`](https://openemail.uk/docs/sdk/reference/billing#saveInvoiceDetails).
