Define your product catalog
This guide defines how to model sellable offers with products and prices.
Prereqs
- You have a defined billing plan baseline: Plans overview.
- You understand how plans connect to entitlements: Pricing model blueprint (plan-centric).
Step 1: model products as commercial containers
A catalog product is a commercial package root.
Choose:
kind:subscriptionorcreditstatus:draft,active, orarchiveddefault_currency: 3-letter uppercase currency code (for exampleUSD)default_currencyis a display/defaulting anchor, not a gate or entitlement rule.
Use stable business keys:
product_code: your stable product keyprovider_product_id: provider-facing id (for example Stripe product id)
Both should be treated as long-lived identifiers.
Step 2: model prices as purchasable entries
A catalog price is a purchasable option under one product.
Define:
price_code: stable business keyprovider_price_id: provider-facing idcurrency+unit_amount(minor units)status:activeorarchived- optional recurring shape:
recurring_interval:monthoryearrecurring_count: positive integer
- optional subscription grouping:
subscription_group_idsubscription_group_key
Recurring prices must belong to a subscription group.
Step 3: decide deterministic storefront ordering
Catalog lists are ordered deterministically.
For prices within a product, ordering is:
display_priorityascendingunit_amountascending- deterministic final tiebreaker
This order influences default-price selection in catalog reads.
Step 4: design metadata ownership
Catalog metadata keys with system behavior:
- Product metadata:
billing_plan_codegrants[]
- Price metadata:
billing_plan_codegrants[]gating.bundle
Ownership recommendation:
- pricing/packaging owner:
billing_plan_code - growth/funding owner:
grants[] - runtime access owner:
gating.bundle - UI/presentation owner:
presentation_config
Use one owning team per key family.
Step 5: keep presentation config UI-only
presentation_config is for display/UI configuration only.
Do not encode runtime billing logic in presentation_config.
Verify
- You can explain each product's
kindand lifecycle status. - You can explain each price's recurring/grouping shape.
- You can explain which team owns each metadata key family.
- You can predict which price will be selected first by list/default order.
Next
- Operating rules and constraints: Operate the product catalog