Skip to main content
Emitir es asíncrono: la API acepta el lote al tiro y el resultado llega después. Un webhook es la forma confiable de enterarte. Esta guía lo configura, lo protege y lo deja listo para reintentos. La lista completa de eventos y payloads está en la guía de webhooks.

1. Crea el webhook

Un webhook es por empresa (master_entity_id). Elige solo los eventos que vas a usar y define un secret para firmar.
api_version: 2 hace que todos los ids del payload sean públicos (docu_…, ment_…), los mismos que devuelve la API v2. Referencia: Crear webhook.

2. Elige los eventos

3. Verifica la firma

Si el webhook tiene secret, cada envío trae X-Pana-Signature: el HMAC-SHA256 en hexadecimal del cuerpo crudo de la petición con tu secret. Calcula la firma sobre los bytes tal como llegaron, antes de parsear el JSON.
Otros headers útiles: X-Pana-Event-Type (el evento), X-Pana-Event-Id (id del evento), X-Pana-Delivery (id del intento de entrega) y X-Pana-Timestamp.

4. Responde rápido y sin duplicar

  • Responde 2xx en menos de 2 segundos y procesa el evento en segundo plano.
  • Si tu endpoint falla, Tupana reintenta con espera creciente (1 minuto, 5 minutos, 15 minutos, 1 hora, 6 horas).
  • Un reintento repite el mismo evento: guarda X-Pana-Event-Id y descarta los que ya procesaste.

5. Pruébalo

Desde la plataforma (Configuración → Webhooks → Probar) se envía un webhook.test. El campo environment del webhook define de qué ambiente recibe eventos de documentos: both (default), production o sandbox. Con both o sandbox, los documentos simulados con tu key de sandbox también llegan, así que puedes probar el flujo completo sin emitir nada real. Usa un webhook con production cuando pases a producción para no mezclar eventos.

Relacionado