---
title: "Move every domain of a customer to one plan"
method: POST
path: "/customers/{id}/plan"
tags: ["Partners"]
---

# Move every domain of a customer to one plan

`POST /customers/{id}/plan`

## Request

- Base URL: `https://faivelo.com/api/partner`
- URL: `https://faivelo.com/api/partner/customers/{id}/plan`
- Auth: HTTP bearer

Puts each of the customer's domains on this plan, and makes it the plan the customer's next domain takes. Upgrades apply at once; a downgrade is refused with **409** `PLAN_DOES_NOT_FIT` when any domain stores more than the new plan holds, so nothing is cut off by a plan change. To change one domain use `POST /customers/{id}/domains/{domain}/plan`. Requires `partner:write`.

## Path parameters

- `id` string, required

## Request body

- object
  - `plan` 'STARTER' | 'GROWTH' | 'PRO' | 'BUSINESS', required

## Response `200`

The new plan

- object
  - `success` boolean
  - `data` object
    - `id` string
    - `plan` 'STARTER' | 'GROWTH' | 'PRO' | 'BUSINESS'
    - `previousPlan` 'STARTER' | 'GROWTH' | 'PRO' | 'BUSINESS'

## Other responses

- `401`: Missing or invalid API key, or not a partner key
- `403`: The key lacks the required scope, or provisioning is refused (partner paused, customer cap reached)
- `404`: Not found, including any customer that is not yours
- `409`: A domain does not fit the new plan, or the customer is suspended
- `429`: Rate limit exceeded

---

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