Skip

00/Negocio

Reservas online hoteles Costa Rica: setup técnico 2026

Setup técnico paso a paso de un sistema de reservas online para hoteles boutique en CR: stack, Stripe + SINPE, calendario, confirmación email/WhatsApp e integración con Booking via channel manager.

Fecha
22 de mayo de 2026
Tiempo de lectura
11 min de lectura
Autor
Por Jafeth Jiménez

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

  1. Define inventario y reglas tarifarias — tipos de habitación, capacidad, tarifa por temporada, mínimo de noches, política de cancelación, depósito.
  2. Provisiona el stack base — Next.js 15 + Supabase + Vercel. 3–5 horas iniciales. Supabase Auth para admin. Dominio custom + SSL.
  3. Construye el calendario con locks — tabla bookings con EXCLUDE USING gist por habitación + rango de fechas. Locks de 10 min antes del pago. Webhooks para confirmar.
  4. Integra Stripe + SINPE Móvil — Stripe Checkout para tarjetas internacionales, SINPE vía webhook bancario con conciliación automática. Ambos en paralelo.
  5. Implementa confirmaciones automáticas — Resend para email (React Email). WhatsApp Cloud API con 4 plantillas pre-aprobadas. Retry con Vercel Cron.
  6. 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.
  7. 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

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.

Jafeth Jiménez

Por

Jafeth Jiménez

Fundador · SEO y desarrollador

Co-fundador y dueño de Sirius. Lidera la estrategia de SEO de la agencia y participa en el desarrollo de cada proyecto que enviamos a producción. Atiende clientes en Costa Rica y la región.

03/Paso a paso

Cómo montar un sistema de reservas online para tu hotel boutique en Costa Rica

Siete pasos técnicos para implementar reservas directas con pagos, calendario y confirmaciones, sin overbooking.

  1. Paso 01

    Define inventario y reglas tarifarias mínimas

    Antes de tocar código, escribe en una página: cuántos tipos de habitación tienes (standard, superior, suite), capacidad por tipo, tarifa por temporada (alta, baja, fines de semana), mínimo de noches por temporada, política de cancelación, y depósito requerido (50 % al reservar, 100 % al confirmar, etc). Si esto no cabe en una tabla simple, el setup técnico va a ser más caro — invierte 2 horas aquí antes de pedir cotización.

  2. Paso 02

    Provisiona el stack base: Next.js + Supabase + Vercel

    Crear el repo Next.js 15 con App Router, conectar Supabase para la base de datos (tablas: properties, room_types, rooms, bookings, guests, payments), configurar autenticación con Supabase Auth para el panel admin, y desplegar en Vercel con dominio custom. Setup inicial: 3–5 horas. Costo recurrente: USD 25–45/mes hasta los primeros 100 000 visitantes.

  3. Paso 03

    Construye el calendario con locks transaccionales

    El corazón del sistema. La tabla bookings tiene constraint EXCLUDE USING gist con rango de fechas (tstzrange) por habitación que rechaza dos reservas solapadas a nivel de base de datos. Cuando el huésped selecciona fechas, se crea un lock temporal de 10 minutos (booking en estado pending). Si no completa el pago, expira. Si lo completa, el webhook de Stripe pasa la reserva a confirmed. Sin esta arquitectura tendrás overbookings en alta temporada.

  4. Paso 04

    Integra Stripe (internacional) + SINPE Móvil (local)

    Stripe Checkout para tarjetas internacionales — cobra 3.4 % + USD 0.30 por transacción, soporta USD y CRC, recurring si manejas membresías. SINPE Móvil para huéspedes ticos — conexión vía webhook bancario (BAC, BCR, BN) que detecta el ingreso a tu cédula jurídica y matchea el monto + referencia de la reserva. Configura ambos como métodos paralelos en el checkout para no obligar al huésped a usar tarjeta.

  5. Paso 05

    Implementa confirmaciones automáticas por email y WhatsApp

    Cuando Stripe envía el webhook payment.succeeded (o el bot de SINPE confirma el ingreso): 1) actualizas el booking a confirmed, 2) disparas email transaccional via Resend con PDF de confirmación, 3) disparas mensaje de WhatsApp Cloud API con la plantilla pre-aprobada (incluye nombre del huésped, fechas, monto, link a Google Maps del hotel). Total: 3–6 segundos desde el pago. Si algo falla, retry automático con cola de Vercel Cron.

  6. Paso 06

    Construye el panel admin para el front desk

    Una sola página con calendario tipo Gantt mostrando todas las habitaciones x 30 días, filtros por status (confirmada, pendiente, cancelada, check-in hoy, check-out hoy), búsqueda por huésped o número de reserva, exportar a CSV para contabilidad, y botones para crear reserva manual (walk-in), bloquear fechas (mantenimiento), o aplicar descuento. Hecho con shadcn/ui + Supabase real-time. No agregues más en v1.

  7. Paso 07

    Integra Booking via channel manager cuando crezca el volumen

    Mientras tengas < 20 reservas/mes por OTAs, mantén Booking manual (actualizas inventario 1 vez por día en la Extranet). Cuando cruces ese umbral o sumes Airbnb, integra channel manager: SaaS si tienes menos de 25 habitaciones (SiteMinder USD 50–100/mes, Cloudbeds USD 100–200/mes), o custom si tienes multi-propiedad o reglas tarifarias complejas. El channel manager se conecta a tu sistema por API y sincroniza inventario/tarifas/restricciones cada 60–120 segundos.

