Saltar al contenido principal

Pagos

Los pagos representan intentos de cobro asociados a facturas. Cada pago rastrea el estado, método, gateway utilizado y respuesta del proveedor.

Estados del Pago

pending → processing → succeeded → refunded
↓ ↓
failed partially_refunded

canceled
StatusDescripción
pendingEsperando procesamiento
processingEnviado al gateway, esperando respuesta
succeededConfirmado como pagado
failedRechazado por el gateway o error
canceledCancelado manualmente
partialPago parcial recibido
refundedTotalmente reembolsado
partially_refundedParcialmente reembolsado

Flujo de Pago

1. Cobro Automático (charge_automatically)

Factura finalizada
→ Aplica créditos automáticamente
→ Si los créditos pagan todo: factura = paid
→ Si no:
→ Obtiene método de pago predeterminado
→ Procesa pago vía gateway
→ Tarjeta: respuesta inmediata
→ Boleto/PIX: espera webhook del gateway
→ Éxito: factura = paid
→ Fallo: agenda retry (dunning)

2. Pago Manual

El operador o cliente acciona el pago vía dashboard o portal.

Procesando un Pago

Al procesar, el sistema:

  1. Valida que la factura esté open
  2. Determina el método de pago (proporcionado, guardado o predeterminado)
  3. Obtiene el gateway de la organización para el tipo de pago
  4. Crea registro del pago con clave de idempotencia
  5. Envía cobro al gateway
  6. Actualiza el pago con la respuesta

Idempotencia

Cada pago tiene una clave de idempotencia única. Solicitudes duplicadas retornan el resultado existente sin procesar nuevamente.

Escenarios Especiales

Pago Parcial

  • El valor recibido es menor que el total
  • La factura permanece open con el saldo actualizado
  • El cliente puede pagar el restante con otro pago

Pago Excedente (Overpayment)

Cuando el valor pagado excede el saldo de la factura:

  1. El valor de la factura se aplica normalmente
  2. El excedente se convierte en crédito automáticamente en la cuenta del cliente
  3. El crédito es del tipo adjustment con descripción "Crédito de pago excedente en la factura {número}"
  4. El crédito será aplicado automáticamente en facturas futuras

Factura Ya Pagada

Si la factura ya estaba pagada cuando el pago es procesado, el valor total se convierte en crédito en la cuenta del cliente.

Operaciones

Cancelar Pago

Solo pagos pending pueden ser cancelados. Para boleto/PIX, la cancelación es enviada al gateway.

Reembolsar

Pagos succeeded o partially_refunded pueden ser reembolsados:

  • Reembolso total: El status cambia a refunded
  • Reembolso parcial: El status cambia a partially_refunded
  • La solicitud es enviada al gateway cuando está disponible

Reintentar

Pagos failed pueden ser reintentados. Un nuevo pago es creado con el mismo valor, factura y método.