A build-to-order ERPNext application that turns appointments, stylist schedules, and service-plus-retail billing into one workflow. ECOSIRE scopes, builds, installs, and supports it on your Frappe/ERPNext v15/v16 site. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $249.00 USD; request a quote for a scoped proposal.

A build-to-order ERPNext application that turns appointments, stylist schedules, and service-plus-retail billing into one workflow. ECOSIRE scopes, builds, installs, and supports it on your Frappe/ERPNext v15/v16 site.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
Salons and spas run on a clock ERPNext core was never designed to read. A stylist's day is a grid of overlapping bookings, buffer times between services, and no-show gaps; a spa's revenue is a blend of timed treatments, prepaid packages, and shelf-product retail — all attributed to the person who performed the work so commissions come out right. Stock ERPNext gives you Sales Order, Sales Invoice, and Item, but nothing that models an appointment, a chair, a therapist's availability, or a commission tied to a specific service line. Practices end up gluing a third-party booking tool to a spreadsheet, then re-keying totals into ERPNext at month-end — losing the link between who was booked, who was billed, and who gets paid.
Dedicated Frappe app with its own module and `Appointment` DocType (customer, service, stylist, computed end time, chair/room, workflow status) on a color-coded Calendar view
Workflow-driven appointment lifecycle `Booked -> Confirmed -> In Progress -> Completed -> No Show` with role-gated transitions
Server-side double-booking prevention via `hooks.py` `validate` doc events and `frappe.db` overlap queries across stylist and room
Automatic buffer/turnaround time reserved between bookings so back-to-back services don't collide
`Service` DocType extending `Item` with duration, required skill, and default commission rule; price and length auto-fill on the booking form
`Service Package` and prepaid-balance handling — bundle services plus retail products and draw down the balance at checkout
ECOSIRE builds a dedicated Frappe app — its own module, DocTypes, and REST endpoints — installed on your ERPNext bench so appointments and money live in one system. At the center is an Appointment DocType (customer, service, assigned stylist/therapist, start and computed end time, chair/room, status) rendered on a color-coded Calendar view, with statuses driven by workflow: Booked -> Confirmed -> In Progress -> Completed -> No Show. A Service DocType extends Item with duration, required skill, and default commission rule; a Service Package bundles services and retail products with a prepaid balance the front desk draws down at checkout. Availability and double-booking are enforced in hooks.py validate doc events plus server-side frappe.db overlap queries, so two clients can't be booked into the same therapist or room, and buffer minutes are reserved automatically.
Booking flows in from two directions. Front-desk staff use the Desk calendar; the public books through a whitelisted REST method (@frappe.whitelist(allow_guest=True)) that returns real-time open slots and creates the Appointment under a scoped Role Profile — never exposing the full Frappe API. Client Scripts on the appointment form live-check stylist availability and auto-fill service duration and price as the user types. At checkout, one action rolls the completed services and any retail items the client bought into a single Sales Invoice, so a haircut, a treatment, and a bottle of product ring up on one bill with correct tax and payment. A scheduler event (scheduler_events in hooks.py) runs nightly to compute stylist commissions from completed appointments, post them as Additional Salary or a commission report, and send appointment reminders.
Because this is build-to-order, ECOSIRE builds it around your actual chairs, service menu, commission math, and branch structure — not a fixed template you bend to fit. After a short scoping call we confirm the DocType model, permission roles, and booking rules in writing, build on a staging bench, run UAT with your real service catalog, and hand over the installed app plus its git repository. Typical delivery is 2–4 weeks from confirmed scope. The result is a native ERPNext extension that upgrades cleanly with your site and speaks the same Item, Customer, and GL language as the rest of your accounting.
Runs one or more locations and needs every appointment, commission, and retail sale to land in ERPNext automatically, so payroll and month-end stop depending on a separate booking app and manual re-keying.
Books timed treatments across therapists and rooms, sells prepaid packages, and needs enforced availability, buffer times, and package-balance drawdown at checkout without double-booking a room.
Lives in the calendar all day: books walk-ins and phone bookings, checks stylist availability instantly, and rings up services plus retail on one invoice with correct tax and payment.
Standardizing several branches on ERPNext and wants per-stylist utilization and commission reporting, scoped roles per site, and one upgrade-safe app rather than per-branch spreadsheets.
Buy the license on ecosire.com and download the Salon & Spa Management app ZIP from your account dashboard.
Extract the ZIP into your bench's apps folder, or run `bench get-app` with the path to the extracted app.
Run `bench --site SITE_NAME install-app APP_NAME` followed by `bench migrate` to install Salon & Spa Management and apply its schema.
Open the ECOSIRE License settings on your site and activate your license key. Requires the free ecosire_connect and ecosire_license_client apps.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Appointment model | Dedicated `Appointment` DocType on a color-coded calendar | Whatever you build from scratch | Generic booking DocType, salon logic bolted on | |
| Double-booking control | Server-side overlap checks in `hooks.py` per stylist and room | Only if you build and test the validation | Basic slot check, often no room/buffer logic | |
| Service + retail billing | One `Sales Invoice` for services and products at checkout | Build the checkout-to-invoice flow yourself | Often separate service and POS flows | |
| Commissions | Scheduler-driven rules posted to payroll/report | Hand-coded commission engine and jobs | Fixed commission model, limited rules | |
| Online booking | Scoped whitelisted `allow_guest` endpoint, real-time slots | You design and secure the public API | Portal widget, varying security depth | |
| Fit to your business | Built to your menu, chairs, and commission math | Fully bespoke, at full build cost and risk | Configure within the app's fixed template | |
| Upgrade safety | Installed app, v15/v16, no core patches | Depends on your engineering discipline | Depends on vendor's maintenance | |
| Ownership & support | Git repo handover + post-go-live support window | You own and maintain everything | Vendor-locked, per-seat or subscription |
No. This is a build-to-order engagement, not a Frappe Marketplace download. ECOSIRE scopes, builds, installs, and supports the app on your ERPNext site. You receive installable source code and the git repository as part of the handover, but the app is built for your service menu, commission rules, and branches rather than shipped as a one-size template.
Typical delivery is 2–4 weeks from confirmed scope. After the scoping call we agree the DocType model, workflow, and booking rules in writing; that written scope starts the clock. Larger multi-branch builds or heavy data migration can extend the timeline, which we state up front before you commit.
Every build includes a post-go-live support window for bug fixes and adjustments. Because it ships as a proper Frappe app rather than core patches, it upgrades alongside your ERPNext v15/v16 site. Beyond the included window we offer ongoing support and enhancement retainers, and you hold the git repository so any qualified Frappe developer can maintain it.
We build and test against Frappe/ERPNext v15 and v16. During scoping we confirm your exact bench version and target the app to it, keeping it upgrade-safe as an installed app rather than modifying ERPNext core.
Yes. Online booking uses a whitelisted Frappe method exposed with `allow_guest=True` that returns only real-time open slots and creates appointments under a tightly scoped Role Profile. The full Frappe REST API is never exposed to the public — guests can only reach the specific booking endpoints we build.
Each service carries a commission rule, and a scheduler event computes commissions nightly from completed appointments attributed to the performing stylist. Results post as Additional Salary or a commission report for payroll. We build the exact commission math — flat, percentage, tiered, or product-vs-service split — during scoping.
Yes. At checkout, completed services and any shelf products the client buys roll into a single ERPNext `Sales Invoice` with correct tax and payment, so the client pays once and your GL, stock, and reporting all stay consistent inside ERPNext.
A build-to-order ERPNext application that turns appointments, stylist schedules, and service-plus-retail billing into one workflow. ECOSIRE scopes, builds, installs, and supports it on your Frappe/ERPNext v15/v16 site.