Calculadora de IVA
100 al 21 % se convierte en 121, con 21 de impuesto, y 121 al 21 % vuelve a 100: añada el IVA a un precio neto o extráigalo de un total que ya lo incluye, y obtenga siempre base, impuesto y total. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Modo de cálculo
- Agregar impuesto
- Cantidad
- 100
- Tasa de impuesto
- 21
- Importe neto
- 100
- Importe del impuesto
- 21
- Importe bruto
- 121
Devuelve neto, impuesto y bruto.
Añadir el impuesto y volver a sacarlo
Al añadir, el importe que escribe es el precio neto. El impuesto es la base por el tipo y el total es la base más el impuesto, de modo que 100 al 21 % da 21 de impuesto y 121 en total. El tipo se escribe como porcentaje simple: 21 significa 21 %. Extraer funciona al revés: toma el importe como total con impuesto incluido, lo divide entre uno más el tipo para hallar la base y deja la diferencia como impuesto, así que 121 al 21 % recupera 100 y 21. Es lo que necesita para separar el impuesto del total de un ticket o de una línea de factura con IVA incluido. Un tipo de cero está permitido y da un impuesto de cero.
El redondeo y el error clásico
El error más común es restar el tipo al total. Como el tipo se aplica a la base, eso quita de más; dividir entre uno más el tipo es la operación inversa correcta. La segunda trampa es el redondeo. Aquí las tres cifras se redondean por separado: al añadir, el impuesto se calcula a partir de la base ya redondeada y el total se redondea después, de modo que cada línea cuadra en contabilidad en lugar de depender de una fracción oculta. Sin eso, con tipos poco habituales, base más impuesto puede no coincidir con el total por un céntimo. Puede elegir de 0 a 8 decimales: más para monedas o precios unitarios que los necesiten, o 0 para unidades enteras.
Añadir frente a extraer
El campo rate es un porcentaje (21 significa 21 %) convertido internamente a r = rate / 100. Extraer es la inversa de añadir y es lo que se usa para desglosar la parte de impuesto del total de un recibo o de una línea de factura bruta. Cada rama devuelve la terna completa de net, tax y gross más el mode y la rate que usted aportó.
Redondear cada componente de forma independiente
Como los tres componentes se redondean por separado, add calcula tax a partir del net redondeado y luego redondea gross, lo que mantiene cada línea coherente consigo misma para la contabilidad en lugar de derivarla de un valor intermedio sin redondear. Esto importa con precisión más alta o tasas inusuales, donde una única fracción oculta podría hacer que net más tax pareciera discrepar de gross en un céntimo. Elija más decimales para las monedas o precios unitarios que los necesiten, o 0 para mostrar unidades enteras.
Preguntas frecuentes
¿Cómo se indica la tasa?
Como un número porcentual, de modo que 21 significa 21 %. Debe ser finita y no negativa; se permite el cero y da un impuesto de cero.
¿Cómo se redondean los importes?
net, tax y gross se redondean cada uno half-up de forma independiente a los decimals que usted fije (de 0 a 8, por defecto 2), de modo que las líneas siguen siendo coherentes consigo mismas.
¿Cómo añado un 21 % de IVA a un precio?
Elija añadir el impuesto y escriba el precio neto y el tipo como porcentaje, 21 para el 21 %. Un precio neto de 100 da 21 de impuesto y un total de 121.
¿Cómo saco el IVA de un total que ya lo incluye?
Elija extraer el impuesto y escriba el total con IVA y el tipo. La base es el total dividido entre uno más el tipo: 121 al 21 % devuelve una base de 100 y un impuesto de 21.
¿Por qué no basta con restar el 21 % al total?
Porque el tipo se aplica sobre la base, no sobre el total. Restar el 21 % de 121 quita más que los 21 de impuesto que contiene; dividir 121 entre 1,21 da la base correcta de 100.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/dev/vat-calculator \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"add","amount":100,"rate":21}'const res = await fetch("https://api.kit.forhosting.com/dev/vat-calculator", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mode": "add",
"amount": 100,
"rate": 21
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/vat-calculator",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mode": "add",
"amount": 100,
"rate": 21
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/vat-calculator", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mode":"add","amount":100,"rate":21}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mode":"add","amount":100,"rate":21}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/vat-calculator", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"mode": "add",
"amount": 100,
"rate": 21
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.vat_calculator",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Calcula el impuesto sobre el valor añadido o sobre las ventas de dos maneras. mode=add trata el importe como neto y le añade una tasa porcentual por encima; mode=extract trata el importe como un bruto con el impuesto incluido y calcula el neto y el impuesto que ya contiene.
Añadir frente a extraer
En mode=add el amount es el precio neto: net es igual a amount, tax es igual a net por r, y gross es igual a net más tax, de modo que 100 al 21 % devuelve net 100, tax 21, gross 121. En mode=extract el amount es el bruto con el impuesto incluido: net es igual a gross dividido entre (1 + r), y tax es igual a gross menos net, de modo que 121 al 21 % recupera net 100 y tax 21.
Rangos, validación y errores tipados
mode, amount y rate son todos obligatorios. mode debe ser exactamente add o extract. amount y rate deben ser cada uno un número finito que no sea negativo, y sus magnitudes están limitadas a 1e12 para mantener los resultados con sentido; una tasa de cero está permitida y simplemente da un impuesto de cero. decimals debe ser un entero dentro de 0..8. Cualquier infracción, o una entrada que no sea un objeto, lanza un error invalid_input tipado que nombra el problema en lugar de un fallo sin tipo, y extract protege frente a una tasa de -100 % que haría que 1 + r fuera cero.
Casos de integración
Fijar precios con el impuesto por encima
Use mode=add para convertir un precio neto de catálogo en un precio bruto de cara al cliente a su tasa local de IVA o de impuesto sobre las ventas.
Conciliar recibos y facturas
Use mode=extract para dividir un total con el impuesto incluido en sus partes de neto e impuesto para la contabilidad y las declaraciones.
Sistemas de pago y facturación
Llame a la API para calcular neto, impuesto y bruto de forma coherente en un carrito de comercio electrónico o una cadena de facturación a cualquier tasa.
Preguntas técnicas
¿Cuál es la diferencia entre add y extract?
add trata amount como neto y le pone el impuesto por encima (gross = net + tax). extract trata amount como bruto con el impuesto incluido y calcula net = gross / (1 + rate/100) y el impuesto contenido.
¿Qué provoca un error?
Un error invalid_input tipado para un mode incorrecto, un amount o rate negativo o no finito, magnitudes por encima de 1e12, decimals fuera de 0..8, o una tasa de -100 % en extract.
¿Es gratuita y cuánto cuesta la API?
El widget del navegador es gratuito; la API usa saldo prepago de KIT desde $0.002, y las tareas fallidas no se cobran.