This is the canonical billing reference. Read it before going to production.
What is billed
Phosra charges the provider (not the platform) per distinct family linked, measured by the FamilyMeter:- A “family” is the set of children sharing a
family_idin the census, derived from the unlinkable household hash inside the grant. - One family with 3 children across 5 connected apps = 1 billable family, not 15.
- The metric is: distinct
family_idvalues with at least one active grant stamped with yourdeveloper_org, counted over the billing interval (interval-union — churn and reconnect within the same interval counts as one day, not two).
The attribution hook — your API key on the binding leg
Billing attribution happens at the binding leg of the connect ceremony. WhenrunConnectCeremony → completeLink POSTs POST /api/v1/enforcement-endpoints, the
census handler reads LinkConfig.developerOrgId and stamps it on the phosra_link_grants
row immediately after the endpoint is minted. That stamp is the audit trail for invoicing.
developerOrgId and the grant lands in the null/anonymous bucket — no invoice,
no attribution, no SLA. This is the correct default for local development and self-hosted
deployments where you do not want billing.
To provision an org and get a phosra_live_ key, use the control-plane API or contact
developers@phosra.com.
Platform pays nothing
The platform role is entirely free. These operations are never metered and never blocked:You charge for the connection, never for keeping a kid safe.If a provider account is over quota, invoices are issued but enforcement continues uninterrupted. No child is ever protected less because of a billing state.
Co-bound families
A family linked by more than one provider (e.g. both Guardline and BrightCanary have active grants for the same household) is held out of auto-invoicing until one owner is designated. Phosra will not charge both providers for the same family. Watch for aco_bound_family notification on your developer dashboard. Resolution is
out-of-band; contact developers@phosra.com.
Anonymous / self-hosted bucket
Grants minted without adeveloperOrgId land in the anonymous bucket:
- No invoice
- No billing attribution
- No support SLA
- Full OCSS enforcement — safety is never gated on billing state
- Local development (
phosra initwires this by default) - Self-hosted deployments (running your own census via
@openchildsafety/bundle) - Open-source integrations built on the OCSS standard directly
The §12.3 line (free vs paid)
The OCSS specification §12.3 defines the boundary between the open protocol and metered hosted services. Phosra’s pricing follows this line exactly:
The rule: local = free; hosted persistence and distribution = metered.
Getting a billing account
- Apply for production accreditation. Billing
provisioning is part of the accreditation approval — Phosra will issue a
phosra_live_...API key when your DID is promoted toaccreditedon the production Trust List. - Alternatively, email developers@phosra.com to provision an org account directly if you are already accredited.
- Derive your
developerOrgIdfrom the key or retrieve it viaGET /developers/orgs. - Set
developerOrgIdin yourLinkConfig. - Families you link are attributed to your org and appear in usage rollups at
GET /developers/orgs/{orgId}/usage.
Usage rollups
Pull hourly usage counts via the control-plane API. Like all org/key management calls, this endpoint authenticates with your WorkOS session bearer (the JWT from your dashboard session — see Create your account & get keys), not aphosra_ key:
@phosra/sdk-dev (the planned unified wrapper with a typed getOrgUsage helper) is
not yet published — an npm install @phosra/sdk-dev fails today. Use the plain HTTP
call above until it ships; see Phosra Developer SDK.Next
- Provider quickstart — set
developerOrgIdinLinkConfig - Platform quickstart — platforms pay nothing; see what the platform ops cost
- Forward compatibility — new rule categories arrive without a reinstall