Security

Built to protect tenant and financial data by default

Access control, encryption, identity verification, and monitoring aren't bolted on — they're enforced server-side on every request.

Role-based access control

Six distinct roles — from Company Admin down to Security and Maintenance staff — each scoped server-side to only the data and actions their role permits. Registration cannot self-assign an elevated role; access is enforced on every API view, not just hidden in the UI.

Encrypted credentials at rest

Payment gateway and integration credentials (Paystack, PayFast, hardware providers) are encrypted in the database, not stored as plain text — a compromised database backup does not expose live merchant secrets.

Digital identity verification

Tenant and staff identity is verified through Didit, with document and risk-signal review available to company admins and a full audit record of every verification decision.

Continuous error monitoring

Backend errors are captured and surfaced in real time via Sentry, so failures are caught and triaged rather than discovered from a support ticket.

Automated backups

The production database is backed up automatically on a recurring schedule, independent of any manual step.

Scoped API access

Programmatic access uses read-only API keys, separate from the JWT session used by the app itself, so an exposed key cannot be used to modify data.

Data integrity on every write

Multi-row operations (like bulk property import) use per-row database transactions, so one bad record cannot corrupt the rest of a batch. Tenant move-out and lease termination hard-purge personal data rather than leaving orphaned records behind.

Managed, isolated infrastructure

Each company’s data lives in a managed PostgreSQL instance behind environment-scoped access controls, with Redis and network settings configurable per environment rather than hardcoded.

Ongoing Practice

Security is a running conversation, not a one-time audit

Access control, transaction integrity, and data-handling gaps are treated as production incidents the moment they're found, fixed, and logged.

  • Every permission gap found in review is fixed at the API level, not just hidden in the interface.
  • Rate limiting is applied to sensitive endpoints — payment initiation, subscription activation, and public token-based flows like lease e-signing.
  • Personal data purge on tenant move-out/lease termination removes PII rather than leaving it queryable.
  • Every fix ships with a verification step and is recorded, not just deployed silently.

Have a specific security question?

Talk to us before you request access, or explore what the platform covers first.