Skip to content

Open Source experience notes

Akaunting

Open-source Laravel accounting for invoices, expenses, banking, and small-business finance — with a modular App Store.

Akaunting

Features, structure, and why it matters

Inside Akaunting

A clear project walkthrough you can scan section by section.

Akaunting is open-source online accounting software aimed at small businesses and freelancers. I follow it when I want invoices, expenses, and day-to-day books on a stack I already operate — Laravel, Vue.js, Tailwind, and a RESTful API — instead of locking finance data into a closed SaaS. The GitHub project and akaunting.com position the Standard on-premise plan as free (price and source), with Cloud options and a large App Store for Double-Entry, Inventory, Payroll, CRM, Projects, and more. Product docs live under the Help Center; module authors use the Developers guides (hierarchy, modules, menus, permissions, REST API, payment methods).

Akaunting company dashboard
Akaunting — company dashboard overview

What I like most about Akaunting

I reach for Akaunting when the job is real bookkeeping UX on PHP/Laravel, not a thin invoice PDF generator bolted onto a custom app.

1. Core bookkeeping that covers SME day-to-day

Invoices and estimates, bills, banking/transactions, taxes, contacts, items, categories, cash-flow style views, and a client portal — as covered across the docs and marketing feature set.
Why it matters: Most freelancers and small companies need exactly this loop before they need a full ERP.

2. Laravel + Vue + Tailwind stack

Upstream describes modern web tech with Laravel as the foundation and the Akaunting Module package for Apps. Current composer.json targets PHP ^8.1 and Laravel ^10, with Sanctum, Livewire, Laratrust, DomPDF, Maatwebsite Excel, Omnipay, and S3 Flysystem among the dependencies.
Why it matters: Deploy, queues, env, and debugging habits transfer from other Laravel work.

3. Modular App Store model

Optional apps (Double-Entry / Chart of Accounts, Inventory, Projects, Payroll, CRM, Expense Claims, Bank Feeds, Custom Fields, etc.) extend the core without forcing every install to ship everything.
Why it matters: Start lean; add Double-Entry or Inventory only when the business actually needs them.

4. Developer extension surface

Developer docs cover modules, menus, settings, permissions, bulk actions, search strings, overriding output, hooking models, RESTful API, and payment-method modules — plus a Developer Portal.
Why it matters: Custom finance workflows can live as modules instead of permanent core forks.

5. Multi-company / multi-language orientation

Company setup, localization, and community translations (Akaunting markets 50+ languages) show up repeatedly in product docs and site copy.
Why it matters: Agencies and freelancers often run more than one legal entity or serve clients across locales.

6. Self-host vs Cloud choice

On-premise Standard is the open path; Cloud plans exist for teams that do not want to run PHP themselves (On-Premise vs Cloud is documented in the Help Center).
Why it matters: Privacy- and cost-sensitive installs can keep data on their own VPS; others can buy ops as a service.

TIP

For a first look: skim Getting Started and On-Premise installation, then decide whether Double-Entry (or other apps) are required before promising “full accounting” to a client.

Project structure

High-level layout from the repository:

Path Role
app/ Application code (controllers, models, jobs, utilities)
modules/ Installed Apps / modules (Modules\ PSR-4)
overrides/ Targeted overrides of vendor packages (Livewire, Excel, module commands, etc.)
resources/ Views, JS/CSS, lang assets
routes/ HTTP routes
database/ Migrations / seeds
public/ Web root
tests/ Automated tests

Mental model:

  • Core app — companies, invoices, bills, banking, settings, users/roles
  • Modules (modules/) — App Store features installed as packages
  • Overrides — deliberate vendor patches Akaunting maintains for product behavior
  • API — RESTful surface documented for developers
  • Client portal — customer-facing invoice/payment experience
git clone https://github.com/akaunting/akaunting.git
cd akaunting
composer install
npm install && npm run dev
php artisan install \
  --db-name="akaunting" \
  --db-username="root" \
  --db-password="pass" \
  --admin-email="admin@company.com" \
  --admin-password="secret"
# optional: php artisan sample-data:seed

Requirements upstream: PHP 8.1+, a supported database (MariaDB/MySQL/PostgreSQL/SQLite), and a normal web server — see On-Premise requirements.

Code analysis

Stack snapshot (from composer.json + README):

Layer Technology Notes
Framework Laravel ^10 PHP ^8.1
UI Vue.js + Tailwind (+ Livewire in places) Modern admin UX
Auth / ACL Sanctum, Laratrust API tokens + roles
Modules akaunting/laravel-module App Store architecture
Money / i18n akaunting/laravel-money, laravel-language Multi-currency oriented
Documents DomPDF, Excel Invoices / imports-exports
Payments Omnipay + offline/PayPal modules Extensible payment methods
Media plank/laravel-mediable, Intervention Attachments / images
License BUSL-1.1 (BSL family) Check commercial thresholds before redistribute

Strengths when I evaluate it:

  • Product completeness for SME accounting — not just “send PDF invoices”
  • Laravel familiarity — ops and customization stay in my usual toolbox
  • Module marketplace — Double-Entry, Inventory, Payroll when needed
  • Documented developer hierarchy — modules, menus, hooks, REST API

Trade-offs / caveats:

  • BSL / BUSL — free for many self-hosted Standard uses; still read the license before white-label or large commercial redistribution
  • Apps are often paid — core is free; Double-Entry and other serious accounting features may be App Store purchases
  • Laravel 10 era — plan upgrade/maintenance work if you need bleeding-edge Laravel
  • Overrides folder — powerful, but means upgrades need regression testing against Akaunting’s vendor patches
  • Cloud vs on-premise support paths differ; self-host means you own backups, PHP, and queue/cron health

Integration sketch (Laravel client calling Akaunting API — illustrative):

// config/services.php
return [
    'akaunting' => [
        'base_url' => env('AKAUNTING_URL'), // https://books.example.com
        'token' => env('AKAUNTING_API_TOKEN'),
        'timeout' => 15,
    ],
];

Why people use it

Audience Why Akaunting fits
Freelancers / SMEs Free on-premise Standard for invoices and expenses
Privacy-conscious teams Self-host financial data
Laravel developers Accounting UI on a familiar PHP stack
Agencies Multi-company setups and module extensions
Builders selling finance apps Module + REST API path via developer docs

Skip it if you need a full ERP day one with no App Store spend, or if the team refuses to run Laravel/PHP ops and Cloud pricing does not fit.

Conclusion

Akaunting remains one of the strongest Laravel-native open-source accounting options I follow: real invoicing and books UX, modular Apps, and developer docs that explain how to extend it (repo, site, docs, developers).

Honest caveat: treat “free accounting” as core Standard + self-host ops. Double-Entry, Inventory, Payroll, and similar depth usually mean evaluating App Store cost and license terms before promising a full QuickBooks replacement.

Keep exploring

Curious about my Akaunting setup?

Happy to share notes on evaluating or self-hosting Akaunting — or if it maps to Laravel deploy/customize work you need done, tell me about your setup.