About Experience Engineering Projects Infrastructure Blog Contact
ERPNext & Frappe πŸ‡§πŸ‡© BD Case Study Β· Part 3: Real Estate

ERPNext for Bangladesh Real Estate: Dhaka Skyline Properties & Construction Ltd.

Published: Aug 30, 2026

πŸ™οΈ Company Profile Recap

Dhaka Skyline Properties & Construction Ltd. is the fictional Dhaka-based developer used throughout this companion series, first introduced in Part 1's company profiles. It combines land acquisition, real estate development, and in-house construction under one roof β€” the same shape as many real Dhaka-market developers, but every project, unit, and figure in this article is illustrative only.

Land Acquisition
Real Estate Development
Apartment Projects
Commercial Buildings
Construction
Subcontracting
Materials Procurement
Engineering
Architecture
Project Management
Apartment Sales
Installment Collection

Part 1's six-question training framework (WHO/WHAT/WHY/WHEN/WHERE/HOW) and its Configure/Customize/Custom-Module/Integration decision tree apply here unchanged β€” this article reuses those patterns rather than re-deriving them, and focuses on how they play out specifically for a property developer running construction alongside sales.

πŸ”„ The Project Lifecycle

Every apartment project this company runs follows the same backbone, from raw land to a handed-over unit generating no further transactions:

Land
↓
Project
↓
Design
↓
BOQBill of Quantities
↓
Budget
↓
Procurement
↓
Construction
↓
Progress
↓
Apartment Inventory
↓
Customer Booking
↓
Installment
↓
Handover

Note that sales can start well before construction finishes β€” bookings and installment collection typically run in parallel with the Procurement/Construction/Progress stages, which is exactly why the sales side needs its own custom module rather than waiting for Handover to touch ERPNext at all (see Custom Module B below).

🧩 How Real Estate Operations Use Existing ERPNext Modules

Before adding anything custom, most of the day-to-day transaction volume in this company already fits standard ERPNext modules β€” this is the "Configure" and "Customize" rungs of Part 1's decision tree, exhausted first:

ModuleUsed for, in this company
CRMLead, Opportunity, Customer β€” capturing property inquiries before a booking exists
SellingQuotation, Sales Order, Sales Invoice, Payment β€” used for the sale side of an apartment once it enters the standard document chain
BuyingSupplier, Purchase Order, Purchase Receipt, Purchase Invoice β€” cement, steel, tiles, fittings, and every other construction material supplier
StockConstruction materials, warehouse (site stores), material receipt/transfer/consumption
ProjectsProject, Task, Timesheet β€” internal engineering/architecture effort tracking
AccountingProject cost, customer payment, supplier payment, contractor payment, bank, expense, profitability
AssetsConstruction equipment, vehicles, machinery
HR/PayrollEngineers, architects, site workers, admin staff

For the base-side mechanics behind the Buying, Stock, and Projects rows, see the Buying module workflow, the Stock module workflow, and the Projects module workflow from the core 9-part course.

πŸ—οΈ Custom Module A: Property & Project Management

None of Project, Building, Floor, Unit, or Apartment as a saleable, trackable inventory concept exists as a standard ERPNext DocType β€” this is squarely the "need new DocTypes, deep integration" end of the customization decision tree, so it becomes a custom module rather than a stack of Custom Fields.

Project
β†’
Building
β†’
Floor
β†’
Unit
β†’
Apartment

Related DocTypes hang off this chain: Unit Type (e.g. 3 Bedroom, 2 Bedroom, Duplex), Unit Status (Available, Booked, Sold, Handed Over), and Property Feature (balcony, parking, view) β€” all designed as simple lookup/Select-backed DocTypes that keep the Unit record itself lean.

A worked, entirely fictional example β€” not a real development, just an illustration of how the hierarchy nests:

LevelIllustrative value
Project"Bashundhara Residential Tower" (fictional)
BuildingTower A
Floor12
UnitA-1203
Unit Type3 Bedroom
StatusAvailable

Using Part 1's exact field-level training table shape (Field | Type | Required? | Who enters? | When? | Why? | Example | Related DocType), here is the illustrative Unit DocType:

