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_id debe 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.

CampoTipoDescripciónValidaciones
erp_invoice_idStringID de la factura en ERPDebe ser una factura válida del archivo de facturas de esta carga. Se conserva como texto
kindStringTipo de renglónTAX (impuesto), WITHHOLDING (retención) o UNKNOWN (no se conocen los impuestos). Se recortan espacios y se pasa a mayúsculas
codeStringCódigo del impuestoTexto libre, se pasa a mayúsculas (ej., IVA, RETEFUENTE, RETEICA, RETEIVA). Obligatorio en TAX y WITHHOLDING; vacío en UNKNOWN
amountFloatImporte del impuestoPunto 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_totalBooleanEn una retención, indica si ya se restó del total y del saldo de la facturatrue, 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

CampoTipoDescripciónValidacionesPor Defecto
jurisdictionStringJurisdicción del impuesto (ej., el municipio de la ReteICA)-null
nameStringNombre del impuesto en el ERP-null
base_amountFloatBase 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 FacturasPunto decimal, sin separadores de miles ni exponentes. Debe caber en numeric(18,2); se redondea a dos decimales. Vacío en UNKNOWNnull
rate_percentFloatTarifa del impuesto, en por cientoSiempre 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 UNKNOWNnull
erp_line_refStringReferencia estable del renglón en el ERPSe conserva como texto. Vacío en UNKNOWNnull

Estados

Cada factura de la carga queda en uno de tres estados:

  • Con impuestos (KNOWN): el archivo trae filas TAX o WITHHOLDING para 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ón UNKNOWN, 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, por kind, code, jurisdiction, rate_percent y name. 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,,,,,,,,