Skip to main content
Cost Intelligence compares finalized billing revenue with the internal cost of serving each customer. New cost configuration uses versioned Cost Sheets rather than the legacy JSON Cost Model API.

Choose a cost path

Feature Event Cost

Use this when the customer-facing Feature Event contains enough information to calculate cost. A simple example is a Copilot Action that earns $0.10 and has an internal cost of $0.05 per accepted event. The existing /events request is unchanged. Nozle evaluates the Cost Rule asynchronously after Kafka acknowledges the Feature Event.

Detailed Cost Event

Use /cost-events when one customer-facing action contains several internal operations, such as multiple artificial intelligence model calls, emails, or database operations. A Cost Event may include:
  • parent_transaction_id to attach it to a Feature Event;
  • external_customer_id to attribute it directly to a customer;
  • both identifiers, in which case Nozle verifies that they resolve to the same customer.

Shared Period Cost

Use this for infrastructure or contracts that cannot be honestly assigned to one event. A Shared Cost Pool has a service period, recognition method, allocation period, recurrence, and customer-eligibility policy. Version One allocates equally across the selected eligible population, including free and paid customers. Each allocation period is allocated automatically shortly after it closes; see Shared Costs.

Pricing models

Feature Event and Detailed Cost Event rules use the same exact-decimal rating engine: Rules also select a pricing period and accumulation scope. For example, a monthly provider contract can accumulate across the organization, while a customer-specific contract can accumulate separately for each customer. Volume pricing is recalculated for the complete period. If late usage changes the applicable tier, Nozle appends an immutable adjustment instead of rewriting earlier ledger entries.

Prevent double counting

Each Feature has an effective-dated cost-composition mode:
  • feature_event_only: include the direct Feature Event cost and retain linked detailed Cost Events as excluded from margin.
  • detailed_events_only: include linked detailed Cost Events and omit the direct Feature Event cost.
  • add_both: include both paths intentionally.
Independent cost components are additive. Components in the same variant group are mutually exclusive, and the highest-priority matching rule wins. Publishing fails when same-priority variants overlap ambiguously.

Artificial Intelligence token template

The guided template creates an ai_tokens Cost Event Meter using tokens as quantity and provider, model, and type as dimensions. It supports input, cached input, cache creation, output, and reasoning categories. Rates may be entered manually or loaded from an effective-dated provider price catalogue. Custom rates retain their base catalogue references for audit. A catalogue entry must use the Cost Sheet currency, match the rule dimensions, and be effective on the rule date. The setup review shows the exact cost of 1,000 tokens for every configured category before publication. Unknown provider, model, or category combinations enter the Uncosted queue rather than becoming zero-cost usage. A Cost Event whose meter code matches no Cost Event Meter is accepted and then lands in the same queue as uncosted with unknown_cost_event_meter; it is not dropped from the report.

Margin policy

The Cost Sheet form also sets the margin policy that /can applies to the Feature. The policy is saved after the Cost Sheet is published: if publishing fails, no policy is created and the draft stays. If only the policy cannot be saved, the Cost Sheet stays published without an active margin policy, and the dashboard says so and opens the published sheet. When cost can’t be estimated decides what /can does when it has no estimate, for example because the Feature uses detailed_events_only and the actual Cost Events do not exist yet: This is the policy’s on_unavailable value. With detailed_events_only it follows the policy mode (Warn or Deny) until you change it, so a Deny policy denies on the AI-token path too. Before, the dashboard always sent Warn, so Deny only warned. See the can() endpoint.

Reporting and audit

PostgreSQL stores the authoritative immutable cost ledger, period totals, source state, and projection outbox. ClickHouse stores a rebuildable analytics projection used by the dashboard. The dashboard shows Feature profitability, customer profitability, Cost Events, Shared Costs, and Uncosted sources. Finalized billing revenue and estimated event revenue are separate and are never added together. Finalized revenue is by service period: see Finalized revenue.
The legacy /cost-models endpoints are retained only as a temporary rollback surface. They do not configure the new Cost Intelligence ledger and should not be used for new integrations.