Accounting & Common Entries

Complete guide to NkapBooks Accounting & Common Entries — double-entry accounting, chart of accounts, journal entries, accounting ledger entries, party management, tax templates, payment methods, number series, multi-currency, and accounting settings.

8. Accounting & Common Entries

The Accounting & Common Entries module is the foundation of NkapBooks' financial system. Every financial transaction — whether a sales invoice, purchase payment, or manual journal entry — ultimately flows through the double-entry accounting engine and creates balanced ledger entries. This section covers the core accounting infrastructure shared across all other modules.

Sub-ModuleSidebar / LocationDescription
Double-Entry Accounting(System Core)The engine that ensures every transaction is balanced
Chart of AccountsChart of AccountsHierarchical tree of all financial accounts
Journal EntriesJournal EntryManual ledger entries for adjustments and transfers
Accounting Ledger Entries(Auto-generated)Individual debit/credit records created by transactions
Party ManagementCustomers / SuppliersUnified record for customers and suppliers
Tax TemplatesTax TemplateReusable tax configurations for invoices
Payment MethodsPayment MethodDefine accepted payment types and linked accounts
Number SeriesNumber SeriesAutomatic document numbering configuration
Multi-Currency(via Currency)Support for transactions in foreign currencies
Accounting SettingsAccounting SettingsCompany-wide accounting configuration and feature toggles
The accounting engine operates automatically behind the scenes. When you submit a Sales Invoice, Purchase Invoice, or Payment, the system creates the correct ledger entries without manual intervention. Journal Entries are only needed for transactions not covered by the standard document types.

8.1 Double-Entry Accounting

Every financial transaction in NkapBooks creates balanced ledger entries following the fundamental accounting equation:

Assets = Liabilities + Equity + (Income − Expenses)

Core Principles

PrincipleDescription
Every entry has two sidesEach transaction creates at least one debit and one credit entry
Debits always equal creditsThe total debit amount must exactly match the total credit amount
Transactions are atomicEither all entries are posted, or none are — no partial postings
Entries are immutableOnce submitted, ledger entries cannot be edited — they can only be reversed

Debit and Credit Rules

Account TypeDebit EffectCredit Effect
AssetsIncrease ↑Decrease ↓
ExpensesIncrease ↑Decrease ↓
LiabilitiesDecrease ↓Increase ↑
IncomeDecrease ↓Increase ↑
EquityDecrease ↓Increase ↑

The Transactional Model

NkapBooks uses a Transactional base class for all documents that create accounting entries. Documents that extend Transactional include:

DocumentInherits TransactionalCreates Ledger Entries
Sales InvoiceDebit Receivable, Credit Income + Tax
Purchase InvoiceDebit Expense/Stock, Credit Payable + Tax
PaymentDebit/Credit Payment Account ↔ Receivable/Payable
Journal EntryCustom debit/credit as defined by user

Ledger Posting

The LedgerPosting class handles the creation of AccountingLedgerEntry records:

  1. The document's getPosting() method builds a list of debit and credit entries.
  2. On submit, the posting creates AccountingLedgerEntry rows in the database.
  3. On cancel, the posting creates reversal entries (debits become credits and vice versa) and marks original entries as reverted.
You never need to create ledger entries manually. They are generated automatically when you submit invoices, payments, or journal entries. The General Ledger report shows all ledger entries for auditing.

8.2 Chart of Accounts

The Chart of Accounts is a hierarchical tree of all financial accounts in your organisation. It is the backbone of the accounting system — every ledger entry references an account from this tree.

Schema Overview

FieldTypeRequiredDescription
Account NameDataThe display name of the account (used as identifier — manual naming)
Root TypeSelectOne of: Asset, Liability, Equity, Income, Expense
Parent AccountLink → AccountConditionalThe parent group account (required after setup is complete)
Account TypeSelectSpecific sub-classification (see table below)
Is GroupCheckWhether this account can contain child accounts

Root Types

Every account belongs to exactly one root type, which determines its fundamental behavior:

Root TypeNatureExamples
AssetDebit-normalCash, Bank, Accounts Receivable, Inventory, Fixed Assets
LiabilityCredit-normalAccounts Payable, Loans, Tax Payable
EquityCredit-normalCapital, Retained Earnings, Owner's Equity
IncomeCredit-normalSales Revenue, Service Income, Interest Income
ExpenseDebit-normalCost of Goods Sold, Rent, Utilities, Salaries

