Source truth: - Vision - Accounts - Account Contract - Account Role Contract - Account Code Resolution Contract - Chart Import Contract - Company Contract - ADR 0017: Chart Maintenance Surrounds the Accounting Kernel - ADR 0020: Initial Release Scope and Financial Workflow Taxonomy - ADR 0023: BooksPlus Starter Chart and Dolibarr Account Crosswalk Related planning: - BP3 Initial Release Plan
BP3 Starter Chart Templates
Goal
Starter chart templates should help setup create a useful first chart of accounts without making account numbers, imported example rows, or operational system defaults into accounting rules.
ADR 0023 now defines the reviewed booksplus.standard version 4 chart and
its canonical role assignments. This page retains the planning rationale and
deferred extensions; it is not an alternate chart definition.
Source Inputs
This planning note uses three reference inputs:
export_accounting_1-2.csvas an example of account labels, account types, and hierarchy only;dolibarr-defaults.csvas a reference for future default-account mapping between Dolibarr concepts and BooksPlus account roles;invacct-defaults.pngas a reference for inventory-accounting mappings required by the current Dolibarr inventory accounting module.
The reference inputs are not canonical BooksPlus charts. They do not define account identity, account codes, posting behavior, chart completeness, or financial statement presentation.
Template Principles
Starter chart templates should follow existing account truth:
- account identity is the immutable BooksPlus account id, not the visible code or name;
- account codes are strings and must preserve leading zeros;
- account behavior depends on explicit account properties and account-role assignments, not account-number patterns;
- account types use
asset,liability,equity,income, andexpense; - normal balances use
debitandcredit; - posting accounts are distinct from report headings and presentation groups;
- used accounts may be retired but not deleted;
- starter chart installation is company-scoped, idempotent, reviewable, and handled by chart-of-accounts application services around the accounting kernel.
Starter templates should prefer semantic account roles over hard-coded account codes. Required-singleton roles indicate what a complete starter chart or setup checklist should include; they do not make every incomplete company invalid.
Core Account Families
The core starter chart should include account families for ordinary setup, income accounting, expense accounting, and inventory accounting:
| Family | Purpose |
|---|---|
| Cash and bank | Cash, checking, savings, receipt clearing, and payment clearing. |
| Receivables | Customer balances, unapplied customer cash, and allowance needs. |
| Inventory | Inventory, prepaid inventory, input inventory, output inventory, and inventory review. |
| Payables | Vendor balances, accrued expenses, and supplier deposits. |
| Credit cards | Reviewed card liabilities and ordinary card charges. |
| Taxes and deposits | Sales tax payable and customer deposits / unearned revenue. |
| Equity | Minimal owner/equity placeholders for setup; ownership-specific detail is deferred. |
| Income | Product sales and service sales where relevant. |
| Finance income and expense | Interest income and reviewed bank or card finance charges. |
| Cost of goods sold | Cost of goods sold for goods sold or inventory relief. |
| Inventory variances | Inventory adjustments, purchase price variance, and fallback clearing. |
| Operating expenses | Ordinary non-payroll operating expenses. |
These are planning families, not report headings that must be implemented as accounts.
Planning Role Summary
The accepted starter-chart rows, codes, properties, role cardinalities, and six mandatory InvAcct mappings are canonical in ADR 0023. Implementations must use that accepted table rather than treating the older illustrative table below as seed data.
| Label | Type | Normal balance | Posting status | Semantic role intent |
|---|---|---|---|---|
| Cash on Hand | asset | debit | posting | cash.on_hand |
| Bank Account | asset | debit | posting | bank.operating |
| Cash for Deposit | asset | debit | posting | clearing.receipts_for_deposit |
| Accounts Receivable | asset | debit | posting | receivable.trade |
| Unapplied Customer Cash | liability | credit | posting | liability.unapplied_customer_cash |
| Inventory | asset | debit | posting | inventory.general |
| Prepaid Inventory | asset | debit | posting | asset.prepaid_inventory |
| Prepaid Expenses | asset | debit | posting | asset.prepaid_expenses |
| Accounts Payable | liability | credit | posting | payable.trade |
| Payment Disbursements Clearing | liability | credit | posting | clearing.payment_disbursements |
| Goods Received Not Invoiced | liability | credit | posting | liability.goods_received_not_invoiced |
| Credit Card Payable | liability | credit | posting | liability.credit_card |
| Accrued Expenses | liability | credit | posting | liability.accrued_expenses |
| Sales Tax Payable | liability | credit | posting | tax.sales_tax_payable |
| Customer Deposits | liability | credit | posting | liability.customer_deposits |
| Owner Equity | equity | credit | posting | equity.default |
| Retained Earnings | equity | credit | posting | equity.retained_earnings |
| Product Sales | income | credit | posting | revenue.product |
| Service Sales | income | credit | posting | revenue.service |
| Interest Income | income | credit | posting | revenue.interest |
| Cost of Goods Sold | expense | debit | posting | expense.cost_of_goods_sold |
| Inventory Adjustment | expense | debit | posting | expense.inventory_adjustment |
| Purchase Price Variance | expense | debit | posting | expense.purchase_price_variance |
| Inventory Fallback Clearing | expense | debit | posting | clearing.inventory_fallback |
| Operating Expenses | expense | debit | posting | expense.operating |
| Finance Charges | expense | debit | posting | expense.finance_charges |
The table summarizes role intent only. Where its labels or coverage differ from ADR 0023, ADR 0023 governs.
For simple businesses, raw materials / input inventory and finished goods / output inventory may both resolve to the general Inventory account after setup review. Businesses that need separation should assign those roles to distinct accounts.
Semantic Account Roles
Minimum role coverage for the core starter chart should include:
| Role intent | Cardinality guidance | Notes |
|---|---|---|
cash.on_hand |
repeatable | Cash drawers or petty cash may be multiple accounts. |
bank.operating |
repeatable | Checking, savings, or payment accounts may be multiple accounts. |
clearing.receipts_for_deposit |
repeatable | Holds Sales-source receipts until a later Finance settlement. |
receivable.trade |
required_singleton | Summary receivable account for income accounting. |
payable.trade |
required_singleton | Summary payable account for expense accounting. |
tax.sales_tax_payable |
required_singleton | Tax regime configuration remains deferred. |
liability.customer_deposits |
singleton | Used when customer deposits are tracked. |
liability.unapplied_customer_cash |
singleton | Used for unapplied received funds. |
inventory.general |
singleton | General inventory role for simple buy-sell setup. |
inventory.input |
singleton | May point to Inventory unless separated. |
inventory.output |
singleton | May point to Inventory unless separated. |
asset.prepaid_inventory |
singleton | Used for supplier deposits or prepaid inventory. |
asset.prepaid_expenses |
singleton | Used for reviewed prepaid-expense acquisitions. |
clearing.payment_disbursements |
repeatable | Holds Purchasing-source payments until a later Finance settlement. |
liability.goods_received_not_invoiced |
singleton | Supports accepted Inventory-to-Purchasing GRNI settlement. |
liability.credit_card |
repeatable | Supports separately reviewed card liabilities. |
revenue.product |
required_singleton | Default product-sales role. |
revenue.service |
singleton | Present for mixed goods/services businesses. |
revenue.interest |
singleton | Initial reviewed interest-income destination. |
expense.cost_of_goods_sold |
required_singleton | Required for inventory accounting readiness. |
expense.inventory_adjustment |
required_singleton | Required for inventory adjustment mappings. |
expense.purchase_price_variance |
required_singleton | Required for purchase-price variance mappings. |
clearing.inventory_fallback |
required_singleton | Review clearing role for unknown inventory movements. |
expense.operating |
repeatable | Reviewed ordinary operating expense destinations. |
expense.finance_charges |
repeatable | Reviewed bank and card finance-charge destinations. |
equity.default |
singleton | Ownership-specific equity detail is deferred. |
equity.retained_earnings |
required_singleton | Used for ordinary equity continuity. |
Role keys use the stable dotted launch convention from the Account Role Contract.
Dolibarr Interoperability Notes
Dolibarr default-account concepts should map to BooksPlus semantic roles in a future interoperability layer. They should not force BooksPlus account codes, labels, UI structure, or accounting behavior.
Useful default-account mappings to preserve in planning include:
| Dolibarr concept | BooksPlus role intent |
|---|---|
| Customer third-party account | receivable.trade |
| Vendor third-party account | payable.trade |
| Sold products default account | revenue.product |
| Purchased products default account | inventory.general or inventory.input |
| Sold services default account | revenue.service |
| Purchased services default account | expense.operating |
| VAT / sales tax on sales | tax.sales_tax_payable |
| VAT / tax on purchases | inventory.general, asset.prepaid_inventory, or expense role after setup review |
| Bank account for tax payment | bank.operating |
| Transitional bank transfers | cash.on_hand or bank clearing role in future extension |
| Unallocated received or paid funds | liability.unapplied_customer_cash or clearing role |
| Customer deposits | liability.customer_deposits |
| Supplier deposits | asset.prepaid_inventory |
Future Dolibarr work should be an adapter or mapping layer that consumes account roles. It should not be implemented as starter-chart truth.
Inventory Mapping Notes
The current inventory accounting Dolibarr module expects these account mapping needs:
| Mapping key | BooksPlus role intent | Core handling |
|---|---|---|
INVACCT_ACCOUNT_INVENTORY_RM |
inventory.input |
May map to Inventory for simple businesses. |
INVACCT_ACCOUNT_INVENTORY_FG |
inventory.output |
May map to Inventory for simple businesses. |
INVACCT_ACCOUNT_COGS |
expense.cost_of_goods_sold |
Included in buy-sell core. |
INVACCT_ACCOUNT_ADJUSTMENT |
expense.inventory_adjustment |
Included in buy-sell core. |
INVACCT_ACCOUNT_PPV |
expense.purchase_price_variance |
Included in buy-sell core. |
INVACCT_ACCOUNT_FALLBACK |
clearing.inventory_fallback |
Included as review clearing for unknown movements. |
Setup should make these mappings visible for review before inventory accounting is treated as ready. The fallback role should support review and correction; it should not hide unresolved movement meaning.
Setup Review Behavior
Starter chart setup should:
- install only into the selected company context;
- avoid duplicate meaning on repeated install attempts;
- preserve account codes as strings;
- create or resolve account roles explicitly;
- leave account-role readiness visible to setup;
- require review when a semantic role is missing, inactive, retired, non-posting, wrong-company, or ambiguous;
- keep opening balances outside account master data;
- use account maintenance behavior for later corrections, retirement, and replacement.
Imported charts and starter charts should converge through reviewable account and account-role behavior. Example chart rows should not become canonical merely because they were imported or came from a reference system.
Deferred Extensions
Future template work should handle:
- ownership-specific equity templates;
- tax-regime and jurisdiction-specific tax accounts;
- payroll;
- fixed assets and accumulated depreciation detail;
- manufacturing depth, work in process, and production variances;
- job costing;
- nonprofit and fund accounting;
- multi-entity and intercompany accounting;
- multi-location inventory;
- industry-specific charts;
- provider-specific adapters, including Dolibarr mapping workflows.
Implementation Prompt Notes
A later implementation prompt should consume ADR 0023, the canonical account contracts, and this planning rationale. It must treat the accepted ADR—not this derived page—as the source of starter-chart rows and assignments.
That implementation should avoid account-number-based behavior, should keep template install idempotent and company-scoped, and should include tests for role assignment, duplicate install attempts, missing-role readiness, and rejection of inactive, retired, non-posting, wrong-company, or ambiguous role targets.