Security

Your financial data,
protected at every layer

Security is foundational to Tally. From the moment you create your account to every bank connection you make, your data is encrypted, isolated, and guarded by industry-leading practices.

Zero credential accessWe never see your bank passwords
AES-256-GCM encryptionBank-grade encryption at rest
15-minute token expirySessions are short-lived and hashed
Google Cloud platformEnterprise-grade infrastructure

Your Account Security

Multiple layers of protection keep your account safe from unauthorized access.

Bcrypt password hashing

Passwords are hashed with bcrypt (industry-standard one-way hashing) — we never store or see your password in plaintext.

Two-factor authentication

Available via time-based one-time passwords (TOTP). Your TOTP secret is encrypted at rest with AES-256-GCM, and 16 bcrypt-hashed backup codes are provided for account recovery.

Short-lived sessions

Access tokens expire every 15 minutes and are automatically refreshed with a 7-day refresh token. Refresh tokens are stored as bcrypt hashes, so even a database breach wouldn't expose active sessions.

Google Sign-In

Supported via OAuth 2.0 with Google's ID token verification — we never handle your Google password.

Strong password requirements

Passwords must be at least 10 characters with uppercase, lowercase, and a number. Password reset tokens are single-use and expire after one hour.

Rate limiting

Authentication, token refresh, and contact form endpoints all have dedicated rate limiters to prevent brute-force and abuse.

Bot protection

Google reCAPTCHA v3 protects registration from automated abuse.

Connecting Your Financial Accounts

We integrate with Plaid and SnapTrade — both are industry-leading financial data aggregators trusted by thousands of apps.

  • We never see your bank credentials. When you connect an account, you authenticate directly with Plaid or SnapTrade through their secure widget. Your bank username and password are exchanged only between you and the aggregator.
  • AES-256-GCM encryption at rest. All access tokens are encrypted using the same standard used by banks and government agencies. Each token gets a unique initialization vector, and the encryption key is stored separately in Google Secret Manager — not in our database or codebase.
  • Every token type is encrypted. This applies to Plaid tokens, SnapTrade secrets, and Google Sheets tokens (for Tiller users) — all encrypted before touching our database.
  • Webhook signatures are verified. Incoming data from Plaid is cryptographically verified using ES256 JWT signatures with body hash validation. Replay attacks are blocked via deduplication.
You
Plaid / SnapTrade
Your Bank
TallyEncrypted tokens only

Infrastructure & Data Protection

Defense in depth — from the network edge to the database layer.

HTTPS everywhere

All traffic is encrypted in transit via TLS with HSTS preload enabled, ensuring browsers always connect over HTTPS. Our backend runs on Google Cloud Run with automatic HTTPS enforcement.

No raw SQL

We use Prisma ORM exclusively, which parameterizes all queries and eliminates SQL injection risks.

Strict input validation

All input is validated with strict schemas (Zod) before processing — protecting against injection and malformed data.

Security headers

Helmet.js and nginx enforce protections against clickjacking, XSS, MIME sniffing, and downgrade attacks on every response — including static assets.

Secret management

Secrets (database credentials, API keys, encryption keys) are managed through Google Secret Manager and injected at runtime — never stored in code or version control.

Error monitoring

Real-time error monitoring catches issues instantly, and production error messages are generic to prevent information leakage.

Security at a glance

Your bank credentials never touch our servers. All sensitive tokens and two-factor secrets are AES-256 encrypted at rest. Passwords are one-way hashed with strong requirements enforced. Sessions are short-lived and securely stored. Bank webhooks are cryptographically verified. The entire platform runs on Google Cloud with HSTS, enterprise-grade secret management, and hardened containers.