DEV3 Technologies home

DEV3 Ledgemoor – Accounting & Invoicing SaaS Laravel Script with Bank Reconciliation, VAT/GST and Accountant Access

A self-hosted multi-business accounting and invoicing platform on Laravel 12 and Filament 4: double-entry ledger, tax-aware invoices and bills, bank import and reconciliation, period locks, accountant access, pay links. Web installer and demo data included. No mobile apps.
by DEV3 TechnologiesVerified Author(0) 0 sales 0 viewsUpdated 11 Nov 2026

Video tour. Pick a section below to browse 86 screenshots in 9 sections.

App & phone tours

Tap play to watch each app. Nothing downloads until you do.

  • Mobile web1:05

Ledgemoor is a multi-business accounting and invoicing platform built by DEV3 Technologies on Laravel 12 and Filament 4. You run it as the operator: you sell plans to small businesses and to the accountancy practices that look after them, and each business keeps real double-entry books with tax-aware invoices, bills, bank reconciliation and period locks.

What it does

  • A real ledger. Every invoice, bill, credit note and payment posts exactly one balanced journal. Posted documents cannot be edited in place: revise them (the old journal is reversed and a new one posted) or void them. Accounts with postings are archived, never deleted.
  • Tax that adds up. Per-line or per-document rounding, tax-inclusive or exclusive prices, tax components (such as CGST and SGST) split by largest remainder, place-of-supply selection, reverse-charge bills, a period tax summary and CSV export. The invoice editor shows live totals from the same tax engine the ledger uses, checked against 57 shared test vectors.
  • Sales and purchases. Invoices, quotes, credit notes, recurring invoices, bills with private attachments, supplier credits, multi-document payments, customer statements and a public pay link per invoice.
  • Bank reconciliation. Import CSV (with a column mapper), OFX or CAMT files, skip duplicates, accept suggestions by amount, number and name, use bank rules, book spend and receive money, transfer between accounts, and reconcile to a statement balance on a two-pane screen. Completed reconciliations lock their lines.
  • Control. Lock periods, close a fiscal year to retained earnings in one journal, reopen with a reason, and read an audit trail that records who did what and through which practice.
  • Accountant practices. A practice invites a business with a one-time code, works across its clients with bookkeeper rights and can be revoked at any moment. Support sessions for the operator are audited and view-only.
  • Multi-currency. Documents in other currencies with manual, pasted or imported rates, realised gains and losses posted on payment, and an unrealised revaluation report.
  • Reports. Profit and loss with comparison, balance sheet, trial balance, cash flow, aged receivables and payables, general ledger and budgets against actuals, as at any date.
  • For the operator. Plans with limits and features, subscription billing, weekly payouts with hold and fee, pending refunds, an outbox, audit logs, a REST API with scoped keys and OpenAPI, and signed webhooks with retries.

Good to know

  • Tax rates are settings, not advice. Presets for UK-style VAT, India-style GST, Australia and New Zealand GST and US sales tax are starting points. There is no direct e-filing and no e-invoicing portal submission: you export CSV or JSON for your filer. Ledgemoor is not certified for any country's statutory audit or invoicing rules.
  • Bank data comes by file. CSV, OFX and CAMT import only; there is no live bank connection.
  • Multi-currency uses manual or imported rates and keeps the books in one base currency that is fixed after the first posting.
  • Payments are simulated by default. The operator is the merchant of record for online invoice payments and pays businesses out; connect your own provider before going live.
  • Mail goes to the log until you configure a mailer. Exchange-rate import, payments and mail all have working simulated drivers.
  • A cron entry every minute is required, and a queue worker for webhooks and mail on busy installs. Web only: it works in a phone browser, and there are no mobile apps. Node.js is not needed (assets are prebuilt).
  • Scale. The demo holds a few thousand documents per install. Reports read live journals, so very large histories need a database sized for them.

How it is different

It is a ledger first: invoices are views onto journals, not the other way round. It is multi-tenant by design, with every query scoped to the business, and it gives accountants a proper way in, so it suits an operator who wants to offer books to many small businesses and their accountants, rather than a single internal tool.

Included

Source code, the web installer, a buyer guide, demo data with ten fictional businesses (joinery, design, bakery, cycles, coffee, textiles, logistics, architecture, printing and dental) and an accountancy practice with two years of history, a closed prior year per business, a reconciliation command, and six months of support.

How it's built

Architecture, stack, key decisions and the quality gates DEV3 Ledgemoor passed before release.

The engineering behind Ledgemoor: one balanced journal per document, a pure tax engine shared with the browser, bank matches that cannot double-book and period locks that win every race.

