About Experience Engineering Projects Infrastructure Blog Contact
ERPNext & Frappe 🧩 9-Part Course · Part 3: Modules & Workflows

ERPNext Modules & Business Workflows

Published: Aug 30, 2026

Part 1 of this series introduced ERPNext's Core Modules at a Glance table and a handful of flagship document flows in compressed form. This article is the deep-dive companion: every module gets its own section with full master data, document flow, child tables, and its accounting/stock impact β€” the level of detail you need before customizing or integrating against any of them.

πŸ’° Accounting Module

Purpose: Accounting is the books of record for the entire ERPNext installation β€” every other module's transactions eventually translate into a posting here, so it's the one module every implementer needs to understand even if they never touch a Sales Order.

Master documentsTransaction documents
CompanySales Invoice
AccountPurchase Invoice
Cost CenterPayment Entry
Accounting DimensionJournal Entry
Fiscal YearExpense Claim
Mode of PaymentBank Transaction
Currencyβ€”
Tax Templateβ€”

Sales side: Order to Cash

Sales Order
β†’
Delivery Note
β†’
Sales Invoice
β†’
Payment Entry
β†’
GL Entry

Purchase side: Procure to Pay

Purchase Order
β†’
Purchase Receipt
β†’
Purchase Invoice
β†’
Payment Entry
β†’
GL Entry

Key child tables: Sales Invoice Item, Purchase Invoice Item, Journal Entry Account, Payment Entry Reference β€” the last of these is what links a Payment Entry back to the specific invoice(s) it settles.

Accounting/stock impact: this module is the accounting impact β€” every submitted Sales Invoice, Purchase Invoice, Payment Entry, and Journal Entry writes one or more balanced debit/credit rows to GL Entry.

Connects to: every other module in this article eventually posts here β€” see Selling, Buying, Manufacturing, HR & Payroll, and Assets below, and the full picture in Complete Module Interconnection.

πŸ’‘ Why GL Entry is the single most important transaction table: Sales Invoices, Purchase Invoices, Payment Entries, Journal Entries, Payroll Entries, and Asset Depreciation all eventually write to the same GL Entry table β€” it's the one place every module's financial impact becomes comparable in one ledger, regardless of which document or module produced it. For the full accounting theory behind why invoices and payments are deliberately kept as separate records, and how allocation and reconciliation work, see the core concept and reconciliation sections of Invoice vs Payment: The Complete ERP Accounting Architecture.

πŸ›’ Selling Module

Purpose: Selling covers everything from a qualified opportunity to a paid invoice β€” the quote-to-cash cycle for customers.

Lead
β†’
Opportunity
β†’
Quotation
β†’
Sales Order
β†’
Delivery Note
β†’
Sales Invoice
β†’
Payment Entry

Master data: Customer, Customer Group, Territory, Sales Person, Item, Price List, Sales Taxes and Charges Template.

Key child tables: Quotation Item, Sales Order Item, Delivery Note Item, Sales Invoice Item β€” each new document typically pulls its rows from the previous one so item, price, and quantity stay traceable end to end.

Accounting/stock impact: Delivery Note reduces stock quantity and posts a stock-value GL entry; Sales Invoice posts revenue and receivable GL entries.

Connects to: Stock (Delivery Note), Accounting (Sales Invoice, Payment Entry), and CRM (Lead, Opportunity).

πŸ“¦ Buying Module

Purpose: Buying is the procure-to-pay cycle β€” sourcing, ordering, receiving, and paying suppliers.

Material Request
β†’
Request for Quotation
β†’
Supplier Quotation
β†’
Purchase Order
β†’
Purchase Receipt
β†’
Purchase Invoice
β†’
Payment Entry

Master data: Supplier, Supplier Group, Item, Buying Price List.

Key child tables: Material Request Item, Purchase Order Item, Purchase Receipt Item, Purchase Invoice Item.

Accounting/stock impact: Purchase Receipt increases stock quantity and posts a stock-value GL entry; Purchase Invoice posts expense/asset and payable GL entries.

Connects to: Stock (Purchase Receipt raises quantity via a Stock Ledger Entry), Accounting (Purchase Invoice, Payment Entry), plus its own Supplier and Item master data shared with every other module.

πŸ“Š Stock Module

