A build-to-order ERPNext app that lets 3PL operators bill each client for storage, handling, and value-added services with strict multi-owner inventory segregation and automated periodic invoicing. ECOSIRE builds, installs, and supports it for your warehouse. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $799.00 USD; request a quote for a scoped proposal.

A build-to-order ERPNext app that lets 3PL operators bill each client for storage, handling, and value-added services with strict multi-owner inventory segregation and automated periodic invoicing. ECOSIRE builds, installs, and supports it for your warehouse.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
If you run a third-party logistics warehouse, ERPNext gives you solid single-company stock control, but it assumes the inventory in your bins belongs to you. In a 3PL operation the goods belong to your clients, and revenue comes from storing and moving other people's stock, not from selling it. ERPNext core has no concept of a stock owner, no storage rate card, no way to meter pallet-days or pick lines per client, and no billing engine that turns warehouse activity into an invoice. Operators end up tracking client ownership in spreadsheets, reconciling handling charges by hand, and manually raising a Sales Invoice per client every month, which is slow and error-prone once you pass a handful of accounts.
`Stock Owner` (client) dimension enforced on Stock Entry, Delivery Note, Purchase Receipt, and Stock Ledger via `hooks.py` doc events so every unit is attributable to one client
Cross-client pick prevention: server-script `validate`/`on_submit` guards reject any outbound document that mixes or misattributes owners
`3PL Rate Card` DocType with per-client tariffs — storage by pallet, bin, volume, or weight per period
Inbound and outbound handling charges configurable per line, per unit, or per shipment, with pick/pack tiering
`VAS Charge` DocType for ad-hoc value-added services (kitting, labelling, relabel, repack) captured against a client
Daily `scheduler_events` job that snapshots occupancy and accrues storage charges (pallet-days / bin-days) without manual counting
ECOSIRE builds a proper Frappe app that installs alongside ERPNext and adds the 3PL layer natively. We introduce a Stock Owner (client) dimension and enforce it across Stock Entries, Delivery Notes, and Purchase Receipts via hooks.py doc events (validate, on_submit) and server scripts, so every unit in a warehouse is attributable to exactly one client and no cross-client pick can be submitted. New DocTypes such as 3PL Rate Card, Storage Charge, Handling Charge, and VAS Charge model your tariffs — storage by pallet/bin/volume/weight per period, inbound and outbound handling per line or per unit, pick/pack tiers, and ad-hoc value-added services. A scheduler event (scheduler_events in hooks.py) runs on a daily and monthly cadence to snapshot occupancy, accrue storage charges, aggregate handling activity from submitted warehouse documents, and generate a draft periodic ERPNext Sales Invoice per client that your finance team reviews and submits.
On top of the billing engine we build the operational surfaces a 3PL needs: inbound (ASN / receipt) and outbound (order / dispatch) management scoped per client, and a client portal built on Frappe's website and portal framework where each 3PL customer logs in to see only their own stock balances, in-transit orders, and billing history. Access is locked down with dedicated Role Profiles and permission rules plus User Permissions on the client link field, so a portal user can never query another client's inventory. Integrations use the standard Frappe REST API and purpose-built @frappe.whitelist() methods, so your clients' own systems (or a WMS/shipping tool) can push orders and pull stock and invoice data programmatically. Client Scripts add the in-form UX — owner filters, live charge previews, and validation — without forking ERPNext.
Because this is build-to-order, nothing ships as an instant download. We start with a short scoping call to map your rate structure, warehouse layout, and billing cycle, then build against your exact requirements on Frappe/ERPNext v15 or v16. Typical delivery is 2 to 4 weeks from confirmed scope. You get the installable source, UAT on a staging bench with a rollback plan, install and configuration on your environment, documentation and a training session, and a post-go-live support window. No fabricated benchmarks, no boilerplate — a working 3PL billing system tailored to how your warehouse actually charges.
Runs a multi-client warehouse on ERPNext and needs strict owner segregation, accurate occupancy tracking, and per-client inbound/outbound workflows so no client's stock is ever picked against another's account.
Owns monthly client invoicing and is tired of rebuilding storage and handling charges in spreadsheets. Wants activity-based charges to accrue automatically and land as review-ready draft Sales Invoices per client.
Wants to onboard new accounts without adding manual billing overhead, protect margins with accurate rate cards, and offer clients a self-service portal as a competitive differentiator.
Responsible for the bench and integrations. Needs a clean Frappe app that respects permissions, exposes documented REST/whitelisted endpoints for client systems, and upgrades safely across v15/v16 without patching core.
Buy the license on ecosire.com and download the 3PL / Warehouse Billing 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 3PL / Warehouse Billing 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 |
|---|---|---|---|---|
| Multi-client stock ownership | `Stock Owner` dimension enforced across all warehouse documents | Possible but you design and validate the whole model yourself | Rarely offered; most marketplace apps are single-owner | |
| Storage & handling rate cards | Dedicated tariff DocTypes: storage, handling, pick/pack, VAS per client | Built from scratch to your spec, at full dev cost | Generic pricing only; no 3PL activity tariffs | |
| Activity-based periodic billing | Scheduler accrues charges and drafts a Sales Invoice per client | You build and test the accrual/scheduler logic | Manual or absent; you invoice by hand | |
| Client portal visibility | Per-client portal scoped by User Permissions and Role Profiles | Portal build and permission hardening on you | Usually none, or unscoped shared views | |
| Cross-client data isolation | Permission rules block any cross-client pick or query | Depends entirely on your own guards | Weak or unenforced | |
| Integration API | Documented `@frappe.whitelist()` methods + REST for client systems | Endpoints you design and document yourself | Limited or undocumented | |
| Delivery & fit | Build-to-order to your rate card, 2-4 weeks, UAT + rollback | Longer timeline, higher cost, single-source risk | Instant install but rarely fits 3PL billing | |
| Support & upgrades | Post-go-live window + git handover; v15/v16 upgrade path | Whatever you resource internally | Vendor-dependent; may lag ERPNext releases |
This is a build-to-order product, so there is no instant download. After a scoping call to confirm your rate structure, warehouse layout, and billing cycle, typical delivery is 2 to 4 weeks from confirmed scope — including UAT on a staging bench before we install on your production environment.
ERPNext core assumes the inventory belongs to you and has no stock-owner concept, no storage rate card, and no activity-based billing. We add a `Stock Owner` dimension enforced across warehouse documents, tariff DocTypes for storage/handling/VAS, and a scheduled billing engine that generates a Sales Invoice per client — none of which exists natively.
We build and test on Frappe/ERPNext v15 and v16. Tell us your current version at the scoping call and we target that; if you're mid-upgrade we'll align delivery to your planned version.
No. It is delivered as a standalone Frappe app installed alongside ERPNext. It extends behavior through `hooks.py` doc events, server scripts, client scripts, whitelisted methods, and custom DocTypes, so core stays upgrade-safe.
Every engagement includes a post-go-live support window for defect fixes and configuration tweaks. Because you receive the full git repository, you can maintain it yourself or contract ECOSIRE for version upgrades (e.g. v15 to v16 migration) and new features on an ongoing basis.
Yes. We build a client portal on Frappe's portal framework where each client sees only their own stock, orders, and invoices, locked down with Role Profiles and User Permissions. Their systems can also push orders and pull stock/invoice data via the standard Frappe REST API and dedicated `@frappe.whitelist()` methods.
Yes — capturing your real tariff is the point of the scoping call. Storage can be billed by pallet, bin, volume, or weight per period; handling per line, per unit, or per shipment with pick/pack tiers; plus ad-hoc value-added services. Mid-period move-ins and move-outs are pro-rated per your rules.
A build-to-order ERPNext app that lets 3PL operators bill each client for storage, handling, and value-added services with strict multi-owner inventory segregation and automated periodic invoicing. ECOSIRE builds, installs, and supports it for your warehouse.