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
Tienda pequeña o cadena: qué cambia
| Pieza | Tienda pequeña | Cadena con SAP, Oracle o Dynamics |
|---|---|---|
| Formulario | Google Forms, AppSheet, Glide o el formulario de n8n | La app de gastos de la empresa, si existe. Si no, lo que apruebe TI |
| IA | API de OpenAI, Anthropic o Google, con cuenta del negocio | Solo la IA que la empresa tenga aprobada |
| Registro | Hoja de Google o Airtable | Hoja o lista en las herramientas de la empresa |
| Administración | Holded por API, o el registro para la gestoría | CSV 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):
| Columna | Qué guarda | Quién la rellena |
|---|---|---|
| ID · Recibido | Identificador y fecha de envío | La automatización |
| Tienda · Empleado · Motivo | Lo que se elige en el formulario | Quien gasta |
| Fecha · Proveedor · NIF · Número | Datos del ticket | La IA |
| Base · Tipo IVA · Cuota IVA · Total | Importes, con punto o coma decimal según tu hoja | La IA |
| Tipo documento | Ticket, factura simplificada o factura | La IA |
| Estado · Motivos de revisión | Pendiente de aprobar, Revisar, Aprobado o Rechazado, y por qué | Las fórmulas y la persona que aprueba |
| Foto · Registrado en Holded | Enlace a la foto y número del registro en administración | La 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.
| ID | Tienda | Fecha | Proveedor | Total | Estado | Motivos de revisión |
|---|---|---|---|---|---|---|
| G-0101 | Centro | 2026-10-27 | Ferretería | 12,00 € | Revisar | Base + IVA no da el total |
| G-0102 | Norte | 2026-10-27 | Mensajería urgente | 18,15 € | Pendiente de aprobar | |
| G-0103 | Centro | 2026-10-28 | Droguería | 24,20 € | Aprobado | |
| G-0104 | Sur | 2026-10-29 | Revisar | Faltan 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)
- 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).
- 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.
- En Respuestas, vincula el formulario a la hoja. Esa pestaña de respuestas es la entrada de la automatización.
- Abre el enlace en el móvil de la tienda y añádelo a la pantalla de inicio. Que esté a un toque.
Ticket de gastoFoto recta, con luz y el ticket entero
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.
¿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.
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):
=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.
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.
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
- Ticket nítido y normal. Debe quedar en Pendiente de aprobar con todos los datos bien. Compáralos uno a uno con el papel.
- Ticket movido o arrugado. Debe quedar en Revisar y llegarte el correo.
- 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.
- El mismo ticket dos veces. Debe marcarlo la regla de duplicados.
- Una foto que no es un ticket. Debe quedar en Revisar con «Faltan datos», no con datos inventados.
- 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 pasa | Por qué suele ser | Cómo se arregla |
|---|---|---|
| La IA devuelve texto en vez de JSON | Falta pedir formato JSON o el modelo añade explicaciones | Activa 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,10 | Mezcla de punto y coma decimal entre la IA y la hoja | Pide 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 total | Tickets de efectivo con varias cifras al pie | Añ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 foto | Fotos del móvil muy pesadas | Reduce la resolución de la cámara o comprime la imagen antes de enviarla |
| No encuentra la foto | El formulario guarda el enlace de Drive, no la imagen | Descarga el archivo de Drive por su ID antes de la llamada a la IA (está en la guía de Make) |
| Los PDF fallan | No todas las llamadas de imagen aceptan PDF | Pide foto en el formulario; la plantilla deja los PDF en Revisar |
| Nadie aprueba y se acumulan | No hay un día fijo ni una persona asignada | Un 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.
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.
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.
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.
- Microsoft Learn: lista de conectores estándar. Excel Online (Business), Microsoft Forms, Microsoft Teams y Dropbox están entre los conectores estándar de Power Automate.
- Ayuda de Dropbox: solicitudes de archivos. Cualquiera puede enviarte archivos a una carpeta, tenga cuenta de Dropbox o no. Disponible en todos los planes.
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