Combina precios por moneda, Markets de países reutilizables y variantes seleccionables.
Commet tiene dos capas de precios complementarias:
| Capa | Para qué sirve |
|---|---|
| Currency Pricing | Define valores del plan, balance y overage en una moneda de presentación |
| Markets | Agrupa países que deben resolver overrides explícitos de precio y moneda |
Currency Pricing sigue siendo el fallback. Agregá Markets cuando necesites segmentación por país o variantes seleccionables.
Un Market es un recurso de Sales de primer nivel. No requiere un plan ni un precio.
const argentina = await commet.markets.create({
name: 'Argentina',
countryCodes: ['AR'],
})
const southernCone = await commet.markets.create({
name: 'Cono Sur',
countryCodes: ['BO', 'PY', 'UY'],
})Un país puede pertenecer a un solo Market activo. Las rutas REST de v9 son /markets y /markets/{id}.
El monto base sigue siendo el fallback para todos los países sin override de Market.
const basePrice = await commet.plans.addPrice({
id: 'pln_pro',
billingInterval: 'monthly',
price: 4900,
isDefault: true,
marketPrices: [
{ marketGroupId: argentina.id, currency: 'ars', price: 6490000 },
{ marketGroupId: southernCone.id, currency: 'usd', price: 3900 },
],
})En checkout, Commet resuelve el Market a partir del país de la solicitud. El checkout de Sandbox permite cambiar Country para probar otro Market; el checkout live ignora ese override.
Una variante hereda un precio base y solo reemplaza Markets ya configurados en esa base:
const foundingCustomers = await commet.plans.addPrice({
id: 'pln_pro',
billingInterval: 'monthly',
inheritsFromPriceId: basePrice.id,
metadata: { name: 'Founding customers' },
marketPrices: [
{ marketGroupId: argentina.id, currency: 'ars', price: 3990000 },
],
})Enviá priceId solamente cuando el customer elige deliberadamente esa variante:
await commet.subscriptions.create({
customerId: 'user_123',
planCode: 'pro',
priceId: foundingCustomers.id,
})Omitir priceId conserva la resolución normal del precio por defecto y Market.
Las fases aceptadas de una Offer son un snapshot inmutable separado; el precio seleccionado del catálogo sigue siendo editable.
La API 2026-07-24 y el SDK v8 conservan /pricing/market-groups y commet.pricing.*. La API 2026-07-31 y el SDK v9 usan la superficie de Markets de primer nivel.
¿Cómo está esta guía?