---
title: "Hand over who pays for the project"
method: POST
path: "/project/{id}/billing-owner"
tags: ["projects"]
---

# Hand over who pays for the project

`POST /project/{id}/billing-owner`

## Request

- Base URL: `https://api.faable.com`
- URL: `https://api.faable.com/project/{id}/billing-owner`
- Auth: one of:
  - OAuth 2 (authorization code, authorization URL `https://faable.auth.faable.link/authorize`, token URL `https://faable.auth.faable.link/oauth/token`)
  - HTTP bearer
  - OAuth 2 (client credentials, token URL `https://faable.auth.faable.link/oauth/token`)
  - HTTP bearer
  - HTTP basic
  - API key in query parameter `apikey`

The member who pays hands billing to another owner. Only for projects without an active subscription; with one, support does it.

## Path parameters

- `id` string, required

## Request body

- object
  - `user_id` string, required

## Response `200`

Project

- Project: Project
  - `id` string, required: Project ID
  - `name` string, required
  - `description` string, required
  - `slug` string, required
  - `team` string, required
  - `user_id` string
  - `collaborators` string[], required
  - `members` object[]
    - `user_id` string, required
    - `role` string, required
  - `product_intent` union
    - 'deploy'
    - 'auth'
    - 'undecided'
  - `owner_suspended` boolean
  - `owner_email` string
  - `organization` string, nullable
  - `createdAt` string, required: Project creation date
  - `updatedAt` string: Project updated date

## Other responses

- `400`: `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
- `401`: `unauthorized` — The request carries no valid credentials. `invalid_token` — The bearer token is missing, malformed or expired.
- `402`: `billing_receiver_free_limit` — The receiver already has as many free projects as the plan allows.
- `403`: `billing_owner_only` — Only the member who pays for the project can hand billing over. `forbidden` — The credentials are valid but do not allow this operation. `user_suspended` — The account is suspended. Contact support@faable.com.
- `404`: `project_not_found` — No project with that id for this caller.
- `409`: `billing_receiver_not_owner` — Billing can only be handed to an owner of the project. `billing_transfer_requires_support` — The project has an active subscription; handing it over is done by support.
- `429`: `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.
- `500`: `internal_error` — Unexpected server error. Retry later; the request id is logged.
- `503`: `billing_unavailable` — Billing is not answering; nothing was changed. `database_unavailable` — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.

---

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