Códigos de estado
Formato de error
Las respuestas de error incluyen un cuerpo JSON con esta estructura:Errores de negocio al crear un comprobante
Al crear un comprobante, una regla de negocio incumplida —un total que no cuadra con los ítems, un código que no existe en los catálogos, un texto más largo que el que admite el ente tributario— no rechaza el request. El documento se registra y la respuesta es201 con status: "INV" (inválido) y la lista validation_errors, con un elemento por regla:
external_reference, porque un documento en INV no lo retiene.
Tres reglas siguen rechazando con 422, sin registrar nada ni consumir folio, aunque vengan junto a otras: DUPLICATE_EXTERNAL_REFERENCE (el external_reference ya es de otro documento vivo de la empresa), CERTIFICATE_NOT_FOUND (la empresa no tiene certificado activo) y CERTIFICATE_EXPIRED (el certificado activo de la empresa venció; el mensaje informa la fecha de vencimiento). Ante CERTIFICATE_EXPIRED, sube un certificado vigente y vuelve a enviar el mismo cuerpo. La reemisión de un documento rechazado tampoco cambia: cualquier regla incumplida responde 422 con code: VALIDATION_ERROR y una línea <campo>: <mensaje> por cada falla en details.
Las tablas que siguen listan el code de cada regla, el que llega en validation_errors.
Impuestos
Al crear cualquier comprobante, estas reglas lo registran enINV con el code en validation_errors. En la reemisión responden 422 con code: VALIDATION_ERROR y, en details, una línea <campo>: <mensaje> por cada falla.
Retenciones de la factura de compra (Chile)
Reglas de la retención de IVA en la factura de compra (FCO) y en las notas que la referencian. Como las de impuestos, registran el documento en INV, y en la reemisión responden 422.
Montos de la boleta (Chile)
Emify no modifica el neto, el IVA ni el total de una boleta afecta. Si no se pueden informar al SII tal como los enviaste, la creación responde201 con status: "INV" y este code en validation_errors, sobre el campo totals: el documento no consume folio ni se envía al SII. El message dice qué neto, IVA y total aceptaría el SII con tus líneas tal como llegaron, en cada una de sus dos formas de informar el detalle (con IVA incluido o en neto). En la reemisión responde 422.
Comprobantes argentinos Clase A y B
Al crear una Factura, Nota de Débito o Nota de Crédito A o B, estas reglas se validan antes de enviar el comprobante a ARCA. Si alguna falla, el comprobante queda enINV con el code y el campo afectado en validation_errors, y no se envía a ARCA:
Comprobantes argentinos en moneda extranjera
Valen para cualquier clase (A, B o C). Si alguna falla, el comprobante queda enINV con currency.exchange_rate en validation_errors:
Buenas prácticas
- Reintenta las respuestas
5xxcon backoff exponencial. El502señala un organismo externo caído, no un dato incorrecto: la misma petición suele funcionar más tarde. - No reintentes las respuestas
4xxsin corregir la petición: el resultado será el mismo. - Registra el
trace_idy el identificador del recurso junto con la respuesta de error para facilitar el diagnóstico.