Security

How MyRentalCalendar protects your data.

This page answers the questions a security questionnaire asks, in the order it usually asks them. Every statement describes what runs today. What is still in progress is listed at the end, in the same way the product page marks features that are planned.

Last reviewed: 3 September 2026

Where the system runs

MyRentalCalendar runs on infrastructure we operate ourselves. The application, the database and the file storage sit on servers under our own administration. Every connection is encrypted in transit with TLS 1.2 or 1.3, modern cipher suites and forward secrecy, and HTTP Strict Transport Security with a one-year lifetime covers every subdomain.

Each application has its own host: the console at admin., the landlord portal at owners., the cleaning portal at cleaning., the developer portal at dev. and the API at api.myrentalcalendar.com. The API host answers only on the paths built for partners, AI agents and public booking websites.

Signing in

Passwords are stored as Argon2id hashes. Sign-in with Google, Apple or Microsoft is supported, so an agency can rely on the second factor its identity provider enforces.

A session consists of a short-lived access token, valid for 15 minutes and held in an httpOnly cookie that scripts cannot read, plus a server-side refresh session of seven days that can be revoked at any moment. Signing out deletes the session on the server, which ends the refresh chain immediately.

Three wrong passwords lock an account for five minutes for the address that got them wrong. The same account keeps working from everywhere else, so nobody can lock an agency out of its own console by hammering a known e-mail address. Addresses that keep failing across accounts are blocked before the request reaches the database. Sign-in, sign-up and every public endpoint are rate-limited.

Who sees what

Every page, button and endpoint is gated by a named permission. Roles are bundles of those permissions, managed by the agency in its own rights console, and a permission that does not exist in the code cannot be granted. Teams organise people and grant nothing.

Landlords and cleaning partners sign in to separate portals with separate audiences. A landlord session reaches only the landlord endpoints and only the data of that landlord's units. A cleaning session reaches only the cleaning endpoints and the jobs assigned to that crew. The guards deny by default.

Separation between agencies

Every record carries the agency it belongs to, and every query the server runs is scoped to that agency. No business endpoint reads data across agencies. Each plan carries a hard limit on the number of units an agency can create, and sign-up is rate-limited, so one tenant cannot exhaust the platform for the others.

Encryption of sensitive data

Passport and ID details of travelling guests are encrypted with AES-256-GCM under a key generated for that one booking. The key is deleted 365 days after departure; the encrypted rows remain as a count and become permanently unreadable. Removing the guests from a booking deletes rows and key immediately. The system enforces the forgetting.

Credentials the platform must reuse on your behalf, such as an SMTP password, an Anthropic key or archive storage credentials, are stored as AES-256-GCM ciphertext under a server key kept outside the database. Partner API keys are shown once and stored only as a SHA-256 hash. Audit records replace passwords, tokens, card numbers, IBANs and door codes with a redaction marker before they are written.

The audit trail

Every write request and every business event, from a booking change to an issued invoice to a sign-in, is appended to a journal in the same database transaction as the change itself. Each record is chained to its predecessor with SHA-256, every day is sealed with an Ed25519 signature, and the console can re-verify any range and report the first record that no longer matches. The journal follows the GoBD standard for immutable bookkeeping records, and it is how we would reconstruct an incident.

Your data

You can download a complete copy of your master data as SQL or CSV in a ZIP at any time from the Archiving page, without asking us. You can also connect S3-compatible storage of your own, such as AWS S3, Cloudflare R2, Backblaze B2 or MinIO, and schedule automatic archives into it. When you leave, we hand your data over and delete our copy.

Guest ID details follow the 365-day rule above. Booking and invoicing records stay for as long as your tax and tourism obligations require them.

Guests and website visitors

This marketing site sets no cookies and makes no third-party requests. Your booking website serves its fonts from our servers, loads map tiles only after the visitor consents, and runs under a Content Security Policy that blocks scripts and connections to anything else. Bot protection on the enquiry form uses Cloudflare Turnstile once you switch it on.

The AI concierge on your website answers within the tools it has: searching availability, unit details, exact quotes, areas, creating an enquiry and handing over to WhatsApp. It has no tool that reads guest records, bookings or finances. Conversations are processed by Anthropic, and you can run the concierge under your own Anthropic key.

