Saltar al contenido principal
Migo Docs

Cobros Programados

Migo factura las suscripciones activas automáticamente cuando vencen. No tienes que hacer nada — solo maneja el cumplimiento / control de acceso.

Cadencia

El cron de cobros se ejecuta cada 12 horas. Cada corrida selecciona las suscripciones cuyo nextRenewalDate cae dentro del día actual en el timezone del cliente (por defecto America/Guatemala).

Flujo de cobro

[cron, every 12h] ──► for each due subscription:
1. Load default payment method
2. Charge through the processor
3. If succeeded: advance the next renewal date
4. If failed: enter the retry schedule (see below)

Calendario de reintentos

Los reintentos se configuran por plan, no en un calendario global fijo:

  • dailyAttempts — número de intentos de cobro.
  • intervalAttempt — tiempo entre intentos (por defecto 24 horas).
  • graceDays — ventana de gracia opcional antes de considerar fallida la suscripción.

Una vez agotados los intentos, la suscripción transiciona a inactive.

No existe un calendario fijo de 3 días / 5 días / 7 días ni un override metadata.retryPolicy.

Ver historial de cobros

GET /v1/subscriptions/payment-history requiere el parámetro de query subscriptionId (devuelve 400 si falta). No soporta limit ni page.

curl "https://mw.migopayments.com/v1/subscriptions/payment-history?subscriptionId=sub_01HAAA" \
-H "Authorization: Bearer <middleware-jwt>"

Respuesta — data es un arreglo plano de transacciones formateadas:

{
"success": true,
"message": "Payment history found",
"data": [ ]
}

No existe un envelope paginado { items, total, page, limit }.

3-D Secure en cobros programados

Los cobros recurrentes se ejecutan sin un tarjetahabiente interactivo, por lo que el cron define modKeys['3ds'] = false de la transacción. Un desafío 3DS solo se dispara cuando la configuración del cliente/procesador tiene 3DS habilitado y la transacción está en progreso. No existe un parámetro threeDsChallenge: "skip" ni un concepto de "merchant-initiated credential" en el código.

Notificaciones

El flujo de suscripción/cron envía notificaciones por email (p. ej. subPayProblem, subscriptionSuspended) y un callback al comercio (subsCallback) en lugar de un contrato público de webhook saliente. Ver Suscripciones → Notificaciones.