Flujo de emisión

Desde la versión v1.4.0, toda emisión de DTE es asíncrona.

Por qué asíncrono

Procesar un DTE contra el SII toma unos segundos. Un modelo asíncrono te da una respuesta inmediata y un manejo robusto de reintentos, sin dejar tu request colgado esperando.

El flujo

  1. Tu sistema envía POST /v1/dte/emitir con el JSON del documento. Folyo valida los datos y responde 202 Accepted de inmediato con un job_id.
  2. Folyo procesa el documento y lo envía al SII en segundo plano.
  3. Recibes el resultado por uno de tres canales:
CanalCuándo usar
WebhookRecomendado. Tu endpoint recibe el evento dte.emitido con el resultado.
PollingGET /v1/dte/emision/:jobId cada 2-3 segundos hasta que estado != "pending".
SSESolo para dashboards en el browser. No recomendado para integraciones server-side.

Estados del job

  • pending — en cola.
  • processing — en proceso contra el SII.
  • completed — enviado exitosamente al SII.
  • failed — error, sea rechazo del SII o interno. Revisa el campo error para el detalle.

Después del envío: el veredicto del SII

Que el job termine en completed significa que el SII recibió el documento y le asignó un Track ID. El veredicto (aceptación o rechazo) llega después: el documento queda en estado enviado y Folyo consulta al SII de forma automática hasta obtener una respuesta firme, momento en que pasa a aceptado_sii o rechazado_sii y se dispara el webhook correspondiente.

Normalmente el SII responde en minutos, pero en horas de alta carga puede demorar más de una hora en procesar un envío. Es una demora del SII, no un error:

  • No reemitas un documento porque siga en enviado: el folio ya está usado y una reemisión crea un documento duplicado. Si reintentas un POST /v1/dte/emitir por un error de red, usa siempre el header Idempotency-Key.
  • Suscríbete al webhook de cambio de estado en vez de asumir un plazo fijo.