Skip to main content

Dimensional Pricing

Dimensional pricing lets you charge different rates for the same meter based on event attributes. Instead of a single per-unit rate, you define a rate card with rates for specific dimension combinations.

When to Use Dimensional Pricing

Standard usage pricing applies one rate to all events. But real-world billing often needs more granularity:
ScenarioWithout DimensionsWith Dimensions
AI API with regional pricing$0.10/call everywhere0.08/callUS,0.08/call US, 0.12/call EU, $0.15/call APAC
Support calls by outcome$5.00/call for all outcomes3.00resolved,3.00 resolved, 5.00 transferred, $8.00 escalated
Cloud compute by instance type$0.50/hour for all VMs0.10/hoursmall,0.10/hour small, 0.50/hour medium, $2.00/hour large
Data transfer by destination$0.02/GB everywhere0.01/GBsameregion,0.01/GB same-region, 0.05/GB cross-region, $0.10/GB egress
Use dimensional pricing when event attributes significantly impact your cost structure or value delivered.

How It Works

  1. Meter with dimensions — Configure which event properties are dimension keys (e.g., region, call_type)
  2. Rate card — Define rates for specific dimension combinations
  3. Event matching — When usage is calculated, Monk groups events by dimension values and applies the matching rate
  4. Invoice breakdown — Each dimension combination appears as a separate line item

Example: AI Call Center

Let’s build pricing for an AI-powered call center that charges differently based on:
  • Region: US, EU, APAC
  • Call outcome: resolved, transferred, escalated

The Rate Card

RegionOutcomeRate per Call
USresolved$2.00
UStransferred$4.00
USescalated$6.00
EUresolved$2.50
EUtransferred$5.00
EUescalated$7.50
APACresolved$3.00
APACtransferred$6.00
APACescalated$9.00
$4.00 (fallback)

Usage Events

Your application sends events with dimension properties:
{
  "customer_id": "cust_123",
  "event_name": "ai_call",
  "properties": {
    "region": "US",
    "call_outcome": "resolved",
    "duration_seconds": 180
  }
}

Invoice Result

For a customer with 100 US calls (60 resolved, 30 transferred, 10 escalated) and 50 EU calls (all resolved):
Line ItemQuantityRateAmount
AI Calls - US / Resolved60$2.00$120.00
AI Calls - US / Transferred30$4.00$120.00
AI Calls - US / Escalated10$6.00$60.00
AI Calls - EU / Resolved50$2.50$125.00
Total$425.00
Each dimension combination becomes its own invoice line item, giving customers clear visibility into what they’re being charged for.

Key Concepts

Dimension Keys

Dimension keys are event property names that Monk uses to group and price usage. You configure these on the meter.
{
  "displayName": "AI Calls",
  "aggregationType": "COUNT",
  "eventTypeFilter": { "include": ["ai_call"] },
  "groupKeys": ["region", "call_outcome"]
}
Property names must match exactly — If your rate card specifies region but events send Region, they won’t match.

Rate Cards

A rate card is a table of dimension combinations and their rates. Rate cards are attached to pricing configurations and can be:
  • Org-level defaults — Apply to all customers unless overridden
  • Contract-specific — Custom rates for specific customers

Fallback Rates

When an event’s dimension values don’t match any rate card entry, Monk uses the fallback rate. This is the pricing’s base unitAmount.
Always set a sensible fallback rate. If events arrive with unexpected dimension values (e.g., a new region you haven’t configured), they’ll be billed at the fallback rate.

Rate Resolution

For each event, Monk finds the best-matching rate:
  1. Exact match — All dimension values match a rate card entry
  2. Partial match — Some dimensions match (more specific matches win)
  3. Fallback — No matches found, use base unit price

Dimensional vs Tiered Pricing

FeatureDimensional PricingTiered Pricing
Rate varies byEvent attributes (region, type, tier)Usage volume (0-100, 101-1000, etc.)
Invoice line itemsOne per dimension combinationOne line item with tiered calculation
Use caseDifferent costs/value by attributeVolume discounts
Can combine?Yes — dimensional pricing can have tiersYes — tiers can vary by dimension

Design Considerations

Choose Dimensions Carefully

Good dimensions:
  • Directly impact your cost structure (region, compute size)
  • Affect value delivered to customers (priority level, feature tier)
  • Are consistently present in events
Poor dimensions:
  • High cardinality (user IDs, timestamps)
  • Inconsistently populated properties
  • Values that frequently change

Plan for New Dimension Values

When you add a new region or call type:
  1. With fallback rate: New values are billed immediately at the fallback rate
  2. Update rate card: Add specific rates for new values as needed
Start with a conservative fallback rate (higher than your average), then add specific lower rates as you understand your cost structure.

Invoice Clarity

Dimensional pricing creates multiple line items. Consider:
  • Keep dimension names customer-friendly (US Region not us-east-1)
  • Limit to 2-3 dimensions to avoid invoice complexity
  • Use labels that explain what the customer is paying for

Common Patterns

Multiple Meters with Dimensions

Combine dimensional pricing across different meters for comprehensive billing:
MeterDimensionsExample Rates
AI Callsregion, outcome$2-9/call depending on combo
AI Tokensmodel, priority$0.001-0.01/token by model
AI Trainingregion, compute_tier$0.10-1.00/minute by resources
Each meter has its own rate card, and all contribute to the final invoice with separate line items per dimension combination.

Dimensions + Tiers

Combine dimensional and volume pricing for sophisticated billing models:
{
  "name": "AI Call Pricing",
  "pricingModel": "TIERED",
  "rateCard": [
    {
      "dimensions": { "region": "US" },
      "tiers": [
        { "minQty": 0, "maxQty": 1000, "unitAmount": "2.00" },
        { "minQty": 1001, "unitAmount": "1.50" }
      ]
    }
  ]
}
This gives you volume discounts that vary by dimension — first 1,000 US calls at 2.00,then2.00, then 1.50 each, while EU calls have different tiers.

Next Steps

How Usage-Based Billing Works

See how rate cards fit into the full billing flow

Set Up Dimensional Pricing

Step-by-step implementation guide

Enterprise Billing

Per-customer rate overrides

Meters

Configure meters with dimension keys

Pricing

Pricing models and configuration

Events API

Send events with dimension properties