Migrate your ERPNext data
Open-source ERP built on the Frappe Framework, covering accounting, CRM, inventory, manufacturing, and HR under one GPL-3.0 license. Targets manufacturers, distributors, and growing SMEs who want full code ownership without per-user licensing fees.
In its favor
Why people choose ERPNext
The signal that keeps ERPNext on the shortlist. Sourced from G2, Capterra, and customer scoping calls.
Zero per-user license cost and full source-code access make ERPNext the only ERP where the total cost of ownership is genuinely predictable over a multi-year horizon.
A single integrated platform covering accounting, CRM, inventory, manufacturing, and HR reduces the number of disconnected tools a growing business must manage and reconcile.
Deep customization through custom fields and server scripts means businesses can adapt workflows to industry-specific processes rather than reshaping operations to fit the software.
Community-contributed modules and a published Frappe App marketplace extend the base platform with sector-specific functionality for healthcare, education, agriculture, and non-profits.
Open-source licensing and self-hosting options give businesses freedom from vendor lock-in, with Frappe Cloud as a managed alternative if they prefer not to operate their own infrastructure.
Over-customisation without governance accumulates over time, making version upgrades between major releases painful and sometimes impossible without reverting customisations first.
The learning curve is steep for non-technical users — role-based permission setups, workflow automation, and report builder configuration require training investment that smaller teams underestimate.
Performance degrades on large transaction volumes unless the MariaDB backend is tuned, indexed properly, and running on adequate hardware, leading some to outgrow the stack.
Integration with best-of-breed point solutions (specialist payroll, e-commerce platforms, industry-specific tools) often requires custom API work rather than native connectors, increasing implementation cost.
Support is community-driven or partner-delivered; there is no vendor SLA for self-hosted deployments, which enterprises with compliance obligations find difficult to accept.
Reasons to switch
Why people leave ERPNext
The recurring reasons buyers give for replacing ERPNext. Presented as facts, not knocks.
Platform scorecard
Strengths, weaknesses, and where ERPNext fits
Grades across six dimensions, plus a SWOT-style view of where the platform shines and where it falls short.
SWOT — strengths, weaknesses, and use-case fit
Strengths
Weaknesses
Where it works
Where it struggles
Pricing tiers
ERPNext pricing overview
ERPNext itself carries no per-user or per-feature license fee as open-source software. The primary cost is hosting (Frappe Cloud or self-hosted on cloud infrastructure) and implementation partner consulting. Frappe Cloud publishes tiered hosting plans; self-hosted deployments incur only infrastructure costs. Implementation budgets vary widely based on customisation depth and data migration complexity.
Self-hosted (AGPL-3.0)
Tier 1 of 5
$0 software licence (hosting and maintenance separate)
What's included
Need help selecting your ERP?
Book a free 30 minute consultationPricing is informational. FlitStack AI does not bill on ERPNext's schedule — see our quote-based pricing →
What gets migrated
ERPNext object support
Object-by-object support for ERPNext migrations. Per-pair details surface during scoping.
Customers / Suppliers
Fully supportedStandard DocTypes with clean CSV export and import support. All mandatory fields are documented in the Data Export UI. We map these 1:1 to the destination's equivalent contact/account objects, preserving territory and group hierarchy as custom properties where needed.
Items / Products
Fully supportedItems include structural data (item group, brand, UOM, barcodes) plus valuation data (valuation method, standard rate). We preserve the full item master including custom fields; image URLs are exported separately and re-linked at the destination.
BOMs (Bill of Materials)
Mapping requiredERPNext nests BOMs to arbitrary depth. We flatten the BOM tree during extraction and reconstruct it in the destination, mapping routing and workstation definitions as custom fields since most CRMs and ERPs do not have a native BOM object.
Stock / Warehouse Records
Mapping requiredWarehouse structure (with bin-level data) and open stock ledger entries are exportable via database query or CSV. We flag whether the destination system uses periodic or perpetual inventory, as this determines whether live stock balances or only transactional history is migrated.
Sales Orders / Purchase Orders
Mapping requiredOrders carry line items, taxes, discounts, and delivery schedules. We extract the full order header and all child table rows (packed items, product bundle components) as separate relational CSVs so they can be reassembled in the destination without losing line-level detail.
Invoices / Payments
Mapping requiredSales and Purchase Invoices have a many-to-many relationship with Payments via Payment Entry and Payment Ledger (v14+). We extract both sides and the linking entries, preserving payment status so the destination opens with accurate open/closed invoice states.
Projects / Tasks
Mapping requiredERPNext's Project DocType nests Tasks with assignees, time logs, and milestone dates. We extract the full project hierarchy and flatten it to the destination's equivalent (Tasks as subtasks, or as flat records with a parent-project field). Custom project types and billing rates require explicit field mapping.
Employees / HR Records
Mapping requiredEmployee master data (department, designation, date of joining, salary structure) plus attendance and leave records are stored across multiple DocTypes. We consolidate these into an Employee profile with compensation history as a linked table, since most non-HR-target destinations cannot represent effective-dated salary rows natively.
Custom Fields
Mapping requiredCustom fields stored in the Custom Field DocType reference a parent DocType and define fieldtype, options, and mandatory flags. We export the full custom-field registry separately so the destination can receive the field definitions and data simultaneously, avoiding the common issue of importing data before the target fields exist.
Attachments / File Records
Mapping requiredFiles are stored in the File DocType and reference blob storage (Frappe's private files folder or S3-compatible storage). We export file metadata (filename, URL, doctype reference) and copy the binary blobs, re-uploading them to the destination's storage layer on ingest.
Workflow State / Approval Rules
Not in this platformERPNext Workflow and Document State rules are expressed as DocType records tied to server-side event handlers. These cannot be reliably migrated to non-Frappe platforms because they depend on Frappe's permission architecture and Python hooks. We document the existing workflow state for each migrated document but do not reconstruct automation rules.
Frappe App Custom Modules
Not in this platformThird-party Frappe Apps extend ERPNext with domain-specific DocTypes and server scripts. Without access to the app source code and a compatible Frappe environment, these cannot be migrated portably. We identify installed apps during discovery and flag their DocTypes as out-of-scope explicitly.
| Object | Support | Notes |
|---|---|---|
| Customers / Suppliers | Fully supported | Standard DocTypes with clean CSV export and import support. All mandatory fields are documented in the Data Export UI. We map these 1:1 to the destination's equivalent contact/account objects, preserving territory and group hierarchy as custom properties where needed. |
| Items / Products | Fully supported | Items include structural data (item group, brand, UOM, barcodes) plus valuation data (valuation method, standard rate). We preserve the full item master including custom fields; image URLs are exported separately and re-linked at the destination. |
| BOMs (Bill of Materials) | Mapping required | ERPNext nests BOMs to arbitrary depth. We flatten the BOM tree during extraction and reconstruct it in the destination, mapping routing and workstation definitions as custom fields since most CRMs and ERPs do not have a native BOM object. |
| Stock / Warehouse Records | Mapping required | Warehouse structure (with bin-level data) and open stock ledger entries are exportable via database query or CSV. We flag whether the destination system uses periodic or perpetual inventory, as this determines whether live stock balances or only transactional history is migrated. |
| Sales Orders / Purchase Orders | Mapping required | Orders carry line items, taxes, discounts, and delivery schedules. We extract the full order header and all child table rows (packed items, product bundle components) as separate relational CSVs so they can be reassembled in the destination without losing line-level detail. |
| Invoices / Payments | Mapping required | Sales and Purchase Invoices have a many-to-many relationship with Payments via Payment Entry and Payment Ledger (v14+). We extract both sides and the linking entries, preserving payment status so the destination opens with accurate open/closed invoice states. |
| Projects / Tasks | Mapping required | ERPNext's Project DocType nests Tasks with assignees, time logs, and milestone dates. We extract the full project hierarchy and flatten it to the destination's equivalent (Tasks as subtasks, or as flat records with a parent-project field). Custom project types and billing rates require explicit field mapping. |
| Employees / HR Records | Mapping required | Employee master data (department, designation, date of joining, salary structure) plus attendance and leave records are stored across multiple DocTypes. We consolidate these into an Employee profile with compensation history as a linked table, since most non-HR-target destinations cannot represent effective-dated salary rows natively. |
| Custom Fields | Mapping required | Custom fields stored in the Custom Field DocType reference a parent DocType and define fieldtype, options, and mandatory flags. We export the full custom-field registry separately so the destination can receive the field definitions and data simultaneously, avoiding the common issue of importing data before the target fields exist. |
| Attachments / File Records | Mapping required | Files are stored in the File DocType and reference blob storage (Frappe's private files folder or S3-compatible storage). We export file metadata (filename, URL, doctype reference) and copy the binary blobs, re-uploading them to the destination's storage layer on ingest. |
| Workflow State / Approval Rules | Not in this platform | ERPNext Workflow and Document State rules are expressed as DocType records tied to server-side event handlers. These cannot be reliably migrated to non-Frappe platforms because they depend on Frappe's permission architecture and Python hooks. We document the existing workflow state for each migrated document but do not reconstruct automation rules. |
| Frappe App Custom Modules | Not in this platform | Third-party Frappe Apps extend ERPNext with domain-specific DocTypes and server scripts. Without access to the app source code and a compatible Frappe environment, these cannot be migrated portably. We identify installed apps during discovery and flag their DocTypes as out-of-scope explicitly. |
Gotchas
What to watch for in ERPNext migrations
Issues we've hit on past ERPNext migrations, tagged by severity. FlitStack AI handles every one — surfacing them up front because buyer engineering teams want to know.
CSV import does not detect or prevent duplicate records
Custom server scripts break silently on version upgrades
BOM routing and workstation data requires manual reconstruction
Payment ledger entries in v14+ are decoupled from invoices
Frappe rate limiting is configurable per-site and undocumented
| Severity | Issue |
|---|---|
| High | CSV import does not detect or prevent duplicate records |
| High | Custom server scripts break silently on version upgrades |
| Medium | BOM routing and workstation data requires manual reconstruction |
| Medium | Payment ledger entries in v14+ are decoupled from invoices |
| Low | Frappe rate limiting is configurable per-site and undocumented |
Leaving ERPNext?
Where ERPNext customers move next
6 destinations ERPNext can migrate to.
How a ERPNext migration works
Four steps, ERPNext-specific
Connect
Session cookie (login API) or API key via Frappe's REST endpoint into ERPNext. Scopes limited to read-only on the data we move.
Map
We translate ERPNext-specific structures (custom fields, objects, value lists) to the destination's model.
Sample
Test with a 50–200 record subset to validate ERPNext quirks before production.
Migrate
Full migration with ERPNext rate-limit handling. Rollback available throughout.
FAQ
ERPNext migration FAQ
Answers to the questions buyers ask most during ERPNext migration scoping. Not seeing yours? Book a call.
Can't find your answer?
Walk through your ERPNext migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationReady when you are
Migrate ERPNext.
Without the rebuild.
Free scoping call with a migration engineer. Tell us about your ERPNext setup and destination — written quote back within a business day.