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-ModuleSidebar EntryDescription
Purchase InvoicesPurchase InvoicesRecord bills from suppliers for goods and services purchased
Purchase PaymentsPaymentsMake payments against purchase invoices
SuppliersSuppliersManage supplier contact and billing information
Purchase ItemsItemsDefine products and services available for purchase
Purchase Invoices are tightly integrated with the Inventory Module — submitting a purchase invoice can automatically generate a Purchase Receipt to receive goods into stock when the "Make Purchase Receipt On Submit" option is enabled.

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

FieldTypeDescription
Number SeriesLink → NumberSeriesAuto-generated identifier (default prefix: PINV-)
SupplierLink → PartyThe supplier who issued the bill (filtered to parties with role Supplier or Both)
AccountLink → AccountThe payables account (auto-set from the supplier's default account, typically Creditors or SYSCOHADA 401-Fournisseurs)
DateDatetimeInvoice/bill date
Price ListLink → PriceListOptional price list to apply per-item purchase rates
ItemsTable → PurchaseInvoiceItemLine items with item, quantity, rate, tax, discount, and amount
Net TotalCurrency (read-only)Sum of all line item amounts before tax
TaxesTable → TaxSummary (read-only)Automatic tax breakdown by tax account
Grand TotalCurrency (read-only)Net Total + Taxes − Discounts
Base Grand TotalCurrency (read-only)Grand Total converted to company currency (visible only in multi-currency mode)
Outstanding AmountCurrency (read-only)Remaining unpaid balance after linked payments
Stock Not ReceivedFloat (read-only)Quantity of items not yet received via Purchase Receipt
DiscountCurrency / PercentInvoice-level discount (amount or percentage)
Apply Discount After TaxCheckWhen enabled, discount is applied after tax calculation
NotesTextFree-text field for invoice terms and conditions
AttachmentAttachmentAttach supporting documents (PDF, images, etc.)
Back ReferenceLink → PurchaseReceiptReference to a linked Purchase Receipt (set automatically)
Return AgainstLink → PurchaseInvoiceReference to the original invoice when creating a return (debit note)

Purchase Invoice Item Fields

Each line item in a Purchase Invoice includes:

FieldTypeDescription
ItemLink → ItemThe item being purchased
DescriptionTextItem description (auto-filled from item record)
QuantityFloatNumber of units purchased
RateCurrencyPer-unit purchase cost
UnitLink → UOMUnit of measurement
TaxLink → TaxTax template to apply
HSN/SACIntHSN/SAC code for Indian GST compliance
Discount AmountCurrencyPer-item discount as a fixed amount
Discount PercentFloatPer-item discount as a percentage
AmountCurrency (read-only)Calculated: Quantity × Rate − Discount
BatchLink → BatchBatch assignment (if item has batch tracking enabled)
Serial NumberTextSerial 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:

SettingDescription
Make Purchase Receipt On SubmitWhen 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 SubmitWhen checked, automatically creates a Payment entry when the invoice is submitted. The payment uses the default payment account from Accounting Settings.
Apply Discount After TaxControls whether discounts are applied before or after tax calculation.

Document Lifecycle

┌─────────┐      ┌───────────┐      ┌──────────┐
│  Draft   │─────▶│ Submitted │─────▶│   Paid   │
│          │      │           │      │          │
└─────────┘      └─────┬─────┘      └──────────┘
                       │
                       ▼
                 ┌───────────┐
                 │ Cancelled │
                 └───────────┘
StatusDescription
DraftInvoice is being prepared. All fields are editable. No accounting entries are created.
SubmittedInvoice is finalized. Accounting ledger entries are created. Outstanding amount is set to the Grand Total. Payments can now be made against this invoice.
PaidAll outstanding amount has been settled via linked Payment entries.
CancelledInvoice 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:

AccountDebitCredit
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 Invoices (Debit Notes): When a Purchase Invoice is created as a return (with 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:

ActionConditionDescription
Make PaymentInvoice is submitted with outstanding amount > 0Creates a new Payment entry pre-filled with the invoice reference and outstanding amount
Make Purchase ReceiptInvoice is submitted with stock not received > 0Creates a new Purchase Receipt pre-filled with the invoice items and quantities
ReturnInvoice is submitted and not already fully returnedCreates a return (debit note) with quantities reversed
View Accounting LedgerInvoice existsOpens the General Ledger filtered to this invoice's entries
View Stock LedgerInvoice exists and has linked stock transfersOpens the Stock Ledger filtered to related stock movements
DuplicateInvoice existsCreates a copy of the invoice as a new Draft
PrintInvoice existsOpens the print preview with the configured print template

List View

The Purchase Invoice list displays the following columns:

ColumnDescription
NameInvoice number (e.g., PINV-0001)
StatusCurrent document status with color-coded indicator
SupplierSupplier name
DateInvoice date
Base Grand TotalInvoice total in company currency
Outstanding AmountRemaining unpaid balance

Workflow: Creating a Purchase Invoice

  1. Navigate to Purchases → Purchase Invoices in the sidebar.
  2. Click + New to create a new Purchase Invoice.
  3. Select the Supplier — the payables account and currency are auto-filled from the supplier record.
  4. 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.
  5. Optionally apply an invoice-level discount.
  6. Review the automatically calculated Net Total, Taxes, and Grand Total.
  7. Optionally enable Make Payment On Submit and/or Make Purchase Receipt On Submit in the Settings tab.
  8. 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

FieldTypeDescription
Number SeriesLink → NumberSeriesAuto-generated identifier (default prefix: PAY-)
PartyLink → PartySupplier receiving the payment (filtered to Supplier or Both roles)
Payment TypeSelectPay — automatically set when paying a supplier
Posting DateDatetimeDate the payment is recorded
Payment MethodLink → PaymentMethodCash, Bank Transfer, Cheque, etc. (default: Cash)
From AccountLink → AccountThe cash/bank account being debited (source of funds)
To AccountLink → AccountThe payables account being credited (supplier's account)
AmountCurrencyTotal payment amount
Write OffCurrencyAmount to write off (small balance differences)
Amount PaidCurrency (computed)Amount − Write Off
TaxesTable → TaxSummary (read-only)Withholding or other taxes applied to the payment
Payment ReferenceTable → PaymentForReferences to one or more Purchase Invoices being paid
Ref. / Cheque No.DataExternal reference number (cheque number, bank transfer ID, etc.)
Reference DateDateDate on the external reference document
Clearance DateDateDate the payment cleared the bank
AttachmentAttachmentAttach supporting documents

Payment Reference (PaymentFor) Fields

Each payment can reference one or more Purchase Invoices:

FieldTypeDescription
Reference TypeSelectPurchaseInvoice
Reference NameDynamicLinkThe specific Purchase Invoice being paid
AmountCurrencyAmount applied against this particular invoice

Document Lifecycle

┌─────────┐      ┌───────────┐
│  Draft   │─────▶│ Submitted │
│          │      │           │
└─────────┘      └─────┬─────┘
                       │
                       ▼
                 ┌───────────┐
                 │ Cancelled │
                 └───────────┘
StatusDescription
DraftPayment is being prepared. All fields are editable. No accounting entries created.
SubmittedPayment is finalized. Accounting entries are created. The referenced invoice's outstanding amount is reduced. The supplier's overall outstanding balance is updated.
CancelledPayment is voided. Accounting entries are reversed. The referenced invoice's outstanding amount is restored.

Accounting Entries (on Submit)

When a Purchase Payment is submitted:

AccountDebitCredit
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):

AccountDebitCredit
Tax From AccountTax Amount
Tax To AccountTax 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

  1. 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.
  2. 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.
  3. 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:

ColumnDescription
NamePayment number (e.g., PAY-0001)
StatusCurrent document status
PartySupplier name
DatePosting date
Payment TypePay for purchase payments
AmountPayment 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

FieldTypeDescription
NameDataSupplier or company name (serves as the primary identifier)
RoleSelectSupplier, Customer, or Both
EmailDataContact email address (validated format)
PhoneDataContact phone number (validated format)
Tax ID / GSTINDataTax identification number
CurrencyLink → CurrencyDefault transaction currency (defaults to company currency if not set)
Default AccountLink → AccountDefault payables account (auto-set to Creditors or SYSCOHADA 401-Fournisseurs, Dettes en Compte based on country)
AddressLink → AddressBilling address
Opening BalanceCurrencyOutstanding amount when migrating from another system
Outstanding AmountCurrency (read-only)Automatically calculated total of all unpaid purchase invoices
Dual-Role Parties: When a party's role is set to 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 GroupSupplier Account
SYSCOHADA Countries (Cameroon, Senegal, Côte d'Ivoire, etc.)401-Fournisseurs, Dettes en Compte4011-Fournisseurs40-Fournisseurs et comptes rattachés
All Other CountriesCreditors

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:

ActionConditionDescription
Create PurchaseSupplier is savedCreates a new Purchase Invoice pre-filled with the supplier name and default account
View PurchasesSupplier is savedOpens the Purchase Invoice list filtered to this supplier
View Unpaid PurchasesSupplier is savedOpens the Purchase Invoice list filtered to invoices with outstanding amount ≠ 0
View PaymentsSupplier is savedOpens the Payment list filtered to this supplier
View Purchase ReceiptsSupplier is savedOpens the Purchase Receipt list filtered to this supplier
Parties with the role Both also have access to sales-related actions: Create Sale, View Sales, View Unpaid Sales, and View Shipments.

List View

The Supplier list displays:

ColumnDescription
NameSupplier name
EmailContact email
PhoneContact phone number
Outstanding AmountTotal unpaid balance across all purchase invoices

Workflow: Creating a Supplier

  1. Navigate to Purchases → Suppliers in the sidebar (or Party list filtered by role).
  2. Click + New to create a new supplier.
  3. Enter the Name and set the Role to Supplier.
  4. Fill in contact details: Email, Phone, and Address.
  5. Optionally set the Tax ID, Currency, and Default Account.
  6. If migrating from another system, enter the Opening Balance.
  7. 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

FieldTypeDescription
Item NameDataUnique identifier and display name for the item
Item TypeSelectProduct (physical goods) or Service (intangible services)
ForSelectPurchases (purchase-only), Sales (sales-only), or Both
Purchase RateCurrencyDefault per-unit purchase cost
Sale RateCurrencyDefault per-unit selling price (relevant when for is Both)
UnitLink → UOMDefault unit of measurement (locked after first save)
TaxLink → TaxDefault tax template applied to purchase invoice line items
HSN/SAC CodeIntHarmonized System / Service Accounting Code for tax classification
Item GroupLink → ItemGroupCategory for grouping items (visible when Item Groups are enabled in settings)
BarcodeData12-digit barcode (visible when Barcodes are enabled in Inventory Settings)
Income AccountLink → AccountGL account for recording sales revenue (auto-set based on item type and country)
Expense AccountLink → AccountGL account for recording purchase expenses (auto-set based on item type, tracking setting, and country)
Track ItemCheckEnable inventory tracking for this item (only for Product type; locked after first save)
Has BatchCheckEnable batch tracking (visible when Batches are enabled in Inventory Settings; locked after save)
Has Serial NumberCheckEnable serial number tracking (visible when Serial Numbers are enabled and Track Item is on; locked after save)
UOM ConversionsTable → UOMConversionItemDefine 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:

ConditionAccount
Track Item enabledUses the Stock Received But Not Billed account from Inventory Settings (liability account, since goods are received into inventory)
SYSCOHADA countries, no tracking601-Achats de Marchandises (1)602-Achats de Matieres Premieres604-Achats Stockes605-Autres Achats60-Achats
Other countries, no trackingFirst account with type Cost of Goods Sold

Validations

The Item model enforces the following validations:

FieldValidation
BarcodeMust be exactly 12 digits
Purchase RateCannot be negative
Sale RateCannot be negative
HSN CodeMust 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:

ActionConditionDescription
Create Purchase InvoiceItem is saved and forSalesCreates a new Purchase Invoice with this item pre-added as a line item, using the item's purchase rate and tax template
Create Sales InvoiceItem is saved and forPurchasesCreates a new Sales Invoice with this item pre-added

List View

The Item list displays:

ColumnDescription
NameItem name
UnitUnit of measurement
TaxDefault tax template
Sale RateDefault selling price
Purchase RateDefault purchase cost
Stock QtyCurrent total stock quantity across all locations (only shown for items with Track Item enabled; calculated in real-time from Stock Ledger Entries)
Stock Quantity in List View: The Stock Qty column is dynamically calculated by summing the balance quantities from the Stock Ledger for each tracked item across all warehouse locations. Items without inventory tracking display a dash (-).

Workflow: Creating a Purchase Item

  1. Navigate to Items in the sidebar.
  2. Click + New to create a new item.
  3. Enter the Item Name.
  4. Set Item Type to Product or Service.
  5. Set For to Purchases or Both.
  6. Enter the Purchase Rate (default cost).
  7. Select the Unit of measurement.
  8. Optionally assign a Tax template.
  9. 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.
  10. 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   │
                                    └─────────────┘
FromToRelationship
SupplierPurchase InvoiceParty linkSupplier's default account and currency are applied to the invoice
Purchase InvoicePaymentReference linkPayment reduces the invoice's outstanding amount
Purchase InvoicePurchase ReceiptBack referenceReceipt records goods received into inventory; updates Stock Not Received on the invoice
Purchase InvoiceReturn InvoiceReturn Against linkReturn reverses accounting entries and updates original invoice
Purchase ReceiptStock LedgerStock entriesCreates Stock Ledger Entries that increase stock at the destination location
ItemPurchase InvoiceItem linkItem'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 for set to Both so they appear in both sales and purchase invoice item selectors.