Account Types

Account types provide additional classification for system-level behavior. The following types are available:

Account TypeUsed ByDescription
CashPOS, PaymentsCash-in-hand accounts
BankPaymentsBank accounts for transfers
ReceivableSales InvoicesAccounts for money owed by customers
PayablePurchase InvoicesAccounts for money owed to suppliers
Income AccountInvoice ItemsRevenue accounts for sales
Expense AccountInvoice ItemsAccounts for business expenses
Cost of Goods SoldInventoryCOGS for inventory items
StockInventoryInventory asset accounts
Stock AdjustmentInventoryAccounts for inventory adjustments
Stock Received But Not BilledPurchase ReceiptsInterim account for received goods
Expenses Included In ValuationInventoryOverhead costs included in inventory value
TaxTax TemplatesAccounts for tax collection/payment
Fixed AssetAssetsLong-term tangible assets
DepreciationJournal EntriesDepreciation expense accounts
Accumulated DepreciationJournal EntriesContra-asset for accumulated depreciation
EquityEquityOwner's equity and capital accounts
Round OffInvoicesAccount for rounding adjustments
ChargeableInvoicesAccounts for chargeable items
TemporarySystemTemporary holding accounts

Tree Structure

The Chart of Accounts is rendered as a tree view in the NkapBooks interface:

Company Name (Root Label)
├── Assets
│   ├── Current Assets (Group)
│   │   ├── Cash In Hand
│   │   ├── Bank Account
│   │   ├── Accounts Receivable (Debtors)
│   │   └── Inventory
│   └── Fixed Assets (Group)
│       ├── Equipment
│       └── Accumulated Depreciation
├── Liabilities
│   ├── Current Liabilities (Group)
│   │   ├── Accounts Payable (Creditors)
│   │   └── Tax Payable
│   └── Long Term Liabilities (Group)
│       └── Loans
├── Equity
│   ├── Capital
│   └── Retained Earnings
├── Income
│   ├── Sales Revenue
│   └── Service Income
└── Expenses
    ├── Cost of Goods Sold
    ├── Rent
    ├── Utilities
    └── Salaries

Key Rules

RuleDescription
Root Type is permanentOnce an account is created, its root type cannot be changed
Parent is permanentThe parent account cannot be changed after creation
Account Type inheritsIf no account type is specified, it inherits from the parent account
Group accountsMarked as isGroup: true — they cannot receive ledger entries directly
Leaf accountsNon-group accounts receive actual debit/credit entries
ArchivingAccounts can be archived (hidden from dropdowns but still searchable)

Country-Specific Templates

NkapBooks ships with pre-built Chart of Accounts templates for many countries. During the Setup Wizard, the appropriate template is loaded based on your selected country. This includes:

  • SYSCOHADA (OHADA countries): Cameroon, Senegal, Ivory Coast, Mali, Gabon, etc. — uses the standardised French-language accounting structure with numbered accounts (e.g., 411-Clients, 401-Fournisseurs, 571-Caisse).
  • India: Template with GSTIN-compatible account structure.
  • Switzerland: Regional accounting settings.
  • International: A generic English-language template for other countries.

Managing Accounts

  • Add: Click the "+" button in the tree view. Set the account name, select a parent, and choose whether it's a group.
  • Edit: Click on an account to open the Quick Edit panel. Account name can be changed; root type, parent, and account type are read-only after creation.
  • Archive: Set archived: true to hide the account from dropdowns while preserving historical data.
Do not delete accounts that have been used in ledger entries. Archiving is the preferred method to deactivate accounts while maintaining data integrity.

8.3 Journal Entries

Journal Entries are manual ledger entries for transactions not covered by standard invoices or payments. They are the most flexible accounting tool in NkapBooks.

Schema Overview

