Skip to main content
La API de Emify usa códigos de estado HTTP estándar y devuelve un cuerpo JSON consistente cuando algo falla.

Códigos de estado

Formato de error

Las respuestas de error incluyen un cuerpo JSON con esta estructura:
Maneja los errores por su code, no por el texto de message: el mensaje puede cambiar, el código no. Al reportar un problema a soporte, incluye el trace_id.

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 es 201 con status: "INV" (inválido) y la lista validation_errors, con un elemento por regla:
Ese documento no se envía al ente tributario, no consume folio y no dispara webhook ni email. Queda visible en el portal y no se puede reintentar: para emitirlo, corrige el contenido y crea un documento nuevo. Puedes reusar el mismo external_reference, porque un documento en INV no lo retiene.
Un 201 no garantiza que el documento se vaya a emitir: revisa siempre el status de la respuesta.
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 en INV 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 responde 201 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 en INV 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 en INV con currency.exchange_rate en validation_errors:

Buenas prácticas

  • Reintenta las respuestas 5xx con backoff exponencial. El 502 señala un organismo externo caído, no un dato incorrecto: la misma petición suele funcionar más tarde.
  • No reintentes las respuestas 4xx sin corregir la petición: el resultado será el mismo.
  • Registra el trace_id y el identificador del recurso junto con la respuesta de error para facilitar el diagnóstico.