Skip to main content
This quickstart guide will help you set up ERPNext using Docker and walk you through creating your first business documents.
This quickstart uses Docker for the fastest setup. For production deployments, see the Installation Guide.

Prerequisites

  • Docker and Docker Compose installed on your system
  • Git installed
  • At least 4GB of RAM available
  • 10GB of free disk space

Step 1: Start ERPNext with Docker

1

Clone the Frappe Docker repository

git clone https://github.com/frappe/frappe_docker
cd frappe_docker
2

Start the containers

docker compose -f pwd.yml up -d
This command will:
  • Pull the required Docker images
  • Start the database, web server, and application containers
  • Set up a new ERPNext site with default credentials
Wait 2-3 minutes for all services to start.
3

Access ERPNext

Open your browser and navigate to:
http://localhost:8080
Default Credentials:
  • Username: Administrator
  • Password: admin

Step 2: Initial Setup Wizard

When you first log in, ERPNext will guide you through a setup wizard:
1

Language and Region

  • Select your language
  • Choose your country (affects tax templates and regional settings)
  • Set your timezone
2

Company Information

  • Enter your company name
  • Set your company abbreviation (used in naming)
  • Choose your fiscal year start date
  • Select your default currency
3

Add Users

You can skip this step for now and add users later from the User Management page.
4

Select Domains

Choose the domains relevant to your business:
  • Distribution (Wholesale/Retail)
  • Manufacturing
  • Services
  • Retail
  • Education
  • Healthcare
  • Non-Profit
5

Brand and Logo

Upload your company logo (optional, can be done later).
The setup wizard creates default accounts, warehouses, and other master data based on your selections.

Step 3: Create Your First Documents

Let’s create a complete sales workflow: Customer → Item → Sales Order → Sales Invoice

Create a Customer

1

Navigate to Customer

  • Click on the Selling module in the sidebar
  • Click on Customer in the left menu
  • Click the New button
2

Fill in Customer Details

# ERPNext creates customers as documents with this structure
customer = frappe.get_doc({
    "doctype": "Customer",
    "customer_name": "ABC Corporation",
    "customer_type": "Company",
    "customer_group": "Commercial",
    "territory": "All Territories"
})
customer.insert()
In the UI, fill in:
  • Customer Name: ABC Corporation
  • Customer Type: Company
  • Customer Group: Commercial
  • Territory: All Territories
Click Save.

Create an Item

1

Navigate to Item

  • Click on Stock module
  • Click on Item in the left menu
  • Click the New button
2

Fill in Item Details

  • Item Code: PRODUCT-001
  • Item Name: Standard Widget
  • Item Group: Products
  • Stock UOM: Nos
  • Standard Selling Rate: 100.00
  • Check Maintain Stock if you want inventory tracking
Click Save.

Create a Sales Order

1

Navigate to Sales Order

  • Click on Selling module
  • Click on Sales Order
  • Click the New button
2

Fill in Order Details

  • Customer: Select ABC Corporation
  • Delivery Date: Choose a future date
In the Items table, click Add Row:
  • Item Code: PRODUCT-001
  • Quantity: 10
  • Rate: 100.00 (auto-filled)
The system calculates:
  • Amount: 1000.00
  • Taxes (if configured)
  • Grand Total
3

Save and Submit

  • Click Save to save as a draft
  • Click Submit to confirm the order
Once submitted, the Sales Order cannot be modified. You can only cancel it and create a new one.

Understanding Document States

ERPNext documents have three states:
StateDescriptionActions Available
DraftDocument is being editedSave, Submit, Delete
SubmittedDocument is confirmed and creates ledger entriesCancel, Amend
CancelledDocument is voided, ledger entries reversedAmend
# Document state workflow in code
from erpnext.__init__ import __version__

# Create a draft sales order
so = frappe.get_doc({
    "doctype": "Sales Order",
    "customer": "ABC Corporation",
    "delivery_date": "2024-12-31"
})
so.insert()  # Creates draft (docstatus = 0)

so.submit()  # Submits (docstatus = 1)
# so.cancel()  # Cancels (docstatus = 2)

Next Steps

Now that you have ERPNext running, explore these features:

Inventory Management

Track stock levels, create stock entries, and manage warehouses

Accounting

Create journal entries, view financial reports, and manage accounts

Manufacturing

Create BOMs, work orders, and manage production

Projects

Manage projects, tasks, and timesheets

Essential Features to Explore

Press Ctrl + K (or Cmd + K on Mac) to open the global search bar. Search for:
  • Documents by name
  • DocTypes
  • Reports
  • Settings pages

Keyboard Shortcuts

  • Ctrl + S - Save document
  • Ctrl + Shift + S - Submit document
  • Ctrl + G - Go to list view
  • Ctrl + K - Global search

Customization

ERPNext is highly customizable:
  • Custom Fields: Add fields to any document
  • Custom Scripts: Add client-side logic
  • Workflows: Create approval processes
  • Print Formats: Customize document printouts

Managing Your Docker Setup

docker compose -f pwd.yml stop
docker compose -f pwd.yml start
docker compose -f pwd.yml logs -f
docker compose -f pwd.yml down -v
This will delete all data including the database!

Troubleshooting

Edit pwd.yml and change the port mapping:
ports:
  - "8081:8080"  # Change from 8080:8080
Check logs:
docker compose -f pwd.yml logs
Common issues:
  • Insufficient memory (increase Docker memory limit)
  • Port conflicts (change ports in pwd.yml)
  • Disk space (ensure at least 10GB available)
Reset the administrator password:
docker compose -f pwd.yml exec backend bench --site frontend set-admin-password newpassword

Production Deployment

For production deployment, see the Installation Guide for:
  • Self-hosted setup with bench
  • SSL/TLS configuration
  • Backup and restore procedures
  • Performance optimization
  • Managed hosting options

What’s Next?

Complete Installation Guide

Learn about production deployments, configuration, and advanced setup options.

Build docs developers (and LLMs) love