Factuarea APIDevelopers
Mejora

Coherencia de la causa de exención y conflicto al generar recurrentes

Cambian tres operaciones: la vista previa de la factura acepta un exemption_reason opcional, guardar o emitir una factura con causa de cabecera sin IVA y líneas con IVA responde 422 exemption_cause_contradicts_taxed_lines, y generar una factura recurrente puede responder un 409 reintentable recurring_presentation_activation_changed.

24 de octubre de 2026 — Esta versión añade un campo a la vista previa de plantillas PDF, un 422 nuevo a las operaciones de factura que guardan o emiten un borrador y un 409 reintentable nuevo a la generación manual de una factura recurrente. No se añade ni se retira ninguna operación.

Operaciones de esta versión

OperaciónoperationIdHerramienta MCPQué cambia
POST /v1/companies/{company}/pdf-template-previewspublic-api.v1.pdf_template_previews.createpreview_pdf_templateCampo opcional nuevo source.form.document.exemption_reason.
POST /v1/companies/{company}/recurring-invoices/{recurring_invoice}/generatepublic-api.v1.recurring_invoices.generategenerate_recurring_invoiceNuevo 409 reintentable recurring_presentation_activation_changed.
PATCH /v1/companies/{company}/invoices/{invoice}public-api.v1.invoices.updateupdate_invoiceNuevo 422 exemption_cause_contradicts_taxed_lines.
POST /v1/companies/{company}/invoices/{invoice}/issuepublic-api.v1.invoices.issueissue_invoiceNuevo 422 exemption_cause_contradicts_taxed_lines.
POST /v1/companies/{company}/invoices/{invoice}/sendpublic-api.v1.invoices.sendsend_invoiceNuevo 422 exemption_cause_contradicts_taxed_lines cuando el envío emite un borrador.
POST /v1/companies/{company}/invoices/{invoice}/mark-sentpublic-api.v1.invoices.mark_sentmark_invoice_as_sentNuevo 422 exemption_cause_contradicts_taxed_lines cuando emite un borrador.

Vista previa con causa de exención

source.form.document.exemption_reason es opcional y solo se aplica a document_type invoice. Es la causa de exención de la cabecera de la factura. El catálogo lo publica GET /v1/tax-catalog.

  • Su mención legal abre las menciones legales automáticas de la vista previa, igual que al guardar la factura.
  • Si la omites, o envías null, la vista previa se genera sin causa.
  • Una causa desconocida, o una causa enviada en un presupuesto, una proforma o un albarán, se rechaza.
  • La vista previa no rechaza una causa que contradiga el IVA de las líneas. Guardar la factura sí, con el error siguiente.

preview_pdf_template acepta el mismo campo en el mismo sitio.

Error nuevo: exemption_cause_contradicts_taxed_lines

Un borrador de factura cuya cabecera lleva una causa de exención que declara la operación sin IVA (las exenciones de los artículos 20 a 26 y 140 bis de la LIVA, la no sujeción y la inversión del sujeto pasivo) no admite una línea de operación, que no sea un suplido, con un IVA mayor que cero.

La respuesta es un 422 con error.code business_rule_violation y error.subcode exemption_cause_contradicts_taxed_lines. param es lines.N.tax_rate y line_index indica la línea.

La API v1 no acepta la causa de cabecera al crear o editar una factura, pero sí edita y emite borradores creados en la aplicación que la conservan. Ahí es donde puede aparecer el error: en PATCH /v1/companies/{company}/invoices/{invoice} y en las operaciones que emiten un borrador (issue, send y mark-sent). Los documentos ya emitidos no cambian.

Qué hacer:

  1. Pon el IVA de la línea indicada en param al 0 %, o quita la causa de exención de la factura.
  2. En una factura mixta, con líneas con y sin IVA, no uses una causa de cabecera. Declara la exención en cada línea exenta con lines[].exemption_reason.
  3. Repite la petición. La que se rechazó no cambió nada.

Conflicto reintentable nuevo: recurring_presentation_activation_changed

Mientras POST /v1/companies/{company}/recurring-invoices/{recurring_invoice}/generate genera la factura, la empresa puede activar o desactivar su sistema de presentación dos veces seguidas. La operación responde entonces 409 recurring_presentation_activation_changed.

  • No se escribió nada. No se creó ninguna factura y no se consumió ninguna ocurrencia.
  • Repite la petición. Es un conflicto reintentable, no una violación de una regla de negocio.
  • Idempotencia. La respuesta no se guarda para reproducirla: repetir la llamada con la misma Idempotency-Key ejecuta la generación de nuevo y no duplica la factura.

generate_recurring_invoice devuelve el mismo error, así que un asistente solo tiene que volver a llamar a la herramienta.

La tabla siguiente lista las operaciones de esta versión.

Endpoints actualizados6

EndpointDescripción
POST/v1/companies/{company}/pdf-template-previewsCrear una vista previa de plantilla de PDF
POST/v1/companies/{company}/recurring-invoices/{recurring_invoice}/generateGenera una factura a partir de una plantilla recurrente
PATCH/v1/companies/{company}/invoices/{invoice}Actualizar una factura
POST/v1/companies/{company}/invoices/{invoice}/issueEmite una factura
POST/v1/companies/{company}/invoices/{invoice}/sendEnvía la factura por email
POST/v1/companies/{company}/invoices/{invoice}/mark-sentMarca una factura como enviada

En esta página

¿Te echamos una mano?Contactar con soporte