Security
How Shop Bookkeeper protects your financial data · September 16, 2026
The short version
Your bank credentials never touch our servers. Bank access happens entirely inside Plaid's hosted widget; we receive only transaction history under Plaid's Transactions product. Everything else is locked down by design:
Controls in place
- Transport encryption: all traffic served over TLS 1.2+ (Cloudflare + Caddy).
- At-rest encryption: data lives on encrypted cloud volumes (DigitalOcean, SOC 2, US region), backups included.
- Access control: single-owner app. Network-level IP allowlisting enforced server-side; all other sources rejected. No shared accounts.
- Server access: SSH key authentication only; password login disabled.
- Credential storage: app passwords stored as salted scrypt hashes; Plaid secrets in root-only files, never logged; password changes occur only through web forms initiated by the owner.
- Audit trail: every categorization, sync, import, and admin action is written to an append-only audit log with actor and timestamp.
- Backups: integrity-checked snapshots every 15 minutes, 30-day retention.
- Data minimization: one Plaid product (Transactions); no account numbers, routing numbers, or bank credentials stored.
Incident response
Suspicious access triggers an emergency kill-switch, Plaid token rotation, log review, and affected-party notification. Anomalies are investigated within 24 hours; access logs are reviewed weekly.
Vendors
- Plaid — bank data connectivity (SOC 2 Type II, PCI-DSS service provider).
- DigitalOcean — encrypted-volume hosting (SOC 2, US region).
- Cloudflare — TLS termination and DDoS protection.
Documents
A full written Information Security Policy (covering data handling, credential management, access control, logging, backups, incident response, and vendor management) is maintained by the operator and available on request to [email protected].