FieldTypeRequiredDescription
Entry NoData (auto)Auto-generated via Number Series (default prefix: JV-)
Number SeriesLink → NumberSeriesControls the numbering pattern
Entry TypeSelectClassification of the journal entry (see below)
DateDateTransaction date (defaults to today)
Account EntriesTable → JournalEntryAccountRows of Account + Debit/Credit amounts
Reference NumberDataExternal reference (e.g., bank statement ref)
Reference DateDateDate of the external reference
User RemarkTextFree-text note explaining the entry
AttachmentAttachmentSupporting document (receipt, approval, etc.)

Entry Types

Entry TypeUse Case
Journal EntryGeneral-purpose manual entry
Bank EntryBank-related transactions
Cash EntryCash-related transactions
Credit Card EntryCredit card transactions
Debit NoteAdjustments reducing amounts owed by customers
Credit NoteAdjustments reducing amounts owed to suppliers
Contra EntryTransfers between cash and bank accounts
Excise EntryExcise duty-related entries
Write Off EntryWrite-off of bad debts or irrecoverable amounts
Opening EntryInitial balances when migrating to NkapBooks
Depreciation EntryAsset depreciation recording

Account Entries (Child Table)

Each row in the Account Entries table represents one side of the double-entry:

FieldTypeDescription
AccountLink → AccountThe account to debit or credit (non-group only, grouped by rootType)
DebitCurrencyAmount to debit this account
CreditCurrencyAmount to credit this account

Auto-Balancing

The JournalEntryAccount model includes auto-balance formulas:

  • When you enter a debit amount in one row and move to the next, the system automatically calculates the credit amount needed to balance the entry (and vice versa).
  • This works across multiple rows — the system calculates the difference between total debits and total credits and fills in the missing value.

Journal Entry Lifecycle

Draft  →  Submitted  →  Cancelled
StatusDescription
DraftEntry can be freely edited. No ledger entries are created.
SubmittedEntry is locked and AccountingLedgerEntry rows are created.
CancelledReversal entries are created (debits become credits, credits become debits). Original entries are marked as reverted.

Submitting a Journal Entry

When a Journal Entry is submitted:

  1. The getPosting() method iterates over all account rows.
  2. For each row with a non-zero debit, a debit AccountingLedgerEntry is created.
  3. For each row with a non-zero credit, a credit AccountingLedgerEntry is created.
  4. The posting validates that total debits equal total credits.

Common Use Cases

Use CaseExample
Opening BalancesMigrate existing balances when starting with NkapBooks
Year-End AdjustmentsClose income/expense accounts to Retained Earnings
DepreciationRecord monthly depreciation of fixed assets
Intercompany TransfersTransfer funds between cash and bank accounts (Contra Entry)
Correction EntriesFix errors in previously submitted transactions
Bad Debt Write-OffWrite off uncollectible receivables
POS Cash TransferAutomatically created when opening/closing POS sessions

Actions

ActionDescription
View Ledger EntriesNavigate to the General Ledger filtered by this Journal Entry

8.4 Accounting Ledger Entries

Accounting Ledger Entries are the atomic records of the double-entry system. They are never created manually — they are generated automatically when submittable documents (invoices, payments, journal entries) are submitted.

Schema Overview

FieldTypeDescription
Entry No.Data (auto-increment)Unique identifier
DateDatetimeTransaction date
PartyLink → PartyThe customer or supplier involved (if applicable)
AccountLink → AccountThe GL account debited or credited
DebitCurrencyDebit amount (zero if credit)
CreditCurrencyCredit amount (zero if debit)
Ref. TypeDataThe document type that created this entry (e.g., SalesInvoice, Payment, JournalEntry)
Ref. NameDynamicLinkThe document name that created this entry
RevertedCheckWhether this entry has been reversed
RevertsLink → AccountingLedgerEntryIf this is a reversal entry, points to the original

How Entries Are Created

When You...Debit AccountCredit Account
Submit a Sales InvoiceReceivable (Debtors)Income + Tax
Submit a Purchase InvoiceExpense/Stock + TaxPayable (Creditors)
Record a Receive PaymentCash/BankReceivable
Record a Pay PaymentPayableCash/Bank
Submit a Journal EntryAs specified in rowsAs specified in rows

Reversal Mechanism

When a document is cancelled:

  1. Each original ledger entry is marked as reverted: true.
  2. A new reversal entry is created with:
    • Debit ↔ Credit swapped (original debit becomes credit, original credit becomes debit)
    • reverted: true
    • reverts pointing to the original entry
  3. The net effect is zero — the original and reversal entries cancel each other out.

