Catálogo de eventos
Todos los eventos de webhook que Skip emite, con esquemas de payload.
Todo payload de webhook tiene la forma:
{
"event_id": "evt_abc123",
"event": "order.paid",
"data": { /* específico del evento */ }
}event_id es único por entrega — úsalo para idempotencia. event identifica el tipo. data matchea el schema de ese tipo.
Eventos de orden
order.paid
La orden quedó completamente pagada. Para AAPD esto dispara cuando el préstamo se aprueba (30% y 70% liquidados en los libros de SkipPay).
{
"event_id": "evt_abc123",
"event": "order.paid",
"data": {
"hash": "ord_abc123",
"reference": "CLINIC-ORDER-12345",
"status": "paid",
"total_amount": "100000",
"paid_amount": "100000",
"paid_at": "2026-04-15T10:15:00Z",
"customer": {
"rut": "12345678-9",
"first_name": "María",
"last_name": "González",
"email": "maria@example.com"
},
"provider_rut": "98765432-1"
}
}provider_rut está presente solo para órdenes de meta-prestador.
order.partially_paid
Dispara cuando se captura la cuota del 30% pero el préstamo todavía no está completamente aprobado. Algunos partners ignoran este y solo escuchan order.paid. El payload es igual a order.paid, con paid_amount reflejando solo la porción capturada.
order.refunded
Dispara en reembolso total o parcial.
{
"event_id": "evt_def456",
"event": "order.refunded",
"data": {
"hash": "ord_abc123",
"reference": "CLINIC-ORDER-12345",
"status": "refunded",
"total_amount": "100000",
"refunded_amount": "30000",
"refunded_at": "2026-04-20T14:00:00Z",
"reason": "Patient canceled appointment"
}
}order.failed
Dispara cuando la solicitud de préstamo falla o el paciente cancela.
{
"event_id": "evt_ghi789",
"event": "order.failed",
"data": {
"hash": "ord_abc123",
"reference": "CLINIC-ORDER-12345",
"status": "failed",
"reason": "loan_rejected"
}
}reason es uno de: loan_rejected, loan_canceled, card_declined, customer_canceled.
order.cancelled
Dispara cuando una orden se cancela explícitamente antes del pago. Raro en AAPD — usualmente solo vía intervención de ops de Skip.
Recordatorio de idempotencia
Siempre chequea event_id antes de procesar. SkipPay puede re-entregar el mismo event_id después de un blip de red; trata la segunda llegada como no-op.
Eventos de webhook que no están en este catálogo
Los siguientes existen internamente pero no se envían a partners: setup_intent.succeeded, loan.created, loan.authorized, loan.approved, loan.failed, loan.canceled, loan.refunded, loan.disputed. Son eventos Ventipay → SkipPay; Skip los agrega en los eventos order.* que sí ven los partners.