Pagos únicos
Vende acceso de por vida o compras únicas con un solo cargo y sin cobros recurrentes.
Un plan de pago único cobra al cliente una sola vez en el checkout y nunca vuelve a cobrar por el plan base. Úsalo para deals de por vida, compras únicas o cualquier plan donde los cobros recurrentes no aplican.
Los planes de pago único se comportan como cualquier otro plan — soportan trials, intro offers, add-ons y todos los modelos de consumo. Las únicas diferencias son:
| Aspecto | Comportamiento |
|---|---|
| Cobros | El plan base se cobra una vez en el checkout. El overage se cobra en cada ciclo de cobro. |
| Cancelación | No permitida — la suscripción queda activa de forma permanente |
| Cambios de intervalo | No permitidos — no puedes pasar de pago único a un intervalo recurrente |
Configurar en el dashboard
En el dashboard, ve a Plans, edita un plan y agrega un precio con intervalo One-time (lifetime). Puedes combinar precios únicos con intervalos recurrentes en el mismo plan — cada precio tiene su propio intervalo.
Crear una suscripción de pago único
const { data } = await commet.subscriptions.create({
customerId: 'user_123',
planCode: 'pro',
billingInterval: 'one_time',
})
redirect(data.checkoutUrl)response = commet.subscriptions.create(
customer_id='user_123',
plan_code='pro',
billing_interval='one_time',
)
redirect(response.data['checkout_url'])result, err := client.Subscriptions.Create(ctx, &commet.CreateSubscriptionParams{
CustomerID: "user_123",
PlanCode: "pro",
BillingInterval: "one_time",
})
// redirect(result.Data.CheckoutURL)CreateSubscriptionParams params = CreateSubscriptionParams.builder()
.customerId("user_123")
.planCode("pro")
.billingInterval("one_time")
.build();
ApiResponse<Subscription> result = commet.subscriptions().create(params);
// redirect(result.getData().getCheckoutUrl())$result = $commet->subscriptions->create(
customerId: 'user_123',
planCode: 'pro',
billingInterval: 'one_time',
);
redirect($result->data['checkout_url']);curl -X POST https://commet.co/api/subscriptions \
-H "x-api-key: $COMMET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customerId": "user_123",
"planCode": "pro",
"billingInterval": "one_time"
}'El billingInterval debe ser one_time y el plan tiene que tener un precio único configurado. Si el precio default del plan ya es único, puedes omitir el parámetro billingInterval.
Recibos
El recibo inicial incluye el precio del plan base como un cargo único. Después, los ciclos de cobro siguientes solo generan recibos por overage — el plan base nunca se vuelve a cobrar.
| Recibo | Qué incluye |
|---|---|
| Inicial | plan_base (una vez) + descuento de intro offer si aplica |
| Ciclos siguientes | feature_overage, feature_seats, addon_base — solo si hay cargos |
Si no hay overage ni cargos adicionales en un ciclo de cobro, no se genera ningún recibo.
Portal del cliente
En el Portal del cliente, las suscripciones de pago único muestran el intervalo como Lifetime. El botón de cancelar queda oculto porque la cancelación no está permitida. Los clientes igual pueden cambiar de plan si el plan pertenece a un Plan Group.
Relacionado
- Gestionar planes — Crear y configurar planes
- Gestionar suscripciones — Ciclo de vida completo de la suscripción
- Recibos y ciclos de cobro — Cómo funcionan los cobros
- Modelos de consumo — Metered, Credits y Balance explicados
¿Cómo está esta guía?