Comprobantes

Corregir, anular y compensar

Qué hacer cuando el SRI devuelve un comprobante, y cómo deshacer uno autorizado.

Hay dos situaciones muy distintas: el SRI no aceptó tu comprobante, o lo autorizó y te equivocaste. En la primera, lo corriges y lo reenvías. En la segunda, el comprobante ya existe para el SRI: lo anulas o lo compensas.

El SRI no lo aceptó: corrígelo y reenvíalo

Un comprobante returned o not_authorized no tiene validez, pero su número y su clave de acceso ya están ocupados. El SRI espera que lo corrijas con el mismo número y la misma clave. Eso hace resubmit:

curl -X POST https://api.fiscalbase.io/v1/ec/invoices/$ID/resubmit \
  -H "Authorization: Bearer $FISCALBASE_API_KEY" \
  -H "Content-Type: application/json" \
  -d @factura-corregida.json

Envías el comprobante completo y corregido, igual que al emitirlo. El comprobante:

  • conserva su id, number, access_key e issue_date;
  • conserva su emisor y su numeración: si envías entity_id, establishment o emission_point, respondemos 422;
  • suma una revisión, vuelve a pending y recorre el ciclo otra vez.

Solo se corrige un comprobante devuelto o no autorizado. Con cualquier otro estado respondemos 409.

La excepción es el error 45, secuencial registrado: otro comprobante ya tiene ese número, así que reenviarlo con el mismo no sirve. Ahí se usa POST …/{id}/renumber, que le da el siguiente número de su serie. En Sandbox y Pruebas lo hacemos solos; mira Establecimientos y numeración.

Por qué no emitir uno nuevo

Si emites una factura nueva en vez de corregir la devuelta, te queda un secuencial saltado. Corrigiendo, tu numeración queda continua y el SRI recibe exactamente lo que espera.

El SRI lo autorizó: anúlalo o compénsalo

Un comprobante autorizado ya es válido. Ni el SRI ni nosotros lo modificamos. Tienes dos caminos:

Anularlo en SRI en línea

La anulación se solicita solo en el portal SRI en línea. No existe un servicio web para hacerlo, y la API no lo hace por ti: es una decisión legal de tu empresa, con tu clave del SRI.

  • Plazo: hasta el día 7 del mes siguiente a la emisión. Si el 7 es feriado o de descanso, el siguiente día hábil.
  • Facturas: no necesitan que tu cliente acepte.
  • Retenciones y notas de crédito o débito: tu contraparte debe aceptar la anulación en 5 días hábiles; si no responde, la solicitud caduca.
  • Facturas a consumidor final: no se pueden anular.

Cuando el SRI lo anule, regístralo aquí para que tus listas, tus webhooks y el portal de tu cliente lo sepan. Solo registra lo que ya hiciste en SRI en línea:

curl -X POST https://api.fiscalbase.io/v1/ec/invoices/$ID/annul \
  -H "Authorization: Bearer $FISCALBASE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "annulled_on": "2026-10-03", "reason": "Precio equivocado" }'

El comprobante pasa a annulled, conserva su XML y su RIDE, sale del portal de tu cliente, suma el paso annulled a su recorrido y tus webhooks reciben invoice.annulled. annulled_on no puede ser anterior a la emisión ni futura; solo se anula un comprobante authorized (409 conflict en otro estado), y nunca uno emitido a consumidor final, que el SRI no anula (también 409 conflict).

Compensarla con una nota de crédito

Fuera del plazo, o si solo devuelves una parte, emite una nota de crédito que apunte a la factura. Es la forma normal de registrar devoluciones y descuentos posteriores a la venta.

Las facturas a consumidor final tampoco admiten nota de crédito: si la factura es tuya, respondemos 422 en modified_document.

SituaciónQué haces
returned o not_authorizedPOST …/{id}/resubmit con el comprobante corregido
Autorizado y con error, hasta el día 7 del mes siguienteAnulación en SRI en línea
Autorizado, devolución total o parcialNota de crédito que modifique la factura
Autorizado, cobras algo másNota de débito que modifique la factura

En esta página