
Facturación por uso para SaaS de IA con Stripe: Meters, tokens y tus márgenes
Para productos de IA, cobra por uso con Stripe Billing Meters: crea un meter (nombre de evento + agregación), reporta un meter event con un identificador idempotente cada vez que ocurre el uso, conecta un precio por uso (por unidad, escalonado o paquete) y deja que Stripe agregue por periodo y facture solo.
¿Por qué el precio fijo o por asiento te está matando el margen (sin que te enteres)?
Si vienes de cobrar suscripciones planas, esto te va a doler: en un producto de IA, tu ingreso es fijo pero tu costo no lo es. Cada acción que un usuario dispara quema tokens, llamadas a la API del modelo y cómputo que tú le debes a tu proveedor. Con un plan flat o por asiento, el ingreso por ese usuario está clavado en una línea recta, mientras su costo sube con cada prompt. El día que un power user manda 10M de tokens, le estás dando un Cybertruck por el precio de una bicicleta.
El precio por asiento tenía sentido en el SaaS clásico porque el costo marginal de un login más era casi cero. Sacabas otra silla del mismo servidor y ya. En IA eso se rompe: el costo marginal de “una acción más” es variable y real —es dinero que sale de tu bolsa hacia OpenAI, Anthropic o quien sea tu proveedor de modelo. El precio fijo no es un modelo de negocio en IA; es una apuesta a que nadie use tu producto en serio.
La facturación por uso (metered) realinea el precio con el costo. Cuando el precio sigue al consumo, tu margen por cliente deja de ser una función de qué tan pesado resulte cada quien. Esa es la tesis de todo este post.
Te lo digo como ingeniero que también cablea el billing: he visto un plan flat convertir a mi mejor usuario —el que más amaba el producto— en el que más dinero me costaba. Eso es opinión, pero es opinión con cicatrices. Si construiste tu cobro siguiendo mi post de cómo integrar Stripe en tu SaaS, ya tienes la base de suscripciones y el webhook como fuente de verdad. Aquí extendemos esa misma disciplina al uso: definir un meter, reportar eventos, conectar un precio por uso, dejar que Stripe agregue y facture —más la nueva capacidad de tokens de IA de 2026 y las guardas que protegen tu margen.
Fijo vs por uso en un producto de IA: ¿a dónde se van los márgenes?
Hagamos la cuenta concreta, sin inventar tarifas.
Plan flat: un precio para todos. El usuario ligero no subsidia nada y el usuario pesado erosiona —o invierte— tu margen. Lo peligroso es que tu costo en el peor caso no tiene techo contra un ingreso que sí lo tiene. Un cliente abusivo o un agente en loop puede costarte más de lo que paga, y tú te enteras en la factura del proveedor del modelo a fin de mes.
Por uso: el precio sigue al consumo, así que el margen por cliente se mantiene casi constante mande 10K o 10M de tokens. No te importa qué tan pesado sea, porque cobras en proporción a lo que te cuesta.
Híbrido: es el modelo donde aterriza la mayoría del SaaS de IA. Una suscripción base de plataforma para tener ingreso predecible, más cobro por excedente (overage) por encima de una cuota incluida.
Mi opinión: arranca híbrido, no por uso puro. Una cuota base ancla tu ingreso y baja la ansiedad de churn —al cliente no le gusta una factura que podría ser cualquier número— mientras el meter te protege en la cola de los usuarios pesados. Lo mejor de los dos mundos.
Una advertencia de exactitud: las tarifas de proveedor (el procesamiento de Stripe, el costo de tokens de tu modelo) son sensibles al tiempo. Como cualquier número de 2026, confirma el precio vigente en la página de cada proveedor, y tarifica el markup para que nunca estés vendiendo tokens a costo. Si revendes al precio exacto que pagas, no tienes negocio, le estás haciendo caridad a tu proveedor de modelo. (Si estás dimensionando esos costos por token, mi post de cuánto cuesta integrar IA en tu app tiene las cuentas.)
Fijo vs por uso para un producto de IA
Flat / por asiento
- Ingreso fijo por usuario
- El costo sube con tokens y llamadas al modelo
- El usuario pesado erosiona o invierte tu margen
- Costo en el peor caso sin techo
- Una apuesta a que nadie use el producto en serio
Por uso (metered)
- El precio sigue al consumo real
- Margen casi constante por cliente
- Mande 10K o 10M de tokens, cobras en proporción
- Híbrido: base + overage ancla el ingreso
- El precio se mueve con tu costo, no contra él
¿Qué son exactamente los Stripe Billing Meters (y por qué no la API de uso anterior)?
Antes del código, el concepto. Los Billing Meters son el primitivo actual de Stripe para cobro por uso, y son más limpios que la API legacy de “usage records”. La diferencia clave: con el modelo viejo empujabas contadores sobre un subscription item; con Meters transmites eventos y Stripe los agrega por ti. Dejas de mantener contadores y empiezas a reportar hechos.
El flujo tiene cuatro partes:
- Creas un Meter —una sola vez— que define cómo medir esa actividad.
- Reportas Meter Events cada vez que ocurre el uso.
- Conectas un Price recurrente por uso atado a ese meter.
- Suscribes al cliente y dejas que Stripe agregue por periodo y facture solo.
Un Meter define cuatro cosas: un event_name (el nombre del evento que vas a reportar), una fórmula de agregación (sum o count), un customer_mapping (cómo cada evento se liga a un customer) y value_settings (qué llave del payload contiene el valor a sumar). Una vez creado, vive en tu cuenta esperando eventos.
Un Meter Event carga el event_name, un payload con el valor más el customer, y un identifier que da idempotencia para que los reintentos nunca cuenten doble. Ese identifier es exactamente la misma disciplina que aplicabas al event.id de un webhook en el post de Stripe: reclamas el evento antes de tocar el estado.
Toda la referencia oficial está en Stripe usage-based billing y en la referencia de la Meter API.
¿Cómo conectas la facturación por uso de extremo a extremo? (el código)
Manos a la obra. Dos snippets cortos y reales con las shapes exactas del SDK.
Paso 1 — crea el meter una sola vez. Aquí mido tokens, así que la agregación es sum (sumar el valor de cada evento dentro del periodo):
// Se crea UNA vez, no en cada request. event_name es el contrato
// entre tu código y Stripe: lo usarás al reportar cada evento.
const meter = await stripe.billing.meters.create({
display_name: 'Tokens procesados',
event_name: 'ai_tokens',
default_aggregation: { formula: 'sum' }, // suma el valor por periodo
customer_mapping: {
type: 'by_id',
event_payload_key: 'stripe_customer_id', // de dónde sale el customer
},
value_settings: {
event_payload_key: 'value', // qué llave del payload tiene el valor
},
});
Paso 2 — reporta un meter event cada vez que ocurre el uso. Lo crítico es el identifier: es tu llave de idempotencia. Si un reintento por timeout de red manda el mismo identifier, Stripe no cuenta doble.
// Tras una llamada al modelo, reporta los tokens consumidos.
await stripe.billing.meterEvents.create({
event_name: 'ai_tokens',
payload: {
value: '1840', // tokens de ESTA llamada
stripe_customer_id: 'cus_ABC123',
},
// identifier estable y unico por uso: el reintento NO duplica
identifier: `req_${requestId}`,
});
Esa es exactamente la misma disciplina de idempotencia del handler de webhooks: el reintento jamás debe duplicar estado. Aquí el stream de meter events es la fuente de verdad de tu facturación, igual que el stream de webhooks lo era de tus suscripciones.
Paso 3 — crea un Price recurrente por uso atado al meter y elige un modelo de pricing. Tienes tres opciones: por unidad (per-unit), escalonado (tiered, en variante graduated o volume) o paquete (package). No inventes parámetros; elige tu modelo según cómo quieras que el precio escale con el volumen.
Paso 4 — suscribe al cliente a ese price. A partir de ahí Stripe agrega los meter events por periodo de facturación y emite la invoice solo. No hay un cron de fin de mes que tú mantengas para sumar el uso; Stripe lo hace. Tú solo te aseguras de que cada evento llegue.
Detalle práctico: tanto el SDK de Node como el de Python exponen billing.meters / billing.meter_events, así que estas shapes se traducen directo —en Python sería stripe.billing.meters.create(...) y stripe.billing.meter_events.create(...).
El ciclo de vida de un meter event
¿Qué hay de nuevo para la facturación de tokens de IA en 2026?
Esta es la parte más fresca y más relevante para lo que construimos. En marzo de 2026, Stripe lanzó metering enfocado en IA. Ahora le mandas a Stripe tokens procesados, llamadas a la API del modelo, tareas de agentes y workflows automatizados, y Stripe mide esa actividad y la convierte en cargos facturables en tiempo real. El pitch es directo: cobra por IA como las nubes cobran por cómputo.
Por qué importa de verdad: la unidad que tú le debes a tu proveedor de modelo —tokens, llamadas— se vuelve la unidad sobre la que puedes cobrar directamente. Eso cierra la brecha entre tu costo y tu precio. Antes tenías que traducir tokens a alguna abstracción de cobro a mano; ahora la unidad de costo y la unidad de medición pueden ser la misma.
Y lo mejor: no es un producto nuevo que reaprender. Esto corre sobre la misma infraestructura de Meter Events. Sigues creando meters y reportando eventos, solo que con tipos de uso nativos de IA. Si ya montaste el flujo de la sección anterior, esto es la misma máquina con otra etiqueta.
Mi opinión, y lleva a la siguiente sección: mide la unidad de costo cruda (tokens) para tener exactitud, pero no necesariamente tarifiques en tokens crudos. Eso se ve en las guardas, con cobro en “credits” marcados.
Montar facturación por uso con Stripe Meters en 4 pasos
- 1. Crea un Meterevent_name + agregacion (sum/count) + customer_mapping + value_settings
- 2. Reporta Meter EventsCada vez que ocurre el uso, con identifier idempotente
- 3. Conecta un Price por usoPor unidad, escalonado (tiered) o paquete (package)
- 4. Suscribe y deja que Stripe factureAgrega por periodo y emite la invoice automaticamente
¿Cómo proteges tus márgenes y evitas errores de facturación? (guardas)
El primitivo es la mitad fácil. Estas guardas son las que separan un cobro por uso que te protege de uno que te desangra. Las marco como lo que son: disciplina ganada, parte opinión.
Idempotencia, siempre. Pon el identifier en cada meter event para que un reporte reintentado nunca cuente doble. Es el equivalente metered de reclamar el event.id de un webhook antes de tocar el estado. Sin esto, un retry de red te factura el doble al cliente —o a ti.
Cobra en “credits” marcados, no en costo crudo. Mide la unidad cruda (tokens) para exactitud, pero tarifica en una unidad de credit para que tu precio de venta no sea el costo de tu proveedor. Si cobras tokens a costo, tu margen es cero por diseño. El meter mide; el price marca el sobreprecio.
Pon alertas, límites y topes duros. Un agente en loop o un cliente abusivo no debería poder acumular costo ilimitado en tu cuenta antes de que te enteres. Topes duros para que el peor caso tenga techo. Esto va de la mano con los guardrails de LLM en producción —los mismos topes de costo, aplicados al billing.
Reconcilia. Periódicamente compara el uso reportado por tu proveedor de modelo contra los meter events que de verdad mandaste a Stripe. Una brecha significa eventos perdidos (estás sub-facturando, regalando producto) o envíos dobles (estás sobre-facturando, vas a tener disputas). El stream de meter events es tu fuente de verdad de facturación; trátalo con el mismo cuidado que tratabas el stream de webhooks: idempotente y reconciliado.
Checklist de guardas de margen
Preguntas frecuentes: facturación por uso con Stripe Meters
¿Los meter events cobran al cliente al instante? No. Stripe agrega los eventos por periodo de facturación y emite la invoice al cierre del periodo. El evento solo registra el uso; no dispara un cargo inmediato.
¿Uso Billing Meters o la vieja API de usage records? Meters. Son el primitivo actual; la API de usage records es el modelo anterior. Para cualquier integración nueva, Meters.
¿Puedo cobrar una suscripción base más overage? Sí, ese es el modelo híbrido: un Price base de plataforma más un Price por uso para el consumo por encima de una cuota incluida. Es donde aterriza la mayoría del SaaS de IA, y por donde yo te recomiendo arrancar.
¿Cómo evito el doble conteo en los reintentos? Manda un identifier estable en cada meter event. Stripe deduplica por él, así que el mismo identifier en un retry no suma de nuevo.
¿Puedo facturar tokens de IA directamente? Desde 2026, sí. El metering de IA de Stripe toma tokens, llamadas a la API del modelo y tareas de agentes y los convierte en cargos. Confirma las tarifas exactas en la página de precios de Stripe, porque son sensibles al tiempo.
La regla: mide el costo, cobra el valor
La columna vertebral, una vez más: define un meter, transmite eventos idempotentes, conecta un precio por uso, y deja que Stripe agregue y facture. Cuatro pasos, una sola maquinaria.
Y la regla de margen que sostiene todo: mide la unidad de costo cruda para exactitud, tarifica en una unidad marcada para sobrevivir —y pon topes, alertas y reconciliación para que la cola de los usuarios pesados nunca te muerda.
Te lo digo en primera persona, como quien ha visto un plan flat convertir a su mejor usuario en el que más le costaba: haz bien esto una vez y la economía de tu producto de IA deja de ser una adivinanza. Tu precio se mueve con tu costo en lugar de pelearse contra él. Esa es la diferencia entre escalar usuarios con miedo y escalarlos tranquilo.