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-Module | Sidebar / Location | Description |
|---|---|---|
| Double-Entry Accounting | (System Core) | The engine that ensures every transaction is balanced |
| Chart of Accounts | Chart of Accounts | Hierarchical tree of all financial accounts |
| Journal Entries | Journal Entry | Manual ledger entries for adjustments and transfers |
| Accounting Ledger Entries | (Auto-generated) | Individual debit/credit records created by transactions |
| Party Management | Customers / Suppliers | Unified record for customers and suppliers |
| Tax Templates | Tax Template | Reusable tax configurations for invoices |
| Payment Methods | Payment Method | Define accepted payment types and linked accounts |
| Number Series | Number Series | Automatic document numbering configuration |
| Multi-Currency | (via Currency) | Support for transactions in foreign currencies |
| Accounting Settings | Accounting Settings | Company-wide accounting configuration and feature toggles |
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
| Principle | Description |
|---|---|
| Every entry has two sides | Each transaction creates at least one debit and one credit entry |
| Debits always equal credits | The total debit amount must exactly match the total credit amount |
| Transactions are atomic | Either all entries are posted, or none are — no partial postings |
| Entries are immutable | Once submitted, ledger entries cannot be edited — they can only be reversed |
Debit and Credit Rules
| Account Type | Debit Effect | Credit Effect |
|---|---|---|
| Assets | Increase ↑ | Decrease ↓ |
| Expenses | Increase ↑ | Decrease ↓ |
| Liabilities | Decrease ↓ | Increase ↑ |
| Income | Decrease ↓ | Increase ↑ |
| Equity | Decrease ↓ | Increase ↑ |
The Transactional Model
NkapBooks uses a Transactional base class for all documents that create accounting entries. Documents that extend Transactional include:
| Document | Inherits Transactional | Creates Ledger Entries |
|---|---|---|
| Sales Invoice | ✅ | Debit Receivable, Credit Income + Tax |
| Purchase Invoice | ✅ | Debit Expense/Stock, Credit Payable + Tax |
| Payment | ✅ | Debit/Credit Payment Account ↔ Receivable/Payable |
| Journal Entry | ✅ | Custom debit/credit as defined by user |
Ledger Posting
The LedgerPosting class handles the creation of AccountingLedgerEntry records:
- The document's
getPosting()method builds a list of debit and credit entries. - On submit, the posting creates
AccountingLedgerEntryrows in the database. - On cancel, the posting creates reversal entries (debits become credits and vice versa) and marks original entries as
reverted.
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
| Field | Type | Required | Description |
|---|---|---|---|
| Account Name | Data | ✅ | The display name of the account (used as identifier — manual naming) |
| Root Type | Select | ✅ | One of: Asset, Liability, Equity, Income, Expense |
| Parent Account | Link → Account | Conditional | The parent group account (required after setup is complete) |
| Account Type | Select | — | Specific sub-classification (see table below) |
| Is Group | Check | — | Whether this account can contain child accounts |
Root Types
Every account belongs to exactly one root type, which determines its fundamental behavior:
| Root Type | Nature | Examples |
|---|---|---|
| Asset | Debit-normal | Cash, Bank, Accounts Receivable, Inventory, Fixed Assets |
| Liability | Credit-normal | Accounts Payable, Loans, Tax Payable |
| Equity | Credit-normal | Capital, Retained Earnings, Owner's Equity |
| Income | Credit-normal | Sales Revenue, Service Income, Interest Income |
| Expense | Debit-normal | Cost of Goods Sold, Rent, Utilities, Salaries |
Account Types
Account types provide additional classification for system-level behavior. The following types are available:
| Account Type | Used By | Description |
|---|---|---|
| Cash | POS, Payments | Cash-in-hand accounts |
| Bank | Payments | Bank accounts for transfers |
| Receivable | Sales Invoices | Accounts for money owed by customers |
| Payable | Purchase Invoices | Accounts for money owed to suppliers |
| Income Account | Invoice Items | Revenue accounts for sales |
| Expense Account | Invoice Items | Accounts for business expenses |
| Cost of Goods Sold | Inventory | COGS for inventory items |
| Stock | Inventory | Inventory asset accounts |
| Stock Adjustment | Inventory | Accounts for inventory adjustments |
| Stock Received But Not Billed | Purchase Receipts | Interim account for received goods |
| Expenses Included In Valuation | Inventory | Overhead costs included in inventory value |
| Tax | Tax Templates | Accounts for tax collection/payment |
| Fixed Asset | Assets | Long-term tangible assets |
| Depreciation | Journal Entries | Depreciation expense accounts |
| Accumulated Depreciation | Journal Entries | Contra-asset for accumulated depreciation |
| Equity | Equity | Owner's equity and capital accounts |
| Round Off | Invoices | Account for rounding adjustments |
| Chargeable | Invoices | Accounts for chargeable items |
| Temporary | System | Temporary 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
| Rule | Description |
|---|---|
| Root Type is permanent | Once an account is created, its root type cannot be changed |
| Parent is permanent | The parent account cannot be changed after creation |
| Account Type inherits | If no account type is specified, it inherits from the parent account |
| Group accounts | Marked as isGroup: true — they cannot receive ledger entries directly |
| Leaf accounts | Non-group accounts receive actual debit/credit entries |
| Archiving | Accounts 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: trueto hide the account from dropdowns while preserving historical data.
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
| Field | Type | Required | Description |
|---|---|---|---|
| Entry No | Data (auto) | ✅ | Auto-generated via Number Series (default prefix: JV-) |
| Number Series | Link → NumberSeries | ✅ | Controls the numbering pattern |
| Entry Type | Select | ✅ | Classification of the journal entry (see below) |
| Date | Date | ✅ | Transaction date (defaults to today) |
| Account Entries | Table → JournalEntryAccount | ✅ | Rows of Account + Debit/Credit amounts |
| Reference Number | Data | — | External reference (e.g., bank statement ref) |
| Reference Date | Date | — | Date of the external reference |
| User Remark | Text | — | Free-text note explaining the entry |
| Attachment | Attachment | — | Supporting document (receipt, approval, etc.) |
Entry Types
| Entry Type | Use Case |
|---|---|
| Journal Entry | General-purpose manual entry |
| Bank Entry | Bank-related transactions |
| Cash Entry | Cash-related transactions |
| Credit Card Entry | Credit card transactions |
| Debit Note | Adjustments reducing amounts owed by customers |
| Credit Note | Adjustments reducing amounts owed to suppliers |
| Contra Entry | Transfers between cash and bank accounts |
| Excise Entry | Excise duty-related entries |
| Write Off Entry | Write-off of bad debts or irrecoverable amounts |
| Opening Entry | Initial balances when migrating to NkapBooks |
| Depreciation Entry | Asset depreciation recording |
Account Entries (Child Table)
Each row in the Account Entries table represents one side of the double-entry:
| Field | Type | Description |
|---|---|---|
| Account | Link → Account | The account to debit or credit (non-group only, grouped by rootType) |
| Debit | Currency | Amount to debit this account |
| Credit | Currency | Amount 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
| Status | Description |
|---|---|
| Draft | Entry can be freely edited. No ledger entries are created. |
| Submitted | Entry is locked and AccountingLedgerEntry rows are created. |
| Cancelled | Reversal 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:
- The
getPosting()method iterates over all account rows. - For each row with a non-zero debit, a debit
AccountingLedgerEntryis created. - For each row with a non-zero credit, a credit
AccountingLedgerEntryis created. - The posting validates that total debits equal total credits.
Common Use Cases
| Use Case | Example |
|---|---|
| Opening Balances | Migrate existing balances when starting with NkapBooks |
| Year-End Adjustments | Close income/expense accounts to Retained Earnings |
| Depreciation | Record monthly depreciation of fixed assets |
| Intercompany Transfers | Transfer funds between cash and bank accounts (Contra Entry) |
| Correction Entries | Fix errors in previously submitted transactions |
| Bad Debt Write-Off | Write off uncollectible receivables |
| POS Cash Transfer | Automatically created when opening/closing POS sessions |
Actions
| Action | Description |
|---|---|
| View Ledger Entries | Navigate 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
| Field | Type | Description |
|---|---|---|
| Entry No. | Data (auto-increment) | Unique identifier |
| Date | Datetime | Transaction date |
| Party | Link → Party | The customer or supplier involved (if applicable) |
| Account | Link → Account | The GL account debited or credited |
| Debit | Currency | Debit amount (zero if credit) |
| Credit | Currency | Credit amount (zero if debit) |
| Ref. Type | Data | The document type that created this entry (e.g., SalesInvoice, Payment, JournalEntry) |
| Ref. Name | DynamicLink | The document name that created this entry |
| Reverted | Check | Whether this entry has been reversed |
| Reverts | Link → AccountingLedgerEntry | If this is a reversal entry, points to the original |
How Entries Are Created
| When You... | Debit Account | Credit Account |
|---|---|---|
| Submit a Sales Invoice | Receivable (Debtors) | Income + Tax |
| Submit a Purchase Invoice | Expense/Stock + Tax | Payable (Creditors) |
| Record a Receive Payment | Cash/Bank | Receivable |
| Record a Pay Payment | Payable | Cash/Bank |
| Submit a Journal Entry | As specified in rows | As specified in rows |
Reversal Mechanism
When a document is cancelled:
- Each original ledger entry is marked as
reverted: true. - A new reversal entry is created with:
- Debit ↔ Credit swapped (original debit becomes credit, original credit becomes debit)
reverted: truerevertspointing to the original entry
- 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
| Column | Description |
|---|---|
| Date | When the entry was created |
| Account | The affected GL account |
| Party | Customer or supplier |
| Debit | Debit amount |
| Credit | Credit amount |
| Ref. Name | The source document |
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
| Field | Type | Required | Description |
|---|---|---|---|
| Image | AttachImage | — | Profile picture or company logo |
| Name | Data | ✅ | Full name of the customer or supplier (manual naming, renamable) |
| Role | Select | ✅ | Customer, Supplier, or Both (default: Both) |
| Data | — | Email address (validated format) | |
| Phone | Data | — | Phone number (validated format) |
| Address | Link → Address | — | Physical address |
| Default Account | Link → Account | — | Default receivable/payable account |
| Currency | Link → Currency | — | Default transaction currency (defaults to system currency) |
| From Lead | Link → Lead | Read-only | If this party was converted from a Lead |
| Loyalty Program | Link → LoyaltyProgram | — | Assigned loyalty program (for customers) |
| Loyalty Points | Int | Read-only | Current loyalty point balance (auto-calculated) |
| Tax ID | Data | — | Tax identification number |
| Outstanding Amount | Currency | Hidden | Net outstanding amount (auto-calculated) |
Role-Based Behavior
| Role | Appears In | Used On | Default Account |
|---|---|---|---|
| Customer | Sales sidebar → Customers | Sales Invoices, Sales Quotes | Debtors (Receivable) |
| Supplier | Purchases sidebar → Suppliers | Purchase Invoices | Creditors (Payable) |
| Both | Both sidebars | All document types | (no automatic default) |
SYSCOHADA Account Defaults
For businesses in OHADA member countries, default accounts are automatically set:
| Role | SYSCOHADA Account | International Account |
|---|---|---|
| Customer | 411-Clients or 4111-Clients | Debtors |
| Supplier | 401-Fournisseurs, Dettes en Compte or 4011-Fournisseurs | Creditors |
| Both | (none — must be set manually) | (none) |
Outstanding Amount Calculation
The outstandingAmount field is automatically recalculated and represents the net amount owed:
| Role | Calculation |
|---|---|
| Customer | Sum of outstanding Sales Invoices |
| Supplier | Sum of outstanding Purchase Invoices |
| Both | Outstanding 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:
| Action | Available For | Description |
|---|---|---|
| Create Purchase | Supplier, Both | Create a new Purchase Invoice for this party |
| View Purchases | Supplier, Both | Navigate to Purchase Invoice list filtered by this party |
| Create Sale | Customer, Both | Create a new Sales Invoice for this party |
| View Sales | Customer, Both | Navigate to Sales Invoice list filtered by this party |
| View Unpaid Sales | Customer, Both | View Sales Invoices with outstanding amounts |
| View Unpaid Purchases | Supplier, Both | View Purchase Invoices with outstanding amounts |
| View Payments | All | Navigate to Payment list filtered by this party |
| View Shipments | Customer, Both | Navigate to Shipment list filtered by this party |
| View Purchase Receipts | Supplier, Both | Navigate 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
| Column | Description |
|---|---|
| Name | Party name |
| Email address | |
| Phone | Phone number |
| Outstanding Amount | Net 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
| Field | Type | Required | Description |
|---|---|---|---|
| Name | Data | ✅ | Tax template name (e.g., "VAT 19.25%", "GST 18%") |
| Details | Table → TaxDetail | ✅ | One or more tax detail rows |
Tax Detail Schema (Child Table)
Each tax detail row defines a single tax component:
| Field | Type | Required | Description |
|---|---|---|---|
| Tax Invoice Account | Link → Account | ✅ | GL account for tax on invoices (e.g., "VAT Collected") |
| Tax Payment Account | Link → Account | — | GL account for tax on payments (if different from invoice account) |
| Rate | Float | ✅ | Tax percentage (e.g., 19.25 for 19.25%) |
How Tax Templates Work
- 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
TaxSummaryrow showing the total tax per account. - Adds the tax to the Grand Total.
- 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 Account | Rate | Description |
|---|---|---|
| State Tax | 9% | State-level tax |
| Central Tax | 9% | 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.
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
| Field | Type | Required | Description |
|---|---|---|---|
| Name | Data | — | The payment method name (manual naming) |
| Type | Select | ✅ | Cash, Bank, or Mobile Money |
| Account | Link → Account | — | The GL account linked to this payment method |
Default Payment Method Types
| Type | Description | Typical Account |
|---|---|---|
| Cash | Physical cash transactions | Cash In Hand / Caisse |
| Bank | Bank transfers, cheques, credit cards | Bank Account / Compte Bancaire |
| Mobile Money | Mobile payment platforms (MTN MoMo, Orange Money, etc.) | Mobile Money Account |
Where Payment Methods Are Used
| Context | Usage |
|---|---|
| Payments | Select the payment method on Payment documents — the linked account auto-fills |
| POS | Payment methods determine which account is debited and whether reference/clearance fields appear |
| POS Sessions | Session amounts are tracked per payment method (Cash, Mobile Money, Bank) |
Account Auto-Fill Logic
When a payment method is selected on a Payment document:
- The system loads the
PaymentMethoddocument. - If the method type is
Cash, the POS counter's cash account is used (for POS payments). - For
BankandMobile Money, the method's linked account is used. - 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
| Column | Description |
|---|---|
| Name | Payment method name |
| Type | Cash, 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
| Field | Type | Required | Description |
|---|---|---|---|
| Prefix | Data | ✅ | The text prefix for document numbers (e.g., SINV-, JV-) |
| Start | Int | ✅ | Starting number (default: 1001) |
| Pad Zeros | Int | ✅ | Number of digits to pad with zeros (default: 4) |
| Reference Type | Select | ✅ | The document type this series applies to |
| Current | Int | Read-only | The current counter value |
Default Number Series
| Document Type | Default Prefix | Example Output |
|---|---|---|
| Sales Invoice | SINV- | SINV-1001 |
| Sales Quote | SQUOT- | SQUOT-1001 |
| Purchase Invoice | PINV- | PINV-1001 |
| Payment | PAY- | PAY-1001 |
| Journal Entry | JV- | JV-1001 |
| Stock Movement | SMOV- | SMOV-1001 |
| Shipment | SHPMNT- | SHPMNT-1001 |
| Purchase Receipt | PREC- | PREC-1001 |
| Inventory Adjustment | IADJ- | IADJ-1001 |
| Pricing Rule | PRLE- | PRLE-1001 |
| POS Session | POSS- | POSS-1001 |
How Numbering Works
- When a new document is created, the system finds the Number Series matching the document's
numberSeriesfield andreferenceType. - The
currentcounter is incremented by 1. - The new document number is generated:
{prefix}{padded current}. - With
padZeros: 4andcurrent: 42, the result isSINV-0042.
Customisation
You can customise number series by:
| Customisation | How |
|---|---|
| Change prefix | Create a new Number Series with a different prefix |
| Change starting number | Set the start field to the desired starting value |
| Change padding | Set padZeros to the desired number of digits |
| Multiple series per type | Create multiple Number Series for the same reference type (e.g., SINV- and INV- for Sales Invoices) |
Example: Custom Numbering
| Setting | Value | Result |
|---|---|---|
Prefix: INV-, Start: 5000, PadZeros: 5 | Current: 1 | INV-05001 |
Prefix: 2024/, Start: 1, PadZeros: 6 | Current: 1 | 2024/000001 |
Prefix: REC-, Start: 100, PadZeros: 3 | Current: 1 | REC-101 |
8.9 Multi-Currency
NkapBooks supports transactions in multiple currencies, with automatic exchange rate handling and gain/loss accounting.
Currency Schema
| Field | Type | Description |
|---|---|---|
| Currency Name | Data | Full name of the currency (e.g., "US Dollar", "Euro") |
| Fraction | Data | Name of the fractional unit (e.g., "Cent", "Penny") |
| Fraction Units | Int | Number of fractional units in one whole unit (e.g., 100) |
| Smallest Currency Fraction Value | Currency | Smallest denomination (e.g., 0.01) |
| Symbol | Data | Currency 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:
- The invoice or payment shows an Exchange Rate field.
- The exchange rate converts foreign currency amounts to the system currency.
- 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
| Scenario | How It Works |
|---|---|
| Foreign Customer | Set the customer's currency to their local currency. Invoices use that currency. |
| Foreign Supplier | Set the supplier's currency to their local currency. Purchase invoices use that currency. |
| Manual Entry | Set the exchange rate on the invoice or payment manually |
| Reports | All 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
| Field | Section | Type | Required | Description |
|---|---|---|---|---|
| Full Name | Default | Data | ✅ | The business owner or administrator's name |
| Company Name | Default | Data | ✅ | Your company name (read-only after setup) |
| Taxpayer Number | Default | Data | — | Business tax identification number |
| Bank Name | Default | Data | ✅ | Primary bank name (read-only after setup) |
| Country | Default | AutoComplete | ✅ | Your business's country (read-only after setup) |
| Default | Data | ✅ | Business email (validated format) | |
| Company Address | Default | Text | — | Full company address |
Account Settings
| Field | Section | Type | Description |
|---|---|---|---|
| Write Off Account | Accounts | Link → Account | Account for writing off small amounts (Expense root type) |
| Round Off Account | Accounts | Link → Account | Account for rounding adjustments (Expense root type) |
| Discount Account | Accounts | Link → Account | Account for discount amounts (Income root type) |
Feature Toggles
These checkboxes enable or disable optional features across the application:
| Feature | Default | Description |
|---|---|---|
| Enable Form Customization | Off | Allow customising form layouts and fields |
| Enable Lead | Off | Show Lead management in the Sales sidebar |
| Enable Pricing Rule | Off | Activate automatic pricing rules for invoices |
| Enable Item Enquiry | Off | Show Item Enquiry button in POS Quick Actions |
| Enable Loyalty Program | Off | Activate the loyalty points system |
| Enable Coupon Code | Off | Allow coupon codes on invoices (requires Pricing Rule) |
| Enable Item Group | Off | Categorise items into groups |
Fiscal Year
| Field | Type | Description |
|---|---|---|
| Fiscal Year Start Date | Date | Start of your financial year (e.g., January 1) |
| Fiscal Year End Date | Date | End 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
| Country | Additional Setting |
|---|---|
| India | GSTIN field is shown for tax registration number |
| SYSCOHADA countries | Account defaults use OHADA-standard numbered accounts |
| Switzerland | Regional accounting settings available |
Setup Complete Flag
The setupComplete flag (hidden) is set to true after the Setup Wizard completes. This flag:
- Makes the
parentAccountfield 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
- Don't over-complicate — Start with the pre-built template for your country and only add accounts as needed.
- Use groups — Organise accounts into logical groups for cleaner reports.
- Archive, don't delete — When an account is no longer needed, archive it instead of deleting it.
- Keep account names descriptive — Use clear names that anyone can understand (e.g., "Office Rent" instead of "Account 623").
Journal Entries
- Use the right entry type — Always select the most appropriate entry type for audit clarity.
- Add references — Include reference numbers and user remarks on every journal entry.
- Attach documentation — Upload supporting documents (receipts, approvals) as attachments.
- Review before submitting — Journal entries cannot be edited after submission — only cancelled.
Party Management
- Choose roles carefully — Set the role to
CustomerorSupplierif the party serves only one purpose. UseBothonly when the same entity is both a customer and a supplier. - Set default accounts — For SYSCOHADA countries, ensure default accounts are correctly mapped.
- Keep contact info current — Email and phone are used for communication and POS item enquiry auto-fill.
Tax Templates
- Create one template per tax regime — e.g., "VAT 19.25%", "VAT 0% (Exempt)".
- Set both invoice and payment accounts — If your tax authority requires different accounts for collected vs. paid tax.
- Test with a sample invoice — Before using a new tax template in production, create a test invoice to verify the calculations.
Number Series
- Use meaningful prefixes — Choose prefixes that clearly identify the document type.
- Plan before starting — Changing number series mid-year can cause confusion. Plan your numbering strategy before going live.
- Use sufficient padding — Set
padZeroshigh enough to accommodate growth (4–6 digits is typical).
Accounting Impact Summary
How Documents Create Ledger Entries
| Document | On Submit | On Cancel |
|---|---|---|
| Sales Invoice | Debit: Receivable → Credit: Income + Tax | Reversal entries created |
| Purchase Invoice | Debit: Expense/Stock + Tax → Credit: Payable | Reversal entries created |
| Receive Payment | Debit: Cash/Bank → Credit: Receivable | Reversal entries; outstanding restored |
| Pay Payment | Debit: Payable → Credit: Cash/Bank | Reversal entries; outstanding restored |
| Journal Entry | As defined in account rows | Reversal entries created |
| POS Session Open | Debit: Counter Cash → Credit: Main Cash (if cash > 0) | N/A (sessions can't be cancelled) |
| POS Session Close | Debit: Main Cash → Credit: Counter Cash + Write-off | N/A |
The Audit Trail
Every financial transaction in NkapBooks creates an unbroken audit trail:
- Source Document — The invoice, payment, or journal entry that initiated the transaction.
- Accounting Ledger Entries — Individual debit/credit records linked back to the source document.
- General Ledger Report — A chronological view of all entries per account.
- Trial Balance — Summary of all account balances to verify the books are balanced.
- Financial Statements — Profit & Loss and Balance Sheet derived from the ledger.