The problem it solves

Accounting software is only trustworthy if the books balance after every possible sequence of clicks: two payments for one invoice, two imports of the same file, a period locked while a posting is in flight, a tax total that differs by a cent between the editor and the ledger. Each must end in consistent books.

Architecture and approach

Ledgemoor is a Laravel 12 application with Filament 4 business and operator panels. A pure journal builder turns every document and payment into balanced lines, and one poster is the only code that changes balances. Tax is computed by a single engine with integer minor units and half-up rounding, ported to JavaScript for the invoice editor and checked against the same 57 vectors.

Postings take the business row shared and period locks take it exclusive, so a lock and a posting can never interleave. Payments lock the contact and the documents in a fixed order, bank lines are matched under a row lock, and imports are de-duplicated by a line hash. Outgoing webhooks go through a client that pins the resolved address on every hop and refuses private ranges. Race groups run against MySQL with parallel processes, and a check command verifies every business afterwards.

Quality gates and results

The release passed seven gates, including a headless smoke test across the operator, business and accountant panels and the race checks on MySQL. The check command passes on the demo data: ten businesses with two years of documents, payments and journals, and a closed year for each.

Tech stack

Area Technologies
Application Laravel 12, Filament 4, Blade, REST API
Data MySQL 8, SQLite
Frontend Tailwind CSS 4, Vite
Quality Pest, Larastan level 6, Playwright

Inside the build

Books that balance: The invoice hero adds up its tax with the same maths the ledger uses. Books that balance — The invoice hero adds up its tax with the same maths the ledger uses.

Prices with tax included: One click turns the same lines into tax-inclusive prices, and the total still adds up. Prices with tax included — One click turns the same lines into tax-inclusive prices, and the total still adds up.

Guides & articles

Practical guides and engineering write-ups for DEV3 Ledgemoor.

Accounting software for small businesses: 6 things to check before you pick one

Last updated
Accounting software for small businesses: 6 things to check before you pick one: DEV3 Ledgemoor

Small businesses do not want to learn accounting, they want the numbers to be right when the accountant asks. Here are six things to check before you pick software for the books, with DEV3 Ledgemoor as the worked example.

The Ledgemoor home page: an invoice that adds up its own tax, with a toggle for prices that include tax

1. Is there a real ledger behind the invoices?

An invoice list is not accounting. Check that every document posts a balanced journal, that a posted document cannot be edited in place, and that you can see the trial balance. Ledgemoor posts exactly one journal per invoice, bill and payment, and revising a document reverses the old journal and posts a new one.

The invoice editor with live totals worked out by the same tax engine the ledger uses

2. Can you explain the tax to the cent?

Ask how rounding works: per line or per document, tax-inclusive or exclusive prices, components such as CGST and SGST, reverse charge. Rates are settings you control, and the presets are starting points. Ledgemoor exports a period tax summary as CSV, but it does not file returns and is not certified for any country's statutory audit, so say that plainly to your buyers.

The tax summary with taxable amounts and tax per box and period

3. How does the bank get in?

Most small-business tools import files. Ledgemoor reads CSV, OFX and CAMT, skips duplicates, suggests matches by amount, number and name, and finishes a reconciliation only when the statement balance agrees. There is no live bank connection.

The reconcile screen with the statement balance, the difference and two panes

4. What stops a mistake in a closed month?

Period locks and year-end close matter more than any report. Check that nothing posts into a locked period, that unlocking needs a reason and that the audit trail records who did it. Ledgemoor closes a year in one journal and reopens it with an audit entry.

Periods and year end with locked periods and closed fiscal years

5. Can your accountant work in it?

Sharing a login is not access control. Ledgemoor lets a practice invite a business with a one-time code, work across its clients with bookkeeper rights and be revoked at any moment, and every change is tagged with the practice.

An accountancy practice with its client businesses and an Open books button

6. What are the limits?

Payments are simulated until you connect your own provider and the operator is the merchant of record, mail goes to the log until you configure it, documents in other currencies use manual or imported rates, and there are no mobile apps. Ask every vendor for this list.

Video: a tour of Ledgemoor from the invoice to bank reconciliation, reports and accountant access

Frequently asked questions

The complete source code (version 1.0.0) as a download from your account, with the setup and usage guides shown on this page. You can modify the code to suit your product.

Buying guides: Laravel scripts with Filament panels and a web installer · Next.js or Laravel for a SaaS script?

Questions about this product (0)

Answers from the DEV3 team and the community.

Ask a question

No questions yet.

Wondering about setup, licensing or customisation? Ask, and the DEV3 team will help.

More from this author

View all

Related in Web Scripts & Software

View all