Skip to content

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.csv as an example of account labels, account types, and hierarchy only;
  • dolibarr-defaults.csv as a reference for future default-account mapping between Dolibarr concepts and BooksPlus account roles;
  • invacct-defaults.png as 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, and expense;
  • normal balances use debit and credit;
  • 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.