PHP Ledger: self-hosted double-entry accounting software

PHP Ledger records invoices, bills, stock movements and bank transactions as balanced journals, then shows the profit and loss, balance sheet and cash position behind them. It is open source under AGPL, installed from your browser on PHP 8.2+ and MySQL 8.4. Version 1.0.0 is the first stable release.

Screens show a fictional sample business, Willow Corner Shop.

Home: what needs attentionWillow Corner Shop · Sample business
The same Home screen on a phone: drafts to review, USD 57,659.00 in cash and bank, USD 164.00 receivable and USD 100.00 payable.

Why small businesses choose PHP Ledger

Is the whole accounting core open source?

Yes. Invoices, bills, stock, bank reconciliation and reports ship together in the free core package. The AGPL-3.0-or-later licence lets an accountant or software house inspect how a figure was posted. A separate commercial licence is available for organisations that need different distribution terms.

Can I use my existing PHP hosting?

Yes, if it meets the published requirements: PHP 8.2+, MySQL 8.4, HTTPS, the required extensions and a private application directory. Run the browser installer's checks on the actual host. Signed updates make a matched backup before changing the installation and recover automatically if a migration fails.

Every figure is traceable

Reports drill down to journals and from journals to the source document, so a profit and loss line can be explained to the person who asks. Posted entries are never edited: a correction is a linked reversal with its reason recorded, and a draft never touches the books until someone reviews and posts it.

What is still outside this release?

Regional tax certification, a production shop POS, payroll, automatic exchange rates, revaluation and consolidation are not included. Independent accounting and security reviews remain open commitments. The roadmap distinguishes released workflows from planned features and outstanding review.

A tour of the main screens

How does PHP Ledger track unpaid invoices?

The invoice register shows each invoice's status, due date and remaining balance. Filter by Draft, Unpaid, Overdue, Paid or Reversed, then record a receipt from the list. Customer credits appear in the same register, so you can follow a partly paid invoice and the credit that settles it.

See sales in the product tour
InvoicesSample business

How can I trace a profit and loss figure?

Choose the reporting period, then open an account name to see the entries behind its total. Income, cost of sales, gross profit and expenses appear in one report, with a CSV export for review. The balance sheet, trial balance and ageing reports provide their own dated views.

See the reports
Profit and lossSample business

How do I reconcile a bank statement?

Upload or paste a CSV statement, preview its rows, then confirm matching suggestions one line at a time. Investigate unexplained movements before completing the reconciliation. Each completed statement stays with the account, preserving the history for the next reconciliation.

See banking in the product tour
Bank reconciliationSample business

How does PHP Ledger value stock?

Optional Inventory uses moving weighted-average cost, showing quantity on hand and carrying value together. Stock counts preview their accounting effect before posting. Supported goods receipts, issues and returns flow through the same books, and cost of sales appears on the profit and loss.

See inventory in the product tour
Products and stockSample business

What does the cash point of sale include?

The optional cash counter lets you build a cart, review cash and change, and print a receipt. Each confirmed sale records one balanced journal through the central posting service. Shared stock deductions, tax integration and card payments at the counter are planned for a later release.

See the point of sale
Point of saleSample business

What does a worked profit and loss example look like?

The Willow Corner Shop capture above shows USD 4,788.00 income − USD 160.00 cost of sales = USD 4,628.00 gross profit. Gross profit is before the period's other expenses; it is not the cash balance. Open the account statement to trace a reported amount to its posted entries.

Source: PHP Ledger version 1.0.0 sample report capture. These fictional figures illustrate the report; they are not customer results or a claim of business performance. The report walkthrough explains how to explore the same workflow with a sample company.

Try it with a fictional business

Eleven sample business histories and a blank playground are available, from a corner shop to a small workshop. Each visitor gets a private company that resets every hour, so you can post, correct and reconcile without worrying about anyone else's entries. Capacity is limited, and real records should stay out of it: the demo is for seeing how the books behave, not for keeping them.

Workspace screen showing the fictional Willow Corner Shop sample company and buttons to try a sample company or set up a business.
WorkspaceSample business

Public demo vs. self-hosted PHP Ledger: which should I use?

The demo is quicker to start, but it discards temporary records at each reset. In contrast, a self-hosted installation preserves your records and gives you control over users and recovery. It also makes you responsible for hosting, updates and tested backups.