Viewing Ledger Entries

Ledger entries are viewable through:

  • General Ledger Report — filter by account, party, date range, or reference document.
  • Account Balances — shown inline in the Chart of Accounts tree.
  • Ledger Link Action — available on submittable documents (invoices, payments, journal entries).

List View Columns

ColumnDescription
DateWhen the entry was created
AccountThe affected GL account
PartyCustomer or supplier
DebitDebit amount
CreditCredit amount
Ref. NameThe source document
Accounting Ledger Entries cannot be created, edited, or deleted manually. They are system-managed records that provide a complete, tamper-resistant audit trail.

8.5 Party Management

Parties are the universal record for customers and suppliers in NkapBooks. A single Party record can serve as a customer, supplier, or both.

Schema Overview

FieldTypeRequiredDescription
ImageAttachImageProfile picture or company logo
NameDataFull name of the customer or supplier (manual naming, renamable)
RoleSelectCustomer, Supplier, or Both (default: Both)
EmailDataEmail address (validated format)
PhoneDataPhone number (validated format)
AddressLink → AddressPhysical address
Default AccountLink → AccountDefault receivable/payable account
CurrencyLink → CurrencyDefault transaction currency (defaults to system currency)
From LeadLink → LeadRead-onlyIf this party was converted from a Lead
Loyalty ProgramLink → LoyaltyProgramAssigned loyalty program (for customers)
Loyalty PointsIntRead-onlyCurrent loyalty point balance (auto-calculated)
Tax IDDataTax identification number
Outstanding AmountCurrencyHiddenNet outstanding amount (auto-calculated)

Role-Based Behavior

RoleAppears InUsed OnDefault Account
CustomerSales sidebar → CustomersSales Invoices, Sales QuotesDebtors (Receivable)
SupplierPurchases sidebar → SuppliersPurchase InvoicesCreditors (Payable)
BothBoth sidebarsAll document types(no automatic default)

SYSCOHADA Account Defaults

For businesses in OHADA member countries, default accounts are automatically set:

RoleSYSCOHADA AccountInternational Account
Customer411-Clients or 4111-ClientsDebtors
Supplier401-Fournisseurs, Dettes en Compte or 4011-FournisseursCreditors
Both(none — must be set manually)(none)

Outstanding Amount Calculation

The outstandingAmount field is automatically recalculated and represents the net amount owed:

RoleCalculation
CustomerSum of outstanding Sales Invoices
SupplierSum of outstanding Purchase Invoices
BothOutstanding Sales Invoices − Outstanding Purchase Invoices

This calculation uses optimistic concurrency control with retry logic (up to 3 retries) to handle concurrent updates safely.

Loyalty Points Calculation

For customers with a loyalty program, loyaltyPoints is calculated by summing all LoyaltyPointEntry records where the expiry date has not passed. Points are recalculated automatically when invoices are submitted.

Party Actions

The Party form provides context-sensitive action buttons:

ActionAvailable ForDescription
Create PurchaseSupplier, BothCreate a new Purchase Invoice for this party
View PurchasesSupplier, BothNavigate to Purchase Invoice list filtered by this party
Create SaleCustomer, BothCreate a new Sales Invoice for this party
View SalesCustomer, BothNavigate to Sales Invoice list filtered by this party
View Unpaid SalesCustomer, BothView Sales Invoices with outstanding amounts
View Unpaid PurchasesSupplier, BothView Purchase Invoices with outstanding amounts
View PaymentsAllNavigate to Payment list filtered by this party
View ShipmentsCustomer, BothNavigate to Shipment list filtered by this party
View Purchase ReceiptsSupplier, BothNavigate to Purchase Receipt list filtered by this party

Duplication

When duplicating a Party, the outstandingAmount and loyaltyPoints are reset to zero — these are calculated values that should start fresh for a new record.

List View Columns

ColumnDescription
NameParty name
EmailEmail address
PhonePhone number
Outstanding AmountNet outstanding balance

8.6 Tax Templates

Tax Templates define reusable tax configurations that can be applied to invoices. Each template can contain multiple tax detail rows for compound taxes.

Tax Template Schema