FieldTypeRequired?Who enters?When?Why?ExampleRelated DocType
unit_noData (naming/autoname)YesProject ManagerUnit creation, at project setupUnique identifier used across sales, construction, and handover documentsA-1203β€”
buildingLink β†’ BuildingYesProject ManagerUnit creationTies the unit into the Project β†’ Building β†’ Floor hierarchyTower ABuilding
floor_noData / IntYesProject ManagerUnit creationFloor-level grouping for layout and pricing12Floor
unit_typeLink β†’ Unit TypeYesProject ManagerUnit creationDrives layout, base pricing tier, and marketing material3 BedroomUnit Type
area_sqftFloatYesProject Manager / ArchitectUnit creation, from designBasis for price-per-square-foot calculations1450β€”
statusSelect: Available / Booked / Sold / Handed OverYesSystem (workflow-driven) with Sales Manager overrideUpdated at each sales/handover milestoneCentral inventory-availability flag sales relies onAvailableUnit Status
priceCurrency (ΰ§³)YesSales ManagerSet at listing, revisable before bookingBasis for Quotation and Booking amountsΰ§³ 1,25,00,000 (example)β€”
πŸ’‘ Hedge, as always: field names, types, and exact Select options above are illustrative, not a copy of any specific installation's schema β€” confirm actual field definitions in Developer Mode before treating them as fixed.

πŸ’³ Custom Module B: Property Sales & Installment Management

Just as the hospital case study's Lab Request/Sample chain models a clinical process, this project's Booking/Installment chain models the sales-and-collection process specific to real estate β€” a domain ERPNext's standard Selling module doesn't natively express as a multi-year payment schedule.

Property Lead
β†’
Property Booking
β†’
Customer Property
β†’
Installment Plan
β†’
Installment Schedule
β†’
Installment Payment
β†’
Handover

A related Cancellation DocType handles the (common, in real estate) case where a booking is reversed and the unit needs to flow back to Available status with any refund logic handled explicitly rather than silently.

As a day-to-day workflow rather than a DocType chain, the same process reads:

Lead
β†’
Site Visit
β†’
Quotation
β†’
Booking
β†’
Agreement
β†’
Installment Plan
β†’
Payment
β†’
Construction Progress
β†’
Final Payment
β†’
Handover
πŸ’‘ This is a real-world instance of a general pattern. An Installment Plan/Schedule is not a new accounting idea β€” it's a direct, domain-specific instance of the "one invoice/obligation settled by many payments over time" pattern covered generally in Invoice vs Payment: allocation, and the partial-payment scenario table in the scenario playbook mirrors almost exactly what an apartment buyer paying in installments over several years looks like operationally.

🧱 Construction Management

Construction execution gets its own cluster of custom DocTypes, separate from the sales-facing module above:

Construction Project
BOQ
BOQ Item
Work Package
Construction Activity
Site Progress
Contractor
Subcontract
Material Request
Material Consumption
Site Measurement

Project

↓

BOQ

  • β†’ BOQ Item

Work Package

Contractor

Site Progress

Material Consumption

πŸ”— Custom Property Module ↔ ERPNext Core

Like every custom module in this series, the property module is only useful because it links back into ERPNext core rather than duplicating it:

Custom Property Module

Project

Building

Floor

Unit

Booking

↓links into

ERPNext Core

Customer

Item

Project

↓drives

Sales / Stock / Cost β†’ Accounting

Custom DocTypeBase DocTypeRelationshipWhyWhen
Property UnitItem / ProjectLinkSales/costingProject setup
BuyerCustomerLinkSalesBooking
Construction MaterialItemLinkStockProcurement
ContractorSupplierLinkPurchasingContracting

πŸ“¦ Construction Procurement

Engineer
β†’
Material Request
β†’
RFQ
β†’
Supplier Quotation
β†’
Purchase Order
β†’
Purchase Receipt
β†’
Warehouse
β†’
Site Transfer
β†’
Consumption
StepBase ERPNext or Custom?
Material RequestBase β€” standard Buying DocType
RFQ / Request for QuotationBase β€” standard Buying DocType
Supplier QuotationBase β€” standard Buying DocType
Purchase OrderBase β€” standard Buying DocType
Purchase ReceiptBase β€” standard Buying/Stock DocType
WarehouseBase β€” standard Stock DocType (site stores modeled as a Warehouse)
Site TransferCustom β€” models moving material from central store to an active site
ConsumptionCustom β€” tracked via a custom Material Consumption DocType tied to a Construction Activity

For the base-side mechanics of Material Request through Purchase Invoice, see the Buying module workflow from the core course β€” this section only adds the construction-specific tail (site transfer and activity-level consumption) on top of it.

πŸ“ BOQ & Cost Control

The Bill of Quantities (BOQ) is the backbone of construction cost control: it estimates, up front, exactly how much of each material and labor category a project needs, at what rate, giving a baseline that actuals get compared against continuously rather than only at project close.

