Próximamente. Este webhook todavía no está disponible.
POST /v2/debts/orders: 201, 422 ORDER_NOT_CREATED y 500. Con cualquier otra (por ejemplo, un campo inválido, un contacto que no existe o una llave ya usada), no hay webhook: el motivo te llega solo en la respuesta.
Ante un 500, este webhook puede llegar o no. Si llega ORDER_CREATION_FAILED con PROVIDER_UNAVAILABLE, no significa que no se cobró: reintenta con el mismo externalRequestId, como se indica en Reintentos e idempotencia.
Forma parte de los webhooks de órdenes y medios de pago: comparte con ellos el endpoint, la seguridad y el contrato. Su llave de idempotencia es
id.Creación y cobro son avisos distintos
ORDER_CREATION_SUCCESS informa que la orden se creó, no que se cobró. El resultado del cargo te llega después, con el pago de una orden.
Puede llegarte ORDER_CREATION_FAILED y después ORDER_PAYMENT_CONFIRMED de la misma orden, si el banco terminó procesando el cargo. En ese caso, toma como definitivo el cobro: el dinero ingresó.
El payload
Motivos
creationError.code es un código de TapiPay, no el del banco. message viene en inglés y sirve para tus logs, no para mostrárselo al usuario.
Trata la lista de códigos como abierta: se pueden agregar códigos nuevos. Si te llega uno que no conoces, trátalo como un fallo de creación sin acción específica.
Ejemplos
Una orden que se crea, una que se crea pero falla, y una cuya creación falló antes de que la orden existiera (sinorderId). Los ejemplos corresponden a una integración sin llave pública, por eso hash viene en null.
Recomendaciones
- Procesa cada notificación una sola vez. La misma notificación puede llegar más de una vez, siempre con el mismo
id. Guarda losidprocesados en almacenamiento persistente. - Correlaciona por
externalOrderId. Es el único identificador que viene siempre:orderIdfalta si la orden no llegó a crearse. - No asumas un orden de llegada entre este aviso y los del pago de una orden.
- Ignora los campos que no conozcas: se pueden agregar campos nuevos.