Purpose: Stock tracks inventory quantity and valuation across every warehouse, and is the single source of truth every Selling, Buying, and Manufacturing document ultimately updates.

Key documents: Item, Item Group, Warehouse, Stock Entry, Stock Reconciliation, Delivery Note, Purchase Receipt, Serial Number, Batch, Bin, Stock Ledger Entry.

Item

↓tracked via

Warehouse

Batch

Serial Number

Stock Ledger Entry

Key child tables: Stock Entry Detail, Purchase Receipt Item, Delivery Note Item, Stock Reconciliation Item.

Stock Ledger Entry is the append-only movement log every stock-affecting document writes to β€” one row per item/warehouse movement, in quantity and value, forward in time. Current on-hand quantity in Bin and every valuation report are derived from summing this log, not stored independently β€” the same "log first, derive state" pattern the ledger itself follows on the accounting side. The exact mechanics of how Stock Ledger Entry and GL Entry stay in sync are covered in Part 5's Stock Ledger deep dive.

Accounting/stock impact: Stock is the quantity/valuation record; its value movements post matching GL entries whenever a stock account is involved (perpetual inventory).

Connects to: Selling, Buying, Manufacturing, and Accounting.

🏭 Manufacturing Module

Purpose: Manufacturing converts raw materials into finished goods through a defined recipe and shop-floor process.

Key documents: Item, BOM, Workstation, Operation, Routing, Work Order, Job Card, Material Request, Stock Entry.

Item
β†’
BOM
β†’
Work Order
β†’
Material Transfer
β†’
Job Card
β†’
Manufacturing
β†’
Finished Goods
β†’
Stock Entry

A BOM's recipe lines live in its child table, BOM Item β€” one row per raw material/component with quantity, rate, and operation. Other key child tables: Work Order Item, Job Card Time Log.

A multi-level BOM happens when a BOM Item row itself references an Item that has its own BOM β€” manufacturing the top-level finished item can then cascade into manufacturing its sub-assemblies first, each with its own Work Order and Job Card chain.

Accounting/stock impact: raw material consumption and finished-goods receipt both post Stock Entry movements that carry matching GL entries when a perpetual-inventory Company is used.

Connects to: Stock (every material transfer and finished-goods receipt) and Accounting (work-in-progress and finished-goods valuation).

🀝 CRM Module

Purpose: CRM manages the pre-sales relationship β€” capturing interest and qualifying it before it becomes a Selling transaction.

Lead
β†’
Opportunity
β†’
Quotation
β†’
Customer
β†’
Sales Order

Key documents: Lead, Opportunity, Customer, Contact, Address, Communication, Activity.

Key child tables: Opportunity Item, Contact Email, Contact Phone, Dynamic Link (used on Contact/Address to attach to a Lead, Customer, or Supplier interchangeably).

Accounting/stock impact: none directly β€” CRM documents don't post GL or stock entries; they exist entirely upstream of the first billable transaction.

Connects to: Selling β€” an Opportunity converts into a Quotation and a Lead converts into a Customer, handing off into the quote-to-cash flow.

πŸ“‹ Projects Module

Purpose: Projects tracks billable and internal work as tasks and logged time, connecting labor to both cost centers and customer billing.

Key documents: Project, Task, Timesheet, Activity Type, Employee, Cost Center, Sales Invoice.

Project
β†’
Task
β†’
Timesheet
β†’
Employee
β†’
Billing
β†’
Sales Invoice

Key child tables: Timesheet Detail (one row per logged time block, linked to a Task and Activity Type), Project Task.

Accounting/stock impact: none directly from Project/Task/Timesheet themselves; impact arrives only once billable hours are pulled into a Sales Invoice, which then posts normal revenue GL entries.

Connects to: HR & Payroll (Timesheet references Employee) and Accounting (via billing).

πŸ§‘β€πŸ’Ό HR & Payroll Module

Purpose: HR & Payroll manages the employee lifecycle β€” attendance, leave, and ultimately calculating and posting salary.

Key documents: Employee, Department, Designation, Employee Grade, Attendance, Leave Application, Leave Allocation, Salary Structure, Salary Slip, Payroll Entry, Expense Claim.

Employee
β†’
Attendance
β†’
Leave
β†’
Salary Structure
β†’
Salary Slip
β†’
Payroll Entry
β†’
Accounting

