Impuestos por factura
Impuestos y retenciones de cada factura, tal como los tiene el ERP (archivo opcional).
Impuestos (IVA, impoconsumo) y retenciones (ReteFuente, ReteICA, ReteIVA) de cada factura, tal como
los registra el ERP. Archivo invoice_taxes.csv.
Archivo opcional: si no lo envías, Fibek conserva los impuestos que ya tenía y las facturas nuevas quedan con impuestos desconocidos (
UNKNOWN). Ver Estados.
Dependencia: se procesa justo después de Facturas y solo dentro de la misma carga: cada
erp_invoice_iddebe ser una factura válida del archivo de facturas de esa carga. No basta con que la factura ya exista en Fibek.
Endpoint
POST /manual-csv-integration/upload/invoice-taxes
- Campo de Formulario:
file
Este archivo no tiene endpoint en /full-csv-integration. Se carga por la Integración Manual
de la plataforma (Mi Compañía → Integraciones → Integración Manual), con la sesión iniciada y
junto con el archivo de facturas de la misma carga. El endpoint valida y sube el archivo; las
referencias a facturas se revisan al procesar la carga completa.
Campos Requeridos
Las cinco columnas deben estar en la cabecera siempre, aunque una declaración UNKNOWN las deje
vacías.
| Campo | Tipo | Descripción | Validaciones |
|---|---|---|---|
erp_invoice_id | String | ID de la factura en ERP | Debe ser una factura válida del archivo de facturas de esta carga. Se conserva como texto |
kind | String | Tipo de renglón | TAX (impuesto), WITHHOLDING (retención) o UNKNOWN (no se conocen los impuestos). Se recortan espacios y se pasa a mayúsculas |
code | String | Código del impuesto | Texto libre, se pasa a mayúsculas (ej., IVA, RETEFUENTE, RETEICA, RETEIVA). Obligatorio en TAX y WITHHOLDING; vacío en UNKNOWN |
amount | Float | Importe del impuesto | Punto decimal, sin separadores de miles ni exponentes. Debe caber en numeric(18,2); se redondea a dos decimales. En TAX y WITHHOLDING debe ser mayor a 0 después de redondear. Vacío en UNKNOWN |
deducted_from_total | Boolean | En una retención, indica si ya se restó del total y del saldo de la factura | true, false, 1 o 0, sin distinguir mayúsculas. Obligatorio en TAX y WITHHOLDING; en un impuesto (TAX) envía false: no se usa. En UNKNOWN va vacío (también se acepta false o 0) |
Campos Opcionales
| Campo | Tipo | Descripción | Validaciones | Por Defecto |
|---|---|---|---|---|
jurisdiction | String | Jurisdicción del impuesto (ej., el municipio de la ReteICA) | - | null |
name | String | Nombre del impuesto en el ERP | - | null |
base_amount | Float | Base sobre la que se calculó este impuesto. No se usa para el descuento por pronto pago: el valor antes de impuestos de toda la factura va en pre_tax_amount de Facturas | Punto decimal, sin separadores de miles ni exponentes. Debe caber en numeric(18,2); se redondea a dos decimales. Vacío en UNKNOWN | null |
rate_percent | Float | Tarifa del impuesto, en por ciento | Siempre en por ciento, con punto decimal: 19 es un IVA del 19 % y 2.5 una ReteFuente del 2,5 %. La ReteICA también va en por ciento, no en por mil: 9,66 por mil se escribe 0.966. Sin separadores de miles ni exponentes. Debe caber en numeric(7,4); se redondea a cuatro decimales. Vacío en UNKNOWN | null |
erp_line_ref | String | Referencia estable del renglón en el ERP | Se conserva como texto. Vacío en UNKNOWN | null |
Estados
Cada factura de la carga queda en uno de tres estados:
- Con impuestos (
KNOWN): el archivo trae filasTAXoWITHHOLDINGpara la factura. - Sin impuestos (
NONE): el archivo se envió y no trae filas para la factura. Enviar el archivo significa que conoces el dato, aunque solo tenga la cabecera. - Desconocido (
UNKNOWN): la factura trae una declaraciónUNKNOWN, o el archivo no se envió y la factura es nueva.
Para declarar que no conoces los impuestos de una factura, envía una sola fila con
kind = UNKNOWN y el resto de los datos del impuesto vacíos. Se borran los impuestos anteriores de
esa factura. jurisdiction y name también se aceptan en esa fila, pero conviene dejarlos vacíos.
Filas repetidas y filas descartadas
- Cada factura reemplaza su conjunto completo de impuestos: envía juntos todos los de una factura.
- Un renglón se identifica por
erp_line_ref; si no lo trae, porkind,code,jurisdiction,rate_percentyname. Las filas idénticas se cuentan una vez; dos valores distintos para el mismo renglón descartan los impuestos de esa factura. - Una fila inválida descarta todos los impuestos de esa factura, que conserva los que tenía, y la respuesta trae una advertencia. Las demás facturas siguen.
- Faltan columnas obligatorias, hay columnas repetidas o filas con otra cantidad de columnas: el archivo completo se rechaza.
Ejemplo CSV
erp_invoice_id,kind,code,amount,deducted_from_total,jurisdiction,name,base_amount,rate_percent,erp_line_ref
INV001,TAX,IVA,19000,false,,IVA,100000,19,001
INV001,WITHHOLDING,RETEFUENTE,2500,true,,ReteFuente,100000,2.5,002
INV001,WITHHOLDING,RETEICA,966,true,,ReteICA,100000,0.966,003
INV002,UNKNOWN,,,,,,,,