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_idto attach it to a Feature Event;external_customer_idto 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.
Artificial Intelligence token template
The guided template creates anai_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.