FieldTypeRequiredDescription
NameDataTax template name (e.g., "VAT 19.25%", "GST 18%")
DetailsTable → TaxDetailOne or more tax detail rows

Tax Detail Schema (Child Table)

Each tax detail row defines a single tax component:

FieldTypeRequiredDescription
Tax Invoice AccountLink → AccountGL account for tax on invoices (e.g., "VAT Collected")
Tax Payment AccountLink → AccountGL account for tax on payments (if different from invoice account)
RateFloatTax percentage (e.g., 19.25 for 19.25%)

How Tax Templates Work

  1. On Invoices: When a tax template is applied to a Sales or Purchase Invoice, the system:
    • Calculates the tax amount for each item based on the rate.
    • Creates a TaxSummary row showing the total tax per account.
    • Adds the tax to the Grand Total.
  2. On Payments: When a payment is created against a taxed invoice, the system:
    • Uses the Tax Payment Account (if set) for the payment's tax ledger entries.
    • If no payment account is specified, falls back to the invoice account.

Compound Taxes

You can create compound tax templates with multiple rows. For example:

Tax Invoice AccountRateDescription
State Tax9%State-level tax
Central Tax9%Central-level tax

Both rows are applied independently, resulting in an effective rate of 18%.

Archiving

Tax templates can be archived (archived: true) to hide them from dropdowns while preserving historical references on existing documents.

Tax templates are applied at the invoice level, not the item level. All items on an invoice share the same tax template. To apply different tax rates to different items, use separate invoices or configure item-level tax overrides.

8.7 Payment Methods

Payment Methods define the accepted forms of payment for your business and link them to the appropriate GL accounts.

Schema Overview

FieldTypeRequiredDescription
NameDataThe payment method name (manual naming)
TypeSelectCash, Bank, or Mobile Money
AccountLink → AccountThe GL account linked to this payment method

Default Payment Method Types

TypeDescriptionTypical Account
CashPhysical cash transactionsCash In Hand / Caisse
BankBank transfers, cheques, credit cardsBank Account / Compte Bancaire
Mobile MoneyMobile payment platforms (MTN MoMo, Orange Money, etc.)Mobile Money Account

Where Payment Methods Are Used

ContextUsage
PaymentsSelect the payment method on Payment documents — the linked account auto-fills
POSPayment methods determine which account is debited and whether reference/clearance fields appear
POS SessionsSession amounts are tracked per payment method (Cash, Mobile Money, Bank)

Account Auto-Fill Logic

When a payment method is selected on a Payment document:

  1. The system loads the PaymentMethod document.
  2. If the method type is Cash, the POS counter's cash account is used (for POS payments).
  3. For Bank and Mobile Money, the method's linked account is used.
  4. For non-Cash methods, additional fields appear:
    • Reference ID — External reference number
    • Clearance Date — Expected clearing date

Archiving

Payment methods can be archived to hide them from selection dropdowns while maintaining references on historical documents.

List View Columns

ColumnDescription
NamePayment method name
TypeCash, Bank, or Mobile Money

8.8 Number Series

Number Series controls the automatic document numbering for all major document types in NkapBooks. Each series defines a prefix, starting number, and zero-padding configuration.

Schema Overview

FieldTypeRequiredDescription
PrefixDataThe text prefix for document numbers (e.g., SINV-, JV-)
StartIntStarting number (default: 1001)
Pad ZerosIntNumber of digits to pad with zeros (default: 4)
Reference TypeSelectThe document type this series applies to
CurrentIntRead-onlyThe current counter value

Default Number Series

Document TypeDefault PrefixExample Output
Sales InvoiceSINV-SINV-1001
Sales QuoteSQUOT-SQUOT-1001
Purchase InvoicePINV-PINV-1001
PaymentPAY-PAY-1001
Journal EntryJV-JV-1001
Stock MovementSMOV-SMOV-1001
ShipmentSHPMNT-SHPMNT-1001
Purchase ReceiptPREC-PREC-1001
Inventory AdjustmentIADJ-IADJ-1001
Pricing RulePRLE-PRLE-1001
POS SessionPOSS-POSS-1001

