Purchase Module
Complete guide to the NkapBooks Purchase Module — manage purchase invoices, payments, suppliers, and purchase items for your business expenses and vendor relationships.
5. Purchase Module
The Purchase Module manages the complete procurement cycle in NkapBooks — from recording vendor bills to making payments and tracking supplier relationships. It is accessible from the Purchases section in the sidebar and contains the following sub-modules:
| Sub-Module | Sidebar Entry | Description |
|---|---|---|
| Purchase Invoices | Purchase Invoices | Record bills from suppliers for goods and services purchased |
| Purchase Payments | Payments | Make payments against purchase invoices |
| Suppliers | Suppliers | Manage supplier contact and billing information |
| Purchase Items | Items | Define products and services available for purchase |
5.1 Purchase Invoices
Purchase Invoices (also called vendor bills or purchase bills) record amounts owed to suppliers for goods or services received. Each submitted purchase invoice generates double-entry accounting ledger entries and tracks the outstanding amount until fully paid.
Schema Overview
| Field | Type | Description |
|---|---|---|
| Number Series | Link → NumberSeries | Auto-generated identifier (default prefix: PINV-) |
| Supplier | Link → Party | The supplier who issued the bill (filtered to parties with role Supplier or Both) |
| Account | Link → Account | The payables account (auto-set from the supplier's default account, typically Creditors or SYSCOHADA 401-Fournisseurs) |
| Date | Datetime | Invoice/bill date |
| Price List | Link → PriceList | Optional price list to apply per-item purchase rates |
| Items | Table → PurchaseInvoiceItem | Line items with item, quantity, rate, tax, discount, and amount |
| Net Total | Currency (read-only) | Sum of all line item amounts before tax |
| Taxes | Table → TaxSummary (read-only) | Automatic tax breakdown by tax account |
| Grand Total | Currency (read-only) | Net Total + Taxes − Discounts |
| Base Grand Total | Currency (read-only) | Grand Total converted to company currency (visible only in multi-currency mode) |
| Outstanding Amount | Currency (read-only) | Remaining unpaid balance after linked payments |
| Stock Not Received | Float (read-only) | Quantity of items not yet received via Purchase Receipt |
| Discount | Currency / Percent | Invoice-level discount (amount or percentage) |
| Apply Discount After Tax | Check | When enabled, discount is applied after tax calculation |
| Notes | Text | Free-text field for invoice terms and conditions |
| Attachment | Attachment | Attach supporting documents (PDF, images, etc.) |
| Back Reference | Link → PurchaseReceipt | Reference to a linked Purchase Receipt (set automatically) |
| Return Against | Link → PurchaseInvoice | Reference to the original invoice when creating a return (debit note) |
Purchase Invoice Item Fields
Each line item in a Purchase Invoice includes:
| Field | Type | Description |
|---|---|---|
| Item | Link → Item | The item being purchased |
| Description | Text | Item description (auto-filled from item record) |
| Quantity | Float | Number of units purchased |
| Rate | Currency | Per-unit purchase cost |
| Unit | Link → UOM | Unit of measurement |
| Tax | Link → Tax | Tax template to apply |
| HSN/SAC | Int | HSN/SAC code for Indian GST compliance |
| Discount Amount | Currency | Per-item discount as a fixed amount |
| Discount Percent | Float | Per-item discount as a percentage |
| Amount | Currency (read-only) | Calculated: Quantity × Rate − Discount |
| Batch | Link → Batch | Batch assignment (if item has batch tracking enabled) |
| Serial Number | Text | Serial number(s) — one per line (if item has serial number tracking enabled) |
Settings Tab
The Purchase Invoice form includes a Settings tab with the following options:
| Setting | Description |
|---|---|
| Make Purchase Receipt On Submit | When checked, automatically creates a Purchase Receipt (goods-in) when the invoice is submitted. The receipt uses the default location from Inventory Settings. |
| Make Payment On Submit | When checked, automatically creates a Payment entry when the invoice is submitted. The payment uses the default payment account from Accounting Settings. |
| Apply Discount After Tax | Controls whether discounts are applied before or after tax calculation. |
Document Lifecycle
┌─────────┐ ┌───────────┐ ┌──────────┐
│ Draft │─────▶│ Submitted │─────▶│ Paid │
│ │ │ │ │ │
└─────────┘ └─────┬─────┘ └──────────┘
│
▼
┌───────────┐
│ Cancelled │
└───────────┘
| Status | Description |
|---|---|
| Draft | Invoice is being prepared. All fields are editable. No accounting entries are created. |
| Submitted | Invoice is finalized. Accounting ledger entries are created. Outstanding amount is set to the Grand Total. Payments can now be made against this invoice. |
| Paid | All outstanding amount has been settled via linked Payment entries. |
| Cancelled | Invoice is voided. All accounting entries are reversed. Linked payments are also cancelled. |
Accounting Entries (on Submit)
When a Purchase Invoice is submitted, the following ledger entries are created:
| Account | Debit | Credit |
|---|---|---|
Expense Account (per item, e.g., Cost of Goods Sold or SYSCOHADA 601-Achats) | Item Amount × Exchange Rate | — |
| Tax Account (per tax line) | Tax Amount × Exchange Rate | — |
Payables Account (e.g., Creditors or 401-Fournisseurs) | — | Grand Total |
| Discount Account (if discount applied) | — | Discount Amount × Exchange Rate |
Return Against set), the accounting entries are reversed — the payables account is debited and the expense accounts are credited.Key Features
- Automatic Tax Calculation — Taxes are computed automatically based on the tax template assigned to each item.
- Multi-Currency Support — Purchase invoices can be issued in the supplier's currency. The exchange rate is fetched automatically and all amounts are stored in both the transaction currency and the company's base currency.
- Auto Payment — Enable "Make Payment On Submit" to automatically create and submit a payment entry when the invoice is submitted.
- Auto Purchase Receipt — Enable "Make Purchase Receipt On Submit" to automatically receive goods into inventory when the invoice is submitted.
- Invoice Returns (Debit Notes) — Create return invoices to record goods returned to suppliers. Returns reverse the original accounting entries and update the original invoice's outstanding amount.
- Discount Accounting — Apply discounts at both the item level and the invoice level, either before or after tax.
- Price Lists — Apply purchase-specific price lists to automatically set item rates.
- License Tracking — Invoice creation is tracked against your license tier limits (does not apply to return invoices).
Actions
The following actions are available from a Purchase Invoice:
| Action | Condition | Description |
|---|---|---|
| Make Payment | Invoice is submitted with outstanding amount > 0 | Creates a new Payment entry pre-filled with the invoice reference and outstanding amount |
| Make Purchase Receipt | Invoice is submitted with stock not received > 0 | Creates a new Purchase Receipt pre-filled with the invoice items and quantities |
| Return | Invoice is submitted and not already fully returned | Creates a return (debit note) with quantities reversed |
| View Accounting Ledger | Invoice exists | Opens the General Ledger filtered to this invoice's entries |
| View Stock Ledger | Invoice exists and has linked stock transfers | Opens the Stock Ledger filtered to related stock movements |
| Duplicate | Invoice exists | Creates a copy of the invoice as a new Draft |
| Invoice exists | Opens the print preview with the configured print template |
List View
The Purchase Invoice list displays the following columns:
| Column | Description |
|---|---|
| Name | Invoice number (e.g., PINV-0001) |
| Status | Current document status with color-coded indicator |
| Supplier | Supplier name |
| Date | Invoice date |
| Base Grand Total | Invoice total in company currency |
| Outstanding Amount | Remaining unpaid balance |
Workflow: Creating a Purchase Invoice
- Navigate to Purchases → Purchase Invoices in the sidebar.
- Click + New to create a new Purchase Invoice.
- Select the Supplier — the payables account and currency are auto-filled from the supplier record.
- Add line items:
- Select an Item — the rate, tax, and description are auto-filled from the item record.
- Adjust the Quantity and Rate as needed.
- Optionally apply per-item discounts.
- Optionally apply an invoice-level discount.
- Review the automatically calculated Net Total, Taxes, and Grand Total.
- Optionally enable Make Payment On Submit and/or Make Purchase Receipt On Submit in the Settings tab.
- Click Save to save as Draft, or Submit to finalize the invoice.
5.2 Purchase Payments
Purchase Payments record money paid to suppliers against purchase invoices. Payments are handled by the unified Payment document type with paymentType: "Pay".
Schema Overview
| Field | Type | Description |
|---|---|---|
| Number Series | Link → NumberSeries | Auto-generated identifier (default prefix: PAY-) |
| Party | Link → Party | Supplier receiving the payment (filtered to Supplier or Both roles) |
| Payment Type | Select | Pay — automatically set when paying a supplier |
| Posting Date | Datetime | Date the payment is recorded |
| Payment Method | Link → PaymentMethod | Cash, Bank Transfer, Cheque, etc. (default: Cash) |
| From Account | Link → Account | The cash/bank account being debited (source of funds) |
| To Account | Link → Account | The payables account being credited (supplier's account) |
| Amount | Currency | Total payment amount |
| Write Off | Currency | Amount to write off (small balance differences) |
| Amount Paid | Currency (computed) | Amount − Write Off |
| Taxes | Table → TaxSummary (read-only) | Withholding or other taxes applied to the payment |
| Payment Reference | Table → PaymentFor | References to one or more Purchase Invoices being paid |
| Ref. / Cheque No. | Data | External reference number (cheque number, bank transfer ID, etc.) |
| Reference Date | Date | Date on the external reference document |
| Clearance Date | Date | Date the payment cleared the bank |
| Attachment | Attachment | Attach supporting documents |
Payment Reference (PaymentFor) Fields
Each payment can reference one or more Purchase Invoices:
| Field | Type | Description |
|---|---|---|
| Reference Type | Select | PurchaseInvoice |
| Reference Name | DynamicLink | The specific Purchase Invoice being paid |
| Amount | Currency | Amount applied against this particular invoice |
Document Lifecycle
┌─────────┐ ┌───────────┐
│ Draft │─────▶│ Submitted │
│ │ │ │
└─────────┘ └─────┬─────┘
│
▼
┌───────────┐
│ Cancelled │
└───────────┘
| Status | Description |
|---|---|
| Draft | Payment is being prepared. All fields are editable. No accounting entries created. |
| Submitted | Payment is finalized. Accounting entries are created. The referenced invoice's outstanding amount is reduced. The supplier's overall outstanding balance is updated. |
| Cancelled | Payment is voided. Accounting entries are reversed. The referenced invoice's outstanding amount is restored. |
Accounting Entries (on Submit)
When a Purchase Payment is submitted:
| Account | Debit | Credit |
|---|---|---|
To Account (Payables, e.g., Creditors) | Payment Amount | — |
| From Account (Cash/Bank) | — | Payment Amount |
| Write Off Account (if applicable) | Write Off Amount | — |
| From Account (if write off) | — | Write Off Amount |
With Taxes (e.g., TDS/Withholding Tax):
| Account | Debit | Credit |
|---|---|---|
| Tax From Account | — | Tax Amount |
| Tax To Account | Tax Amount | — |
Key Features
- Multi-Invoice Payments — A single payment can be applied against multiple purchase invoices simultaneously. Add multiple entries to the Payment Reference table.
- Partial Payments — Pay less than the full outstanding amount. The invoice's outstanding balance is updated automatically.
- Write-Off — Write off small remaining balances when the payment amount doesn't exactly match the outstanding amount. The difference is posted to the configured Write Off Account.
- Multiple Payment Methods — Support for Cash, Bank Transfer, Cheque, and custom payment methods. Each payment method can have a default account configured.
- Automatic Account Selection — When a Payment Method is selected, the From/To accounts are automatically set based on the payment method's configured accounts and the payment type.
- Tax on Payment — Supports withholding tax (TDS) or other taxes applied at payment time, with separate accounting entries.
- Reference Tracking — Record cheque numbers, bank reference IDs, and clearance dates for bank reconciliation.
- Outstanding Amount Validation — The system validates that the payment amount does not exceed the total outstanding amount across all referenced invoices.
Workflow: Making a Purchase Payment
- From a Purchase Invoice: Open a submitted Purchase Invoice with outstanding amount > 0 and click Make Payment from the actions menu. The payment form opens pre-filled with the supplier, amount, and invoice reference.
- Standalone Payment: Navigate to Payments in the sidebar, click + New, and:
- Set Payment Type to
Pay. - Select the Supplier.
- Add one or more Purchase Invoice references in the Payment Reference table.
- Set the Amount (auto-calculated from references).
- Select the Payment Method.
- Click Save then Submit.
- Set Payment Type to
- Auto Payment: On the Purchase Invoice, enable Make Payment On Submit in the Settings tab. When you submit the invoice, a payment is automatically created and submitted using the default payment account.
List View
The Payment list displays:
| Column | Description |
|---|---|
| Name | Payment number (e.g., PAY-0001) |
| Status | Current document status |
| Party | Supplier name |
| Date | Posting date |
| Payment Type | Pay for purchase payments |
| Amount | Payment amount |
5.3 Supplier Management
Suppliers in NkapBooks are managed as Party records with the role set to Supplier (or Both for parties that are both customers and suppliers). Supplier records store contact information, default billing accounts, and track outstanding balances.
Schema Overview
| Field | Type | Description |
|---|---|---|
| Name | Data | Supplier or company name (serves as the primary identifier) |
| Role | Select | Supplier, Customer, or Both |
| Data | Contact email address (validated format) | |
| Phone | Data | Contact phone number (validated format) |
| Tax ID / GSTIN | Data | Tax identification number |
| Currency | Link → Currency | Default transaction currency (defaults to company currency if not set) |
| Default Account | Link → Account | Default payables account (auto-set to Creditors or SYSCOHADA 401-Fournisseurs, Dettes en Compte based on country) |
| Address | Link → Address | Billing address |
| Opening Balance | Currency | Outstanding amount when migrating from another system |
| Outstanding Amount | Currency (read-only) | Automatically calculated total of all unpaid purchase invoices |
Both, the outstanding amount represents the net balance: Customer Outstanding − Supplier Outstanding. A positive value means the party owes you; a negative value means you owe them.Default Account Logic
The default payables account is automatically set based on the supplier's role and the company's country:
| Country Group | Supplier Account |
|---|---|
| SYSCOHADA Countries (Cameroon, Senegal, Côte d'Ivoire, etc.) | 401-Fournisseurs, Dettes en Compte → 4011-Fournisseurs → 40-Fournisseurs et comptes rattachés |
| All Other Countries | Creditors |
The system checks for account existence in the order listed and assigns the first available account.
Outstanding Amount Calculation
The supplier's outstanding amount is automatically recalculated whenever:
- A Purchase Invoice is submitted or cancelled.
- A Payment is submitted or cancelled.
The calculation sums the outstandingAmount field of all submitted, non-cancelled Purchase Invoices for the supplier.
Actions
The following actions are available from a Supplier record:
| Action | Condition | Description |
|---|---|---|
| Create Purchase | Supplier is saved | Creates a new Purchase Invoice pre-filled with the supplier name and default account |
| View Purchases | Supplier is saved | Opens the Purchase Invoice list filtered to this supplier |
| View Unpaid Purchases | Supplier is saved | Opens the Purchase Invoice list filtered to invoices with outstanding amount ≠ 0 |
| View Payments | Supplier is saved | Opens the Payment list filtered to this supplier |
| View Purchase Receipts | Supplier is saved | Opens the Purchase Receipt list filtered to this supplier |
Both also have access to sales-related actions: Create Sale, View Sales, View Unpaid Sales, and View Shipments.List View
The Supplier list displays:
| Column | Description |
|---|---|
| Name | Supplier name |
| Contact email | |
| Phone | Contact phone number |
| Outstanding Amount | Total unpaid balance across all purchase invoices |
Workflow: Creating a Supplier
- Navigate to Purchases → Suppliers in the sidebar (or Party list filtered by role).
- Click + New to create a new supplier.
- Enter the Name and set the Role to
Supplier. - Fill in contact details: Email, Phone, and Address.
- Optionally set the Tax ID, Currency, and Default Account.
- If migrating from another system, enter the Opening Balance.
- Click Save.
5.4 Purchase Items
Items for purchase are managed through the same Item document type used for sales, but with the for field set to Purchases or Both. Purchase items define the products and services your business buys from suppliers.
Schema Overview
| Field | Type | Description |
|---|---|---|
| Item Name | Data | Unique identifier and display name for the item |
| Item Type | Select | Product (physical goods) or Service (intangible services) |
| For | Select | Purchases (purchase-only), Sales (sales-only), or Both |
| Purchase Rate | Currency | Default per-unit purchase cost |
| Sale Rate | Currency | Default per-unit selling price (relevant when for is Both) |
| Unit | Link → UOM | Default unit of measurement (locked after first save) |
| Tax | Link → Tax | Default tax template applied to purchase invoice line items |
| HSN/SAC Code | Int | Harmonized System / Service Accounting Code for tax classification |
| Item Group | Link → ItemGroup | Category for grouping items (visible when Item Groups are enabled in settings) |
| Barcode | Data | 12-digit barcode (visible when Barcodes are enabled in Inventory Settings) |
| Income Account | Link → Account | GL account for recording sales revenue (auto-set based on item type and country) |
| Expense Account | Link → Account | GL account for recording purchase expenses (auto-set based on item type, tracking setting, and country) |
| Track Item | Check | Enable inventory tracking for this item (only for Product type; locked after first save) |
| Has Batch | Check | Enable batch tracking (visible when Batches are enabled in Inventory Settings; locked after save) |
| Has Serial Number | Check | Enable serial number tracking (visible when Serial Numbers are enabled and Track Item is on; locked after save) |
| UOM Conversions | Table → UOMConversionItem | Define conversion factors between units (visible when UOM Conversions are enabled) |
Expense Account Logic
The expense account for purchase items is automatically determined based on multiple factors:
| Condition | Account |
|---|---|
| Track Item enabled | Uses the Stock Received But Not Billed account from Inventory Settings (liability account, since goods are received into inventory) |
| SYSCOHADA countries, no tracking | 601-Achats de Marchandises (1) → 602-Achats de Matieres Premieres → 604-Achats Stockes → 605-Autres Achats → 60-Achats |
| Other countries, no tracking | First account with type Cost of Goods Sold |
Validations
The Item model enforces the following validations:
| Field | Validation |
|---|---|
| Barcode | Must be exactly 12 digits |
| Purchase Rate | Cannot be negative |
| Sale Rate | Cannot be negative |
| HSN Code | Must be 4–8 digits |
Read-Only After Save
The following fields become read-only after the item is first saved to prevent data integrity issues:
- Unit — Changing the base unit would invalidate existing transactions.
- Item Type — Switching between Product and Service would affect account mappings.
- Track Item — Enabling/disabling inventory tracking after transactions exist would cause inconsistencies.
- Has Batch — Batch tracking cannot be toggled after initial configuration.
- Has Serial Number — Serial number tracking cannot be toggled after initial configuration.
Actions
The following actions are available from a purchase Item record:
| Action | Condition | Description |
|---|---|---|
| Create Purchase Invoice | Item is saved and for ≠ Sales | Creates a new Purchase Invoice with this item pre-added as a line item, using the item's purchase rate and tax template |
| Create Sales Invoice | Item is saved and for ≠ Purchases | Creates a new Sales Invoice with this item pre-added |
List View
The Item list displays:
| Column | Description |
|---|---|
| Name | Item name |
| Unit | Unit of measurement |
| Tax | Default tax template |
| Sale Rate | Default selling price |
| Purchase Rate | Default purchase cost |
| Stock Qty | Current total stock quantity across all locations (only shown for items with Track Item enabled; calculated in real-time from Stock Ledger Entries) |
-).Workflow: Creating a Purchase Item
- Navigate to Items in the sidebar.
- Click + New to create a new item.
- Enter the Item Name.
- Set Item Type to
ProductorService. - Set For to
PurchasesorBoth. - Enter the Purchase Rate (default cost).
- Select the Unit of measurement.
- Optionally assign a Tax template.
- For inventory-tracked products:
- Check Track Item to enable stock tracking.
- Optionally enable Has Batch for batch tracking.
- Optionally enable Has Serial Number for individual unit tracking.
- Click Save.
Purchase Module Integration Map
The Purchase Module integrates tightly with other NkapBooks modules:
┌──────────────┐ creates ┌─────────────────┐
│ Supplier │────────────────▶│ Purchase Invoice │
│ (Party) │ │ (PINV-) │
└──────────────┘ └────────┬─────────┘
│
┌────────────────┼────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌────────────┐ ┌──────────────┐
│ Payment │ │ Purchase │ │ Return │
│ (PAY-) │ │ Receipt │ │ (Debit Note)│
│ │ │ (PREC-) │ │ (PINV-) │
└─────────────┘ └──────┬─────┘ └──────────────┘
│
▼
┌─────────────┐
│ Stock │
│ Ledger │
│ Entries │
└─────────────┘
| From | To | Relationship |
|---|---|---|
| Supplier → Purchase Invoice | Party link | Supplier's default account and currency are applied to the invoice |
| Purchase Invoice → Payment | Reference link | Payment reduces the invoice's outstanding amount |
| Purchase Invoice → Purchase Receipt | Back reference | Receipt records goods received into inventory; updates Stock Not Received on the invoice |
| Purchase Invoice → Return Invoice | Return Against link | Return reverses accounting entries and updates original invoice |
| Purchase Receipt → Stock Ledger | Stock entries | Creates Stock Ledger Entries that increase stock at the destination location |
| Item → Purchase Invoice | Item link | Item's purchase rate, tax, and expense account are applied to invoice line items |
Best Practices
Invoice Management
- Always verify supplier details before submitting a purchase invoice. Once submitted, the invoice cannot be edited — only cancelled and re-created.
- Use auto-payment for cash purchases where payment is made immediately upon receiving the bill.
- Use auto-receipt for inventory items to ensure stock levels are updated simultaneously with the accounting entries.
- Attach source documents — Upload the original vendor bill as an attachment to maintain an audit trail.
Supplier Management
- Set default currencies for international suppliers to ensure correct exchange rate handling on every invoice.
- Use the "Both" role for parties that are both customers and suppliers to maintain a single consolidated record with net outstanding tracking.
- Monitor outstanding amounts regularly by reviewing the supplier list or running the General Ledger report filtered by the payables account.
Item Management
- Enable inventory tracking for all physical goods you want to track in stock. This ensures that purchase invoices and receipts update your stock levels.
- Set accurate purchase rates — These serve as defaults when creating purchase invoices and are automatically synced with the Moving Average valuation rate when that valuation method is active.
- Use "Both" for dual-purpose items — Items sold and purchased should have
forset toBothso they appear in both sales and purchase invoice item selectors.