Skip to content

Get the organization's Ownrecord plan

The platform_billing.get operation: GET /api/v1/platform_billing in the REST API and the platform_billing_get tool in the MCP server.

GET/api/v1/platform_billing

Returns the organization's own Ownrecord subscription, as Organization → Billing shows it: the current plan, its status and period, the effective entitlements (an active override merged over the plan), usage against each limit (limits, with over after a downgrade: nothing is deleted, creating more is blocked), the metered volume of the current period with its volume fee so far, the cheapest plan for the last three months of volume, the plans you can choose, and the escalation of an unpaid subscription (escalation: restricted after 14 days, suspended after 30, unless a platform admin holds it).

Ownrecord bills organizations through its own platform brand: the plan is a subscription of the organization's billing account there (platformCustomerId). Change the plan with platform_billing.change_plan; manage payment methods, billing details and invoices in the billing portal (platform_billing.portal_sessions.create).

At a glance

  • REST: GET /api/v1/platform_billing
  • MCP tool: platform_billing_get
  • Operation ID: platform_billing.get
  • Scope: Organization
  • Permission: platform_plan:read
  • Risk tier: read
  • Dry run: Not supported
  • Idempotency: Not needed (read only)
  • Modes: Test and live
  • Authentication: API key with the platform_plan:read scope
  • Since: M12

Request

Query parameters

This operation takes no query parameters.

Response

200 OK with a JSON object:

FieldTypeDescription
object"platform_billing"
orgIdstring
statusone of active, restricted, suspended, closing, closed
livemodeboolean
provisioningone of ready, pending, unavailable
platformCustomerIdstring or null
planobject
plan.keystring or null
plan.namestring or null
plan.statusone of trialing, active, past_due, unpaid, canceled, none
plan.subscriptionIdstring or null
plan.intervalone of day, week, month, year or null
plan.currentPeriodEnddate-time or null
plan.cancelAtPeriodEndboolean
plan.scheduledChangeobject or null
plan.hasPaymentMethodboolean
overrideobject or null
entitlementsobject
limitsarray of object
limits[].featurestring
limits[].limitinteger
limits[].usedinteger
limits[].atLimitboolean
limits[].overboolean
escalationobject
escalation.unpaidSincedate-time or null
escalation.stageone of active, restricted, suspended or null
escalation.nextobject or null
escalation.holdobject or null
escalation.thresholdsobject
escalation.thresholds.restrictAfterDaysinteger
escalation.thresholds.suspendAfterDaysinteger
usageobject or null
recommendationobject or null
plansarray of object
plans[].keystring
plans[].namestring
plans[].highlightedboolean
plans[].contactSalesboolean
plans[].currentboolean
plans[].trialDaysinteger or null
plans[].pricesarray of object
plans[].prices[].lookupKeystring
plans[].prices[].currencystringThe price's currency: EUR, CHF or USD.
plans[].prices[].intervalone of day, week, month, year
plans[].prices[].kindone of licensed, metered
plans[].prices[].amountmoney or nullLicensed prices: the fee per period.
plans[].prices[].ratePpmstring or nullMetered prices: the volume fee in parts per million (1% = 10000).
plans[].entitlementsobject
currencyobject
currency.optionsarray of string
currency.currentstring or null
currency.suggestedstring
currency.changeableboolean
pendingUpgradeobject or null

Examples

An organization on Growth

