← All projects
SoftwareReactNode.jsPostgreSQLSaaSAICompleted

LedgerFlowAI — Small Business Accounting SaaS

A full-stack accounting platform built for small businesses, with AI-powered transaction categorization, double-entry bookkeeping, invoicing, bill management, bank reconciliation, and role-based access control.

March 24, 2026


Overview

Most small business accounting tools are either too simple to trust or too complex to actually use. LedgerFlowAI sits in the middle — a full double-entry bookkeeping system with AI-assisted categorization, designed to be approachable for business owners and complete enough for accountants.

The platform is live at app.ledgerflowai.com and handles the full accounting cycle: from transaction import through to financial reporting, invoicing, and year-end close.

Core Features

Accounting Engine

  • Chart of Accounts — fully customizable, supports assets, liabilities, equity, revenue, and expense account types
  • Journal Entries — manual double-entry journal entries with draft and posted states; manual entries can be edited before posting
  • General Ledger — full transaction history per account with running balances
  • Financial Reports — Profit & Loss, Balance Sheet, and Cash Flow Statement generated in real time

AI-Powered Categorization

Transactions imported from CSV or entered manually are passed to Claude AI for categorization suggestions. The AI maps each transaction to the most appropriate account in the chart of accounts based on description, amount, and context. Users review and accept or override suggestions before they hit the ledger.

Invoicing & Receivables

  • Create, send, and track invoices through draft → sent → paid states
  • Record payments against invoices with automatic journal entry creation
  • Recurring invoice scheduling
  • Overdue tracking and customer aging reports

Bills & Payables

  • Enter and manage vendor bills through draft → submitted → approved → paid states
  • Role-gated approval workflow (accountants approve, owners pay)
  • Vendor management with payment history

Bank Reconciliation

  • Import bank statements and match transactions to existing journal entries
  • Mark individual transactions as reconciled; lock reconciled statements
  • Unmatched transaction queue with suggested matches

Subscriptions & Billing

Stripe-powered subscription management with plan selection, upgrade/downgrade flows, and webhook-driven status sync.

Security

  • MFA (TOTP) — optional two-factor authentication with authenticator app support and backup recovery codes; secrets stored AES-256-GCM encrypted at rest
  • RBAC — five roles (Owner, Admin, Accountant, Member, Viewer) with explicit per-resource permission sets across all 15+ modules
  • Session timeout — 20-minute idle timeout with a 2-minute warning modal; 8-hour absolute session limit enforced on the backend
  • Audit log — all financial actions (post, void, reconcile, year-end close) are recorded with user, timestamp, and before/after state
  • Account deletion — soft-delete with 30-day cooling period, Stripe subscription cancellation, and full data export before deletion

Year-End Close

MFA-gated workflow that closes the current fiscal period and rolls retained earnings into equity. Closed periods are locked by default; re-opening requires MFA re-verification and creates a reversal journal entry for the audit trail.

Stack

LayerTechnology
FrontendReact 18, Vite, Zustand, React Query, Recharts
BackendNode.js, Express
DatabasePostgreSQL 16, Knex.js (38 migrations)
AIAnthropic Claude API
AuthJWT + refresh tokens, TOTP MFA (speakeasy)
PaymentsStripe (subscriptions + webhooks)
EmailNodemailer / SendGrid
InfrastructureDocker Compose, Nginx, Cloudflare Tunnel

Architecture

The app is a standard three-tier architecture: a React SPA served by nginx talks to a Node/Express REST API, which reads and writes to PostgreSQL. All three services are orchestrated with Docker Compose and deployed to a self-hosted server exposed through a Cloudflare Tunnel.

The AI categorization layer runs as a service module inside the backend — it receives transaction data, constructs a prompt with the current chart of accounts, calls the Claude API, and returns a ranked list of account suggestions with confidence scores.

Deployment

  • Production: app.ledgerflowai.com (frontend) + api.ledgerflowai.com (API)
  • Self-hosted on a local Ubuntu server behind a Cloudflare Tunnel (no open inbound ports)
  • Zero-downtime deploys via docker compose up -d --build
  • Migrations run automatically on container startup