Built on PHP 8.2+ with MySQL 8.0.19+ (8.4 recommended) or MariaDB 10.4+. New code is AGPL-3.0-or-later licensed; a commercial licence is available.
Important
Maintenance of PHP Ledger has stopped for lack of funds. 1.4.7 is the latest release. Help fund a year of open-source work (USD 135,000): https://phpledger.com/funding/
Release downloads · Try the demo · Read the Wiki · Roadmap · Discussions
Choose one guide and follow it from start to finish. Each guide shows what to download, what to enter on the setup screen, and how to tell when you are finished.
| Where do you want to use it? | Follow this guide |
|---|---|
| On my Windows computer with Docker Desktop | Install with Docker Desktop — one Compose file and one copy-and-paste command |
| On my Windows computer with XAMPP or WAMP | Install with XAMPP or WAMP — put the folder in place and open your browser |
| On my website using cPanel or Plesk | Install on shared hosting — upload the folder and use your hosting panel |
Unsure? If you already have Docker Desktop, XAMPP or WAMP, use the matching guide. To look around before installing, try the online demo with sample data.
Using Docker? Follow the container guide and its Compose file. It starts both PHP Ledger and the database and keeps your records between restarts. Pulling the application image alone is only part of the setup.
All installation guides in the Wiki · What to expect from support
PHP Ledger helps small businesses keep their books, follow money owed by customers and to suppliers, and trace report balances back to the entries behind them. It is open-source PHP software that runs on infrastructure you control.
Start here: Try the demo · Download v1.4.7 · Installation guide · Wiki
PHP Ledger 1.4.7 (27 September 2026) is the latest release. Maintenance has stopped for lack of funds, so no further updates are planned; the notice now appears on the Updates screen and throughout the packaged documentation. It carries forward everything in 1.4.6 unchanged, with no migration or schema change.
1.4.6 refined the sample company gallery shown at Start and in Packages, added a per-partner capital and drawings account for partnerships (posting opening capital split by each partner's share), and cleaned up statement layout: the trial balance, balance sheet and profit and loss now prune zero lines and show one total per group.
1.4.5 rebuilt the installer, business setup, first Home, shell and Packages page from the owner's review of 25 to 26 September 2026: every step inside a laptop screen with plain-language help, legal forms in each country's own words with the country of registration recorded, named bank and cash accounts with opening money and a strict cash policy for new businesses, a mandatory installation notice, a getting-started guide on Home, inlined icons, and Packages with tabs and per-business switches. The candidate passed 708 application tests with zero failures on MySQL and 708 on MariaDB before the exact-package gates.
| Your task | How PHP Ledger helps |
|---|---|
| Keep the books | Use separate receipt and expense entry screens, or general journals; review drafts before posting. |
| Track customers and suppliers | Create invoices and bills, record partial payments and credits, and review outstanding balances and ageing. |
| Identify transaction parties | Link receipts and expenses to a named party when known, while keeping cash and bank accounts and their ledger postings distinct from that party. |
| Review cash availability | See projected cash and bank balances before posting; an administrator can choose warning-only (the default) or strict shortfall controls for a book. |
| Understand the numbers | Explore account statements, trial balance, profit and loss and balance sheet, with links back to journals and source records. |
| Manage day-to-day operations | Use optional Purchasing, Inventory, Stock locations and a simple cash point of sale. Each module has its own documented scope. |
| Record owner transactions | Keep capital, drawings, owner loans and repayments distinct from operating income and expenses. |
| Prepare period and year end | Review cash counts and the close checklist, create dated reversals, and use an explicit fiscal-year policy for retained earnings or reviewed partnership allocations. |
| Account for payroll and loans | Post aggregate payroll accruals, advances and partial settlements; review recurring, accrual and loan drafts before posting. No statutory payroll or per-person payslips. |
| Keep employee identities consistent | Use a confidential employee register and explicit staff/driver and trade links; historical labels and related-party choices remain separate. |
| Work with others | Assign users and roles with permissions enforced by the server. |
| Connect reporting tools | Use scoped read-only API and MCP connections for supported reports. |
Posted journals are immutable. Corrections create linked reversals, closed periods reject ordinary new postings, and financial workflows use a shared posting service. See Accounting and reports for examples and boundaries.
Use fictional information and follow a transaction from its source to the ledger and reports. Demo work is temporary and resets hourly. The demo page describes the experience currently deployed.
The hosted demo follows the real installer and business onboarding in one shared disposable installation. If another visitor has already installed it, sign in with demo / DemoLedger123!. The installer shows labelled dummy database values; the host connection is fixed. Everyone sees the same fictional records until the hourly reset clears the database and sessions. Check the demo landing page for the deployed version.
For a first exercise, create a small business or import a fictional sample, record a receipt and an expense, and inspect the trial balance. Then try a correction and follow the linked reversal. Reporting walkthroughs provide more guided examples.
- Download the application ZIP and checksum from the v1.4.7 release. Use the application package, which includes production dependencies.
- Prepare PHP and a dedicated database using the installation guide.
- Upload and extract the package, then open its address to start the browser installer. No Composer, Node or terminal is needed for a packaged browser installation.
- Create the administrator account, set up a business and review its accounts, currency and opening position before entering real records.
Requirements: PHP 8.2 or newer (8.3 recommended), MySQL 8.0.19+ (8.4 recommended) or MariaDB 10.4+, and the extensions listed in the installation guide. Automatic browser updates also require PHP's zip extension. Use HTTPS for an internet-facing installation.
The upload-anywhere package layout requires Apache or LiteSpeed with the supplied access rules. A dedicated document root at www/phpledger/public is the preferred layout; never serve the repository root. Follow the documented Nginx configuration when using Nginx.
Prefer a container? Official images (published up to 1.4.6) use ghcr.io/phpledger/phpledger and phpledger/phpledger on Docker Hub, built from the verified release ZIPs. Pin a released version and follow the container guide. A registry tag is usable only after its release publication checks pass.
Optional multi-year sample histories are separate data-only packages. The neutral starter remains in the core; use Packages to review and install a sample, then choose its structure or an isolated practice company during onboarding.
The browser installer supports a validated database table prefix and explicit TLS settings. Arabic is available as a draft translation with right-to-left layout; native language and accounting review remain pending.
Already running PHP Ledger? Read the upgrade and recovery guide before replacing files. Back up matching code, configuration and database. The updater verifies signed metadata against the publisher key you pin; older releases can require a manual first upgrade.
| You need | Read |
|---|---|
| First installation and business setup | Getting started |
| Accounting workflows and reports | Accounting and reports |
| Users, roles and access | Users and roles |
| API and MCP connections | Integrations |
| How it's built | Architecture |
| What changed in a release | v1.4.7 release page |
| Roadmap (historical) | Roadmap |
| What to expect from support | Support guide |
| Report a security concern privately | Security policy |
PHP Ledger's accounting core is country-neutral. A selected currency, sample business or researched tax template does not establish local tax compliance or activate statutory filing. Check the module documentation for operational limits; a sample labelled pharmacy or manufacturing is a teaching scenario, not a claim of a complete industry system.
Published validation records distinguish automated checks, exact-package installation and upgrade tests, and developer-operated browser checks from independent accounting/security review and observed business use. Independent review, real-business pilots and restricted-host recovery qualification remain separate commitments. See the v1.4.7 release page for the published validation evidence.
Maintenance stopped in September 2026 for lack of funds. USD 135,000 would fund one year of open-source work on PHP Ledger:
| Share | Pays for |
|---|---|
| 45% | Programmers |
| 20% | Accountants |
| 15% | Legal and tax consultants |
| 20% | AI tools and infrastructure |
Everything built with this funding is released under the same AGPL-3.0-or-later licence PHP Ledger already uses.
1.4.7 is licensed under the GNU AGPL-3.0-or-later (see LICENSE); the 0.1.x previews remain under MIT. Self-hosting requires no licence key or licensing-server call. A separate commercial licence is available; see the licensing policy.
Third-party components keep their own licences (see resources/release/THIRD-PARTY-NOTICES.md). Licence scope records further boundaries, including dependencies, fonts, datasets and company marks. Modern application source is in www/phpledger; the historical application remains in Git history. The PHP Ledger name and logos are trademarks of Bixisoft and are not licensed.
Made by Bixisoft, with BixiTech, BrownBag and Agency75.