nozle
    nozle

    Metering & events | Nozle

    One event. One row.
    Both sides written.

    Every customer action lands as an event, and its cost is rated as it lands — no nightly join, no COGS spreadsheet, no waiting for the provider invoice.

    • Design idempotent
    • ·Storage append-only
    • ·Cost rating as events land
    • ·Pipeline Kafka → ClickHouse

    From SDK call to priced bill.

    Five steps. One shape. The same row every other layer of the platform reads.

    PathSDK call → priced bill
    1. 01
      Ingest
      SDK or REST. Idempotency key in, ack out.
    2. 02
      Normalize
      Attach plan, customer, feature, parent-org. One canonical event shape.
    3. 03
      Price
      Run the event through its Cost Sheet rule — standard, package, graduated, or volume. Cost rated as it lands.
    4. 04
      Store
      Append-only log. Per-customer ordering preserved. Queryable instantly, replayable from raw events.
    5. 05
      Queue
      Usage with no matching rate lands in an Uncosted queue instead of being silently dropped.

    Most stacks meter here, reconcile there. We do both from one event.

    Revenue and cost from the same event. Margin stops being a month-end report — it becomes a number you can query any second.

    Most stackstwo systems · two timelines
    T+0
    +$0.045
    T+30d
    −$0.018
    Margin
    ?
    T+30d
    Revenue & cost stitched in a spreadsheet · next month
    —
    Margin
    whatever the join says next month.
    Nozle · ledger rowrated from the same event
    Revenue
    +$0.045
    Cost
    $0.018
    Margin
    $0.027
    T+0 · rated
    evt_5d3… · llm.completion · revenue + cost from one event
    59.2%
    Margin
    rated from the same event.
    59.2%

    Four features doing the work. One costed event out the other side.

    What runs on every event to keep the ledger honest — the ingest contract, the cost rule, the event pipeline, the uncosted queue.

    Prefer the schema?Read the event docs
    INGEST · llm.completion · cus_4b9...
    accepted · idempotent · normalized
    Event sealed in ledger
    raw payloadcanonical row1 row
    Event
    llm.completion · gpt-4o
    Customer
    cus_4b9... · acme · pro plan
    Idempotency key
    evt_5d3... · already seen 0×
    Attached
    plan_v17 · feature: rag_search

    Replays of evt_5d3... return the same row. No double-bill, no skew, no nightly dedupe job.

    Step 01 of 04

    Three ways cost lands on the same row.

    Auto-capture for OpenAI and Anthropic, your own rates on a Cost Sheet for every unit-priced service, and shared cost pools for everything you can't pin to one event. One ledger, three intakes, the same math.

    01 · Auto-capture LLM calls

    OpenAI & Anthropic auto-capture

    Wrap your client or route through the LLM proxy. Tokens — cached, reasoning, audio and image included — land on the event, streaming too.

    OpenAI
    Anthropic
    • wrapOpenAI · wrapAnthropic · LLM proxy
    • Per-token-type cost
    02 · Repository your rates

    Cost Sheet rates

    Your rates for the units you're billed on — AI tokens, Lambda GB-seconds, egress GB, emails sent — applied as each event is rated. Enter your negotiated rates, or register your own internal SKU.

    OpenAI
    Anthropic
    Gemini
    Mistral
    Replicate
    • AI models · infra units · API calls
    • Negotiated rates · custom SKUs
    03 · Anything else configurable

    Shared cost pools

    Anything you can't pin to one event — servers, SaaS seats, data vendors. Create a Shared Cost Pool for the period and Nozle allocates it across eligible customers.

    shared_cost_pool
    path: "shared_period"
    allocate: "equal across eligible customers"
    • Cost Events API · Shared Cost Pools
    • Standard · package · graduated · volume
    Every change ·cost_event_idcost_meter_codeparent_transaction_idexternal_customer_idpropertiestimestamp

    One event in. Revenue and cost out.

    Wire the SDK once and every action is metered and costed as it lands — no nightly join, no COGS spreadsheet.

    Ingest
    idempotent
    Duplicate events
    zero
    Cost rating
    async, as events land
    Nightly joins
    none