Billing & Pricing
Paid plans are rated from metered usage. Prepaid balances are deducted as usage is reported; postpaid invoices are drafted for the active billing period. API request rate limits still apply for abuse protection.
What You Pay For
Section titled “What You Pay For”Paid tiers use resource-based billing:
| Resource | What It Measures |
|---|---|
| Delivered Minutes | Total viewer playback time |
| Cold Storage | Time-weighted durable storage |
The public beta catalog currently prices delivered minutes and cold storage. The billing engine is meter-based, so invoices can also carry separate line items for bandwidth, hot storage, processing formats, marketplace cluster rates, or advanced jobs when those meters are enabled for a tier or cluster.
Free Tier
Section titled “Free Tier”Access to the shared Free service with the included allowances below. API request limits still apply.
Included:
- 10,000 delivered minutes/month (zero-priced overage)
- 10 GB of stored content (durable writes rejected at cap)
- 30-day maximum recording retention
- Shared cluster access
- Livepeer-backed transcoding
- Analytics dashboard
- API access
Free closes on the normal monthly accounting cadence and produces an itemized €0 usage statement with real meter quantities. It creates no payment or VAT event and therefore does not require a postal billing profile or collection provider.
Fair-use enforcement (three-tier cluster-load policy):
- Below 50% load. All ingest admitted, including over-allowance free traffic. Idle capacity is yours to use.
- 50–95% load. Free streams past their 10,000-minute allowance are rejected at new-ingest. Within-allowance free and all paying streams continue to be admitted.
- At redline (≥ 95%). All new free-tier ingest is rejected to preserve capacity for paying tenants. Existing live sessions are never killed mid-stream.
- Viewer-side gate. Below 80% load, all viewers admitted. 80–95%, new viewers of over-allowance free streams are rejected. At redline, all new free-stream viewers are rejected. Paying broadcasters’ viewers are always admitted.
- Fair-use caps. Free tenants are capped at 3 concurrent live streams and 200 concurrent viewers.
- Storage cap. At the 10 GB durable limit, new recordings, VOD uploads, and clip exports are rejected. Existing artifacts remain available until their effective retention deadline; the Free tier caps retention at 30 days.
- Load is computed per media cluster as
max(avg(CPU%), uplink utilization %)across healthy edge nodes.
Seeded limitations:
- No AI workloads
- Watermarked player
- Community support only
- No SLA
Pay-As-You-Go (Current)
Section titled “Pay-As-You-Go (Current)”Add funds to a prepaid balance and pay as usage accrues. Usage is deducted at the rates below.
| Resource | Rate |
|---|---|
| Delivered Minutes | €0.00055/min |
| Cold storage | €0.035/GB-h |
Standard live transcoding is included in delivered-minute pricing. Browser-side StreamCrafter composition does not create a server-processing charge. Advanced processing (AI workloads such as live transcription, V2V transformations, and automated highlights) is in pilot — see Advanced processing below.
Metered Tiers
Section titled “Metered Tiers”Paid tiers include monthly allocations with overage billing:
| Tier | Base | Delivered Minutes | Tier retention cap |
|---|---|---|---|
| Supporter | €79 | 120K | None |
| Developer | €249 | 500K | None |
| Production | €999 | 2M | None |
| Enterprise | Custom | Custom | Contract-defined |
Paid self-serve tiers do not impose a plan-level retention cap. Content still follows its configured artifact policy; the service defaults are indefinite VOD retention and 30 days for DVR chapters and clips.
Overages (metered tiers):
| Tier | Delivered Minutes | Cold storage |
|---|---|---|
| Supporter | €0.00055/min | €0.035/GB-h |
| Developer | €0.00052/min | €0.030/GB-h |
| Production | €0.00050/min | €0.025/GB-h |
| Enterprise | Custom | Custom |
Advanced processing
Section titled “Advanced processing”Advanced processing (AI workloads such as live transcription, video analysis, automated highlights, V2V transformations, and multi-stream compositing) is in pilot. These jobs use the same meter-based billing path as delivered minutes and storage, with product-shaped meters added per job or marketplace offer.
To request pilot access, contact us. Standard live transcoding remains included in delivered-minute pricing.
Billing Models
Section titled “Billing Models”Prepaid
Section titled “Prepaid”Load credits first, use resources as you go. Balance decreases as usage accrues.
Thresholds:
| Balance | Effect |
|---|---|
| Below €5 | Low balance warning |
| €0 or below | New ingests blocked; playback may return 402 |
| Below -€10 | Account suspended; streams terminated |
Postpaid
Section titled “Postpaid”Monthly subscription with included delivered-minute allocations. Cold storage is rated from GiB-second usage and displayed as GiB-hours on invoice lines. Overages are drafted during the billing period and invoiced at period end. Before activation, complete the billing email and address, choose an eligible tier, and finish either Stripe Checkout or Mollie’s first-payment mandate flow. The provider webhook is authoritative; returning to the browser alone does not activate postpaid billing.
Topping Up
Section titled “Topping Up”Pay via Stripe or Mollie. The minimum fiat top-up is €5.00 / 500 cents for the currently supported EUR flow. Purser validates the selected provider and currency before creating checkout; a provider may require a higher minimum for a future currency. Funds credit only after provider confirmation.
Crypto
Section titled “Crypto”Create a prepaid top-up deposit in ETH or USDC. The deposit address comes with a 24h price-locked quote (Chainlink ETH/USD; USDC is 1:1) — send exactly the quoted amount and the balance is credited at the locked rate when the deposit confirms. LPT is reserved but currently rejected.
Crypto top-ups can be as small as one cent, the smallest unit the prepaid ledger can credit. The quoted ETH/USDC amount can have finer on-chain precision, but the requested balance credit is always an integer number of cents.
Invoice deposits below the exact quote remain in operator review and never mark the invoice paid. A confirmed overpayment pays the invoice and atomically credits the locked-quote value of the surplus to the customer’s prepaid balance; the surplus has its own ledger reference and is also reversed if the deposit later fails canonicality checks.
Finality: balance credit waits for the network’s consensus-labelled
finalized head and then verifies the receipt block hash. A fixed number of
latest-head confirmations is not treated as finality. If the RPC cannot
return a usable finalized head, the payment remains pending and rated work is
not released.
x402 Protocol
Section titled “x402 Protocol”For programmatic clients, FrameWorks supports the x402 protocol.
When balance is insufficient, the API returns HTTP 402 with the official v2
PAYMENT-REQUIRED header. Clients sign an EIP-3009 authorization for one exact
accepted requirement and retry with PAYMENT-SIGNATURE. Successful settlement
returns PAYMENT-RESPONSE; X-PAYMENT is legacy compatibility only and is
disabled by default in production.
Side-effecting GraphQL/MCP mutations do not settle x402 inline until their
owning service has a durable idempotency contract. Top up with the payment
recovery API or MCP submit_payment, then retry the mutation without the
payment header. Unsupported inline mutations are rejected before funds move.
x402 supports USDC on Base and Arbitrum (EIP-3009 is a USDC primitive). Prepaid crypto top-ups support ETH and USDC. Both direct crypto and x402 prepaid funding are invoiced when confirmed credit is issued. Usage consumption does not create a second VAT event.
Crypto payments of at most €100 use the simplified-document path; anonymous payments conservatively use supplier-country VAT and need no billing address. Payments over €100 and payments carrying a VAT-number claim use an immutable full crypto invoice and require a legal name, billing email, and postal address before funds are accepted. Both document kinds store supplier registration/VAT identity, service description, quantity one, confirmed supply date, and the original locked quote FX snapshot. Cross-border EU reverse charge is applied only after a successful VIES validation; otherwise the normal VAT decision applies.
Invoicing
Section titled “Invoicing”The billing page records rated statements, line items, prepaid credit, payments, and the remaining balance. A payment action is created only for the invoice’s current outstanding balance; fully settled and zero-value statements do not offer payment.
For Stripe/Mollie postpaid overages, FrameWorks does not create an external collection below €5.00 / 500 cents. Amounts from €0.01 through €4.99 are shown as carried forward with zero due on that period; they are not waived. The first later period that brings the accumulated balance to €5.00 or more includes the prior balance and collects the combined amount. Usage within the plan allowance remains zero-priced and adds nothing to the carry balance. Cancelling an account before the floor is reached records the remaining amount as an explicit account-closure write-off rather than requesting a tiny payment.
Add the billing contact, legal name, address, and optional VAT/tax identifier in account settings before starting a paid provider setup. The identifier is stored as customer-supplied billing data; format checking is not tax-authority validation and does not, by itself, establish reverse-charge eligibility. Leave the identifier blank when the customer is not VAT registered.
Authenticated customers can list document metadata at
GET /v1/billing/documents and download a tenant-bound printable HTML attachment
at GET /v1/billing/documents/{kind}/{id}. The response includes
X-Document-SHA256, uses private/no-store caching, and remains reachable for a
zero-balance prepaid tenant. The billing dashboard exposes the same downloads.
Invoice notifications link to the exact billing-page invoice. Card payment uses the operator-selected Stripe or Mollie hosted checkout; USDC/ETH payment returns an exact address, network, quote, and expiry. Provider confirmation—not the browser redirect—is authoritative.
The dashboard shows recent invoice-payment attempts. Failed attempts can be
retried from their invoice; pending attempts are resumed instead of creating a
second reservation. GraphQL exposes a tenant-scoped payment(id:) lookup and
cursor-paginated paymentsConnection(page:, invoiceId:, status:, method:);
billingStatus.recentPayments remains a compact dashboard summary. Retry or
resume through createPayment(input: { invoiceId, method, returnUrl }). MCP
clients use billing://payments, billing://payments/{payment_id}, and
pay_invoice. All surfaces calculate the current server-side outstanding
balance and reject payment when nothing remains due.
Overdue reminders are durable and staged at 1, 7, 14, and 30 days. Each stage is sent at most once, SMTP failures retry from the outbox, and the outstanding balance is recomputed before delivery so a paid statement has no payment CTA.
Cluster Tiers
Section titled “Cluster Tiers”FrameWorks supports multiple deployment models with different billing characteristics:
| Tier | Description | Billing |
|---|---|---|
| Shared (Community) | Free access to a shared cluster, capped at 3 concurrent live streams and 200 concurrent viewers. | Zero-priced metering with fair-use. |
| Shared (Premium) | Paid tiers on shared infrastructure with higher limits. | Per-resource metering (delivered minutes + cold storage today; more meters can be enabled per tier). |
| Dedicated | Isolated provider-operated capacity and routing for one tenant. Customer-operated Foghorn is out of scope. | Custom pricing via cluster_pricing. |
| Hybrid | Self-hosted MistServer/Helmsman edges connect to provider Foghorn and can fall back to managed capacity. | Per-cluster usage attribution. |
| Marketplace | Third-party operators publish clusters with custom pricing. Tenants subscribe via the marketplace. | Operator-set pricing via cluster_subscriptions. |
Usage is attributed per cluster: the analytics pipeline tags every event with cluster_id (serving cluster) and origin_cluster_id (where the stream was ingested). Billing summaries are generated per cluster for settlement.
What’s Always Free
Section titled “What’s Always Free”- All API requests
- Stream creation and configuration
- Analytics queries
- Playback-policy webhook checks
- Player embed generation
- Ingest (streaming in)—you pay for viewer delivery only