Partner API and AI agents

API keys are generated in your own portal, bound to one audience (agency, landlord or cleaning partner) and, where applicable, to one landlord or one crew. Each key carries explicit scopes, has its own rate budget and can be revoked on its own. Requests authenticate with a bearer key, so there is no cookie and no CSRF surface. Passport and ID details never leave the system through any API or export.

Operations

Every response carries the hardening headers a browser expects: a Content Security Policy, X-Frame-Options DENY, nosniff, a strict Referrer Policy and a Permissions Policy that switches off camera, microphone, geolocation and payment APIs. The API host answers with default-src 'none'.

Releases pass through a gate. The new version must answer its health check before traffic is switched to it, and if it does not, the deployment rolls itself back to the previous version.

Sub-processors

Who else touches data, and when.

The browser of a guest or landlord talks to our servers only. Server side, the platform calls these services. Several of them exist only once you configure them.

ServicePurposeData involvedWhen
AnthropicAI concierge on booking websites and the assistant in the consoleConversation text and the listing data the tools returnWhen AI features are used; optionally under your own key
StripePayment links for confirmed bookingsAmount, currency and the guest's e-mail address. Card data stays with Stripe, which is PCI DSS Level 1 certifiedWhen you enable payment links
Cloudflare TurnstileBot check on the public enquiry formThe challenge token; no form contentWhen you switch it on
open.er-api.comExchange rates for multi-currency displayNo personal dataAlways, server side
Your SMTP providerOutbound e-mail from your own addressRecipient, subject and body of the mails you sendWhen you configure your own mail account; otherwise the platform's mail account sends
Your archive storageScheduled archivesYour own exportWhen you connect an S3-compatible target
Map tile provider of your choiceThe map on your booking website (OpenStreetMap by default)The visitor's IP address when tiles loadIn the visitor's browser, after consent

Certifications

No certificate, stated plainly.

MyRentalCalendar holds no SOC 2 report and no ISO 27001 certificate. We are a small team serving agencies in the Gulf, and a certification audit would add cost to every plan without changing a single control described on this page. We will revisit that decision when a customer's procurement requires it. Until then, this page is our answer to security questionnaires, and we complete vendor questionnaires on request.

Card payments never touch our systems. Payment links run on Stripe, which holds PCI DSS Level 1 certification.

In progress

What is on the way.

  • Two-factor authentication for password sign-ins. Today the second factor comes from Google, Apple or Microsoft when you sign in through them.
  • A published backup and recovery statement with tested restores.
  • An independent penetration test.
  • Rate limiting shared across API nodes. Limits are enforced per process today, and the platform runs on one node.

Short answers

The questions we get asked first.

Where is my data stored?
On infrastructure MyRentalCalendar operates itself. Every connection uses TLS 1.2 or 1.3, and passport details of guests are encrypted at rest with a key per booking.
Is MyRentalCalendar SOC 2 or ISO 27001 certified?
No. MyRentalCalendar holds no SOC 2 report and no ISO 27001 certificate. The controls are described on this page, and vendor questionnaires are answered on request.
Can I get all my data out?
Yes. A complete copy of your master data downloads as SQL or CSV in a ZIP at any time, scheduled archives can go to your own S3-compatible storage, and on leaving we hand your data over and delete our copy.
Does the AI see my guests' data?
The concierge has tools for availability, unit details, quotes, areas and enquiries. It has no tool that reads guest records, bookings or finances. Conversations are processed by Anthropic, optionally under your own key.
Who are your sub-processors?
Anthropic for AI features, Stripe for payment links, Cloudflare Turnstile for the bot check, open.er-api.com for exchange rates, plus the mail account, archive storage and map tile provider you configure yourself.
How do I report a security issue?
Write to hello@myrentalcalendar.com with "Security" in the subject. The same contact is published at /.well-known/security.txt.

Responsible disclosure

Found something?

If you believe you have found a security issue, write to hello@myrentalcalendar.com with “Security” in the subject. We acknowledge every report and keep you informed until the issue is fixed, and we welcome good-faith research that respects other agencies' data and keeps the service running. The same contact is published at /.well-known/security.txt.