← revvyn.com

Security Whitepaper

How Revvyn protects payment data and enforces governance.

Encryption

LayerMethodStatus
In transitTLS 1.3 / HTTPS, terminated at the Render edge✓
At restPostgreSQL TDE (Render managed encryption)✓
API keysSHA-256 hashed, raw never stored✓
WebhooksHMAC-SHA256 signed payloads✓

Authentication & Authorization

ControlImplementation
API authenticationSHA-256 hashed API keys via X-API-Key header
Multi-tenancyTenant-scoped queries + PostgreSQL Row-Level Security
RBAC4 roles: admin, operator, auditor, readonly
SSOSAML/OIDC not yet implemented — placeholder metadata only
Rate limitingPer-tenant via slowapi with X-RateLimit headers
IP allowlistingCIDR allowlist stored per tenant; request-time enforcement not yet wired

Audit & Compliance

ControlSOC2 Mapping
Append-only, hash-chained audit trailCC7.2, CC7.3 — PostgreSQL trigger prevents UPDATE/DELETE (not yet externally anchored)
RetentionP4.2 — a 7-year retention target is stamped on each record at write; records are append-only, automated deletion after 7 years is not yet implemented
Auth event loggingCC7.2 — every key validation logged
Request tracingCC7.2 — X-Request-ID on every response
Admin action auditCC6.1 — policy changes, key rotations logged
Compliance reportsCC7.4 — JSON/CSV export for auditors

Data Protection

Data sovereignty: Managed PostgreSQL 18 in Frankfurt, EU, on Render (the web service also runs in the EU).

GDPR: A Data Processing Agreement is available. Audit records are stamped with a 7-year retention target; the lawful basis for retention and the right-to-erasure position are being confirmed with counsel.

Backup: Automated backups and point-in-time recovery are provided by the Render PostgreSQL plan (verify the plan, backup cadence and PITR window in the Render dashboard); specific RTO/RPO figures are not independently verified here.

Application Security

PracticeImplementation
Input validationPydantic models on all API inputs
SQL injectionSQLAlchemy ORM (parameterized queries)
XSSHTML surfaces (docs, console shells) protected by a strict Content-Security-Policy; API responses are JSON
CSRFState-changing console routes use a SameSite=Lax session cookie with a same-site Origin allowlist; API-key/server callers use a custom header and are CSRF-immune
Dependency scanningsafety + Trivy in CI
SASTbandit in CI — the gate blocks any medium/high-severity finding
Secret scanninggitleaks in CI

Infrastructure

Platform: Render (managed hosting, EU region). Revvyn's own SOC 2 controls are being implemented — not yet certified.
Docker: Multi-stage build, non-root user, no debug tools in production.
CI/CD: GitHub Actions — lint, security scan, test, Docker build + Trivy vulnerability scan.

For security inquiries: daniel@revvyn.com