Si tienes un hotel boutique, una posada o una cabina en Costa Rica y dependes 70–90 % de Booking y Airbnb para tus reservas, estás regalando entre USD 3 000 y USD 7 000 al mes en comisiones. Para un negocio de 14 habitaciones que factura USD 30 000 mensuales, eso son USD 50 000 al año que se van solo a OTAs — dinero que podrías reinvertir en marketing, mejorar la experiencia del huésped o simplemente mantener como margen.
La solución no es salirte de las OTAs — es agregar un canal directo bien hecho en tu propio sitio. Un sistema de reservas online que tome pagos en línea, sincronice tu calendario, mande confirmaciones automáticas y eventualmente se conecte con Booking via channel manager. Esta guía explica exactamente cómo se monta — el stack, los pagos, el calendario, las confirmaciones — con costos reales en USD para 2026 en Costa Rica.
💡 TL;DR: stack Next.js + Supabase + Stripe + SINPE + WhatsApp Cloud API. Setup USD 3 000–5 000 en 4–6 semanas. Mantenimiento USD 50–80/mes. Las 5 features que necesitas día 1: calendario sin overbooking, pagos múltiples, confirmación automática, panel admin simple y mobile-first. Channel manager se agrega cuando cruzas 20 reservas/mes por OTAs.
Por qué reservas directas (y no solo OTAs)
Las OTAs son canales de descubrimiento, no de fidelización. Booking, Airbnb y Expedia ayudan a que un huésped nuevo te encuentre — pero cuando ese mismo huésped quiere volver, lo lógico es que reserve directo contigo. Sin sistema en tu sitio, lo obligas a volver a Booking y a pagarte comisión por un cliente que ya es tuyo.
| Métrica | Sin reservas directas | Con reservas directas |
|---|---|---|
| % reservas vía OTA | 85–95 % | 55–70 % |
| Comisión promedio | 18 % | 12 % (mix) |
| Costo de adquisición por noche | USD 22 | USD 14 |
| Margen neto por noche (USD 120 ADR) | USD 78 | USD 92 |
USD 14 más por noche × 14 habitaciones × 70 % ocupación × 30 días = USD 4 116/mes extra. Casi USD 50 000/año de margen recuperado sin subir una sola tarifa. Y un canal directo te da algo que las OTAs nunca compartirán: los datos del huésped (email, teléfono, preferencias) para remarketing y promos a clientes recurrentes.
El stack típico: lo que de verdad usamos
Después de montar 8+ sistemas de reservas para hoteles en CR, el stack que mejor rendimiento/costo nos ha dado:
- Next.js 15 (App Router, edge runtime) — SSR para SEO, mobile-first. 70 % del tráfico hotelero en CR es móvil.
- Supabase — PostgreSQL gestionado + Auth + Storage + Realtime. USD 25/mes Pro, escala a 50 000 reservas/año.
- Stripe — pagos internacionales con tarjeta. 3.4 % + USD 0.30 por transacción. USD y CRC.
- SINPE Móvil — pagos locales en CRC vía webhook bancario (BAC, BCR, BN). Sin fee de gateway.
- WhatsApp Cloud API — USD 0.005–0.015 por mensaje, oficial de Meta, plantillas pre-aprobadas.
- Resend — email transaccional. USD 20/mes hasta 50 000 emails. React Email para plantillas como componentes.
- Vercel — hosting + CDN global. USD 20/mes Pro, deploy < 2 minutos.
Total: USD 65–90/mes para 10–25 habitaciones. Si vendes USD 25 000/mes, el stack es 0.3 % de tu revenue — comparado con 18 % que pagas a Booking.
💡 Para costos completos de proyecto custom, el pillar de pricing tiene rangos USD por feature.
Las 5 features que sí necesitas el día 1
No agregues más. Los hoteles que arrancan con 12 features tardan 3 meses extra en lanzar y ninguna queda bien. Las 5 que de verdad mueven la aguja:
1. Calendario sin overbooking
El corazón del sistema — sin esto, lo demás es decoración. Tres reglas: constraint en base de datos con EXCLUDE USING gist (room_id WITH =, daterange WITH &&) que rechaza solapamientos; locks temporales de 10 min entre selección y pago para que dos personas no reserven igual; sincronización OTA cada 60–120 segundos si tienes channel manager (lotes de 1 hora = overbookings en alta temporada).
2. Pagos múltiples (Stripe + SINPE + opcionalmente BAC)
Un solo método = pierdes 20–30 % de reservas. Stripe Checkout para turistas internacionales (3.4 % + USD 0.30). SINPE Móvil para huéspedes ticos — 30–40 % de las reservas locales pasan por SINPE, sin fees ni conversión. BAC Credomatic opcional si > 90 % es nacional. Preséntalos paralelos en el checkout, no obligues al huésped a elegir USD vs CRC antes de ver el método.
3. Confirmación automática (email + WhatsApp)
El huésped paga → en menos de 10 segundos recibe email + WhatsApp con la confirmación. Si tarda 5 minutos te llaman; si tarda 1 hora, ya cancelaron. Email vía Resend con PDF (React Email, responsive). WhatsApp con plantilla pre-aprobada por Meta. Las dos vías — ticos no siempre revisan email, extranjeros no siempre usan WhatsApp.
4. Panel admin simple para front desk
Una sola página, no 18 pantallas. El recepcionista necesita: calendario Gantt (habitaciones x 30 días), filtros (check-in hoy, pendientes, etc.), búsqueda por huésped o número de reserva, botones para reserva manual / bloqueo / descuento / marcar pagada en efectivo, y export CSV para contabilidad. Eso es todo en v1.
5. Mobile-first (porque 70 % reserva desde celular)
No es opcional. Si tu motor se ve mal en iPhone, pierdes 7 de cada 10 reservas potenciales. Tipografía legible sin zoom, selector de fechas usable con dedo, keyboards correctos por campo, botones grandes, carga < 2 segundos en 4G. Mide con PageSpeed Insights y apunta a 90+ en móvil.
Pagos: Stripe internacional + SINPE local + BAC opcional
Aquí es donde más se traba la conversión. Detalle por método:
Stripe Checkout (la espina dorsal). Soporta Visa, Mastercard, Amex y Discover en USD y CRC. Hosted o embebido vía sus React elements. Webhook payment_intent.succeeded dispara la confirmación. Refunds desde el panel admin. Fee: 3.4 % + USD 0.30 por transacción (baja a 2.9 % si negocias volumen > USD 100 000/mes).
SINPE Móvil (el diferenciador local). Cliente recibe cédula jurídica + monto + referencia, hace transferencia desde su app del banco (BAC, BCR, BN, Davivienda). Tu sistema escucha el webhook del banco — o hace polling cada 30 segundos si el banco no expone webhooks — y matchea por monto + referencia. Confirma en 10–60 segundos. Fee: USD 0 o muy bajo. Caso real: hotel en La Fortuna, 18 % de reservas directas por SINPE — si hubieran pagado todas con Stripe, USD 220/mes extra en fees (USD 2 700/año).
BAC tarjetas (cuando hay volumen). Solo conviene si > 80 % de tus reservas son nacionales, facturas > USD 15 000/mes y tienes equipo para conciliación manual de settlements. Si no, quédate con Stripe.
💡 La guía completa está en SINPE Móvil para ecommerce.
Confirmación automática: email + WhatsApp pre-aprobado
El flujo: huésped paga → webhook Stripe (o detector SINPE) → booking a confirmed → 2 jobs en paralelo (email vía Resend con PDF, WhatsApp Cloud API con plantilla pre-aprobada). Si falla, retry automático con Vercel Cron (3 intentos en 1, 5 y 15 min). Logs en Supabase para reenvío manual si todo falla.
Las 4 plantillas básicas pre-aprobadas por Meta (1–3 días hábiles cada una): confirmación ("Hola {{nombre}}, confirmamos tu reserva del {{fecha_in}} al {{fecha_out}}. Total: {{monto}}"), recordatorio 24 h antes con dirección, check-in instructions con wifi y número 24/7, y review post check-out con link a Google.
Si llevas más de una semana esperando aprobación, revisa que el número esté bien verificado y la categoría sea correcta.
Integración con Booking via channel manager: cuándo agregarla
No el día 1. Es complejidad extra que no necesitas hasta tener volumen real por OTAs. Mantén Booking manual mientras tengas < 20 reservas/mes por OTAs, estés solo en Booking y tu inventario cambie poco — actualizar la Extranet 1 vez al día (5–10 min) es factible.
Agrega channel manager cuando cruces 20 reservas/mes por OTAs, empieces a ver overbookings o quieras listar en 3+ canales. Las opciones:
- SaaS (USD 50–200/mes): SiteMinder o Cloudbeds. Setup 1–2 semanas. Bueno si tienes < 25 habitaciones y operación estándar.
- Custom (USD 1 800–3 500 adicionales): integración directa via Booking Connectivity API + agregador certificado para Airbnb. Conviene si ya corres motor custom y quieres todo en una base de datos.
💡 Decisión completa SaaS vs custom: channel manager para hoteles CR.
HowTo: 7 pasos técnicos en orden
- Define inventario y reglas tarifarias — tipos de habitación, capacidad, tarifa por temporada, mínimo de noches, política de cancelación, depósito.
- Provisiona el stack base — Next.js 15 + Supabase + Vercel. 3–5 horas iniciales. Supabase Auth para admin. Dominio custom + SSL.
- Construye el calendario con locks — tabla
bookingsconEXCLUDE USING gistpor habitación + rango de fechas. Locks de 10 min antes del pago. Webhooks para confirmar. - Integra Stripe + SINPE Móvil — Stripe Checkout para tarjetas internacionales, SINPE vía webhook bancario con conciliación automática. Ambos en paralelo.
- Implementa confirmaciones automáticas — Resend para email (React Email). WhatsApp Cloud API con 4 plantillas pre-aprobadas. Retry con Vercel Cron.
- Construye el panel admin — una sola página con Gantt, filtros, búsqueda, CSV export y botones para reservas manuales/bloqueos/descuentos. shadcn/ui + Supabase Realtime.
- Integra Booking via channel manager cuando crezca el volumen — SaaS (SiteMinder/Cloudbeds) o custom (Booking Connectivity API + agregador para Airbnb).
Caso real: hotel boutique de 14 habitaciones en La Fortuna
Hotel boutique de 14 habitaciones, 1 propiedad. Facturaba USD 32 000/mes: 78 % Booking, 12 % Airbnb, 10 % directo (un formulario que mandaba email). Comisión mensual: USD 5 184. Tenían 2–3 overbookings al mes en alta porque actualizaban Booking 1 vez al día.
Montamos sistema base (Next.js + Supabase + Stripe + SINPE + WhatsApp + admin) por USD 4 200 en 5 semanas, más channel manager custom (Booking Connectivity API + agregador NextPax para Airbnb) por USD 2 600 adicionales en 2 semanas más. Total: USD 6 800. Mantenimiento USD 75/mes.
| Métrica | Antes | Después | Delta |
|---|---|---|---|
| % reservas directas | 10 % | 31 % | +210 % |
| Comisión mensual | USD 5 184 | USD 3 320 | -USD 1 864/mes |
| Overbookings/mes | 2.5 | 0 | Resueltos |
| ADR | USD 145 | USD 152 | +USD 7/noche |
Payback: 3.6 meses. El ADR subió porque al tener datos del huésped pudieron hacer remarketing y vender upgrades pre-llegada. Caso anónimo, real, 2025.
Costos: setup inicial USD 3 000–5 000 y mantenimiento
| Componente | Costo USD | Detalle |
|---|---|---|
| Setup inicial (one-time) | ||
| Versión base (calendario + pagos + confirm + admin) | 3 000–3 800 | 4–5 semanas, hasta 3 tipos de hab |
| Multi-tipo + paquetes + reportería | 4 200–5 200 | 5–7 semanas, 5+ tipos, packages |
| Channel manager custom (Booking + Airbnb) | +1 800–3 500 | Si se agrega desde el inicio o después |
| Mantenimiento mensual recurrente | ||
| Vercel Pro + Supabase Pro + dominios | 46 | Hosting + DB + Auth + Storage |
| Resend + WhatsApp Cloud API | 25–35 | Email + mensajería |
| Total mensual stack | 71–81 | |
| Stripe fees | 3.4 % + USD 0.30 | Pasados al margen de la reserva |
| Soporte Sirius (opcional) | 200–400/mes | Bug fixes + 1–2 features pequeñas/mes |
Comparado con SaaS hotelero (Cloudbeds USD 200–300/mes, SiteMinder + booking engine USD 150–250/mes), el custom tiene mayor inversión inicial pero el costo recurrente es 3–5x menor y el código + data son tuyos.
💡 Cotización rápida: cotizador interactivo — 4 preguntas, 30 segundos, rango USD + WhatsApp con scope pre-cargado.
Cluster relacionado y vertical hoteles
- Channel manager para hoteles en Costa Rica 2026 — SaaS vs custom, costos USD y cuándo integrar OTAs.
- Cuánto cuesta desarrollar software en Costa Rica 2026 — pillar de pricing con rangos USD por feature.
- Canal directo vs OTA: comparativa — los números exactos del trade-off.
- Vertical hoteles — servicios para hospitalidad en CR.
Para cotización exacta, usa el cotizador interactivo. O escríbenos: WhatsApp +506 8433 7752, admin@siriusx.net.
En resumen
| Decisión | Si tu hotel... | Recomendación |
|---|---|---|
| Solo motor base | 6–15 hab, < 20 reservas OTA/mes | Setup USD 3 000–3 800, Booking manual |
| Motor + channel mgr | 12–25 hab, > 20 reservas OTA/mes en 2+ canales | Setup USD 5 000–7 500 (custom o + SaaS) |
| Multi-propiedad | 3+ propiedades, reglas complejas | Custom USD 7 500–12 000 con channel mgr propio |
| Solo SaaS | < 10 hab, no quiere code custom | Cloudbeds USD 100–200/mes con motor incluido |
El error más común: hoteles que arrancan con sistema enterprise de USD 12 000 "para crecer", lo usan al 15 % y siguen tomando reservas por teléfono. La regla: monta el mínimo viable, lánzalo en 4–6 semanas, y agrega features según lo que huéspedes reales te pidan.
💡 Cotización: cotizador interactivo — 4 preguntas → rango USD + WhatsApp con scope.
📞 Directo: WhatsApp +506 8433 7752 o admin@siriusx.net. L–V 8 am–5 pm, sáb 8 am–12 md.
