¿Por qué automatizar esto?
Si tu pyme cobra por transferencia bancaria (la mayoría de pymes en Chile lo hace), recibes vouchers por WhatsApp todo el día. Anotar cada uno a mano en Excel o Google Sheets te toma 2-4 minutos por voucher. Con 30 vouchers al día son 2 horas diarias solo registrando. Y se te olvidan algunos, se duplican otros, hay errores de tipeo.
El flujo automatizado lo hace en 15 segundos sin tu intervención y con precisión cercana al 98%.
Qué vamos a construir
- Cliente envía foto del voucher a un WhatsApp dedicado
- n8n recibe el webhook con la imagen
- Claude Vision (o GPT-4 Vision) extrae los datos del voucher
- Google Sheets se actualiza automáticamente
- El cliente recibe confirmación instantánea
Stack tecnológico y costos reales
| Componente | Para qué sirve | Costo mensual |
|---|---|---|
| Twilio WhatsApp Business | Recibir mensajes y enviar respuestas | USD $5-15 (según volumen) |
| n8n self-hosted (DigitalOcean) | Orquestador del flujo | USD $6 (droplet mínimo) |
| Anthropic Claude API | OCR + extracción con IA | USD $5-25 (USD $0.005 por voucher) |
| Google Sheets + Drive | Almacenamiento de datos e imágenes | Gratis |
| TOTAL | USD $16-46/mes (≈$15.000-43.000 CLP) |
Para una pyme que registra 500 vouchers/mes, el costo total ronda los $25.000 CLP/mes. Vs. 2 horas diarias × 30 días × valor hora de tu administradora ($3.000-$5.000) = $180.000-$300.000/mes en sueldos. Se paga 10x el primer mes.
Paso 1 · Crear cuenta WhatsApp Business y conectar Twilio
Twilio es la forma más fácil de conectar WhatsApp Business a una API en Chile (Meta también funciona pero el setup es más burocrático).
Subpaso 1.1 — Crear cuenta Twilio
- Ve a
twilio.comy crea cuenta con tu email comercial - Verifica tu número celular
- En el dashboard, anda a Messaging → Try it out → Send a WhatsApp message
- Activa el sandbox (gratis para pruebas)
Subpaso 1.2 — Configurar webhook
En Twilio sandbox, configura la URL de webhook a tu instancia de n8n (la veremos en el paso 2):
https://tu-n8n.com/webhook/voucher-whatsapp
Subpaso 1.3 — Para producción (cuando funcione el flujo)
Comprar un número WhatsApp Business en Twilio (~USD $1/mes) y solicitar aprobación de plantillas. Toma 1-2 días hábiles.
Paso 2 · Levantar n8n self-hosted
n8n es el orquestador del flujo. Versión open-source self-hosted es gratis.
Subpaso 2.1 — Crear droplet en DigitalOcean
- Crear cuenta en
digitalocean.com - Crear nuevo droplet: Ubuntu 22.04, 1GB RAM, USD $6/mes
- Conectar por SSH
Subpaso 2.2 — Instalar n8n con Docker
# Instalar Docker
curl -fsSL https://get.docker.com | sh
# Crear docker-compose.yml
cat > docker-compose.yml <<EOF
version: '3'
services:
n8n:
image: n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=tu-password-fuerte
- N8N_HOST=tu-dominio.com
- WEBHOOK_URL=https://tu-dominio.com/
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
EOF
docker compose up -d
Subpaso 2.3 — Configurar dominio + HTTPS
Apuntar un subdominio (ej. n8n.atikodigital.cl) a la IP del droplet. Instalar Caddy o nginx con Let's Encrypt para SSL gratis.
Paso 3 · Crear el flujo en n8n
Nodo 1: Webhook (Twilio)
- HTTP Method:
POST - Path:
voucher-whatsapp - Response:
Immediately
Nodo 2: Filtrar solo si trae imagen
{{ $json.NumMedia > 0 ? true : false }}
Nodo 3: Descargar la imagen
Twilio envía URLs con autenticación. Usar nodo HTTP Request:
- URL:
{{ $json.MediaUrl0 }} - Authentication: Basic Auth con Account SID y Auth Token
- Response Format:
file
Nodo 4: Llamar a Claude Vision para extraer datos
HTTP Request a la API de Anthropic:
POST https://api.anthropic.com/v1/messages
Headers:
x-api-key: {{ $env.ANTHROPIC_API_KEY }}
anthropic-version: 2023-06-01
content-type: application/json
Body:
{
"model": "claude-haiku-4-5",
"max_tokens": 1024,
"messages": [{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": "{{ $node['Descargar imagen'].binary.data.data }}"
}
},
{
"type": "text",
"text": "Eres un sistema OCR especializado en vouchers bancarios chilenos. Analiza esta imagen y devuelve SOLO un JSON con estos campos: { monto: number, fecha: string (YYYY-MM-DD), hora: string (HH:mm), banco_origen: string, rut_depositante: string|null, nombre_depositante: string|null, numero_operacion: string|null, es_voucher_valido: boolean }. Si no es un voucher válido devuelve {es_voucher_valido: false}. Solo el JSON, sin texto adicional."
}
]
}]
}
Nodo 5: Parsear respuesta JSON
const text = $input.first().json.content[0].text;
return JSON.parse(text);
Nodo 6: Validar y manejar errores
Si es_voucher_valido === false, responder al cliente "No pudimos leer tu comprobante, ¿podrías reenviarlo con mejor calidad?" y terminar.
Nodo 7: Verificar duplicados en Sheets
Buscar en el Sheet si ya existe una fila con el mismo numero_operacion + banco_origen. Si existe, responder al cliente que el pago ya está registrado.
Nodo 8: Append fila a Google Sheets
- Documento: ID del Sheet "Pagos-Recibidos"
- Hoja:
Movimientos - Columnas: Timestamp, Monto, Fecha, Hora, Banco, RUT, Nombre, NumOperacion, EstadoBoleta, URL Imagen
Nodo 9: Guardar imagen en Drive
Upload de la imagen a la carpeta /Atiko/Vouchers/2026/. Anotar URL en la celda "URL Imagen" del paso anterior.
Nodo 10: Responder al cliente por WhatsApp
POST https://api.twilio.com/2010-04-01/Accounts/{{AccountSid}}/Messages.json
Body: {
"From": "whatsapp:+14155238886",
"To": "{{ $json.From }}",
"Body": "✓ Recibido. Pago de ${{ formatMoney($json.monto) }} registrado. Te llega la boleta en breve."
}
Paso 4 · Probar el flujo
Enviar 5-10 vouchers reales desde distintos bancos chilenos (Estado, BCI, Santander, Itaú, BancoChile, Falabella). Verificar:
- Que se extraigan los datos correctamente
- Que aparezcan en Sheets
- Que el cliente reciba confirmación rápida
- Que la imagen quede en Drive
Casos a probar especialmente:
- Voucher borroso → debe pedir reenvío
- Captura de pantalla VS foto de pantalla → ambas deben funcionar
- Voucher en formato landscape vs portrait
- Duplicado del mismo voucher → debe detectar
- Imagen que NO es voucher (foto de gato, comida) → debe rechazar
Mejoras opcionales
Integración con boletas SII
Una vez registrado el voucher, llamar a OpenFactura/Haulmer para emitir la boleta automáticamente. Ver el servicio completo.
Notificación al equipo
Mensaje a un canal interno (Slack/WhatsApp del equipo) cuando llega un pago superior a cierto monto: "🎉 Pago grande de $XXX.XXX de [cliente]".
Dashboard en Sheets
Una segunda hoja en el mismo Sheet con métricas: total recaudado hoy/semana/mes, top 10 clientes, banco más usado.
Errores comunes y cómo resolverlos
Claude Vision devuelve texto antes del JSON
Refuerza el prompt: "RESPONDE SOLO EL JSON. NADA MÁS. NI EXPLICACIONES NI TEXTO ANTES O DESPUÉS." Usa "claude-haiku-4-5" que es más obediente al formato.
El voucher es muy oscuro / contraluz
El bot debe responder pidiendo reenvío en mejor luz. Si el cliente insiste con la misma foto borrosa, derivar a humano.
Vouchers de bancos digitales (Tenpo, MACH, Tapp)
Suelen tener formatos no-tradicionales. Funcionan, pero al inicio revísalos manualmente para confirmar precisión.
Costo de API se dispara
Establecer un límite mensual de gasto en el panel de Anthropic. Y si superas 2000 vouchers/mes, cambiar a OCR self-hosted (Tesseract o PaddleOCR) para los casos simples y usar Claude solo para los complejos.
¿Lo armas tú o lo armamos por ti?
Si después de leer esto sientes que es factible y tienes ganas, dale: la documentación de n8n es buena y hay tutoriales en YouTube. Calcula 2-4 días de trabajo full-time para tenerlo corriendo bien.
Si prefieres que lo haga alguien con experiencia, esto está incluido en el Plan Pro de Atiko ($190.000/mes) junto con otras automatizaciones, monitoreo continuo y soporte directo por WhatsApp.
¿Te sirvió este tutorial? Comparte el link con otra pyme chilena que esté penando con la misma tarea. Y si quieres más tutoriales sobre automatizaciones, visita el blog.