TRUST, DOCUMENTED

Built to be
trusted with your SIN.

Most security pages ask you to take their word for it. This one shows the architecture and states every control we actually run — including the things we deliberately don't do.

Encryption
AES-256 + TLS 1.3
Bank access
Read-only
Bureau
One Canadian bureau — reporting not yet active
Regulation
PIPEDA + Law 25

Last updated · April 2026/For procurement questionnaires or a signed copy of this document, email security@elitetenants.com.

01

System architecture

Elite Tenants is a Next.js 14 application deployed on a serverless edge network. There are no long-running servers — every API request spins up an isolated serverless function, executes, and terminates. This eliminates entire categories of server-level vulnerabilities (SSH exploits, persistent malware, privilege escalation).

Data flow — user request lifecycle
1User (browser / mobile)
2Edge network — TLS 1.3 termination, DDoS protection
3Next.js Serverless Function (isolated per request)
├── Auth provider → verifies session token
├── Database client → reads/writes (service role, server-side only)
├── Payment processor → manages subscriptions
└── Bank-connection provider → exchanges tokens, reads transactions
4Response returned — function terminates, no state persists
02

Encryption

In transit
All traffic uses TLS 1.3. HTTPS enforced everywhere — HTTP requests are automatically redirected. Certificates managed by our hosting provider.
TLS 1.3 · HSTS
At rest
All database data is encrypted at rest using AES-256. Lease documents are encrypted at rest in private cloud storage.
AES-256 at rest
Bank-connection tokens
Bank access tokens are stored encrypted in the database. Tokens are revoked immediately on account deletion via the provider's token-revocation API.
Token revoked on delete
Credentials — never stored
We never see, transmit, or store card numbers or banking credentials — those are handled exclusively by our PCI-compliant payment and bank-connection providers. Any SIN digits you optionally provide for credit-file matching are stored encrypted by us, as described in our Privacy Policy.
SIN envelope encryption · SIN_KEK
03

Access controls

  • No direct database access from the client. All database reads and writes go through authenticated server-side API routes. The database service-role key never leaves the server.
  • Every API route verifies the session token before touching any data. Unauthenticated requests return 401.
  • Users can only access their own data. Every query is scoped to the authenticated user's ID. There is no way to request another user's records.
  • Admin routes are double-gated. Middleware checks the admin role claim, and each admin API route re-validates the role independently.
  • Admins require MFA. Every admin account must have multi-factor authentication enabled (TOTP authenticator app). Admin routes that write data additionally verify the MFA claim is present in the session token — a stolen admin password alone cannot modify data.
  • Lease documents use signed URLs that expire after 60 minutes. There is no permanent public URL for any lease file.
  • Payment webhooks are signature-verified. We reject any webhook that doesn't include a valid provider signature to prevent spoofed payment events.
service-role · server-onlyevery [id] scoped to ownerMFA + admin IP allowlist
04

Fraud detection & review

Because rent payment data is recorded to credit-bureau standard and will be furnished to a Canadian credit bureau once reporting is active, a fraudulent tenant could theoretically inflate a credit file by misrepresenting a non-rent transaction as rent. We operate a five-signal risk engine that evaluates every detected payment before it enters the reporting pipeline.

  • S1Category blacklist. Transactions categorized by the bank-data provider as mortgage, car loan, or student loan payments are auto-rejected — they cannot be reclassified as rent.
  • S2Account-holder name collision. We compare the tenant-reported landlord name against the transaction counterparty name using Jaro-Winkler similarity. A high match (suggesting self-payment) flags for manual review.
  • S3Matcher confidence floor. Any payment below our rent-matcher's confidence threshold is flagged, not reported, even if other signals are clean.
  • S4New-tenant scrutiny. First three months of a tenant's payment history receive tighter thresholds; a clean track record relaxes them.
  • S5Manual review queue. All flagged payments land in an admin adjudication surface with the full transaction category, counterparty name, match confidence, and historical context. Only a reviewer can promote them to "Reported" status. Payments rejected in review are never sent to the bureaus.
Jaro-Winkler ≥ threshold → manual reviewflagged payments never auto-furnish
05

Audit logging

Every privileged action writes to one of two append-only audit tables. Neither table has a DELETE endpoint exposed — records can only be added.

admin_action_log
Captures every admin-initiated action — who (user ID), what (action key), when (UTC timestamp), and a structured metadata blob. Used for compliance audits and the “who last touched this” trail bureaus request.
payment_review_log
Payment-specific trail: every review_status transition (pending → cleared, cleared → rejected, etc.) is logged with actor, reason, signals snapshot, and optional reviewer note. Reconstructs the full adjudication history of any payment.
06

