BrassLedger is an open-source cross-platform accounting and business management system for organizations that need general ledger, receivables, payables, payroll, projects, reporting, tax workflows, and printable business forms in one application.
The current public prerelease is v0.1.0-pre.6.
License: GPL-3.0-only. See LICENSE.
BrassLedger is intended for teams that want a modern, open-source financial operations platform without locking their business into a proprietary desktop stack. The application is built to support daily accounting work, period close, payroll review, operational documents, tax-facing output, labels, checks, and other fixed-layout business forms.
The current end-user application is BrassLedger.Web, delivered as a cross-platform .NET application with installers for Windows, macOS, and Linux.
- General ledger workspaces for journal activity, balances, and month-end review
- Receivables support for customer invoices, statements, balances, and cash application
- Payables support for vendor bills, approvals, due-date review, and disbursement preparation
- Operations workspaces for inventory, order flow, purchasing, fulfillment, and operational forms
- Payroll support for employee records, pay processing, liability review, and year-end forms
- Project and job tracking for cost visibility and work-in-progress review
- Reporting support for financial statements, checks, paychecks, labels, shipment forms, and management output
- Tax workspaces for federal, state, and employer-specific tax profile review
- Quick start and installation: docs/quick-start.md
- Current prerelease downloads: GitHub Releases
Current prerelease installers are available for:
- Windows
x64 - macOS Intel
- macOS Apple silicon
- Linux
amd64
On first launch of a brand-new installation, BrassLedger opens a first-time setup flow so you can create the initial company and administrator account without editing configuration files by hand. Installed desktop launches also choose an available local loopback port automatically, so they do not depend on 127.0.0.1:5000 being free.
Start with these guides:
- Main user guide: docs/user-guide.md
- Reporting, checks, labels, forms, and print output: docs/reporting-guide.md
- Administration, publishing, and support practices: docs/administration-guide.md
Module-by-module usage links:
- Overview and daily review: docs/user-guide.md#overview
- General ledger: docs/user-guide.md#ledger
- Banking imports, matching, transfers, and reconciliation: docs/banking-guide.md
- QuickBooks and accounting interchange: docs/accounting-interchange-guide.md
- Receivables: docs/user-guide.md#receivables
- Payables: docs/user-guide.md#payables
- Operations, including controlled quote-to-order conversion: docs/user-guide.md#operations
- Purchasing and inventory receiving: docs/purchasing-guide.md
- Inventory warehouses, bins, and transfers: docs/inventory-locations-guide.md
- Sales orders and inventory fulfillment: docs/sales-fulfillment-guide.md
- Payroll: docs/user-guide.md#payroll
- Payroll workflow and federal calculation: docs/payroll-guide.md
- Projects: docs/user-guide.md#projects
- Reporting and forms: docs/user-guide.md#reporting-and-forms
- Taxes: docs/user-guide.md#taxes
- Publish workspace: docs/user-guide.md#publish
- Month-end review: docs/user-guide.md#month-end-review
- Security and data handling: docs/user-guide.md#security-and-data-handling
- Security email, invitations, verification, and password recovery: docs/security-email-guide.md
Specialized documentation:
- Agent-readable production completion queue: docs/work-remaining.md
- Financial statements: docs/reporting-guide.md#financial-statements
- Receivables output: docs/reporting-guide.md#receivables-output
- Payables output: docs/reporting-guide.md#payables-output
- Payroll and year-end output: docs/reporting-guide.md#payroll-and-year-end-output
- Tax-facing output: docs/reporting-guide.md#tax-facing-output
- Operations documents and labels: docs/reporting-guide.md#operations-documents-and-labels
- Administrative data handling: docs/administration-guide.md#data-handling
- Fixed assets, prepaids, and loans: docs/accounting-schedules-guide.md
- Administrative publishing guidance: docs/administration-guide.md#publishing
- Updated WinBiz/newproj parity boundary: docs/legacy-parity-audit.md
The current application includes:
- authenticated access before accounting data loads in the web app or API
- password hashing through ASP.NET Core Identity primitives
- durable named browser sessions, individual and all-other-session revocation, and immutable authentication audit events
- temporary lockout plus per-network login throttling for browser and API sign-in
- membership-aware session validation for company-specific roles and permissions
- RFC 6238 authenticator MFA, hashed one-use recovery codes, bounded login challenges, replay prevention, MFA lockout, configurable privileged-role enforcement, and controlled administrator-assisted recovery
- expiring one-use operator invitations, verified-email enrollment, enumeration-resistant password recovery, protected SMTP outbox delivery, and administrative retry visibility
- protection of sensitive fields at rest with ASP.NET Core Data Protection
- QuickBooks Online OAuth with protected rotating tokens, expiring cross-instance credential-operation leases, company validation, confirmed revocation, and dry-run-first inbound account/customer/vendor synchronization
- persisted application key material under
App_Data\keys - security headers in the web application and API
- first-run administrator setup through the built-in setup flow for non-development installs
Passkeys remain desirable future phishing-resistant authentication. Before live production use, each deployment must configure and operationally verify its own HTTPS public URL, SMTP provider, mailbox delivery, DNS authentication, secret management, backup and recovery, access control, administrator identity-verification procedure, and deployment procedures.
Helpful maintainer commands:
dotnet build .\BrassLedger.slnxdotnet test .\BrassLedger.slnx -nr:false.\publish-brassledger.ps1 -Runtime win-x64.\publish-brassledger.ps1 -Runtime osx-x64.\publish-brassledger.ps1 -Runtime osx-arm64.\publish-brassledger.ps1 -Runtime linux-x64.\run-ui-tests.ps1 -InstallBrowsers.\run-ui-tests.ps1 -UpdateBaselinesAdditional maintainer documentation:
- Platform-specific publish notes: docs/publish-guide.md
Release automation is handled by .github/workflows/release-installers.yml, which builds installer assets for Windows, macOS Intel, macOS Apple silicon, and Linux and attaches them to tagged prereleases and releases.
BrassLedger.Domain: core business entitiesBrassLedger.Application: application-facing contracts and modelsBrassLedger.Infrastructure: authentication, persistence, security, and service implementationsBrassLedger.Api: API endpointsBrassLedger.Web: end-user applicationdocs: installation, usage, reporting, administration, and publishing guides
Source-controlled web assets belong under BrassLedger.Web/wwwroot. Generated publish output stays under artifacts and remains ignored by Git.