Skip to content
01

Organisations are separated by the address

Every request resolves its organisation from the hostname and every tenant route re-checks the caller's membership. A valid session for one hotel cannot read another's guests, folios or reports; the API refuses the mismatch before any row is read.

Live
02

Passwords are hashed, sessions rotate

Passwords are bcrypt-hashed. Access tokens live fifteen minutes; refresh tokens rotate on use and are revoked when a password is set. Invitations and resets are single-use, purpose-scoped, hashed at rest and time-boxed.

Live
03

Money cannot be quietly edited

Folio totals are computed from charge, payment and refund rows. A payment carries an idempotency key so a retry cannot post twice. Gateway deliveries are signature-checked and stored before they are applied.

Live
04

Merchant keys are sealed

Each operator connects its own gateway account. The secret key is encrypted with AES-256-GCM and returned only as a hint. Card numbers are entered at the provider, never at NiroStay.

Live
05

Every sensitive action is attributed

Posting money, changing a status, inviting a teammate, proving a hostname: each writes an audit entry with the actor, the resource and a correlation id.

Live
06

Guest data has a narrow purpose

A guest's name, contact and stay are used to run the stay and send the messages that stay requires. Marketing consent is a separate, explicit field and is never assumed from a booking.

Live
07

Branding cannot inject code

Colours must be hex, logos must be an HTTPS address or a local path, and every operator-supplied string in a page or an email is escaped. A property name is a name, not markup.

Live
08

Abuse has a budget

Credential endpoints are rate limited per address, public booking routes have their own limit and hold sweeper, and webhooks are signature-checked. The limits are in-process today.

Pilot
09

Data leaves with you

Reservations, guests, folios and reports export as CSV. Ending an agreement does not require a support ticket to retrieve your own operational history.

Live
02 The shape of the system

Fewer moving parts is a security decision.

The console, the guest pages and the API are one deployment against one PostgreSQL database. There is no second copy of a guest list to fall out of sync.

  • Server-side authorisation. The browser never decides what money means or which property a person may see; it renders an answer the API computed after checking membership.
  • One tenant per request. The address and the payload must agree about whose data this is. A cross-organisation id returns 403 or 404, never data.
  • Uploaded files are validated. Logos are checked by content type, size and image dimensions, stored as bytes with a checksum, served with an ETag, and refused while in use by a page.
  • Production refuses weak defaults. The API will not boot with the development JWT secrets, a missing email provider key, or no payment-encryption key when a gateway is connected.
  • Links are never passwords. Invitations and resets are emailed, single-use and expire. Setting a password revokes every other session on the account.
  • Delivery is visible. Every sent message is recorded with the provider's verdict, so a bounced invitation is a fact in the console rather than a silence.
03 Honesty

What we do not claim.

Security pages usually list certifications. This one also lists the gaps, because you are trusting a young company with a guest list.

Not yet

No SOC 2 or ISO 27001

We have not completed a formal certification programme. Our controls are documented in the platform's security notes and can be walked through on a call.

Not yet

No third-party penetration test

One is planned before general availability. We will publish the summary when it happens, including anything it finds.

Limit

Single-instance components

Rate limiting and the hold sweeper are in-process today, so they are per-instance. Multi-instance hosting needs shared state; that is a known gap, not a surprise.

Limit

Backups are agreed per deployment

Database backup and retention are set at the infrastructure layer for each deployment and confirmed during onboarding. We do not advertise a number we have not verified.

Limit

Self-serve plans carry no SLA

A service-level agreement is part of the Enterprise conversation. On self-serve plans we aim to be available and say so plainly when we are not.

Limit

Channel connections are new

The Channex adapter is tested against a stub provider. Live OTA connections are onboarded one property at a time, with the mapping checked before inventory moves.

04 Reporting a problem

Tell us before you tell anyone else.

If you believe you have found a vulnerability, write to [email protected] with enough detail to reproduce it. We will acknowledge within two working days and keep you informed until it is fixed.

Please do not test against a live operator's data, attempt to access another organisation's records, or run automated scanning that degrades the service. A report that includes a proof of concept on your own account is worth more than a screenshot of somebody else's.

Ask us the security questions.

Bring your IT reviewer. We will walk through tenancy, credential handling, payment flow and the gaps on this page without a slide deck.