Akaunting is an open-source online accounting software designed specifically for small businesses and freelancers who need a simple, fee-free way to manage their finances. It eliminates the need for expensive proprietary tools by offering full-featured bookkeeping, invoicing, and expense tracking in a web-based interface accessible from any device. Built on Laravel and VueJS, it provides a modern, modular architecture that supports extensibility through an App Store and multi-company support.
The platform is self-hostable or used via cloud, with support for multiple currencies, tax rates, bank accounts, and client portals. Its modular design using Laravel Modules allows developers to extend functionality via plugins, and its RESTful API enables integration with third-party tools. Akaunting is translated into 50+ languages and supports deployment on Apache, Nginx, or IIS with PHP 8.1+ and MySQL, PostgreSQL, or SQLite databases.
What You Get
- Multi-Company Support - Manage finances for multiple businesses from a single admin panel with user permissions assigned per company.
- Client Portal - Share invoices and transactions with clients and accept bulk online payments directly through a branded client-facing portal.
- Recurring Transactions - Automate invoices, bills, revenues, and payments for ongoing services with one-click scheduling.
- Multi-Currency Support - Create invoices and log expenses in any currency with automatic conversion to your base currency using live exchange rates.
- Powerful Reporting - Generate detailed financial reports including profit & loss, balance sheets, and cash flow statements with visual charts.
- Unlimited Attachments - Attach receipts, contracts, or files to invoices and expenses for audit trails and documentation.
- Tax Rate Configuration - Define custom tax names and apply them to specific products or transactions to streamline compliance.
- Bank & Cash Account Tracking - Create unlimited bank and cash accounts with opening and current balance tracking for accurate bookkeeping.
Common Use Cases
- Running a freelance design business - A freelance designer uses Akaunting to send professional invoices in multiple currencies, track client payments, and attach receipt scans—all without paying monthly fees.
- Managing a small e-commerce store - A 3-person e-commerce team uses Akaunting to track expenses, reconcile bank transactions, and generate tax-ready reports for quarterly filings.
- Accounting for multiple small businesses - An accountant uses Akaunting’s multi-company feature to manage bookkeeping for 10+ clients from one dashboard with separate user access per company.
- Freelancers in emerging markets - A translator in Brazil uses Akaunting in Portuguese to track income from international clients, convert USD to BRL, and send invoices with tax details compliant with local regulations.
Under The Hood
Architecture
- Built on Laravel with clear separation of concerns using abstract base classes to enforce reusable business logic across modules like banking and sales
- Modular extension system via custom Laravel packages that enable isolated feature modules with dedicated routing, views, and controllers
- Event-driven design with custom events and listeners that decouple domain actions from side effects such as notifications and logging
- Dependency injection and service container patterns used consistently to manage model and service dependencies across jobs and services
- Reusable Blade components with encapsulated logic and data binding ensure consistent UI patterns across transaction and document interfaces
- Comprehensive use of Laravel’s built-in patterns—exports, notifications, and form requests—minimizing duplication and enhancing maintainability
Tech Stack
- Laravel 10.x with PHP 8.1+ as the core backend, extended with custom packages for modularity and settings management
- Vue 2.7.x frontend with Vue Router and Element UI, bundled via Laravel Mix and styled with Tailwind CSS and custom plugins
- MySQL or SQLite database storage backed by Doctrine DBAL for advanced querying and Laravel migrations for schema evolution
- Modern JavaScript tooling including Webpack 5, Babel, and PostCSS for optimized asset compilation
- Integrated third-party services such as Sentry for error tracking, Livewire for dynamic UI components, and OAuth2/Omnipay for payment processing
- Progressive Web App support with manifest and service worker assets, plus native mobile app linking for iOS and Android
Code Quality
- Extensive test coverage spanning unit, feature, and performance scenarios with strong isolation and meaningful assertions
- Clear separation of concerns through service container usage, job queues, and event-driven patterns, reducing coupling and promoting reuse
- Robust error handling with explicit exceptions in critical paths and thorough database validation, though custom exception types are underutilized
- Consistent naming conventions and descriptive method names enhance readability and reduce cognitive load
- Strong use of factory patterns and explicit model instantiation in tests for type safety, though PHP type hints are inconsistently applied in core logic
- Code quality is maintained through Laravel conventions and test coverage, though no explicit static analysis or formatting tools are present
What Makes It Unique
- Modular architecture with dynamic module listeners that auto-apply updates per company, enabling multi-tenant versioning without centralized schema locks
- Intelligent event-driven update system that routes data migrations based on module-specific listener types, eliminating boilerplate scripts
- Custom Blade component system with declarative syntax that abstracts UI logic into reusable, attribute-driven elements
- Unified bulk action framework that standardizes export, delete, and enable/disable operations across all modules
- Admin route abstraction via custom macro that auto-applies middleware and URL prefixes, simplifying module registration
- Native multi-company data isolation embedded in the core update pipeline, allowing granular control over entity-level upgrades