API y conector de checkout

El módulo de autocheckout no depende de un PMS concreto. Habla con una interfaz mínima (“adaptador”) que cada PMS implementa. En esta demo el adaptador activo es native (nuestro propio PMS). Índice en JSON: /api/v1.

Arquitectura

Móvil del huésped ──► /api/v1/checkout/{token} ──► Adaptador PMS ──► PMS del hotel (Mews, Cloudbeds… o el nuestro)
                              │
                              ├─► TPV virtual del hotel (Redsys · Bizum)   ← en la demo: simulado
                              └─► Motor VERI*FACTU (factura + registro encadenado + QR)  ← o la factura la emite el PMS

Interfaz del adaptador

getFolioByToken(token)           → { stayRef, status, room, guest, checkIn, checkOut, lines[], desglose[], total }
settleAndCheckout(stayRef, {billing, payment})
                                 → registra el pago en el PMS, cierra la estancia y marca la habitación como sucia

Código: lib/adapters/native.js (funcional), mews.js y cloudbeds.js (esqueletos documentados con las llamadas previstas).

Endpoints públicos (v1)

Método y rutaUso
GET /api/v1/checkout/{token}Folio normalizado de la estancia (líneas, IVA, total, estado). El token es aleatorio (≥128 bits) y único por estancia.
POST /api/v1/checkout/{token}/pay/startBody {billing}. Valida datos fiscales, decide F1/F2 y crea la petición Redsys (Ds_MerchantParameters + Ds_Signature HMAC_SHA256_V1, Ds_Merchant_PayMethods=z).
POST /api/v1/checkout/{token}/pay/phoneBody {paymentId, phone}. Paso Bizum “introduce tu móvil” (simulado).
POST /api/v1/checkout/{token}/pay/confirmBody {paymentId, accept}. Simula la confirmación en la app del banco y la notificación firmada de Redsys; si es OK emite la factura y hace el check-out.
GET /api/v1/invoices/{id}?t={accessToken}Factura con QR, huella y registros.
POST /api/v1/redsys/notificacionEn producción: URL de notificación (Ds_MerchantURL) que recibe el resultado firmado de Redsys. En la demo es informativa.

Las rutas de recepción (/api/state, /api/stays…, /api/invoices…, /api/verifactu) requieren sesión.

Mapeo con PMS habituales en España

Investigación de septiembre de 2026 a partir de documentación pública. “Coste” se refiere al acceso a la API; las condiciones pueden cambiar y deben confirmarse con cada proveedor.

PMSAPICoste / condiciones conocidasMapeo previsto
MewsConnector API abierta + sandbox públicoGratis para partners y clientes; requiere certificación y piloto para producción. Los add-ons del Marketplace pueden tener cuota para el hotel. docs.mews.com · help.mews.comreservations/getAll, orderItems/getAll → folio · payments/addExternal → pago · reservations/process → check-out
CloudbedsAPI REST + webhooksPara el alojamiento: incluida o como add-on de pago según el plan. Para empresas tecnológicas: programa de partners con solicitud y certificación (sin tarifa publicada). developers.cloudbeds.comgetReservation + transacciones → folio · postPayment · putReservation(checked_out) · housekeeping dirty
Ulyses Cloud (Septeo)UlysesCloud Open API + MarketplaceAcceso vía equipo de integraciones; condiciones no publicadas. Open API · MarketplaceReservas, huéspedes, cargos y pagos (casos de uso “guest onboarding”)
Avirato“Usuario API” para terceros + webhooksSus planes indican “Integraciones y API”; no hay documentación técnica pública de endpoints. kb.avirato.com · preciosWebhooks de check-out/ocupación; lectura de cuenta a confirmar con Avirato
HotelgestUnified API pública + webhooksAPI key desde la cuenta; los webhooks requieren “suscripción API activa” (coste no publicado). public-api.hotelgest.comReservas y webhooks; cargos/pagos a confirmar
HotelinkingNo es un PMSPlataforma de datos de huésped/WiFi/CRM que se integra con PMS. No sirve como fuente del folio. hotelinking.com—
Protel (Planet)Open API / protel I/O para partners registradosSin tarifa pública general; hay integraciones listadas con cuota por habitación. weareplanet.comReservas, folios, pagos (vía partner)
Oracle OPERA CloudOHIP (Oracle Hospitality Integration Platform)Pago por uso para el partner: desde ~10 $/mes por 10.000 llamadas REST, según el datasheet de Oracle. datasheet OHIPReservation, Cashiering (folios, pagos), Housekeeping

¿Quién emite la factura?

Si el PMS del hotel ya factura y está adaptado a VERI*FACTU, lo correcto es que la factura la siga emitiendo el PMS y el módulo solo cobre y registre el pago: así no hay dos sistemas de facturación con series distintas. Si el PMS no factura (o el hotel usa nuestro PMS), la emite el motor VERI*FACTU del módulo.

Volver a la portada PMS demo