How Numbering Works

  1. When a new document is created, the system finds the Number Series matching the document's numberSeries field and referenceType.
  2. The current counter is incremented by 1.
  3. The new document number is generated: {prefix}{padded current}.
  4. With padZeros: 4 and current: 42, the result is SINV-0042.

Customisation

You can customise number series by:

CustomisationHow
Change prefixCreate a new Number Series with a different prefix
Change starting numberSet the start field to the desired starting value
Change paddingSet padZeros to the desired number of digits
Multiple series per typeCreate multiple Number Series for the same reference type (e.g., SINV- and INV- for Sales Invoices)

Example: Custom Numbering

SettingValueResult
Prefix: INV-, Start: 5000, PadZeros: 5Current: 1INV-05001
Prefix: 2024/, Start: 1, PadZeros: 6Current: 12024/000001
Prefix: REC-, Start: 100, PadZeros: 3Current: 1REC-101
The Current field is read-only and managed by the system. It always reflects the last number used. Do not attempt to manually reset it — this could cause duplicate document numbers.

8.9 Multi-Currency

NkapBooks supports transactions in multiple currencies, with automatic exchange rate handling and gain/loss accounting.

Currency Schema

FieldTypeDescription
Currency NameDataFull name of the currency (e.g., "US Dollar", "Euro")
FractionDataName of the fractional unit (e.g., "Cent", "Penny")
Fraction UnitsIntNumber of fractional units in one whole unit (e.g., 100)
Smallest Currency Fraction ValueCurrencySmallest denomination (e.g., 0.01)
SymbolDataCurrency symbol (e.g., $, , £, XAF)

NkapBooks ships with a pre-loaded list of world currencies that is available immediately after setup.

How Multi-Currency Works

System Currency

The system currency is set during the Setup Wizard and is stored in SystemSettings.currency. All reports and summaries are denominated in this currency.

Party Currency

Each Party (customer/supplier) can have a default currency set on their record. When a transaction is created for that party, the system uses the party's currency by default.

Exchange Rate on Transactions

When a transaction is created in a foreign currency:

  1. The invoice or payment shows an Exchange Rate field.
  2. The exchange rate converts foreign currency amounts to the system currency.
  3. All GL entries are posted in the system currency using the exchange rate.

Exchange Gain/Loss

When a payment is made at a different exchange rate than the original invoice:

  • Exchange Gain: If the payment settles for less in system currency → recorded as income.
  • Exchange Loss: If the payment settles for more in system currency → recorded as expense.

These entries are created automatically by the Payment document's posting logic.

Currency in Practice

ScenarioHow It Works
Foreign CustomerSet the customer's currency to their local currency. Invoices use that currency.
Foreign SupplierSet the supplier's currency to their local currency. Purchase invoices use that currency.
Manual EntrySet the exchange rate on the invoice or payment manually
ReportsAll report amounts are shown in the system currency

Archiving Currencies

Currencies can be archived to hide them from dropdowns while preserving references on historical transactions. This is useful for cleaning up the currency list if many unused currencies are loaded by default.


8.10 Accounting Settings

Accounting Settings is a singleton document that controls company-wide accounting configuration and feature toggles.

Schema Overview

FieldSectionTypeRequiredDescription
Full NameDefaultDataThe business owner or administrator's name
Company NameDefaultDataYour company name (read-only after setup)
Taxpayer NumberDefaultDataBusiness tax identification number
Bank NameDefaultDataPrimary bank name (read-only after setup)
CountryDefaultAutoCompleteYour business's country (read-only after setup)
EmailDefaultDataBusiness email (validated format)
Company AddressDefaultTextFull company address

Account Settings

FieldSectionTypeDescription
Write Off AccountAccountsLink → AccountAccount for writing off small amounts (Expense root type)
Round Off AccountAccountsLink → AccountAccount for rounding adjustments (Expense root type)
Discount AccountAccountsLink → AccountAccount for discount amounts (Income root type)

Feature Toggles

These checkboxes enable or disable optional features across the application:

FeatureDefaultDescription
Enable Form CustomizationOffAllow customising form layouts and fields
Enable LeadOffShow Lead management in the Sales sidebar
Enable Pricing RuleOffActivate automatic pricing rules for invoices
Enable Item EnquiryOffShow Item Enquiry button in POS Quick Actions
Enable Loyalty ProgramOffActivate the loyalty points system
Enable Coupon CodeOffAllow coupon codes on invoices (requires Pricing Rule)
Enable Item GroupOffCategorise items into groups
Some features are one-way toggles — once enabled, they cannot be disabled. This includes Lead, Loyalty Program, and Item Group. Enable them only when you're ready to use them.

