Cálculo del IVA

Conforme al Art. 21°, de la Ley N° 18.267:

a contar del 1° de enero de 1984, las personas naturales, instituciones bancarias, de previsión social y en general todo otro servicio, institución o empresa, pública o privada, eliminarán de su contabilidad las fracciones de la unidad monetaria. Con tal objeto, se despreciarán las fracciones inferiores a cincuenta centavos de peso y se elevarán al entero superior las de cincuenta centavos o más.

Por lo tanto, la forma correcta de calcular el IVA a partir del monto neto, es redondear el valor del IVA.

Por ejemplo, el IVA del monto neto $33.655 es $6.394 (no $6.395).

En caso de no aplicar correctamente este criterio, los documentos y libros serán aceptados por el SII, pero generarán un reparo leve que será informado al contribuyente con la observación “LBR – 2 – Reparo en Calculo de – [MntIVA] distinto a [MntNeto]*[TasaImp]“.

Calcular el Monto Neto a partir del Monto Total puede parecer algo muy sencillo, sin embargo, no lo es. De hecho, para algunos montos totales como $103, $110, $116, etc. no existe un monto neto al que se le pueda sumar el IVA calculado por medio del Art. 21° de la Ley.

Cuando se emite un documento con SuperFactura, es posible simplemente omitir el tag MntNeto para que SuperFactura realice el cálculo automáticamente. De todas maneras, acá presentamos pseudo-código para explicar como se puede realizar este cálculo:

/**
 * Obtiene neto del total, procurando que neto + iva (redondeado) = total
 * OBS: Hay valores para $total para los cuales no existirá un neto tal que:
 * neto + iva = total, donde iva = round(neto) * 0.19
 * Por ejemplo: total = 103, 110, 116, 122, 128, 135, 141, 147, 153, 160, 166,172, 178, 185, 191, 197, 204, 210,...
 */
function GetNetoFromTotal($total, $allowFloat = false) {
	if($allowFloat) {
		$neto = $total / 1.19;
	} else {
		$neto = floor($total / 1.19); // Intentaremos tanteando con el neto menor (floor($x) < round($x))
		$ivaDelNeto = round($neto * 0.19); // IVA calculado correctamente (con round)
		if($neto + $ivaDelNeto > $total) {
			// No cuadra => arreglar neto para cuadrar
			$neto--;
		}
	}
	return $neto;
}

4 thoughts on “Cálculo del IVA

  1. y si hago una boleta por 61000, el neto tiene decimales. Se redondea el neto para calcular el IVA? (el sitio del sii pone reparos para todas las opciones “normales”)

    Gracias.

Leave a Reply to SuperFactura Cancel reply