errorcoredocsbeta

Billing and usage

Every errorcore plan includes the same product features. Plans differ by their accepted-error allowance, billing period, price, and configured workspace evidence retention. Current catalog values appear on the pricing page and in Settings → Billing.

What counts as one unit

Every newly accepted error envelope (kind: error) consumes exactly one organization-wide unit. Two errors count twice even when worker processing later groups both into the same case.

These consume nothing:

  • An idempotent retry of an already admitted error envelope.
  • A conflicting or otherwise rejected request.
  • A rate-limited request.
  • A supplemental payload blob attached to an accepted error.

The allowance belongs to the organization and is shared across all projects, environments, API keys, and members. User IDs are audit actors, never billing or quota owners.

One-time Free evaluation

Free is an organization evaluation, not a recurring monthly plan. It starts when the organization is provisioned and ends when either the catalog-defined allowance or evaluation duration is reached. The current values appear on the live pricing page.

The evaluation never renews and never restarts after an upgrade, cancellation, refund, revocation, or other subscription transition. Organizations that existed on the former Free policy receive one catalog-defined evaluation window during migration 005.

Current paid prices, allowances, and workspace evidence-retention settings are shown on the live pricing page. Caps are hard: errorcore rejects another error envelope instead of charging an overage.

Paid usage periods use Polar's verified half-open [current_period_start, current_period_end) boundaries. A verified renewal starts a fresh meter. An immediate upgrade raises the cap without erasing usage already counted in the period. A downgrade applies at the next provider boundary.

Subscription access states

  • active is usable while its verified billing period is current.
  • past_due remains usable while payment recovery is in progress.
  • A scheduled cancellation remains usable through current_period_end; it is blocked afterward.
  • unpaid, revoked, and paused block ingestion.
  • trialing is unexpected because trials are disabled. It is recorded as configuration drift and blocks ingestion.
  • incomplete blocks while provider truth or configuration is unresolved.
  • Refund events are audited but do not change access by themselves.

Polar product and price identifiers must both match the deployment's catalog mapping. Unknown mappings, statuses, organizations, or malformed timestamps are recorded as fail-closed outcomes. Periodic reconciliation repairs missed webhook delivery without allowing an older snapshot to overwrite a newer modified_at value.

Checkout and the billing portal

Checkout is available only to an organization administrator and only when the organization has no live paid subscription. The backend derives the Clerk organization, Polar external customer ID, product, price, and return URL; browser-supplied identifiers or URLs are never trusted. Checkout explicitly disables trials.

An organization with a live paid subscription uses the Polar portal for plan changes. Portal configuration should apply upgrades immediately and downgrades or cancellation at the next period boundary.

Plan limit is not a rate limit

Plan limitRate limit
HTTP status403429
Admission reasonplan limit reachedrate limited
Consumes allowancenono
Causeaccess or the durable allowance is exhaustedrequests arrive faster than the ingest limiter allows
Retrying helpsnoyes, after Retry-After

Where to look

  • Settings → Billing: backend-derived access, reason, plan, usage, period end, and billing action.
  • Overview: organization usage for the active evaluation or paid period.
  • Admissions: the recorded decision for each authenticated envelope.

On this page