# Get the platform billing settings

> The platform_billing.settings.get operation: GET /api/v1/platform/billing_settings in the REST API and the platform_billing_settings_get tool in the MCP server.

Returns how Ownrecord bills organizations: the days after a failed payment before an organization is
restricted and suspended (spec §37.5; 14 and 30 by default), the mode organizations are billed in (live in
production), and the default plan's price new organizations start on. Platform staff only.

## At a glance

- **REST:** `GET /api/v1/platform/billing_settings`
- **MCP tool:** `platform_billing_settings_get`
- **Operation ID:** `platform_billing.settings.get`
- **Scope:** Platform
- **Permission:** `platform:read`
- **Risk tier:** `read`
- **Dry run:** Not supported
- **Idempotency:** Not needed (read only)
- **Modes:** Test and live
- **Authentication:** API key with the `platform:read` scope
- **Since:** M12

## Request

### Query parameters

This operation takes no query parameters.

## Response

`200 OK` with a JSON object:

| Field                | Type                          | Description |
| -------------------- | ----------------------------- | ----------- |
| `object`             | `"platform_billing_settings"` |             |
| `restrictAfterDays`  | integer                       |             |
| `suspendAfterDays`   | integer                       |             |
| `livemode`           | boolean                       |             |
| `defaultPlanPriceId` | string or null                |             |

## Examples

### The defaults

```http
GET /api/v1/platform/billing_settings
Authorization: Bearer or_test_…
```

Response (`200`):

```json
{
  "object": "platform_billing_settings",
  "restrictAfterDays": 14,
  "suspendAfterDays": 30,
  "livemode": true,
  "defaultPlanPriceId": "price_01jbz3m4k5n6p7q8r9s0t1v2w8"
}
```

## Errors

| Code                                                                                                         | HTTP status | When                                                                         | What to do                                                                                                                                       |
| ------------------------------------------------------------------------------------------------------------ | ----------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| [`validation_failed`](https://ownrecord.io/docs/reference/errors.md#validation_failed)                       | 400         | A threshold is missing or not a whole number.                                | Fix the fields listed in `details.issues` and send the request again.                                                                            |
| [`platform_billing_unavailable`](https://ownrecord.io/docs/reference/errors.md#platform_billing_unavailable) | 409         | The platform bootstrap hasn't run yet.                                       | A platform admin runs `pnpm platform:bootstrap`, which creates the plans, prices and features of data/platform/plans.yaml. Try again afterwards. |
| [`permission_denied`](https://ownrecord.io/docs/reference/errors.md#permission_denied)                       | 403         | Only platform staff read, and only a platform_admin changes, these settings. | Ask an organization owner or admin for a role or scope that allows this action.                                                                  |

It can also return these [common errors](https://ownrecord.io/docs/reference.md#common-errors): [`api_version_unsupported`](https://ownrecord.io/docs/reference/errors.md#api_version_unsupported), [`authentication_required`](https://ownrecord.io/docs/reference/errors.md#authentication_required), [`api_key_invalid`](https://ownrecord.io/docs/reference/errors.md#api_key_invalid), [`resource_not_found`](https://ownrecord.io/docs/reference/errors.md#resource_not_found), [`dry_run_not_supported`](https://ownrecord.io/docs/reference/errors.md#dry_run_not_supported), [`rate_limited`](https://ownrecord.io/docs/reference/errors.md#rate_limited), [`internal_error`](https://ownrecord.io/docs/reference/errors.md#internal_error).
