Skip to Content
v1.5Documentación oficial de la API LX CloudPos · estable en producción

Exoneraciones

Algunos clientes (gobiernos, ONG, zonas francas) cuentan con una resolución de exoneración de IVA emitida por el Ministerio de Hacienda.

Exoneración ≠ exención. La exoneración aplica a un cliente con resolución vigente; la exención aplica al producto. Este apartado trata únicamente de exoneraciones.

El mecanismo real: idExoneracion, nunca un monto

Para exonerar una línea se envía idExoneracion (el id de una exoneración ya registrada para ese cliente), y nada más. El monto exonerado no se manda: lo calcula el servidor a partir de la tarifa de IVA real del producto y el porcentaje autorizado en la exoneración, topando el resultado para que nunca se exonere más impuesto del que la línea tiene.

montoExoneracion existe en el contrato pero está IGNORADO. Es un campo heredado de una versión anterior de la API: se acepta en el JSON para no romper a integradores que ya lo envían, pero su valor nunca se usa para nada — no se suma, no se resta, no aparece en el comprobante. Si se manda montoExoneracion sin idExoneracion, la línea sale gravada con IVA completo, sin error ni aviso. Ver FacturaApiLineaDto para el detalle del campo.

{ "idProducto": 101, "cantidad": 1, "idExoneracion": 7 }

De dónde sale el idExoneracion

El integrador lo obtiene de GET /api/v1/clientes/{identificacion}, en el arreglo exoneraciones de la respuesta (ClienteApiResponseDto). Cada elemento trae su idExoneracion, el porcentaje autorizado, las fechas de emisión/expiración y un booleano vigente ya resuelto por el servidor:

{ "idCliente": 46, "identificacion": "117890123", "...": "...", "exoneraciones": [ { "idExoneracion": 7, "tipoDocumento": "03", "tipoDocumentoNombre": "Exoneración compras autorizadas de Zona Franca", "numeroDocumento": "EX-2026-00412", "nombreInstitucion": "PROCOMER", "fechaEmision": "2026-01-10T00:00:00Z", "fechaExpiracion": "2027-01-10T00:00:00Z", "porcentajeExoneracion": 100, "estado": true, "vigente": true } ] }

Las exoneraciones en sí (alta, edición, vigencia) no se administran por la API — se registran desde el POS. GET /clientes/{identificacion} solo las expone para que el integrador sepa qué id mandar.

Validación al emitir

El id se valida contra el cliente del documento y la vigencia de la exoneración; el que no pasa, no factura con IVA completo en silencio, sino que devuelve 400:

CausaCuándo ocurre
Se envió idExoneracion sin cliente en el documentoLa exoneración pertenece a un cliente registrado; no aplica a un Tiquete Electrónico sin receptor.
El id no existe o no pertenece al cliente del documentoEl idExoneracion es de otro cliente, o no existe en el tenant.
La exoneración está inactiva (estado: false)Se dio de baja en el POS.
La exoneración está vencida (fechaExpiracion en el pasado)Igual que vigente: false en la respuesta de GET /clientes/{identificacion}.

Ejemplo de rechazo:

{ "error": "Línea 1: la exoneración 7 venció el 10/01/2026." }

Comportamiento del cálculo

El porcentaje autorizado en la exoneración se aplica sobre el IVA real de la línea, topado a la tarifa del producto: una exoneración al 100% sobre un producto con IVA al 2% exonera 2 puntos, no 13. Con una exoneración parcial (por ejemplo 50%):

  • 50% del IVA se cobra normal.
  • 50% del IVA se exonera (no se cobra).

LX CloudPos divide el monto entre “base gravada” y “base exonerada” automáticamente. Ver cálculo de totales.

Ver también: IVA.