04/Preguntas frecuentes

Lo que la gente nos pregunta sobre esto.

¿Cuánto cuesta montar reservas online directas para un hotel boutique en Costa Rica?

Entre USD 3 000 y USD 5 000 de setup inicial dependiendo del scope. La versión base (calendario, pagos Stripe + SINPE, confirmación email/WhatsApp, panel admin) sale en USD 3 000–3 800 y se entrega en 4–5 semanas. Si agregas multi-tipo de habitación con paquetes, integración con channel manager y reportería de revenue por canal, subes a USD 4 500–5 500 y 5–7 semanas. El mantenimiento mensual es USD 50–80 (hosting Vercel + Supabase + dominios + fees de pagos pasados a transacción).

¿Por qué tener reservas directas si Booking ya me trae huéspedes?

Porque Booking te cobra entre 15 y 22 % de comisión por cada reserva. Un hotel boutique de 14 habitaciones que factura USD 30 000/mes y depende 80 % de OTAs regala USD 4 320/mes solo en comisiones. Si recuperas 25 % de ese tráfico como reserva directa (gente que te googlea por nombre y reserva contigo en vez de en Booking), ahorras USD 1 080/mes y el sistema se paga solo en menos de 4 meses.

¿Qué stack técnico usan en Sirius para reservas de hoteles?

Next.js 15 para frontend (SSR + edge runtime, mobile-first, SEO friendly), Supabase para base de datos PostgreSQL + autenticación + storage de fotos, Stripe para pagos internacionales con tarjeta, SINPE Móvil para pagos locales en CRC, WhatsApp Cloud API para confirmaciones automáticas, Vercel para hosting con CDN global, y Resend para email transaccional. Todo el stack cuesta USD 25–60/mes incluyendo dominios. Es exactamente el mismo stack que recomendamos en el [pillar de pricing](/es/blog/cuanto-cuesta-desarrollar-software-costa-rica).

¿Cómo evito que el sistema haga overbooking con el calendario?

Tres reglas técnicas: 1) bloqueos en base de datos con transactions de Postgres (Supabase) — cuando un huésped reserva, se crea un lock temporal de 10 minutos en esa habitación + fechas antes de cobrarle; 2) si pagas vía Stripe la disponibilidad se confirma solo después del webhook payment.succeeded; 3) si tienes channel manager, la sincronización con Booking y Airbnb debe correr cada 60–120 segundos. Sin estas tres capas verás overbookings en temporada alta — los vimos en clientes que migraron de Excel.

¿Puedo aceptar SINPE Móvil además de tarjetas?

Sí, y es muy importante para huéspedes ticos. El 30–40 % de las reservas directas de hoteles boutique en CR que tienen tráfico nacional prefieren SINPE porque evita el fee internacional y la conversión USD/CRC. Integramos SINPE via webhook bancario con conciliación automática: el huésped recibe la cédula jurídica + monto, hace la transferencia desde su app del banco, el sistema detecta el ingreso y confirma la reserva. Toma 10–60 segundos según el banco. Ver guía completa en [SINPE Móvil para ecommerce](/es/blog/sinpe-movil-ecommerce-integration-costa-rica).

¿Cuándo conviene agregar la integración con Booking via channel manager?

Cuando cruzas 20 reservas/mes a través de OTAs, o cuando ya estás listado en 2+ canales (Booking + Airbnb por ejemplo) y empiezas a tener overbookings o tarifas desactualizadas. Antes de eso, manejar Booking manualmente (calendario propio + actualización de inventario en Booking Extranet) es factible. El costo de agregar channel manager va de USD 1 800–3 500 adicionales si construimos custom, o USD 50–150/mes si optamos por SiteMinder o Cloudbeds. Ver decisión completa en [channel manager para hoteles CR](/es/blog/channel-manager-hoteles-costa-rica).

¿Las confirmaciones por WhatsApp requieren aprobación previa?

Sí. WhatsApp Cloud API exige que cada plantilla de mensaje transaccional esté pre-aprobada por Meta (toma 1–3 días hábiles). Nosotros pre-aprobamos 4 plantillas estándar: confirmación de reserva, recordatorio 24 h antes del check-in, instrucciones de check-in (dirección + código WiFi), y solicitud de review post check-out. La plantilla puede tener variables ({{nombre}}, {{fecha}}, {{habitación}}) pero el texto base es fijo. Una vez aprobada, mandar el mensaje cuesta USD 0.005–0.015 por conversación.

¿Cómo contacto a Sirius para montar reservas online en mi hotel?

Escríbenos por WhatsApp al +506 8433 7752 o por correo a admin@siriusx.net. La consulta inicial es gratis: revisamos tu tráfico actual, tus canales, lo que pagas en comisiones, y te damos un scope con precio en USD y cronograma en 2–3 días hábiles. También puedes usar el [cotizador interactivo](/cotizador) — 4 preguntas, 30 segundos, te da rango en USD.

05/Contacto directo

Hablar con Sirius sobre esto.

Somos una agencia de software en Costa Rica. Si lo que leíste te aplica y quieres avanzar, escríbenos por cualquiera de estas vías:

Horario
Lun a Vie 8 am – 5 pm · Sáb 8 am – 12 md
Ubicación
Pozos de Santa Ana, Santa Ana, San José, CR

02/Cuéntanos

¿Te aplica algo de esto? .

Si la nota te sonó familiar y tienes un proyecto en mente, lo conversamos directo en WhatsApp. Sin formularios.