Blog
8 min de lectura

Un ticket de supermercado tiene 3 tipos de IVA. Ninguna app de gastos lo hacía bien.

Un controller nos dijo: 'El 4% del pan, el 10% de la carne, el 21% de los refrescos. Todo junto en un ticket. Y mi herramienta de gastos me pone todo al 21%.' Decidimos resolver el problema de verdad.

OCRInteligencia ArtificialIVAGastos CorporativosFiscalidad España
𝕏in

El controller de una empresa de servicios con 50 empleados nos explicó algo que le sacaba de quicio:

"Mis comerciales compran en supermercados para eventos. Un ticket tiene pan al 4%, carne al 10% y refrescos al 21%. La app que usamos pone todo al 21%. Pierdo deducciones. Y cuando lo corrijo a mano, pierdo tiempo."

Investigamos. Tenía razón. Probamos las herramientas más populares del mercado español con un ticket real de supermercado. Ninguna desglosaba correctamente los tres tipos de IVA.

Decidimos que nuestra solución no iba a ser "otra app de gastos más". Iba a entender la fiscalidad española de verdad.

4% + 10% + 21%

Tres tipos de IVA en un solo ticket.
Extraídos automáticamente por IA en menos de 3 segundos.

El problema que todo el mundo ignora

En España, un ticket de supermercado típico contiene productos gravados con hasta tres tipos impositivos distintos:

4%
IVA superreducido — pan, leche, huevos, frutas, verduras, cereales, quesos.
10%
IVA reducido — carne, pescado, agua mineral, productos de higiene, hostelería.
21%
IVA general — refrescos, alcohol, snacks, productos no alimentarios, bolsas.

Si tu app de gastos mete todo al 21%, estás sobredeclarando IVA soportado en unas líneas y subdeclarándolo en otras. Si lo mete todo al tipo mayoritario, el desglose fiscal del trimestre sale mal. Y si simplemente ignora el desglose — tu asesor no puede verificar nada.

El problema no es técnico para el OCR genérico. Es que a nadie le había importado lo suficiente como para resolverlo.

Lo que encontramos al analizar el mercado

Antes de construir nada, probamos 4 herramientas del mercado español con el mismo ticket — una compra de supermercado con 12 productos y los 3 tipos de IVA.

Herramienta A
21%
todo al tipo general, sin desglose
Herramienta B
10%
tipo mayoritario, ignoró el resto
Herramienta C
Error
no pudo parsear el ticket
Nuestra solución
4+10+21
desglose correcto, base + cuota por tipo

La mayoría de herramientas usan OCR basado en templates — plantillas fijas para cada formato de ticket. Cuando el ticket no encaja en la plantilla, fallan o simplifican.

Nosotros usamos un enfoque diferente.

IA generativa vs OCR de plantilla

La diferencia fundamental es que un OCR de plantilla busca datos en posiciones fijas ("el total está en la línea 27, columna 3"). Un modelo de visión con IA entiende el documento como lo haría una persona.

Los tickets de supermercado en España tienen un patrón que los humanos reconocemos al instante: al final del ticket hay una tabla de desglose con las letras A, B, C (o los porcentajes directamente) con base imponible y cuota. La IA lo ve igual.

// 💚 Lo que le pedimos a la IA (simplificado)
"Analiza esta imagen de un ticket o factura española."
"Extrae las líneas de IVA desglosadas:"
"- tipo_iva: porcentaje (4, 10, 21, 0)"
"- base_imponible: importe sin IVA"
"- cuota_iva: importe del IVA"

// 📊 Lo que devuelve (ejemplo real)
vat_lines: [
  { vat_rate: 4,  base_amount: 8.45,  vat_amount: 0.34 },
  { vat_rate: 10, base_amount: 23.70, vat_amount: 2.37 },
  { vat_rate: 21, base_amount: 6.20,  vat_amount: 1.30 }
]

// 🔒 Validación: sum(base + vat) debe ≈ total ticket

Pero la IA no es infalible. Por eso el paso siguiente es crítico.

La capa de validación que marca la diferencia

Extraer los datos es el 70% del trabajo. El 30% restante es asegurarte de que son correctos. Implementamos una función de normalización que valida cada línea de IVA:

// 💚 normalizeVatLines — la red de seguridad
// 1. ¿La suma de (base + cuota) de todas las líneas ≈ total?
// 2. ¿Cada cuota = base × tipo / 100 (±0.02€ por redondeo)?
// 3. ¿Los tipos son válidos en España? (0, 4, 10, 21)
// 4. ¿Hay bases negativas? → probablemente devolución

// 🔴 Si algo falla → se marca para revisión manual
// ✅ Si todo cuadra → gasto guardado automáticamente
⚠️

Lección aprendida: la IA + validación matemática es imbatible

La IA entiende contexto (sabe que "A" al final del ticket es el tipo superreducido). Las matemáticas detectan errores (si base × tipo ≠ cuota, algo ha ido mal). Juntas, consiguen lo que ninguna sola haría: extracción precisa con garantía de coherencia.

El resultado en la pantalla del usuario

El empleado hace una foto del ticket. En menos de 3 segundos ve:

  1. Proveedor detectado — nombre del supermercado, CIF si aparece
  2. Total, fecha, tipo de documento — pre-rellenados
  3. Desglose de IVA por líneas — cada tipo con su base y cuota, todo editable
  4. Indicador de deducibilidad — verde si el ticket incluye CIF de la empresa, rojo si no
  5. Consejo fiscal — "Este ticket no incluye tu CIF. Pide factura completa para deducir X€ de IVA"

El usuario confirma o corrige en un toque. 10 segundos y está guardado, categorizado, y listo para el informe de gastos.

Lo que NO hicimos

❌ No hicimos
  • Entrenar un modelo propio (6 meses y 100K€)
  • OCR genérico + regex para cada supermercado
  • Ignorar el multi-IVA como todos los demás
  • Confiar ciegamente en la IA sin validar
✅ Sí hicimos
  • IA generativa multimodal (entiende cualquier formato)
  • Prompt optimizado para fiscalidad española
  • Validación matemática post-extracción
  • Campos siempre editables por el usuario
  • 52 tests unitarios cubriendo todos los edge cases

Los números

Precisión multi-IVA
94%
desglose correcto sin edición manual
Tiempo de extracción
<3s
foto → datos estructurados con desglose
Formatos soportados
8
JPEG, PNG, WebP, GIF, HEIC, BMP, TIFF, PDF
Coste por ticket
~0.01€
API de visión por imagen procesada

Por qué importa para tu empresa

Si tu empresa genera 200 tickets de gasto al mes y el 30% son de supermercado con multi-IVA mal clasificado, estás declarando mal el IVA soportado cada trimestre. No es mucho dinero por ticket — pero acumulado en un año es una diferencia real en el modelo 303.

Y más importante: es un problema que tiene solución. Solo que nadie se había molestado en implementarla.

🛠️ Stack utilizado en este proyecto

Next.js 16 TypeScript Claude Vision API Supabase (RLS) Sharp (conversión imagen) Vitest (52 tests) Tailwind CSS v4

¿Tu herramienta de gastos pone todo al 21%? En Nexus Code desarrollamos sistemas de captura inteligente con desglose multi-IVA automático — OCR con IA que entiende la fiscalidad española de verdad. Cuéntanos tu caso y te hacemos una demo con tus propios tickets.

¿Te ha resultado útil?

4.5 / 5 — 12 valoraciones

¿Tu herramienta de gastos ignora el desglose de IVA?

Desarrollamos sistemas de captura inteligente que entienden la fiscalidad española de verdad. OCR con IA, multi-IVA, deducibilidad automática.

Cuéntanos tu proyecto