ConceptMeaning
BOQThe itemized list of quantities and rates the project is planned/budgeted against
Estimated QuantityPlanned quantity of a material/work item, set at design/budgeting stage
Actual QuantityQuantity actually consumed/executed, from Material Consumption and Site Measurement
Estimated RatePlanned unit cost used to build the original budget
Actual RateReal unit cost paid, from Purchase Invoice/contractor billing
Estimated CostEstimated Quantity Γ— Estimated Rate
Actual CostActual Quantity Γ— Actual Rate, aggregated per BOQ line or Work Package
VarianceActual Cost minus Estimated Cost β€” the number project managers watch most closely
Project BudgetThe approved ceiling the BOQ rolls up into, at project level
Purchase CostMaterial cost, from Purchase Invoice
Labor CostSite labor cost, from timesheets/payroll or subcontract billing
Contractor CostAmount billed by subcontractors against their Subcontract agreement
BOQ
β†’
Budget
β†’
Purchase
β†’
Consumption
β†’
Actual Cost
β†’
Variance

πŸ’° Apartment Sales & Accounting

Apartment
β†’
Quotation
β†’
Booking
β†’
Agreement
β†’
Installment Schedule
β†’
Payment Entry
β†’
Outstanding
β†’
Handover

The custom property documents connect into ERPNext's financial core the same way any custom sales flow should: a Booking references a Customer record (not a bespoke buyer table), the underlying obligation is expressed through a standard Sales Order/Sales Invoice, each installment collected is a standard Payment Entry allocated against that invoice, every posting lands in the same Account structure as any other sale, and the whole thing rolls up under the relevant Project for cost/profitability reporting.

Crucially, at no point does the custom module store its own "amount still owed" field as the source of truth β€” it derives it. This depends directly on the principle covered in Invoice vs Payment: the document lifecycle: outstanding balance is always derived from invoice minus allocated payments, never stored and hand-maintained, precisely because an installment plan can span years and dozens of partial payments where a stale stored balance would silently drift from reality.

🧾 Bangladesh VAT/Tax for Real Estate & Construction

Real estate and construction sit under several distinct tax touchpoints in Bangladesh's VAT/tax regime β€” property sales, construction services, supplier-side VAT on materials, contractor invoices, and advance payments can each attract different treatment. This section describes the concepts an ERPNext configuration needs to model, not the actual current rates.

ConceptWhat it means for this implementation
Property sales tax/VATSale of a completed or under-construction apartment can attract VAT and/or other property-related charges β€” modeled via a Sales Taxes and Charges template on the apartment Sales Invoice
Construction service taxationConstruction/contracting services can be taxed differently from goods β€” modeled via a separate Item Tax Template on construction-service line items
Supplier VATMaterial suppliers (cement, steel, etc.) charge VAT on Purchase Invoices β€” modeled via a Purchase Taxes and Charges template
Contractor invoicesSubcontractor billing may carry its own withholding-type treatment distinct from material supplier VAT
Tax templatesSales/Purchase/Item Tax Templates are how ERPNext expresses all of the above as configuration rather than hard-coded logic
Customer invoicesThe Sales Invoice format and printed VAT breakdown a buyer receives must match statutory requirements
Advance paymentsBooking/installment advances collected before the full obligation is invoiced may have their own tax-point timing rules
Withholding-type conceptsAmounts a payer is required to deduct/report at source when paying certain suppliers or contractors

Every percentage that could appear in a real configuration (property VAT rate, construction service rate, supplier VAT rate, withholding rate) is an example/configuration placeholder only β€” no rate is stated as real or current anywhere in this article. This reuses the exact framing established in Part 1's Bangladesh Context section, which this article inherits rather than repeats.

⚠️ Verify before production. Current Bangladesh NBR (National Board of Revenue) rules, VAT rates, and the company's specific VAT/BIN registration status must be validated with a qualified tax advisor and the official NBR source before any of this is configured for a live, production ERPNext implementation. Nothing in this section should be read as tax advice or a current rate.

πŸ‘₯ Real Estate Role/Permission Matrix

Sales Executive
Sales Manager
Project Manager
Site Engineer
Procurement Officer
Store Manager
Accountant
HR Manager
Director
System Manager
Role
↓
Permission
↓
Document
↓
Action

Exact read/write/create/submit/cancel permissions per role, and any record-level restriction (e.g. a Site Engineer limited to one Project), are configured the standard ERPNext way β€” through the Role Permission Manager β€” rather than hard-coded in this custom module's controllers.

πŸ“ Property Booking Workflow

Draft
β†’
Sales Review
β†’
Manager Approval
β†’
Agreement
β†’
Finance Verification
β†’
Confirmed
StateAllowed RoleTypical action
DraftSales ExecutiveCreates the booking against a selected Unit and Customer
Sales ReviewSales ManagerChecks pricing, unit availability, and buyer documentation
Manager ApprovalSales Manager / DirectorApproves the booking terms and any discount
AgreementSales ManagerGenerates/attaches the sale agreement and installment plan
Finance VerificationAccountantConfirms the advance payment is received and correctly recorded
ConfirmedSystem (workflow-driven)Unit status flips to Booked; installment schedule becomes active

