Commet
  • Precios
Iniciar SesiónRegistrarse
Introducción

Inicio rápido

Aprender

Aceptar pagos únicos

Recursos

Referencia del SDKVersionado de APIManejo de erroresTestingCLI

Plugins

Better Auth
DocumentaciónRecursosConstruir con AIAPI ReferenceWebhooks

Aceptar pagos únicos

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.

Link vs. charge

Hay dos formas de tomar un pago único.

  • Link (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.
  • Charge (payments.charge): cobra el método de pago ya guardado del cliente fuera de sesión. Sin interacción del cliente, sin url.

Crear un link de pago

Devuelve un Payment con una url. Redirige al cliente a esa URL para cobrar.

const { data } = await commet.payments.create({
  amount: 25000,
  currency: 'usd',
  description: 'Annual report',
  customerId: 'user_123',
  successUrl: 'https://yourapp.com/thanks',
})

redirect(data.url)
response = commet.payments.create(
    amount=25000,
    currency='usd',
    description='Annual report',
    customer_id='user_123',
    success_url='https://yourapp.com/thanks',
)

redirect(response.data['url'])
result, err := client.Payments.Create(ctx, &commet.CreatePaymentParams{
    Amount:      25000,
    Currency:    "usd",
    Description: "Annual report",
    CustomerID:  "user_123",
    SuccessURL:  "https://yourapp.com/thanks",
})

// redirect(result.Data.URL)
CreatePaymentParams params = CreatePaymentParams.builder()
    .amount(25000)
    .currency("usd")
    .description("Annual report")
    .customerId("user_123")
    .successUrl("https://yourapp.com/thanks")
    .build();
ApiResponse<Payment> result = commet.payments().create(params);

// redirect(result.getData().getUrl())
$result = $commet->payments->create(
    amount: 25000,
    currency: 'usd',
    description: 'Annual report',
    customerId: 'user_123',
    successUrl: 'https://yourapp.com/thanks',
);

redirect($result->data['url']);
curl -X POST https://commet.co/api/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"
  }'

amount está en centavos. 25000 son $250.00.

Parámetros

ParámetroTipoRequeridoDescripción
amountnumberSíMonto a cobrar en centavos
currencystringSíCódigo de moneda ISO 4217 (usd, eur, brl)
descriptionstringSíAparece en el link de pago, el recibo y el comprobante
customerIdstringNoID de cliente de Commet (cus_xxx) o tu ID externo
successUrlstringNoA dónde llega el cliente después de pagar
metadataobjectNoPares clave-valor. Forma: { [key: string]: string }

Cobrar un método de pago guardado

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 { data } = 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();
ApiResponse<Payment> result = 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/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"
  }'

Parámetros

ParámetroTipoRequeridoDescripción
customerIdstringSíID de cliente de Commet (cus_xxx) o tu ID externo
amountnumberSíMonto a cobrar en centavos
currencystringSíCódigo de moneda ISO 4217 (usd, eur, brl)
descriptionstringSíAparece en el recibo y el comprobante
metadataobjectNoPares clave-valor. Forma: { [key: string]: string }

Obtener un pago

const { data } = await commet.payments.get({ id: 'pay_123' })

Listar pagos

const { data } = await commet.payments.list({
  customerId: 'user_123',
  limit: 20,
})
ParámetroTipoRequeridoDescripción
customerIdstringNoFiltra por un cliente
limitnumberNoTamaño de página
cursorstringNoCursor de paginación de la página anterior

Cancelar un link de pago

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.

El objeto Payment

CampoTipoDescripción
idstringID del pago (pay_xxx)
customerIdstring | nullCliente al que pertenece el pago
kind"link" | "charge"Cómo se tomó el pago
statusstringEstado actual (ver abajo)
provider"stripe" | "commet"Proveedor de pago que lo procesó
amountSubtotalnumberMonto antes de impuestos en centavos
taxAmountnumberImpuestos en centavos
amountTotalnumberSubtotal + impuestos en centavos
currencystringCódigo de moneda ISO 4217
descriptionstringDescripción definida al crear
metadataobject | nullPares clave-valor definidos al crear
urlstring | nullLink de pago alojado. null para charges
expiresAtstring | nullCuándo expira el link
createdAtstringFecha y hora ISO 8601
updatedAtstringFecha y hora ISO 8601
object"payment"Tipo de objeto
livemodebooleanfalse para pagos de sandbox

Estados

  • 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.

Ver en el dashboard

Ve a Payments. Cada pago muestra su estado, monto, impuestos, cliente y el recibo generado.

Limitaciones

  • amount está en centavos — unidades menores de la moneda
  • Los impuestos se calculan automáticamente y se suman sobre el amount
  • payments.charge requiere un método de pago guardado en el cliente
  • Los charges no se pueden cancelar
  • Un link solo se puede cancelar mientras está pending

Relacionado

  • Pagos únicos — Cargos únicos cobrados como un plan
  • Recibos y ciclos de cobro — Cómo se generan los recibos
  • Gestionar clientes — Crear clientes y guardar métodos de pago
  • Referencia del SDK — Métodos del SDK de Node.js

¿Cómo está esta guía?

Manejar pagos fallidos

Qué pasa cuando el pago de un cliente falla y cómo puede reactivar su suscripción desde el Portal del Cliente.

Resumen de Finanzas

Cómo se mueve el dinero en Commet — balances, payouts e historial de transacciones.

En esta página

Link vs. charge
Crear un link de pago
Parámetros
Cobrar un método de pago guardado
Parámetros
Obtener un pago
Listar pagos
Cancelar un link de pago
El objeto Payment
Estados
Ver en el dashboard
Limitaciones
Relacionado