Skip to content

Close the organization

The organizations.close operation: POST /api/v1/organizations/{id}/close in the REST API and the organizations_close tool in the MCP server.

POST/api/v1/organizations/{id}/close

Starts closing the organization. It becomes closing at once:

  1. live brands stop taking new checkouts;
  2. every subscription is cancelled the way you choose: at the end of its current period, or immediately (the customers are told);
  3. the organization stays closing until its open invoices, refunds and final filing periods are done;
  4. then it is closed: read-only, and you can still export its data (organizations.export).

Financial records are kept for the legal retention period (10 years by default, longer where an entity's country requires it), then deleted. Personal data not needed for financial records is pseudonymised when the organization closes. Closing can't be undone from the console.

Only an owner can close the organization, with a sign-in in the last 15 minutes, confirming with its slug.

At a glance

  • REST: POST /api/v1/organizations/{id}/close
  • MCP tool: organizations_close
  • Operation ID: organizations.close
  • Scope: Organization
  • Permission: org:admin
  • Risk tier: security
  • Dry run: Supported (send Ownrecord-Dry-Run: true)
  • Idempotency: Idempotency-Key required
  • Modes: Test and live
  • Authentication: API key with the org:admin scope
  • Fresh sign-in: In the console, a sign-in within the last 15 minutes
  • Since: M12

Request

Path parameters

FieldTypeDescription
idorg_… ID

Body

A JSON object (Content-Type: application/json):

FieldTypeRequiredDescription
subscriptionsone of period_end, immediateYesperiod_end: subscriptions end when their current period ends; immediate: they end now, with notice.
reasonstringNo
confirmstringYesThe organization's slug, as confirmation.

Response

200 OK with a JSON object:

FieldTypeDescription
object"organization_closure"
orgIdorg_… ID
statusstringThe organization's status: closing while it closes, then closed.
subscriptionsone of period_end, immediate
reasonstring or null
requestedAtdate-time
requestedByobject
requestedBy.typestring
requestedBy.idstring
subscriptionsCancelledAtdate-time or null
subscriptionsEndedAtdate-time or null
closedAtdate-time or null
retainUntildate-time or nullFinancial records are kept until then, then deleted.
blockersarray of objectWhat still holds the closure (counted at most to 1,000).
blockers[].blockerone of subscriptions, invoices, refunds, filing_periods
blockers[].countinteger

Examples

Close, letting subscriptions run to the end of their period

HTTP
POST /api/v1/organizations/org_01m4tx5nj7ekd958x53w4bntcg/close
Authorization: Bearer or_test_…
Idempotency-Key: 3f1c9a52-7d0e-4b8f-9a61-0c2d5e8b7f14
Content-Type: application/json

{
  "subscriptions": "period_end",
  "reason": "We're winding the company down.",
  "confirm": "acme"
}

Response (200):

JSON
{
  "object": "organization_closure",
  "orgId": "org_01m4tx5nj7ekd958x53w4bntcg",
  "status": "closing",
  "subscriptions": "period_end",
  "reason": "We're winding the company down.",
  "requestedAt": "2026-10-26T09:00:00.000Z",
  "requestedBy": {
    "type": "user",
    "id": "usr_01m4tx5nj8emwbyf7y9vcf47xa"
  },
  "subscriptionsCancelledAt": null,
  "subscriptionsEndedAt": null,
  "closedAt": null,
  "retainUntil": null,
  "blockers": []
}

Errors

CodeHTTP statusWhenWhat to do
confirmation_mismatch400confirm isn't the organization's slug.Type exactly what the form asks for (the organization's slug, or your email address).
owner_required403You aren't an owner of the organization.Ask an organization owner (org_owner).
organization_not_closable409The organization is suspended, closing or closed already (details.status).A suspended organization is closed with Ownrecord support; a closing or closed one needs nothing more.
resource_not_found404The ID isn't the organization of the request.Check the ID and that your credentials are scoped to the right organization, entity, brand and mode.
version_conflict409The organization changed at the same time; retry.Fetch the object again and retry the change.
fresh_auth_required403Your last sign-in is older than 15 minutes.Sign in again, then repeat the action within 15 minutes.
permission_denied403You can't manage this organization.Ask an organization owner or admin for a role or scope that allows this action.

It can also return these common errors: validation_failed, api_version_unsupported, invalid_json, unsupported_media_type, authentication_required, api_key_invalid, idempotency_key_required, idempotency_key_reused, idempotency_in_progress, approval_required, approval_rejected, approval_expired, stale_approval, approval_policy_denied, rate_limited, internal_error.