πŸ“Š Real Estate Dashboards

Management

  • Total Projects
  • Units Available
  • Units Sold
  • Booking Value
  • Collection
  • Outstanding
  • Construction Cost
  • Budget Variance
  • Project Progress
  • Profitability

Project Manager

  • Tasks
  • BOQ
  • Material consumption
  • Site progress
  • Contractor progress
  • Cost variance

Sales Manager

  • Leads
  • Site Visits
  • Bookings
  • Conversion
  • Collection

🏁 End-to-End Real Estate Workflow

Lead
↓
Site Visit
↓
Opportunity
↓
Property Unit Selection
↓
Quotation
↓
Booking
↓
Agreement
↓
Installment
↓
Construction
↓
Progress
↓
Payment
↓
Final Settlement
↓
Handover

Reading this chain left to right by origin: Opportunity, Quotation, and Payment are Base ERPNext documents running unmodified; Property Unit Selection, Booking, Installment, and Construction Progress are Custom Module documents built specifically for this company. Neither side works in isolation β€” every custom step ultimately links back to a Customer, Item, Project, or Account so the two halves stay one coherent system rather than two disconnected apps.

πŸ” Real-World Troubleshooting Scenarios

Scenario 1: "Apartment is showing available after booking"

SymptomWhat to investigate
Unit still shows Available after a booking was submittedBooking status β€” is it actually Confirmed, or stuck earlier in the workflow?
Unit status field β€” was it actually updated by the booking's business logic?
Workflow β€” did the state transition that's supposed to flip unit status actually fire?
Transaction sequencing β€” was the booking saved before or after another process read the unit's status?
Race condition β€” could two bookings have been submitted for the same unit near-simultaneously?
Permission β€” does the user updating status actually have write access to the Unit DocType?

Scenario 2: "Project cost exceeds budget"

SymptomWhat to investigate
Project actual cost is running above approved budgetBOQ β€” was the original BOQ realistic, or under-estimated from the start?
Purchase β€” are Purchase Invoice rates significantly above BOQ estimated rates?
Stock consumption β€” is material being over-consumed relative to BOQ quantities (waste, theft, miscount)?
Contractor β€” is a subcontractor billing above their Subcontract agreement?
Expense β€” are non-material costs (equipment rental, site overhead) being posted against this project correctly?
Project cost / Accounting β€” is the cost actually correct, or is it a GL posting/cost-center misallocation from an unrelated project?

πŸ”’ Real Estate Data Security

  • Customer contact information (phone, email, address) restricted to roles that need it for sales or collections.
  • NID/passport-related information, if collected as part of KYC for a booking, treated as sensitive and access-restricted, not stored in freely visible fields.
  • Sale agreements and contracts stored as controlled attachments with access limited to Sales Manager, Accountant, and Director roles.
  • Payment information (installment history, bank references) visible only to Accountant, Sales Manager, and Director roles.
  • Property ownership documents kept under document-level permission rules, not open list-view access.
  • Financial records (project cost, profitability, contractor payments) restricted to Accountant, Director, and System Manager roles.

Note: this article uses only fictional sample data β€” no real customer, project, or financial information appears anywhere in this series.

βœ… Real Estate UAT Checklist

  • Lead capture β€” a new inquiry correctly creates a Lead/Opportunity and is assigned to a Sales Executive
  • Unit availability β€” the Unit list correctly reflects Available/Booked/Sold/Handed Over status at every stage
  • Booking β€” a booking correctly moves through Draft β†’ Confirmed and updates unit status accordingly
  • Installment schedule/payment β€” a schedule generates correctly from the agreed plan, and payments allocate against it correctly
  • Procurement β€” Material Request through Purchase Invoice runs correctly for a construction material
  • Stock/material consumption β€” site transfer and consumption correctly reduce stock and post against the right Construction Activity
  • Project cost tracking β€” BOQ estimated vs actual cost and variance calculate correctly
  • Payment β€” customer and supplier/contractor payments post to the correct accounts
  • Handover β€” the final handover step correctly closes out the unit's sales and construction records

πŸ—ΊοΈ What's Next

This article is Part 3 of the 4-part ERPNext Bangladesh Implementation Case Study series. For the company profile, training framework, and customization decision tree this article builds on, see Part 1: Implementation Methodology. For a parallel case study applying the same approach to a different domain, see Part 2: Hospital Management β€” comparing its clinical Lab Request/Sample chain against this project's construction BOQ/Work Package chain is a useful way to see the same custom-module discipline applied twice. For how this project's two custom modules (Property & Project Management, and Property Sales & Installment Management) and its Construction Management app would actually be built, tested, and deployed, continue to Part 4: Custom Development, DevOps & Production.

↑