Configuring Prices
Set up one-time, recurring, and usage-based pricing for your products and services
Prices define how customers pay for your offerings. MoneyMQ supports the pricing models you designed earlier — one-time payments, subscriptions, and usage-based billing.
Price Basics
Every price belongs to a product or service variant:
price:
amounts:
usd: 49.00
pricing_type: recurring
recurring:
interval: month| Field | Description |
|---|---|
amounts | Map of currency → amount (e.g., usd: 49.00) |
pricing_type | one_time (default) or recurring |
One-Time Payments
Best for: credits, lifetime access, templates, enterprise deals.
price:
amounts:
usd: 79.00Use one-time prices for:
- Credit packs (e.g., 10,000 API calls)
- Lifetime licenses
- Digital downloads or templates
- Setup fees
- Enterprise contracts
Recurring Subscriptions
Best for: SaaS, API access, ongoing services.
price:
amounts:
usd: 49.00
pricing_type: recurring
recurring:
interval: monthprice:
amounts:
usd: 490.00 # saves ~17%
pricing_type: recurring
recurring:
interval: yearTo offer both monthly and annual options, create separate variants (see Nested Variants).
Subscription Options
| Field | Values | Description |
|---|---|---|
interval | day, week, month, year | Billing frequency |
interval_count | Number | Every N intervals (e.g., 3 = quarterly) |
Usage-Based Pricing
Best for: APIs, compute, storage — where usage varies significantly.
Usage-based pricing is implemented through the overage field on a recurring subscription. This combines a base subscription fee with per-unit charges for usage beyond included amounts.
price:
amounts:
usd: 0
pricing_type: recurring
recurring:
interval: month
overage:
meter: api_requests
amounts:
usd: 0.01
included: 0 # No free unitsOverage Options
| Field | Type | Description |
|---|---|---|
meter | string | Name of the usage meter |
amounts | object | Price per unit by currency |
included | number | Units included in base price (default: 0) |
Report usage via the Better Auth plugin:
// Requires @moneymq/better-auth integration
await authClient.moneymq.recordUsage({
metric: 'api_requests',
quantity: 1500,
});Hybrid: Base + Overages
The most powerful pattern combines a subscription with usage billing. Customers get predictable costs, and you fairly charge heavy users.
price:
amounts:
usd: 49.00
pricing_type: recurring
recurring:
interval: month
overage:
meter: api_requests
amounts:
usd: 0.01
included: 100000 # First 100k included in baseThis is the "GitHub + AWS" model — subscription for access, usage for scale.
Free Tiers
Offer a free tier by setting the amount to 0:
price:
amounts:
usd: 0
pricing_type: recurring
recurring:
interval: monthCombine with feature limits in your variant to control costs:
features:
requests_per_day:
value: 100 # Hard limit for free tier
forecast_days:
value: 3 # Limited forecast rangeMultiple Currencies
Offer localized pricing by nesting currency amounts:
price:
pricing_type: recurring
recurring:
interval: month
amounts:
usd: 49.00
eur: 45.00
gbp: 39.00MoneyMQ shows the appropriate price based on customer locale.
Stablecoin Pricing
For crypto-native products, price directly in stablecoins:
price:
amounts:
usdc: 49.00
pricing_type: recurring
recurring:
interval: monthStablecoin prices bypass currency conversion and settle instantly on Solana.
Trial Periods
Add free trials to subscriptions:
price:
amounts:
usd: 49.00
pricing_type: recurring
recurring:
interval: month
trial:
days: 14Customers aren't charged until the trial ends.
Price Experimentation
Use nested variants to A/B test:
billing/v1/products/weather-api/variants/pro/
├── product.yaml # $29/month
└── variants/
├── price-test-a/
│ └── product.yaml # $39/month (test higher price)
└── price-test-b/
└── product.yaml # $19/month (test lower price)Route cohorts to different variants, measure conversion, promote the winner.
Next Steps
- Using the Catalog — Query products and prices via SDK
- Deploying Updates — Ship pricing changes with GitOps
- Checkout Flow — Accept payments for your products