Backup & business continuity

  • Automated daily backups of the primary database, retained per our cloud provider's standard backup policy for our plan.
  • Migrations are version-controlled. Every schema change is written as idempotent, version-controlled SQL and applied through a reviewed process.
  • Infrastructure as code. Application configuration and database migrations are version-controlled. A total-loss rebuild is measured in hours, not days.
  • Stateless compute. Because serverless functions hold no state, a hosting outage redirects traffic automatically across edge regions with no data risk.
07

Incident response & breach notification

We maintain a written incident response plan covering detection, containment, eradication, recovery, and post-incident review. Key commitments:

  • PIPEDA-aligned breach notification. In the event of a breach involving real risk of significant harm, affected individuals and the Office of the Privacy Commissioner of Canada are notified as soon as feasible — our internal target is within 72 hours of confirmation.
  • Runbook-driven response. Incident categories (data exposure, credential compromise, vendor outage, fraud incident) have predefined response steps covering roles, escalation paths, and evidence preservation.
  • Plan review cadence. Runbooks are reviewed and revised as our architecture evolves, with incident learnings folded back in after each event.
  • Active-incident disclosure. Any incident materially affecting availability, data integrity, or user data is communicated directly to affected customers via the email on their account, in addition to any regulatory notifications required.
08

Responsible disclosure

Security researchers are welcome. If you believe you've found a vulnerability in Elite Tenants:

  1. Email security@elitetenants.com with details and reproduction steps.
  2. Do not publicly disclose the issue until we've had a reasonable window to investigate (we target acknowledgement within 72 hours).
  3. Do not access, modify, or exfiltrate data that isn't your own. Use your own test accounts.
  4. No automated scanning against production (credential-stuffing lists, DDoS, etc.).

We don't currently run a paid bug bounty, but we publicly acknowledge valid reports with the reporter's consent.

09

What we store and where

Data typeWhere storedRetention
Identity
Full name, email, phone number
Encrypted cloud databaseUntil account deletion, then 30 days
Rental details
Address, monthly rent, landlord name, lease start date
Encrypted cloud databaseUntil account deletion, then 30 days
Lease document
PDF or image of signed lease
Encrypted cloud storage — private bucket, signed-URL access onlyUntil account deletion, then 30 days
Bank connection
Institution name, last 4 digits of account, encrypted bank-connection token
Encrypted cloud database (token encrypted). Full credentials never stored.Token revoked and deleted on account deletion
Payment history
Month, amount, on-time/late status, reporting date
Encrypted cloud database7 years (Canadian tax law requirement)
Subscription
Plan type, status, billing customer ID
Cloud database + payment processorAnonymized and retained 7 years for tax records
Auth sessions
Session tokens, device info
Authentication provider (never touches our database)Auth-provider session TTL (30 days inactive)
Card / banking credentials
Card numbers, bank login credentials
Never stored by Elite Tenants. Handled by our PCI-compliant payment and bank-connection providers.N/A
10

Vendor security certifications

Every third-party provider in our stack holds independent security certifications. We don't build what we can safely buy from a certified provider.

Cloud database & file storage
Primary data store
Tenant profiles, payment history, lease documents, referrals
SOC 2 Type IIISO 27001
Authentication & identity
Sign-in, sessions, MFA
Email addresses, session tokens, user IDs
SOC 2 Type II
Payment processor
Subscriptions & billing
Subscription status, billing history. We never see card numbers.
PCI DSS Level 1SOC 2 Type IIISO 27001
Bank-connection provider
Read-only bank transaction data
Bank connection token (encrypted). Read-only — cannot initiate transfers.
SOC 2 Type IIISO 27001PCI DSS
Application hosting
Serverless edge network
No persistent data. Handles HTTPS termination and edge routing.
SOC 2 Type IIISO 27001
Email delivery provider
Transactional email
Email logs for 30 days
ISO 27001SOC 2
11

Regulatory compliance

PIPEDA (Canada)
Personal Information Protection and Electronic Documents Act. We collect only what's necessary, maintain a named Privacy Officer, provide in-app data export and deletion, and have a documented breach notification procedure.
Quebec Law 25 / Bill 64
Stricter Quebec privacy law. We collect explicit consent for cross-border data transfers, support data portability, and provide a dedicated process for Quebec resident requests.
CASL
Canada's Anti-Spam Legislation. Most of our email is transactional (receipts, notices, dispute outcomes) and sent under the service contract. We also send some commercial email — an ROI summary you asked for, onboarding reminders, and property-manager broadcasts — and only with express consent or an existing business relationship. Every commercial message carries our legal name, our physical mailing address, contact info valid for 60 days, and a one-click unsubscribe honoured immediately.
PCI DSS (via our processor)
We are not a card data environment. Our payment processor is PCI DSS Level 1 certified — card data never touches our servers.
User rights
Users can download all their data (JSON export), delete their account (bank-connection token revoked, records purged), and contact our Privacy Officer at privacy@elitetenants.com. All in-app.