- Data residency
- EU traffic stays in the EU. US traffic stays in the US. Region-bound API keys (`sk_eu_…` / `sk_us_…`) refuse cross-region calls at the edge.
- Encryption in transit
- TLS 1.3 from your client to Cloudflare; Authenticated Origin Pulls between Cloudflare and our boxes. No plaintext anywhere on the wire.
- Encryption at rest
- Cloudflare R2 server-side encryption (AES-256) on all stored documents. Postgres-at-rest encryption on Neon. Stripe handles cards; we never touch them.
- Webhook signing
- HMAC-SHA256 over the raw body with a customer-side secret. Replay window 5 min. We publish reference implementations in 4 languages.
- Authentication
- API keys hashed with HMAC-SHA256 over a server-side pepper. Bearer-token only — no implicit cookies, no session leakage. (24-byte cryptographic randoms — argon2's slow-by-design KDF is the wrong tool for keys this strong.)
- Audit & retention
- 30-day retention by default; configurable. Deletion-on-request endpoint for GDPR Article 17. DPA available on signup.