HTTP
GET /api/v1/platform_billing
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "object": "platform_billing",
  "orgId": "org_01jbz3m4k5n6p7q8r9s0t1v2w3",
  "status": "active",
  "livemode": true,
  "provisioning": "ready",
  "platformCustomerId": "cus_01jbz3m4k5n6p7q8r9s0t1v2w4",
  "plan": {
    "key": "growth",
    "name": "Growth",
    "status": "active",
    "subscriptionId": "sub_01jbz3m4k5n6p7q8r9s0t1v2w5",
    "interval": "month",
    "currentPeriodEnd": "2026-11-01T00:00:00.000Z",
    "cancelAtPeriodEnd": false,
    "scheduledChange": null,
    "hasPaymentMethod": true
  },
  "override": null,
  "entitlements": {
    "api.rate_limit_rps": 100,
    "assistant.enabled": true,
    "assistant.messages_per_month": 1000,
    "audit.retention_days": 90,
    "brands.max": 3,
    "custom_domains.max": 2,
    "einvoicing.enabled": true,
    "entities.max": 2,
    "filing.reports": "full",
    "jurisdictions.registered.max": 10,
    "livemode": true,
    "members.max": 10,
    "processors.secondary": false,
    "sso.enabled": false,
    "subscriptions.enabled": true,
    "support.level": "email",
    "usage_billing.enabled": true
  },
  "limits": [
    {
      "feature": "entities.max",
      "limit": 2,
      "used": 1,
      "atLimit": false,
      "over": false
    },
    {
      "feature": "brands.max",
      "limit": 3,
      "used": 3,
      "atLimit": true,
      "over": false
    },
    {
      "feature": "members.max",
      "limit": 10,
      "used": 4,
      "atLimit": false,
      "over": false
    },
    {
      "feature": "jurisdictions.registered.max",
      "limit": 10,
      "used": 2,
      "atLimit": false,
      "over": false
    },
    {
      "feature": "custom_domains.max",
      "limit": 2,
      "used": 0,
      "atLimit": false,
      "over": false
    }
  ],
  "escalation": {
    "unpaidSince": null,
    "stage": null,
    "next": null,
    "hold": null,
    "thresholds": {
      "restrictAfterDays": 14,
      "suspendAfterDays": 30
    }
  },
  "usage": {
    "periodStart": "2026-10-01T00:00:00.000Z",
    "periodEnd": "2026-11-01T00:00:00.000Z",
    "volume": {
      "amount": "41250000000",
      "currency": "EUR"
    },
    "transactions": 1375,
    "estimatedVolumeFee": {
      "amount": "206250000",
      "currency": "EUR"
    }
  },
  "recommendation": {
    "cheapest": "growth",
    "averageMonthlyVolume": {
      "amount": "48000000000",
      "currency": "EUR"
    },
    "costs": [
      {
        "plan": "starter",
        "cost": {
          "amount": "480000000",
          "currency": "EUR"
        }
      },
      {
        "plan": "growth",
        "cost": {
          "amount": "389000000",
          "currency": "EUR"
        }
      },
      {
        "plan": "scale",
        "cost": {
          "amount": "643000000",
          "currency": "EUR"
        }
      }
    ]
  },
  "plans": [
    {
      "key": "growth",
      "name": "Growth",
      "highlighted": true,
      "contactSales": false,
      "current": true,
      "trialDays": 14,
      "prices": [
        {
          "lookupKey": "growth_monthly",
          "currency": "EUR",
          "interval": "month",
          "kind": "licensed",
          "amount": {
            "amount": "149000000",
            "currency": "EUR"
          },
          "ratePpm": null
        },
        {
          "lookupKey": "growth_yearly",
          "currency": "EUR",
          "interval": "year",
          "kind": "licensed",
          "amount": {
            "amount": "1430000000",
            "currency": "EUR"
          },
          "ratePpm": null
        },
        {
          "lookupKey": "growth_volume",
          "currency": "EUR",
          "interval": "month",
          "kind": "metered",
          "amount": null,
          "ratePpm": "5000"
        },
        {
          "lookupKey": "growth_monthly_chf",
          "currency": "CHF",
          "interval": "month",
          "kind": "licensed",
          "amount": {
            "amount": "149000000",
            "currency": "CHF"
          },
          "ratePpm": null
        },
        {
          "lookupKey": "growth_volume_chf",
          "currency": "CHF",
          "interval": "month",
          "kind": "metered",
          "amount": null,
          "ratePpm": "5000"
        }
      ],
      "entitlements": {
        "api.rate_limit_rps": 100,
        "assistant.enabled": true,
        "assistant.messages_per_month": 1000,
        "audit.retention_days": 90,
        "brands.max": 3,
        "custom_domains.max": 2,
        "einvoicing.enabled": true,
        "entities.max": 2,
        "filing.reports": "full",
        "jurisdictions.registered.max": 10,
        "livemode": true,
        "members.max": 10,
        "processors.secondary": false,
        "sso.enabled": false,
        "subscriptions.enabled": true,
        "support.level": "email",
        "usage_billing.enabled": true
      }
    }
  ],
  "currency": {
    "options": ["EUR", "CHF", "USD"],
    "current": "EUR",
    "suggested": "EUR",
    "changeable": false
  },
  "pendingUpgrade": null
}

Errors

CodeHTTP statusWhenWhat to do
permission_denied403Only an org_owner, org_admin or billing_admin sees the organization's Ownrecord plan.Ask an organization owner or admin for a role or scope that allows this action.
resource_not_found404No such organization is visible to you.Check the ID and that your credentials are scoped to the right organization, entity, brand and mode.

It can also return these common errors: validation_failed, api_version_unsupported, authentication_required, api_key_invalid, dry_run_not_supported, rate_limited, internal_error.