Public demo compared with your own PHP Ledger installation
DecisionPublic demoYour own installation
PurposeTry the accounting workflows with sample data.Evaluate and operate the supported workflows on infrastructure you control.
RecordsFictional data only; a separate temporary company for each visitor.Your operator manages the database, users and retention. Complete reviewed acceptance before using real books.
Reset and backupsResets at the next scheduled UTC hour. Exporting a report does not preserve the demo company.No hourly demo reset; you maintain tested backups and a recovery process.
Cost and licenceFree to try, with limited capacity.Core software is free under AGPL-3.0-or-later. Hosting, optional help and commercial licensing have separate costs or terms.
SetupOpen the demo in a browser.Check PHP, MySQL and HTTPS requirements, verify the package and run the browser installer.

Sources: demo reset and data boundaries, installation requirements and licensing and assistance.

How do I get started with PHP Ledger?

Follow these three steps before relying on the software for your own books.

  1. 1. Try a sample workflow

    Open a private sample company and follow a sale, a bill and a bank statement through the books. The demo resets every hour.

    Try the live demo
  2. 2. Check your host and install

    Verify the release checksum and hosting requirements, upload the package, then open /install in your browser. Start with sample records.

    Read the installation steps
  3. 3. Review before real use

    Check your accounting workflows, access controls and backup recovery with the people responsible for them. Arrange help or a commercial licence if needed.

    Discuss help and licensing

Built in the open

Ask questions, review the code, report issues or contribute to the accounting work in public. Discussions, issues and releases all live on GitHub, and the project's social channels carry the same announcements, so there is one place to follow and several ways to reach it.

See the community page

What has PHP Ledger tested, and what remains unreviewed?

I am , PHP Ledger's project maintainer in Multan. According to the PHP Ledger 1.0.0 validation record, the completed checks cover automated suites, update and recovery fault tests, and exact-package installation and upgrades. The release notes and downloadable package identify the version those checks cover.

Technical validation is not independent accounting or security acceptance. Independent reviews, supervised pilots with a real month-end close and a release-candidate period have not been performed yet. They remain open post-release commitments on the roadmap. Complete your own reviewed acceptance with sample data before relying on the software for a live business.

Questions before you start

Short answers to the questions owners and accountants ask first. Each one links to the page with the detail.

Is PHP Ledger really free?

Yes. The project-owned core is free under AGPL-3.0-or-later, including invoices, bills, stock, bank reconciliation and reports. Hosting, setup help, optional support and a separate commercial licence have their own terms. The 0.1.0 through 0.1.5 previews retain their earlier MIT grants.

What do I need to run it?

PHP Ledger requires PHP 8.2 or newer, MySQL 8.4, HTTPS and the documented PHP extensions. Installation runs in the browser at /install, without Composer, Node or Docker. PHP 8.3 is recommended; signed automatic updates require the PHP zip extension.

Does it work on shared cPanel hosting?

It can, if the actual hosting account meets the requirements. A control panel alone does not prove compatibility. Check PHP extensions, MySQL 8.4, private files and the correct public document root, then run the browser installer checks before committing to a host.

Does PHP Ledger send my data anywhere?

Self-hosted records stay on your operator's infrastructure. This website has no analytics or form submission endpoint. The demo's optional country lookup may send your public IP address to country.is. Following external links or downloading releases contacts those providers. The privacy notice explains the separate website, demo and installation boundaries.

Can it invoice customers and settle supplier bills?

Yes. PHP Ledger 1.0 includes customer invoices, supplier bills, partial and final payments allocated across open items, linked credits, ageing and control-account reconciliation. Accounts receivable and payable are in the core; owners can hide their navigation without disabling the services.

Is it ready for real books?

Version 1.0.0 is the first stable release, with published technical validation for automated tests, update recovery and package installation. Independent accounting review, independent security review and supervised pilots remain open commitments. Complete your own reviewed acceptance with fictional records before using real books.

What if the project stops?

You keep the source and your self-hosted database under the applicable licence. Continued maintenance, recovery and data extraction still need an operator. Keep tested backups and portable report exports; possession of the release ZIP alone does not establish a recovery process.

Product screen

Screens show a fictional sample business

Scroll the image to explore it. With a keyboard, focus the image area and use the arrow keys.