A build-to-order ERPNext application that consolidates orders, stock, tax documents, payouts and returns from the major Southeast-Asian marketplaces into one ERPNext instance. ECOSIRE builds, installs and supports it for your Frappe/ERPNext v15 or v16 site after a scoping call. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $499.00 USD; request a quote for a scoped proposal.
Illustrative previewA build-to-order ERPNext application that consolidates orders,
stock, tax documents, payouts and returns from the major Southeast-Asian marketplaces into one ERPNext instance.
ECOSIRE builds, installs and supports it for your Frappe/ERPNext v15 or v16 site after a scoping call.
No DIY setup — a working app, built, installed and supported by ECOSIRE.
Start with a one-time build price. We scope it with you at kickoff.
ECOSIRE builds, configures and installs it on your ERPNext.
You go live in about 2–4 weeks, with a post-launch support window.
Regional sellers running on Shopee, Lazada, TikTok Shop, Tokopedia and Bukalapak-class channels usually end up with one browser tab per marketplace and one spreadsheet per country. Orders are keyed into ERPNext by hand or by CSV import, so the Sales Order and Delivery Note trail never matches what the marketplace shipped. Stock is a single Bin figure the seller mentally divides across five storefronts, so the same last unit sells three times and the oversell penalties follow. Payouts arrive net of commission, service fees, shipping subsidies, coin and voucher offsets and withholding, and nobody can tie a settlement line back to a Sales Invoice. ERPNext core handles the accounting perfectly well; what it does not have is any concept of a marketplace channel, a per-channel stock reservation, a settlement file, or an identifier coming back from a partner API — and the community connectors that exist are single-marketplace, so five channels means five unrelated apps with five reconciliation styles.
What we build is one Frappe application — a proper installable app with its own module, fixtures and hooks.py, not a pile of Server Scripts — that treats every marketplace as a configured instance of the same model. A Marketplace Channel DocType holds credentials (encrypted Password fields), region, currency, shop ID and the tax profile; a Marketplace Order DocType is the raw, immutable landing record for every pulled order, keyed on the marketplace order ID with a unique index so a re-pull is idempotent. Scheduler events registered in hooks.py poll each active channel on your chosen cadence, and where the marketplace supports push, a whitelisted endpoint (@frappe.whitelist(allow_guest=True) with HMAC signature verification) accepts the webhook, enqueues via frappe.enqueue and returns immediately. From the landing record we map to a real ERPNext Sales Order using the channel's Item mapping — marketplace SKU to your Item Code, including bundle explosion where one listing ships as several Items — and then let ERPNext's own logistics do the work: Delivery Note, Sales Invoice, and, where a country requires it, the localized tax document via your existing regional compliance app rather than a second implementation of it.
Per-marketplace stock buffers are the piece that stops the overselling. Rather than pushing your raw actual_qty to every channel, the app maintains a Marketplace Stock Allocation per channel and Item — a fixed reserve, a percentage of free stock, or a priority-ordered waterfall — and a scheduled job computes publishable quantity from Bin less reserved-for-other-channels less open marketplace orders, then pushes only the delta to each channel API. Every push is logged with the request, the response and the resulting quantity, so when a marketplace disputes what you sent you have the record. Doc events on Stock Ledger Entry, Sales Order and Delivery Note mark affected Items dirty for the next cycle, so a warehouse transfer or a cancelled order re-publishes within minutes instead of overnight.
Payout reconciliation gets its own document. A Marketplace Settlement is pulled or uploaded per payout batch, its child table holds every fee line the marketplace reports — commission, transaction fee, service fee, shipping fee and subsidy, voucher and coin offsets, adjustments, withholding — and a matching routine links each line to its Sales Invoice by marketplace order ID. What matches becomes a Journal Entry or Payment Entry posting the net receipt to the marketplace's receivable account and each fee to the expense account you nominate per channel and per fee type; what does not match lands on an exceptions list with the reason stated. Returns and refunds run the same way in reverse: a marketplace return creates a Sales Return / Credit Note against the original invoice, restores stock to a per-channel inspection warehouse rather than straight to sellable, and the settlement's refund line reconciles against it. Role profiles and permission rules ship with the app so a marketplace operator can process orders and returns without seeing the General Ledger, and the Frappe REST API plus whitelisted methods let your 3PL or BI tooling read the same records.
This is a build-to-order engagement, not a download. It starts with a scoping call where we confirm which marketplaces and countries are in play, which API programs you already have seller access to, your Item and warehouse structure, your tax and invoicing obligations per country, and your Frappe/ERPNext version. We then quote a fixed scope, build against your version (v15 or v16), and deliver on a staging copy of your site for UAT before anything touches production. Typical delivery is 2-4 weeks from confirmed scope, longer if a marketplace requires an app-approval process on their developer portal — we will tell you at scoping if that is on the critical path. You receive the full source, the git repository, documentation and training, and a post-go-live support window.
Selling into two or more Southeast-Asian countries across Shopee, Lazada, TikTok Shop or Tokopedia-class channels from shared stock. Needs one ERPNext order and stock record instead of a browser tab and a spreadsheet per storefront, and needs the last unit to stop selling three times.
Owns the reconciliation between what the marketplaces paid and what was invoiced. Needs every commission, service fee, shipping subsidy and voucher offset posted to a nominated account and tied to a Sales Invoice, with an exceptions list short enough to work through — not a month-end spreadsheet rebuild.
Responsible for fulfilment SLAs and return handling across channels. Needs marketplace orders landing as real Delivery Notes with correct pick information, per-channel stock buffers so a promotion on one storefront does not starve the others, and returns routed to inspection before they go back on sale.
Maintains the ERPNext instance after go-live. Needs a proper Frappe app with readable DocTypes, hooks and scheduler events, a git repository they own, and documentation good enough to add a sixth marketplace themselves rather than raising a change request.
| Criterion | ECOSIRE | Custom Build | Competitor | ERPNext Native |
|---|---|---|---|---|
| Marketplace coverage | Your channel list, scoped up front; every marketplace is a configured record on one shared model | Whatever your team has time to build, usually one channel at a time | Typically one marketplace per app, so five channels means five unrelated integrations | No concept of a marketplace channel exists in ERPNext core |
| Stock across channels | Per-channel buffers (fixed, percentage or waterfall) with delta-only publishing and a full push log | Achievable, but the reservation logic is the part teams usually get wrong first | Usually pushes raw available quantity to every channel, which is how oversells happen | A single `Bin` quantity with no channel dimension |
| Payout and fee reconciliation | Settlement DocType with per-fee-line matching to Sales Invoices, automated posting and an exceptions queue | Often deferred past go-live and left in a spreadsheet indefinitely | Commonly imports the payout total only, leaving fee analysis manual | Payment Entry and Journal Entry exist, but nothing maps a marketplace settlement file to them |
| Returns handling | Marketplace return creates a Credit Note against the original invoice and routes stock to a per-channel inspection warehouse | Usually built after the first bad quarter of returns | Return status often syncs as a flag with no accounting or stock consequence | Sales Return works well, but has no link to a marketplace return event |
| Version support | Built and tested against your Frappe/ERPNext v15 or v16 site, on a staging copy first | Depends entirely on your team's upgrade discipline | Often lags the current ERPNext release by a version or more | Moves with core, but there is no marketplace functionality here to keep compatible |
| Ownership of the code | Full source and git repository handed to your organisation at delivery | You own it, and you also own every hour spent on it | Licensed or subscription; source access varies and is rarely transferable | Open source, but no marketplace functionality to own |
| Time to a working system | 2-4 weeks from confirmed scope, including UAT on staging and a rollback plan | Months of internal calendar time competing with your team's other work | Fast to install, then weeks of adapting your process to its assumptions | Immediate, but the marketplace work stays manual |
| Permissions and access | Role profiles for operator, finance reconciler and administrator ship with the app | Usually added late, after someone sees a ledger they should not have | Frequently assumes a System Manager runs everything | Frappe's permission engine is capable; the marketplace roles simply do not exist yet |
Typical delivery is 2-4 weeks from confirmed scope. This is a build-to-order product — there is no instant download. The clock starts once we have agreed the marketplaces and countries in scope, your Item and warehouse structure, the accounts for each fee type, and your Frappe/ERPNext version. Where a marketplace requires an app review on their developer portal before granting production API access, that approval sits outside our control and we will flag it at scoping if it affects your date.
We scope the channel list with you rather than shipping a fixed set. The pack is architected so every marketplace is a configured `Marketplace Channel` record against a shared order, stock, settlement and returns model, so the second and third channels cost far less than the first. Coverage for any given marketplace depends on you holding a seller account with API access on that platform — we build against their official API, never by scraping a seller portal.
Not during scoping. Credentials are entered by your team into the `Marketplace Channel` record on your own site and stored in Frappe encrypted Password fields. For UAT we work against sandbox credentials or a marketplace test shop where the platform provides one. If you prefer us to configure production channels directly, that access is granted by you at go-live and can be rotated immediately afterwards.
The pack sets the correct Tax Template and invoice fields per channel and country, and handles marketplace-collected tax where the platform is the deemed supplier. It does not reimplement national e-invoicing — where a country requires clearance or a government portal submission, we hand the completed Sales Invoice to your existing regional compliance app so there is exactly one system of record for compliance. If you do not yet have one, we will say so at scoping and quote it separately.
Delivery includes a post-go-live support window agreed in writing at scoping, covering defect fixes and configuration adjustments. Marketplace APIs change on their own schedule and ERPNext ships a new major version each year, so ongoing maintenance beyond that window is a separate annual arrangement — either a support retainer with us, or your own team, since you receive full source and the git repository and are free to maintain it yourselves.
The app installs as a separate Frappe app alongside your existing ones and extends core documents through hooks and custom fields rather than editing ERPNext source. At scoping we review your current apps and custom fields for conflicts — particularly anything already writing to Sales Order, Sales Invoice or Stock Ledger Entry — and UAT runs on a staging copy of your real site, with your real customisations, before anything reaches production.
Historical migration is optional and quoted separately. Most customers go live forward-dated — the app takes over from a cut-off date and the historical spreadsheets are archived — because migrating partially reconciled settlements rarely repays the effort. If you do need history inside ERPNext, we scope it as a distinct workstream with its own data-quality review rather than folding it into the build.

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.

A build-to-order ERPNext app that turns demand signals, supplier lead times and MOQs into an optimized, simulate-before-you-commit purchase order plan. ECOSIRE scopes, builds, installs and supports it on your bench.

A bin-level warehouse management layer for ERPNext that adds directed putaway, wave and zone picking, and FEFO/FIFO enforcement. ECOSIRE builds it to your operation's rules, installs it on your Frappe bench, and supports it after go-live.

A build-to-order Frappe app that scores every ERPNext order against your live carrier mix and recommends the optimal carrier and service by cost, transit time, lane reliability, and RTO risk. ECOSIRE designs, builds, installs, and supports it for your specific carriers and rules.
A build-to-order ERPNext application that consolidates orders, stock, tax documents, payouts and returns from the major Southeast-Asian marketplaces into one ERPNext instance. ECOSIRE builds, installs and supports it for your Frappe/ERPNext v15 or v16 site after a scoping call.