A build-to-order Frappe app that replaces ERPNext's single fixed commission rate with multi-tier plans by product, target, and team — commissions on profit or net total, split across reps, with an approval and accrual workflow. ECOSIRE scopes, builds, installs, and supports it. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $349.00 USD; request a quote for a scoped proposal.

A build-to-order Frappe app that replaces ERPNext's single fixed commission rate with multi-tier plans by product, target, and team — commissions on profit or net total, split across reps, with an approval and accrual workflow. ECOSIRE scopes, builds, installs, and supports it.
अभी कोई भुगतान नहीं। यह हमारी टीम को एक कोटेशन अनुरोध भेजता है — हम कीमत और अगले चरणों के साथ ईमेल द्वारा संपर्क करेंगे।
ERPNext ships commission as a single flat percentage: a commission_rate on the Sales Partner and Sales Order that multiplies the net total into one total_commission figure. That works for a lone channel partner, but it collapses the moment a real sales organisation appears. If Product A pays 8% and Product B pays 3%, if a rep only earns their higher rate after hitting a quarterly quota, if a deal is split between a hunter and an account manager, or if finance insists commission is calculated on gross profit rather than invoice value, native ERPNext has no field to express any of it — teams end up exporting to spreadsheets every month and reconciling by hand, which is slow, error-prone, and impossible to audit.
`Commission Plan` and `Commission Rule` DocTypes with per-Item, per-Item-Group, and per-Customer-Group rates in one child table
Tiered, target-based `Commission Slab` rows — rate escalates as a rep crosses period-to-date attainment thresholds
Multi-level split commissions via a weighted contributors child table (hunter, account manager, team lead) that must total 100%
Commission basis selectable per rule: net total, gross profit (margin from item valuation rate), or a fixed per-unit amount
Server-side calculation wired through `hooks.py` doc events on Sales Invoice / Sales Order `on_submit` — no manual triggering
Immutable `Commission Entry` ledger, each row linked back to its source Sales Invoice/Order line for full traceability
ECOSIRE builds a proper Frappe app — sales_commission_management, a real installable app with its own module, not a pile of loose customisations — that gives ERPNext a first-class commission engine. At the centre are new DocTypes: a Commission Plan (the rule set), Commission Rule child rows (per Item, per Item Group, or per Customer Group, each with its own rate and basis), Commission Slab rows for target-based tiers, and a Commission Entry ledger that records every calculated payout with a link back to the source Sales Invoice or Sales Order. Splits are modelled as a child table of contributors with weightings that must sum to 100%, so a single sale can pay multiple reps and their managers from one document.
Calculation is driven server-side through hooks.py document events. On Sales Invoice (or Sales Order, per your scope) on_submit, a server script walks each line item, matches it to the applicable rule, resolves the rate — flat, tiered against the rep's period-to-date attainment, or profit-based using item valuation for margin — applies any split weightings, and writes immutable Commission Entry rows in draft state. A scheduled event (scheduler_events in hooks.py) runs nightly or monthly to roll individual entries into period accruals and recompute slab attainment as new invoices land. Nothing is paid until a reviewer moves entries through a Frappe workflow (Draft → Pending Approval → Approved → Paid), and every state change is captured in the standard ERPNext audit trail. Whitelisted methods expose the numbers to the Frappe REST API so a rep portal, Power BI, or payroll integration can pull live commission balances, and role profiles keep reps scoped to their own entries while managers see the team.
Because this is built to your commission policy rather than a generic template, delivery is build-to-order. We start with a short scoping call, confirm the exact rules — rate tables, slab thresholds, profit vs net basis, split logic, approval chain — in a written specification, then build, test on a staging bench, and run UAT with your data before go-live. Typical delivery is 2–4 weeks from confirmed scope depending on rule complexity, and you receive the full source in a git repository so nothing is locked to us. The app targets Frappe/ERPNext v15 and v16 and is written to Frappe app conventions so it survives bench update cleanly.
Runs a multi-product team where reps earn different rates by product line and unlock higher tiers on hitting quota. Needs commission calculated automatically off ERPNext invoices instead of a monthly spreadsheet, with numbers reps trust.
Wants commission booked on gross profit rather than gross invoice value, accrued correctly at period end, reversed on refunds, and fully auditable through an approval workflow before anything is paid.
Manages Sales Partners and internal reps who split deals. Needs weighted split commissions, target slabs per partner, and a clean statement per contributor generated straight from ERPNext.
Responsible for the bench and upgrades. Wants a proper Frappe app that follows conventions, survives `bench update` on v15/v16, ships with source in git, and does not bury logic in ad-hoc customisations.
Buy the license on ecosire.com and download the Sales Commission Management for ERPNext 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 Sales Commission Management for ERPNext 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 |
|---|---|---|---|---|
| Rate structure | Per-product, per-group, tiered, and profit-based rules | Whatever you spec, but built from scratch | Usually a fixed set of rate types | |
| Target-based tiers | Slab DocType with period attainment recompute | Possible but you design and test it | Sometimes, often limited | |
| Split commissions | Weighted multi-contributor table, must total 100% | Buildable to your rules | Rarely supported cleanly | |
| Approval & audit | Frappe workflow with accruals and native audit trail | Depends on what you build | Varies by vendor | |
| Fit to your policy | Scoped and built to your exact rules | Fully bespoke | You bend policy to fit the app | |
| Delivery | 2–4 weeks from confirmed scope, UAT on staging | Weeks to months, resourcing-dependent | Instant install, generic | |
| Source & ownership | Full git repo handover, you own it | You own it | Often closed or licence-locked | |
| Support & v15/v16 | Post-go-live window + upgrade retainers | Your team maintains it | Vendor-dependent, may lag versions |
Native ERPNext offers one flat `commission_rate` on the Sales Partner/Order that multiplies the net total into a single figure. It cannot vary rate by product, escalate on target attainment, split a deal across multiple reps, or calculate on profit. This app adds `Commission Plan`, `Commission Rule`, `Commission Slab`, and `Commission Entry` DocTypes to handle all of that with an approval workflow and accrual ledger.
This is a build-to-order app, not an instant download. After a scoping call we confirm your exact commission rules in a written specification, then build, test on staging, and run UAT before go-live. Typical delivery is 2–4 weeks from confirmed scope, depending on how complex your rate tables, slabs, and split logic are.
We build and test against Frappe/ERPNext v15 and v16, following Frappe app conventions (DocTypes, `hooks.py` doc events, scheduler events, whitelisted methods) so it installs cleanly on your bench and survives `bench update`. If you run a specific patch level or a customised fork, we confirm compatibility during scoping.
Yes. Each `Commission Rule` has a selectable basis — net total, gross profit (margin derived from item valuation rate), or a fixed per-unit amount. You can mix bases across product lines within a single plan, so high-margin items can pay on profit while others pay on net total.
When a credit note or return invoice is submitted, the doc-event logic generates negative `Commission Entry` rows that reverse the original commission, so a rep isn't paid on revenue that was refunded. Clawback behaviour and timing are configured to your policy during scoping.
Every build includes a post-go-live support window for bug fixes and adjustments. Because you receive the full git repository, your own team can also extend the app. We offer ongoing support and version-upgrade retainers separately if you want us to maintain it across future ERPNext releases.
Yes. Whitelisted REST API methods expose live commission balances and statements, and role profiles scope each rep to their own entries while managers see the team. That data can feed a rep portal, Power BI dashboards, or a payroll integration without giving anyone raw database access.
A build-to-order Frappe app that replaces ERPNext's single fixed commission rate with multi-tier plans by product, target, and team — commissions on profit or net total, split across reps, with an approval and accrual workflow. ECOSIRE scopes, builds, installs, and supports it.