SECURITY

Your financial data,
protected at every layer

Moat Finance is built for sensitive financial information. Whether you run it on a home server or in your own cloud account, security is designed in — not bolted on. And because the source code is public, you can read every line and verify it yourself.

Connecting bank accounts

When you link a financial institution with your own Plaid keys, Moat follows the same security practices shown in the app — every time you connect.

AES-256 encryption

Sensitive tokens and secrets are encrypted at rest with AES-256-GCM. All data is encrypted in transit with TLS.

Read-only access

Moat only ever requests read-only access. We cannot move or transfer money on your behalf.

Credentials never stored

Your bank login is handled entirely by Plaid. Moat never sees or stores your credentials.

Revoke access anytime

Disconnect any institution at any time from your accounts page. Access is revoked immediately.

Live connections use your own Plaid developer account. No keys? Manual accounts and CSV imports work without any bank connection.

Security on your own server

Run Moat on hardware or cloud accounts you control. Here’s what protects your data once it’s there.

Server

Self-hosted server

  • Encryption at rest and in transit Provider access tokens and 2FA secrets are encrypted with AES-256-GCM using an encryption key you generate and hold. Put TLS in front of anything beyond localhost.
  • Secure authentication Passwords are stored as one-way hashes. Optional two-factor authentication adds a second layer. You decide who gets an account on your instance.
  • Read-only financial connections Account linking through your own Plaid keys is read-only — Moat cannot initiate transactions.
  • Your database, not ours Data lives in a Postgres database you run. Moat Finance has no access to your instance. Bank login flows stay with Plaid; Moat stores only encrypted access tokens, never usernames or passwords.
  • Privacy-first analytics and logging Product analytics are off unless you configure them. Logs exclude merchant names, transaction descriptions, account numbers, and email addresses. No session recordings, click autocapture, or heatmaps.
  • You control your data Export your data or permanently delete your account at any time from Settings. Disconnecting an institution revokes access immediately. Scoped MCP tokens come with an audit log.
Read the self-hosting guide

Security principles we follow

Least privilege

Read-only bank connections. Scoped agent tokens. Server-side authorization on every write — UI visibility is never treated as access control.

Defense in depth

Encryption, authentication, access controls, and logging policies work together. Sensitive fields are encrypted even inside an already-secured database.

Transparency

The source code is public under the PolyForm Shield License, so every query, sync, and MCP tool is on GitHub to audit. You can export, disconnect, and delete your data at any time.

Questions about security?

If you found a vulnerability in Moat or have a security concern, contact us at support@moatfinance.ai. Please report vulnerabilities privately rather than in a public GitHub issue.