Platform
Security overview
This page summarizes the security model used in ScanLedger. For the full policy, see /security. To report a vulnerability, email [email protected].
Encryption
- At rest: AES-256 for documents, datasets, and backups.
- In transit: TLS 1.3 on every endpoint.
- Sensitive fields: OAuth tokens and webhook secrets are encrypted with per-field keys derived from
GOOGLE_TOKEN_ENCRYPTION_KEYandSECRET_KEY.
Authentication
- Passwords hashed with bcrypt.
- Sessions via httpOnly JWT cookies (secure in production).
- Optional Google OAuth sign-in.
- Token versioning — bumps invalidate all existing tokens on privilege change.
- Redis-backed token blacklist — immediate revocation on logout or role change.
Rate limiting
- General API:
100 requests/minuteper user. - Auth endpoints:
5 requests/minuteto prevent brute force. - Free-tier scans:
5/day.
AI data handling
Document content and chat prompts are sent to our AI providers (OpenAI GPT-4 Vision by default; Google Gemini 2.5 Flash as alternative) over TLS for the duration of each request. Both providers are covered by data-processing agreements that prohibit use of your content for model training.
Payments
We never store full card numbers. Paystack (NGN) and Stripe (USD/CAD/GBP/EUR) are both PCI DSS Level 1 certified. We store only the transaction reference and the last four digits of the card for display purposes.
Data retention
- Free-tier: 7-day active window; older data is archived.
- Paid plans: unlimited active retention.
- Account deletion: all data is purged within 30 days, except where retention is required by law.
Backups
Daily automated backups, geographically distributed, with point-in-time recovery. Backup integrity is validated on a rolling schedule.
Responsible disclosure
Found something? Email [email protected]. We acknowledge within 24 hours, keep you informed while we fix it, and credit you publicly if you want. Please give us 90 days before public disclosure.
Read more
- Full security policy — what we promise our customers.
- Privacy policy — what personal data we collect and why.