A build-to-order ERPNext app that matches carrier remittance files against your COD sales orders, flags short-payments and RTO adjustments, and gives you a per-carrier aging view. ECOSIRE scopes, builds, installs, and supports it on your Frappe v15/v16 bench. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $299.00 USD; request a quote for a scoped proposal.

A build-to-order ERPNext app that matches carrier remittance files against your COD sales orders, flags short-payments and RTO adjustments, and gives you a per-carrier aging view. ECOSIRE scopes, builds, installs, and supports it on your Frappe v15/v16 bench.
Aucun paiement maintenant. Ceci envoie une demande de devis à notre équipe — nous vous recontacterons par e-mail avec les tarifs et les prochaines étapes.
If you sell cash-on-delivery in South Asia or MENA, the money problem is not the sale — it is getting paid. A courier picks up 400 parcels, delivers some, returns others (RTO), collects cash on the rest, and then remits a lump sum days or weeks later with a CSV or PDF that never lines up cleanly with your orders. ERPNext core has no concept of "cash the carrier is holding on our behalf." You end up booking a Payment Entry when the parcel ships (overstating cash) or only when the remittance clears (losing all order-level traceability), and either way a finance person spends days each week eyeballing courier statements in Excel to find the shipments that were delivered but never paid, the ones paid short of the invoice, and the COD fees the carrier quietly netted out. That reconciliation gap is where COD margin leaks.
Custom `COD Shipment` DocType linking Sales Order / Sales Invoice, carrier, tracking number, and expected collectible amount with an explicit lifecycle state (In Transit / Delivered-Cash Held / Remitted / RTO / Short Paid)
Expected-collection ledger maintained by a `hooks.py` doc event on Sales Invoice submit, so carrier-held cash is a first-class figure rather than an inference
`Carrier Remittance` DocType with per-carrier column-mapping profiles to ingest each courier's CSV/XLSX layout without code changes per file
Whitelisted server-side matching engine that reconciles remittance lines to shipments by tracking number, order reference, then amount-and-date heuristics — flagging ambiguous cases instead of force-matching
Automatic Payment Entry creation net of the carrier's COD fee, posted to a configurable fee/expense account and against the correct customer and invoice
Short-payment and discrepancy detection with the exact variance surfaced on a review queue (delivered-but-unremitted, collected-below-invoice, duplicate remittance line)
We build a proper Frappe app that models this end to end. A COD order gets flagged (a custom field plus a COD Shipment DocType that links the Sales Order / Sales Invoice, the carrier, the tracking number, and the expected collectible amount), and each shipment carries an explicit lifecycle state — In Transit, Delivered / Cash Held, Remitted, RTO, Short Paid. A hooks.py doc event on Sales Invoice submit creates or updates the expected-collection ledger so the cash the carrier owes you is visible as a first-class number, not an inference. When a carrier remittance arrives, you import their file through a Carrier Remittance DocType with per-carrier column mappings; a whitelisted server-side method matches each remittance line to the right shipment by tracking number, order reference, or amount-and-date heuristics, books the correct Payment Entry (net of the carrier's COD fee, posted to a configurable expense account), and marks anything it cannot confidently match for human review rather than force-fitting it.
The reconciliation logic is deliberately conservative: it never guesses when a match is ambiguous. Discrepancies — delivered-but-unremitted past your agreed remittance SLA, amount collected less than invoiced, duplicate remittance lines — raise alerts and land on a review queue with the exact variance. RTO and refund cases reverse the expected collectible and, where you want it, trigger the downstream stock and credit-note handling so your books and your COD ledger stay in step. A scheduler event runs the aging and SLA checks on a cadence you choose, and role profiles keep the courier-file importer, the finance approver, and the read-only ops viewer on separate permissions. Reports include a per-carrier COD aging report (how much cash each courier is sitting on and for how long) and a reconciliation exceptions report. Everything is reachable over the standard Frappe REST API and whitelisted methods, so an external courier portal or a webhook from your shipping aggregator can push remittance data straight in.
This is build-to-order, not an instant download. We start with a short scoping call to capture your carriers, their file formats, your COD fee structure, and how your Payment Entries and RTO flow should post. You get a fixed scope and quote, we build against a clone of your bench, and we deliver — typically 2 to 4 weeks from confirmed scope — with UAT on a staging site, a rollback plan, the full git repository, and a post-go-live support window. It runs as a normal installed app on your Frappe/ERPNext v15 or v16 bench; nothing about your upgrade path changes.
Ships hundreds to thousands of cash-on-delivery parcels a month via multiple couriers and loses margin to short-remitted and never-remitted shipments. Needs order-level proof of what each carrier actually paid versus collected.
Currently reconciles courier statements against invoices by hand in Excel every week. Wants remittance files matched to shipments automatically, COD fees posted to the right account, and a clean exceptions queue instead of a spreadsheet hunt.
Owns the carrier relationships and the RTO flow. Needs a per-carrier aging view to hold couriers to their remittance SLA and to see which cash is stuck and where.
Wants a well-structured app with proper DocTypes, hooks, whitelisted methods, and a git handover they can maintain and extend, rather than a black-box marketplace app they cannot open.
Achetez la licence sur ecosire.com et téléchargez le ZIP de l'application COD Reconciliation & Remittance for ERPNext depuis le tableau de bord de votre compte.
Extrayez le ZIP dans le dossier d'applications de votre banc ou exécutez « bench get-app » avec le chemin d'accès à l'application extraite.
Exécutez `bench --site SITE_NAME install-app APP_NAME` suivi de `bench migrate` pour installer COD Reconciliation & Remittance for ERPNext et appliquer son schéma.
Ouvrez les paramètres de licence ECOSIRE sur votre site et activez votre clé de licence. Nécessite les applications gratuites ecosire_connect et ecosire_license_client.
| Critère | ÉCOSIRE | Construction personnalisée | Concurrent | Odoo natif |
|---|---|---|---|---|
| COD cash-held tracking | Explicit expected-collection ledger per shipment | Whatever you spec and can afford to build | Rarely modeled; assumes prepaid flows | |
| Carrier remittance matching | Per-carrier file import with auto-matching + review queue | Buildable but you own all the edge cases | Generic import, little COD-specific logic | |
| Short-payment / discrepancy alerts | Exact variance surfaced, never auto-written-off | Depends on developer diligence | Usually absent | |
| RTO & refund adjustment | Reverses collectible + optional credit note/stock | Extra scope to wire correctly | Typically out of scope | |
| Per-carrier aging & SLA | Aging report + scheduler SLA-breach alerts | Another report to build and maintain | Basic or none | |
| Fit to your carriers & fees | Scoped to your couriers, formats, and fee rules | Fully bespoke | One-size-fits-all assumptions | |
| Code ownership & extensibility | Full git repo handover + whitelisted API | You own it, at full build cost | Closed app you cannot open | |
| Delivery & support | 2-4 wks build-to-order, UAT, post-go-live window | Timeline and support depend on your team | Instant install, self-support |
This is build-to-order. After a short scoping call to confirm your carriers, file formats, COD fee structure, and posting rules, we give you a fixed scope and quote. Typical delivery is 2 to 4 weeks from confirmed scope, depending on how many carrier formats and edge cases are in play. We build against a clone of your bench and hand over after UAT sign-off.
No. ECOSIRE builds, installs, and supports it for you. There is no instant download. It is delivered as an installable Frappe app pinned to your ERPNext version, with source code and the full git repository handed over so you own it.
Frappe/ERPNext v15 and v16. We build and test against your specific version and bench so the DocTypes, hooks, and API methods line up with what you actually run in production.
Yes. Each carrier gets its own column-mapping profile in a `Carrier Remittance` configuration, so a new CSV or XLSX layout is a configuration change, not a code change. During scoping we capture the formats for the couriers you use and ship mapping templates for them.
RTO reverses the expected collectible for that shipment and can trigger the downstream credit note and stock movement. Short payments — where the carrier remits less than the invoiced amount — are detected automatically, surfaced with the exact variance on a review queue, and never silently written off. The matching engine flags anything ambiguous for human approval instead of force-matching.
Every build includes a post-go-live support window for defect fixes and configuration adjustments. Because you receive the full git repository, your own team or partner can also extend the app. Longer-term maintenance, new carrier integrations, or upgrades to future ERPNext versions can be arranged as a follow-on engagement.
Yes. Shipment status and reconciliation data are exposed through the standard Frappe REST API and whitelisted methods, so an aggregator, courier portal, or webhook can push remittance data in and read shipment status out. We confirm the exact integration points during scoping.
A build-to-order ERPNext app that matches carrier remittance files against your COD sales orders, flags short-payments and RTO adjustments, and gives you a per-carrier aging view. ECOSIRE scopes, builds, installs, and supports it on your Frappe v15/v16 bench.