Fiscal Year

FieldTypeDescription
Fiscal Year Start DateDateStart of your financial year (e.g., January 1)
Fiscal Year End DateDateEnd of your financial year (e.g., December 31)

The fiscal year dates are used by financial reports (Profit & Loss, Balance Sheet, Trial Balance) to determine the reporting period.

Feature Dependency Chain

Some features depend on others:

Enable Pricing Rule  →  Enable Coupon Code
                     (Coupon Code is hidden until Pricing Rule is enabled)

Regional Settings

CountryAdditional Setting
IndiaGSTIN field is shown for tax registration number
SYSCOHADA countriesAccount defaults use OHADA-standard numbered accounts
SwitzerlandRegional accounting settings available

Setup Complete Flag

The setupComplete flag (hidden) is set to true after the Setup Wizard completes. This flag:

  • Makes the parentAccount field required on new Account records.
  • Indicates that the Chart of Accounts has been initialised.
  • Prevents re-running certain setup operations.

Best Practices

Chart of Accounts

  1. Don't over-complicate — Start with the pre-built template for your country and only add accounts as needed.
  2. Use groups — Organise accounts into logical groups for cleaner reports.
  3. Archive, don't delete — When an account is no longer needed, archive it instead of deleting it.
  4. Keep account names descriptive — Use clear names that anyone can understand (e.g., "Office Rent" instead of "Account 623").

Journal Entries

  1. Use the right entry type — Always select the most appropriate entry type for audit clarity.
  2. Add references — Include reference numbers and user remarks on every journal entry.
  3. Attach documentation — Upload supporting documents (receipts, approvals) as attachments.
  4. Review before submitting — Journal entries cannot be edited after submission — only cancelled.

Party Management

  1. Choose roles carefully — Set the role to Customer or Supplier if the party serves only one purpose. Use Both only when the same entity is both a customer and a supplier.
  2. Set default accounts — For SYSCOHADA countries, ensure default accounts are correctly mapped.
  3. Keep contact info current — Email and phone are used for communication and POS item enquiry auto-fill.

Tax Templates

  1. Create one template per tax regime — e.g., "VAT 19.25%", "VAT 0% (Exempt)".
  2. Set both invoice and payment accounts — If your tax authority requires different accounts for collected vs. paid tax.
  3. Test with a sample invoice — Before using a new tax template in production, create a test invoice to verify the calculations.

Number Series

  1. Use meaningful prefixes — Choose prefixes that clearly identify the document type.
  2. Plan before starting — Changing number series mid-year can cause confusion. Plan your numbering strategy before going live.
  3. Use sufficient padding — Set padZeros high enough to accommodate growth (4–6 digits is typical).

Accounting Impact Summary

How Documents Create Ledger Entries

DocumentOn SubmitOn Cancel
Sales InvoiceDebit: Receivable → Credit: Income + TaxReversal entries created
Purchase InvoiceDebit: Expense/Stock + Tax → Credit: PayableReversal entries created
Receive PaymentDebit: Cash/Bank → Credit: ReceivableReversal entries; outstanding restored
Pay PaymentDebit: Payable → Credit: Cash/BankReversal entries; outstanding restored
Journal EntryAs defined in account rowsReversal entries created
POS Session OpenDebit: Counter Cash → Credit: Main Cash (if cash > 0)N/A (sessions can't be cancelled)
POS Session CloseDebit: Main Cash → Credit: Counter Cash + Write-offN/A

The Audit Trail

Every financial transaction in NkapBooks creates an unbroken audit trail:

  1. Source Document — The invoice, payment, or journal entry that initiated the transaction.
  2. Accounting Ledger Entries — Individual debit/credit records linked back to the source document.
  3. General Ledger Report — A chronological view of all entries per account.
  4. Trial Balance — Summary of all account balances to verify the books are balanced.
  5. Financial Statements — Profit & Loss and Balance Sheet derived from the ledger.