Accounting Module
The Accounting module is the financial backbone of Moon ERP. It implements a full double-entry bookkeeping system with multi-currency support, fiscal year management, cost center tracking, and a complete lifecycle for journal entries from draft through approval to posting.
Purpose
- Maintain a hierarchical Chart of Accounts for organizing financial data
- Record financial transactions via Journal Entries with debit/credit lines
- Manage Fiscal Years and auto-generated Fiscal Periods (monthly)
- Support multi-currency operations with exchange rate tracking
- Track costs by department or project using Cost Centers
- Handle tax rates (VAT and withholding) for purchase and sales transactions
- Manage bank accounts, checks issued/received, and petty cash funds
- Provide financial reports: income statement, balance sheet, cash flow, trial balance, aging, and more
- Support opening balances, year-end closing, budgets, and cost allocation
Double-Entry Bookkeeping
Every financial transaction in Moon ERP is recorded as a journal entry with at least two lines. The fundamental rule is:
Total Debits = Total Credits
- Assets and Expenses have a natural debit balance -- they increase with debits.
- Liabilities, Equity, and Revenue have a natural credit balance -- they increase with credits.
This ensures the accounting equation always holds:
Assets = Liabilities + EquitySub-Features
| Feature | Description | Link |
|---|---|---|
| Chart of Accounts | Hierarchical account tree | chart-of-accounts |
| Fiscal Years & Periods | Fiscal year and period management | fiscal-years |
| Journal Entries | Double-entry transactions with lifecycle | journal-entries |
| Currencies & Exchange Rates | Multi-currency support | currencies |
| Cost Centers | Departmental/project cost tracking | cost-centers |
| Tax Rates | VAT and withholding tax management | tax-rates |
| Bank Accounts | Bank account registry | bank-accounts |
| Checks | Checks issued and received with lifecycle | checks |
| Petty Cash | Petty cash funds and transactions | petty-cash |
| Account Transfers | Inter-account fund transfers | transfers |
| Entry Templates & Recurring | Reusable templates and scheduled entries | entry-templates |
| Opening Balances | Opening balance entry and confirmation | opening-balances |
| Budgets | Annual and periodic budgets | budgets |
| Cost Allocation | Cost distribution rules | cost-allocation |
| Fixed Assets | Asset tracking and depreciation | fixed-assets |
| Bank Reconciliation | Bank statement matching | bank-reconciliation |
| AR / AP | Accounts receivable, payable, and netting | ar-ap |
| Year-End Closing | Fiscal year closing process | year-end-closing |
| Financial Reports | Income statement, balance sheet, and more | reports |
Entity Relationship Overview
API Base Path
All Accounting module endpoints are prefixed with:
/api/accounting/Authentication is required via a Sanctum bearer token on every request. See Authentication for details.
Localization
Every request can include an Accept-Language header set to ar or en to control which language is returned for bilingual fields (name, description). When set to ar, the API returns the Arabic value; otherwise it falls back to English.
Accept-Language: arMonetary Precision
All monetary fields use decimal(15, 3) or decimal(12, 3) to support the Kuwaiti Dinar (KWD), which requires 3 decimal places. Exchange rates use decimal(18, 6) for precision.