Key child tables: Salary Detail (earnings/deductions rows on both Salary Structure and Salary Slip), Leave Allocation ledger rows, Expense Claim Detail.

Accounting/stock impact: a submitted Payroll Entry posts salary expense and payable/bank GL entries in bulk across every included Salary Slip.

Connects to: Projects (Timesheet references Employee) and Accounting (Payroll Entry, Expense Claim).

πŸ—οΈ Asset Module

Purpose: Assets manages the fixed-asset lifecycle from acquisition through depreciation to eventual movement or disposal.

Asset Category
β†’
Asset
β†’
Purchase Invoice
β†’
Depreciation
β†’
Asset Movement
β†’
Asset Disposal

Master data: Asset Category, Asset. Key child tables: Asset Finance Book (depreciation method/rate per book), Asset Depreciation Schedule.

Accounting/stock impact: each scheduled depreciation run posts a Journal Entry that debits Depreciation Expense and credits Accumulated Depreciation for that period, gradually reducing the asset's net book value on the balance sheet without any cash movement.

Connects to: Accounting β€” Assets is one of the modules whose entire financial impact is periodic, scheduled GL postings rather than transaction-triggered ones.

πŸ” Quality Module

Purpose: Quality gates whether goods moving in or out, or produced on the shop floor, meet defined conformance criteria before the surrounding transaction is allowed to proceed.

Key documents: Quality Inspection, Quality Goal, Quality Procedure, Non Conformance, Quality Action.

Key child tables: Quality Inspection Reading (one row per parameter measured against a specification), Quality Procedure Process.

A Quality Inspection can be configured as mandatory before a Purchase Receipt is submitted (incoming inspection) or before a Delivery Note is submitted (outgoing inspection), and can equally gate a Manufacturing Job Card's finished-goods step β€” in each case the transaction simply cannot be submitted until a linked, passed Quality Inspection exists.

Accounting/stock impact: none directly β€” Quality Inspection itself posts no GL or stock entries; its effect is procedural, blocking or permitting the stock-moving document it's attached to.

Connects to: Stock, Buying, Selling, and Manufacturing.

🎧 Support Module

Purpose: Support handles post-sales customer service β€” logging, assigning, and resolving issues raised by existing customers.

Key documents: Issue, Customer, Contact, Communication, Service Level Agreement, Assignment, Support Ticket.

Customer
β†’
Issue
β†’
Assignment
β†’
Communication
β†’
Resolution

Key child tables: ToDo rows created per assignment, Communication link rows tying emails/notes back to the Issue.

Accounting/stock impact: none directly β€” Support is a service-tracking layer with no GL or stock postings of its own.

Connects to: CRM and Selling β€” every Issue links back to the same Customer master record those modules also reference.

πŸ•ΈοΈ Complete Module Interconnection

Zooming out from each module's individual flow, the same shape repeats everywhere: a pre-sales or planning module feeds a transaction module, and every transaction module eventually drains into Stock and/or Accounting.

CRM

↓

Selling

↓

Sales Order

↓ ↓splits into

Stock

  • Delivery Note

Accounting

  • GL Entry
↓ ↓both feed

Payment

Source moduleFeeds into
BuyingStock
BuyingAccounting
ManufacturingStock
ManufacturingAccounting
HRPayroll
PayrollAccounting
ProjectsTimesheet
ProjectsBilling
BillingAccounting
πŸ’‘ The pattern: almost every module in this article is a source that eventually drains into Stock and/or Accounting β€” those two are the shared settlement layer every other module's transactions converge on. Exactly how those postings work β€” which document triggers which GL and Stock Ledger rows, and how the two stay reconciled β€” is the entire subject of Part 5: Module Integration β€” Accounting & Stock.

πŸ—ΊοΈ What's Next

This article expanded Part 1's compressed Core Modules at a Glance table and flagship document flows into a full module-by-module reference β€” master data, document flow, child tables, and accounting/stock impact for all eleven modules. From here, Part 4: DocTypes & Database Relationships (erpnext-doctypes-database-relationships.html) goes underneath these documents to the actual database structure β€” how a DocType becomes a table, how child tables relate to their parents, and how every Link field shown here as an arrow is really a foreign-key-style reference in MariaDB.

↑