Make a first plan purchasable, and return real plan prices

FeatureBillingService
Shipped
August 11, 2026 at 12:15 AM UTC
Author
Kamo
Commit
1c1ba66

Two things stopped an organization ever buying a first subscription. Plan lists were reachable only through sub.marketId on a subscription the org already held, so an org with none could not see a plan anywhere in the product. GET /api/billing/markets/for-org resolves the market from the caller's entitlement root — the same org whose Free plan already supplies their baseline, so plans and entitlements cannot come from different catalogs. And the plan DTO read **************** which nothing ever populates: they are NULL for every KamoCRM plan, because the seeder writes prices into **************** A buying surface therefore showed no price at all, and the account recorded a null charge. It now reads the price rows, with the plan columns as a fallback for catalogs that carry them. Also exposes the add-on unit size so a buying surface can say "per 10 GB" without hardcoding it.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing