1. Inicio
  2. Blog
  3. Automatización
  4. Monta tu app: tickets de gasto con una foto y IA

Automatización · 12 min de lectura

Monta tu app: tickets de gasto con una foto y IA

El sobre de tickets que se vacía a final de mes es una tarea que nadie quiere. Aquí tienes el montaje completo, pantalla a pantalla: quien gasta hace una foto, la IA lee los datos, una fórmula los comprueba, una persona aprueba y administración lo recibe ordenado.

En 30 segundos

  • Quien hace el gasto sube la foto del ticket desde un formulario en el móvil: tienda, motivo y foto. Nada más.
  • Una IA que lee imágenes saca fecha, proveedor, NIF, base, IVA y total. Las comprobaciones (que base más IVA dé el total, que haya NIF, que la fecha tenga sentido) las hace una fórmula, no la IA.
  • Todo queda en una hoja con un estado. Nada se aprueba solo: una persona marca cada ticket como aprobado o rechazado.
  • Lo aprobado pasa a administración: por API a Holded en una tienda pequeña, o en un CSV con el formato que pida el ERP en una cadena, sin tocar el ERP.

Tiempo para montarlo: ~2 tardes contando las pruebas; algo más si conectas Holded.
Necesitas: una cuenta de Google de la tienda (Forms, Sheets y Drive), Make o n8n, acceso por API a una IA que lea imágenes y el móvil de la tienda. Holded, solo si quieres el registro automático.

En tienda siempre hay gastos pequeños que se pagan en el momento: una ferretería, una mensajería urgente, material de limpieza, un aparcamiento en una visita. El ticket va a un sobre, a la cartera o a un cajón, y a final de mes alguien los ordena, los teclea y pregunta por los que faltan. Es justo el tipo de tarea que se puede montar para que funcione sola, con una persona revisando solo lo que no cuadra.

Esta guía es práctica: qué crear, qué columnas, qué instrucción darle a la IA, cómo probarlo y qué falla. Si lo que te llega son facturas de proveedores en PDF, el montaje es parecido y lo tienes en facturas de proveedores con IA.

Qué vas a montar

DisparadorFoto del ticket, tienda y motivo desde el móvil
Paso 2La IA lee fecha, proveedor, NIF, base, IVA y total
Paso 3Fórmulas que comprueban importes, NIF y fecha
Paso 4Una fila por ticket con su estado
Paso 5Una persona aprueba o corrige los dudosos
ResultadoRegistro en Holded o exportación para administración
Mediadificultad: hay que pegar una instrucción y montar una llamada a la IA
2 tardespara tenerlo funcionando con tickets de prueba
Siemprecon una persona que aprueba antes de registrar

Tienda pequeña o cadena: qué cambia

PiezaTienda pequeñaCadena con SAP, Oracle o Dynamics
FormularioGoogle Forms, AppSheet, Glide o el formulario de n8nLa app de gastos de la empresa, si existe. Si no, lo que apruebe TI
IAAPI de OpenAI, Anthropic o Google, con cuenta del negocioSolo la IA que la empresa tenga aprobada
RegistroHoja de Google o AirtableHoja o lista en las herramientas de la empresa
AdministraciónHolded por API, o el registro para la gestoríaCSV con el formato que pida administración; nadie toca el ERP

En una cadena, si ya hay un sistema de notas de gasto, usa ese. Este montaje tiene sentido para lo que hoy se queda fuera: el fondo de caja de la tienda para gastos pequeños, por ejemplo. Y siempre hablándolo antes con administración.

La hoja donde vive todo

Crea una hoja de Google con una pestaña Tickets y estas columnas en la fila 1, escritas exactamente así (las plantillas de abajo las buscan por nombre):

ColumnaQué guardaQuién la rellena
ID · RecibidoIdentificador y fecha de envíoLa automatización
Tienda · Empleado · MotivoLo que se elige en el formularioQuien gasta
Fecha · Proveedor · NIF · NúmeroDatos del ticketLa IA
Base · Tipo IVA · Cuota IVA · TotalImportes, con punto o coma decimal según tu hojaLa IA
Tipo documentoTicket, factura simplificada o facturaLa IA
Estado · Motivos de revisiónPendiente de aprobar, Revisar, Aprobado o Rechazado, y por quéLas fórmulas y la persona que aprueba
Foto · Registrado en HoldedEnlace a la foto y número del registro en administraciónLa automatización
  • En Estado, añade una validación de datos (Datos › Validación de datos › Desplegable) con las cuatro opciones. Así nadie escribe «aprobao».
  • Formato condicional: fila en amarillo si Estado es Revisar. Es lo que mira quien aprueba.
  • Comparte la hoja solo con quien aprueba y con administración. Quien gasta no necesita verla.
Ejemplo Pestaña Tickets con cuatro envíos de prueba. Resumida: faltan NIF, base, IVA y foto.
IDTiendaFechaProveedorTotalEstadoMotivos de revisión
G-0101Centro2026-10-27Ferretería12,00 €RevisarBase + IVA no da el total
G-0102Norte2026-10-27Mensajería urgente18,15 €Pendiente de aprobar
G-0103Centro2026-10-28Droguería24,20 €Aprobado
G-0104Sur2026-10-29RevisarFaltan datos

El formulario en el móvil

Tres preguntas y una foto. Si pides más, el equipo dejará de usarlo.

Con Google Forms (lo más rápido)

  1. Crea un formulario con: Tienda (desplegable), Empleado (respuesta corta o desplegable), Motivo (desplegable: material, limpieza, reparación, mensajería, desplazamiento, otro) y Foto del ticket (Subir archivo, solo imágenes, un archivo).
  2. Las preguntas de subir archivo obligan a iniciar sesión con Google y guardan las fotos en el Drive del propietario del formulario. Usa la cuenta de la tienda o de la empresa, no la personal de nadie.
  3. En Respuestas, vincula el formulario a la hoja. Esa pestaña de respuestas es la entrada de la automatización.
  4. Abre el enlace en el móvil de la tienda y añádelo a la pantalla de inicio. Que esté a un toque.
Ejemplo Así queda el formulario en el móvil de la tienda (Google Forms).

Ticket de gastoFoto recta, con luz y el ticket entero

Tienda *Tienda Centro
Empleado *Elige tu nombre
Motivo *Material
Foto del ticket *ticket-ferreteria.jpg1 archivo

Enviar

Otras opciones

  • AppSheet: crea una app a partir de la misma hoja; una columna de tipo imagen abre la cámara del móvil. Más trabajo de montar, más cómoda para el equipo.
  • Glide o un formulario de Airtable con campo de adjunto: misma idea, si ya los usas.
  • El formulario de n8n: la plantilla de abajo trae uno con subida de archivo. No pide cuenta de Google, pero el enlace debe quedar solo en los móviles de la tienda.
La foto, bien hecha: ticket estirado sobre una superficie lisa, con luz, entero y recto. Sin el resguardo de la tarjeta al lado. Ponlo en la descripción del formulario: una foto buena ahorra la mitad de las revisiones.

¿Qué prompt usar para que la IA lea un ticket?

Necesitas un modelo que lea imágenes (los principales de OpenAI, Anthropic y Google lo hacen) y usarlo por API, con una cuenta del negocio, no desde el chat personal de nadie. En Make o n8n, la llamada se hace con el módulo de tu proveedor de IA o con una petición HTTP; las plantillas traen la segunda.

Copia y adapta:
Lee la foto de este ticket o factura de gasto de un negocio en España. Devuelve SOLO un objeto JSON con estas claves: fecha (AAAA-MM-DD), proveedor, nif, numero, base, tipo_iva, cuota_iva, total, tipo_documento ("ticket", "factura simplificada" o "factura"), confianza ("alta", "media" o "baja") y dudas. Importes como número con punto decimal y sin símbolo de euro. Si hay varios tipos de IVA, pon en base y cuota_iva la suma, en tipo_iva "varios" y explícalo en dudas. Si un dato no aparece o no se lee con claridad, pon null y dilo en dudas. No adivines ni calcules ningún dato que no esté impreso. No copies nombres de personas, números de tarjeta ni otros datos personales que aparezcan en el ticket.

Tres detalles que importan: temperatura a 0 (respuestas estables), pedir JSON (para que la automatización lo pueda leer sin trucos) y la frase de no adivinar. Prefieres un hueco vacío que revisar a un número inventado que parece bueno.

Antes de automatizar nada, prueba la instrucción a mano con cinco tickets reales en la herramienta de IA del negocio. Si con tus tickets falla algo concreto (por ejemplo, confunde el total con lo entregado en efectivo), añádelo a la instrucción: «el total es el importe a pagar, no lo entregado ni el cambio».

Las comprobaciones: las hace una fórmula, no la IA

La IA lee; las cuentas las comprueba la automatización. En la plantilla de n8n lo hace un nodo de código; en Make, unas variables con fórmulas. Si prefieres verlo en la hoja, añade una columna de control con algo así (hoja en español; J es Base, L Cuota IVA, M Total, F Fecha y H NIF):

Fórmula de control (adáptala a tus columnas):
=SI(O(F2=""; M2=""); "Faltan datos"; SI(ABS(J2+L2-M2)>0,02; "Base + IVA no da el total"; SI(H2=""; "Sin NIF"; SI(F2>HOY(); "Fecha futura"; SI(HOY()-F2>60; "Ticket antiguo"; "OK")))))
  • Base + IVA = total, con dos céntimos de margen por redondeos.
  • Hay fecha, proveedor y total. Sin ellos no se puede registrar.
  • NIF presente y con forma de NIF (letra o número, siete cifras, letra o número). No comprueba que exista, solo que no sea un error de lectura evidente.
  • Fecha razonable: ni futura ni de hace más de los días que fijéis.
  • Importe alto: por encima de una cifra que decidáis, se revisa siempre aunque todo cuadre.
  • Duplicados: mismo proveedor, misma fecha y mismo total. En la hoja, un formato condicional con CONTAR.SI.CONJUNTO lo marca.
Ejemplo La IA lee base 10,00 €, IVA 2,10 € y total 12,00 €. La fórmula ve 10 céntimos de diferencia y el ticket queda en Revisar con el motivo «Base + IVA no da el total». Al mirar la foto, el total real es 12,10 €: la última cifra estaba borrosa. Se corrige en la hoja y se aprueba.

El control humano: nada se aprueba solo

La automatización solo escribe dos estados: Pendiente de aprobar (todo cuadra) o Revisar (algo falla, con el motivo). Aprobado y Rechazado los pone una persona.

  • Quién aprueba: el encargado o quien lleve la caja de gastos. Nunca la misma persona que hizo el gasto.
  • Cuándo: una vez por semana basta. Filtra por Pendiente de aprobar, mira las fotos en diagonal y cambia el estado. Los de Revisar llegan por correo según entran.
  • Qué mira: que el gasto tiene sentido para el motivo y la tienda, y en los de Revisar, que la foto dice lo que dice la fila. Si corrige un dato, lo corrige en la hoja.
  • Qué hace con un rechazo: lo habla con la persona. La hoja no sustituye esa conversación.

¿Cómo pasar los gastos aprobados a Holded o al ERP?

Tienda pequeña con Holded

Holded tiene una API pública para crear documentos, y uno de los tipos es el documento de compra («purchase»), con una opción para marcarlo como ticket. Está en su referencia oficial: Create Document, en developers.holded.com (consultado en noviembre de 2026). La plantilla de n8n trae una segunda parte que, cada noche, coge las filas en Aprobado que aún no están registradas, crea el gasto en Holded y escribe en la hoja el identificador que devuelve.

  • Esa parte viene desactivada. Actívala solo cuando hayas revisado en la documentación los campos del cuerpo, el formato de la fecha y cómo se indican los impuestos.
  • La clave de API de Holded se guarda como credencial en n8n o en Make, nunca escrita dentro del flujo ni en la hoja.
  • Prueba con un único ticket y míralo en Holded antes de dejarlo programado.

Si no usas Holded, el registro de la hoja filtrado por Aprobado es lo que le pasas a tu gestoría. Pregúntale en qué formato lo quiere.

Cadena con SAP u otro ERP

No se conecta nada al ERP. Lo que sí puedes hacer es entregar lo aprobado en el formato exacto que administración ya importa: pregunta qué columnas, en qué orden, con qué formato de fecha y de decimales, y con qué códigos de tienda y de cuenta de gasto. Monta una pestaña Exportación que, con fórmulas, coloque las filas aprobadas en ese orden, y descárgala como CSV (Archivo › Descargar › CSV). La automatización puede enviarla por correo cada semana a quien la importa. La importación al ERP la hace administración con su proceso habitual.

Antes de tirar ningún papel: una foto guardada en una carpeta no es lo mismo que la digitalización certificada que permite destruir los originales. Guarda los tickets en papel como hasta ahora y pregunta a tu gestoría o a administración. Pregunta también si el ticket simple os vale para deducir el IVA o si para eso hace falta pedir factura completa al proveedor.

Descarga las plantillas

Son una plantilla de partida, no probada en tu cuenta: los nombres de los nodos y módulos cambian con las versiones, y tus columnas no serán exactamente las mías. Revísalas paso a paso y pruébalas con tickets de prueba antes de usarlas de verdad. No llevan ninguna clave: tienes que crear tus credenciales.

JSONFlujo n8n: tickets de gasto con IAFormulario con foto, lectura con IA, comprobaciones, hoja, aviso y envío opcional a Holded.Descargar (.json) MDGuía Make: tickets de gasto con IALos mismos pasos en Make, módulo a módulo, con las fórmulas.Descargar (.md)

En n8n: menú de los tres puntos › Import from File. Si no sabes qué herramienta elegir, tienes la comparativa de Make, n8n y Zapier.

Cómo probarlo antes de dárselo al equipo

  1. Ticket nítido y normal. Debe quedar en Pendiente de aprobar con todos los datos bien. Compáralos uno a uno con el papel.
  2. Ticket movido o arrugado. Debe quedar en Revisar y llegarte el correo.
  3. Ticket con dos tipos de IVA (un súper con comida y limpieza, por ejemplo). Debe salir «varios» y quedar en Revisar o con la duda anotada.
  4. El mismo ticket dos veces. Debe marcarlo la regla de duplicados.
  5. Una foto que no es un ticket. Debe quedar en Revisar con «Faltan datos», no con datos inventados.
  6. Aprobación. Cambia uno a Aprobado y comprueba que llega a Holded (con la parte activada) o que aparece en la pestaña de exportación.

Fallos típicos y cómo arreglarlos

Lo que pasaPor qué suele serCómo se arregla
La IA devuelve texto en vez de JSONFalta pedir formato JSON o el modelo añade explicacionesActiva el modo JSON de la API si lo tiene y deja «Devuelve SOLO un objeto JSON» al principio
Importes como 1.210 en lugar de 12,10Mezcla de punto y coma decimal entre la IA y la hojaPide punto decimal a la IA y convierte en la automatización; revisa la configuración regional de la hoja
Toma el «entregado» o el «cambio» como totalTickets de efectivo con varias cifras al pieAñade a la instrucción: «el total es el importe a pagar, no lo entregado ni el cambio»
Error de tamaño al enviar la fotoFotos del móvil muy pesadasReduce la resolución de la cámara o comprime la imagen antes de enviarla
No encuentra la fotoEl formulario guarda el enlace de Drive, no la imagenDescarga el archivo de Drive por su ID antes de la llamada a la IA (está en la guía de Make)
Los PDF fallanNo todas las llamadas de imagen aceptan PDFPide foto en el formulario; la plantilla deja los PDF en Revisar
Nadie aprueba y se acumulanNo hay un día fijo ni una persona asignadaUn día a la semana, una persona, y un recordatorio si hay más de X pendientes

Datos personales: qué no subir a la IA

Un ticket parece inofensivo, pero puede llevar el nombre de quien paga, los últimos dígitos de una tarjeta, una matrícula o, en una comida, datos de otras personas. Y la hoja guarda quién gastó qué.

  • Foto solo del ticket: nada de resguardos de tarjeta, DNI ni documentos personales al lado.
  • La instrucción pide a la IA que no copie datos personales. Aun así, revisa qué se guarda y dónde.
  • API con una cuenta del negocio y revisando sus condiciones de uso de datos, no el chat gratuito de nadie.
  • Hoja y carpeta de fotos compartidas solo con quien aprueba y con administración.
  • Informa al equipo de para qué se usan las fotos y quién las ve.
Más detalle: en qué datos no compartir con una IA tienes las reglas básicas y una política para el equipo.

Otras formas de recoger los tickets: Microsoft 365 y Dropbox

El formulario de Google es solo una opción. Si tu tienda trabaja con otra herramienta, el resto de la guía vale igual.

Microsoft 365

Forms, OneDrive y Power Automate

Un Microsoft Forms con foto, tienda y motivo; Power Automate guarda la foto en OneDrive y la fila en Excel. La lectura del ticket con IA sigue el mismo prompt de esta guía.

Google Workspace

Dropbox

Con una solicitud de archivos de Dropbox, cualquiera del equipo sube la foto a tu carpeta desde el móvil, sin cuenta. Power Automate tiene conector estándar de Dropbox para lanzar el flujo cuando llega un archivo nuevo.

Lo explico en Dropbox para ordenar los papeles de la tienda.

Tu primer paso hoy

  • Crea la hoja con las columnas de arriba y el desplegable de Estado.
  • Prueba la instrucción con cinco tickets del sobre de este mes en la IA del negocio y apunta qué falla.
  • Pregunta a tu gestoría o a administración en qué formato quieren recibir lo aprobado y si os vale el ticket simple.
La IA teclea, la fórmula comprueba y una persona decide. Si el orden se invierte, el ahorro de tiempo sale caro.

Preguntas frecuentes

¿Puedo saltarme la aprobación si todo cuadra?

No te lo recomiendo. Que base más IVA dé el total no dice si el gasto tiene sentido. La aprobación puede ser rápida, una vez por semana y en diagonal, pero tiene que hacerla una persona distinta de la que gastó.

¿Qué IA lee mejor los tickets?

Depende del tipo de ticket y cambia con cada versión. Prueba dos modelos con los mismos diez tickets reales y quédate con el que menos revisiones genere. Lo que más mejora la lectura no es el modelo, sino una foto recta y con luz.

¿Me vale Zapier en vez de Make o n8n?

Sí, la lógica es la misma: disparador del formulario, llamada a la IA, comprobaciones, fila en la hoja y aviso. Cambian los nombres de los pasos.

¿Y si trabajo en una cadena y no tengo acceso a nada?

Entonces la pieza útil es la exportación: lo aprobado en el formato que administración ya importa. Propónlo con la plantilla de la hoja y las herramientas que la empresa tenga aprobadas, y deja el ERP como está.

Más plantillas y prompts en recursos de IA y automatización.

Fuentes

Consultadas en noviembre de 2026.

Para seguir: Cómo automatizo procesos con IA · Facturas de proveedores: cómo registrarlas con IA sin teclear ninguna · Cómo usar la IA en tu tienda sin poner en riesgo los datos de tus clientes

Colaborar

¿Te ha resultado útil?

Escribo sobre retail, operaciones e IA. Si quieres comentar el artículo o colaborar en algo parecido, escríbeme.