Cobra a tus clientes una sola vez con el recurso payments de Commet — sin suscripción ni plan. Impuestos, recibo y comprobante de forma automática.
Un pago es un cargo único independiente, sin suscripción ni plan asociado.
Commet calcula los impuestos, genera un recibo y envía un comprobante en cada pago de forma automática.
Para deals de por vida y compras únicas cobradas como un plan (trials, intro offers, add-ons, modelos de consumo), usa Pagos únicos en su lugar.
Hay dos formas de tomar un pago único.
payments.create): genera un link de pago alojado. El cliente abre la url y paga con cualquier tarjeta. Guarda (vault) el método de pago al confirmar.payments.charge): cobra el método de pago ya guardado del cliente fuera de sesión. Sin interacción del cliente, sin url.Devuelve un Payment con una url. Redirige al cliente a esa URL para cobrar.
const payment = await commet.payments.create({
amount: 25000,
currency: 'usd',
description: 'Annual report',
customerId: 'user_123',
successUrl: 'https://yourapp.com/thanks',
})
redirect(payment.url)payment = commet.payments.create(
amount=25000,
currency='usd',
description='Annual report',
customer_id='user_123',
success_url='https://yourapp.com/thanks',
)
redirect(payment.url)payment, err := client.Payments.Create(ctx, &commet.CreatePaymentParams{
Amount: 25000,
Currency: "usd",
Description: "Annual report",
CustomerID: "user_123",
SuccessURL: "https://yourapp.com/thanks",
})
// redirect(payment.URL)CreatePaymentParams params = CreatePaymentParams.builder()
.amount(25000)
.currency("usd")
.description("Annual report")
.customerId("user_123")
.successUrl("https://yourapp.com/thanks")
.build();
var payment = commet.payments().create(params);
// redirect(payment.url())$result = $commet->payments->create(
amount: 25000,
currency: 'usd',
description: 'Annual report',
customerId: 'user_123',
successUrl: 'https://yourapp.com/thanks',
);
redirect($result->url);curl -X POST https://commet.co/api/v1/payments \
-H "x-api-key: $COMMET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": 25000,
"currency": "usd",
"description": "Annual report",
"customerId": "user_123",
"successUrl": "https://yourapp.com/thanks"
}'commet payments create \
--amount 25000 \
--currency usd \
--description "Annual report" \
--customer-id user_123 \
--success-url https://yourapp.com/thanksamount está en centavos. 25000 son $250.00.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
amount | number | Sí | Monto a cobrar en centavos |
currency | string | Sí | Código de moneda ISO 4217 (usd, eur, brl) |
description | string | Sí | Aparece en el link de pago, el recibo y el comprobante |
customerId | string | No | ID de cliente de Commet (cus_xxx) o tu ID externo |
successUrl | string | No | A dónde llega el cliente después de pagar |
metadata | object | No | Pares clave-valor. Forma: { [key: string]: string } |
Cobra el método de pago guardado del cliente fuera de sesión. El cliente debe tener un método de pago en archivo.
const payment = await commet.payments.charge({
customerId: 'user_123',
amount: 25000,
currency: 'usd',
description: 'Annual report',
})response = commet.payments.charge(
customer_id='user_123',
amount=25000,
currency='usd',
description='Annual report',
)result, err := client.Payments.Charge(ctx, &commet.ChargePaymentParams{
CustomerID: "user_123",
Amount: 25000,
Currency: "usd",
Description: "Annual report",
})ChargePaymentParams params = ChargePaymentParams.builder()
.customerId("user_123")
.amount(25000)
.currency("usd")
.description("Annual report")
.build();
var payment = commet.payments().charge(params);$result = $commet->payments->charge(
customerId: 'user_123',
amount: 25000,
currency: 'usd',
description: 'Annual report',
);curl -X POST https://commet.co/api/v1/payments/charge \
-H "x-api-key: $COMMET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customerId": "user_123",
"amount": 25000,
"currency": "usd",
"description": "Annual report"
}'commet payments charge \
--customer-id user_123 \
--amount 25000 \
--currency usd \
--description "Annual report"| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
customerId | string | Sí | ID de cliente de Commet (cus_xxx) o tu ID externo |
amount | number | Sí | Monto a cobrar en centavos |
currency | string | Sí | Código de moneda ISO 4217 (usd, eur, brl) |
description | string | Sí | Aparece en el recibo y el comprobante |
metadata | object | No | Pares clave-valor. Forma: { [key: string]: string } |
const payment = await commet.payments.get({ id: 'pay_123' })const { data } = await commet.payments.list({
customerId: 'user_123',
limit: 20,
})| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
customerId | string | No | Filtra por un cliente |
limit | number | No | Tamaño de página |
cursor | string | No | Cursor de paginación de la página anterior |
Cancela un link pendiente para que ya no se pueda pagar.
await commet.payments.cancel({ id: 'pay_123' })Solo se puede cancelar un link que no haya sido pagado ni haya empezado a procesarse. Los charges no se pueden cancelar.
| Campo | Tipo | Descripción |
|---|---|---|
id | string | ID del pago (pay_xxx) |
customerId | string | null | Cliente al que pertenece el pago |
kind | "link" | "charge" | Cómo se tomó el pago |
status | string | Estado actual (ver abajo) |
provider | "stripe" | "commet" | "dlocal" | Proveedor de pago que lo procesó |
amountSubtotal | number | Monto antes de impuestos en centavos |
taxAmount | number | Impuestos en centavos |
amountTotal | number | Subtotal + impuestos en centavos |
currency | string | Código de moneda ISO 4217 |
description | string | Descripción definida al crear |
metadata | object | null | Pares clave-valor definidos al crear |
url | string | null | Link de pago alojado. null para charges |
expiresAt | string | null | Cuándo expira el link |
createdAt | string | Fecha y hora ISO 8601 |
updatedAt | string | Fecha y hora ISO 8601 |
object | "payment" | Tipo de objeto |
livemode | boolean | false para pagos de sandbox |
pending: El link se creó y espera a que el cliente pague.processing: El pago se está confirmando con el proveedor.succeeded: El pago se completó y se generó un recibo.requires_action: El cliente debe completar un paso extra como 3D Secure.failed: El pago no se concretó.canceled: El link se canceló antes del pago.failed y requires_action no son terminales para los links: el cliente puede volver a abrir el mismo link de pago y pagar con otra tarjeta, siempre que el link no haya expirado.
Ve a Payments. Cada pago muestra su estado, monto, impuestos, cliente y el recibo generado.
amount está en centavos — unidades menores de la monedaamountpayments.charge requiere un método de pago guardado en el clientepending¿Cómo está esta guía?