A build-to-order ERPNext app that aggregates approved payments into check runs, bulk-prints MICR-formatted cheques on your bank stock, and tracks the full void/reissue and post-dated cheque (PDC) lifecycle. ECOSIRE scopes, builds, installs, and supports it for you. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $399.00 USD; request a quote for a scoped proposal.

A build-to-order ERPNext app that aggregates approved payments into check runs, bulk-prints MICR-formatted cheques on your bank stock, and tracks the full void/reissue and post-dated cheque (PDC) lifecycle. ECOSIRE scopes, builds, installs, and supports it for you.
अभी कोई भुगतान नहीं। यह हमारी टीम को एक कोटेशन अनुरोध भेजता है — हम कीमत और अगले चरणों के साथ ईमेल द्वारा संपर्क करेंगे।
If your treasury or accounts-payable team issues cheques from ERPNext today, you already feel where the core runs out of road. ERPNext's Payment Entry handles a single disbursement well, but it has no concept of a "check run" that batches dozens of approved supplier payments into one printable job, no MICR-encoded cheque layout aligned to your bank's pre-printed stock, and no structured way to void, reissue, or track a cheque number as it moves from printed to presented to cleared. Teams end up exporting to spreadsheets, hand-numbering cheques, and reconciling clearances manually — which is exactly where duplicate payments, out-of-sequence cheque numbers, and stale post-dated cheques slip through.
`Check Run` DocType that batches eligible `Payment Entry`/`Purchase Invoice` records filtered by company, bank account, party, and due-date window into one printable job
Per-bank-account `Cheque Book` DocType tracking start number, last-used pointer, and a DB uniqueness constraint so cheque numbers are never reused and gaps are logged
MICR-line Print Format supporting E-13B or CMC-7 encoding with computed routing/transit, account, and cheque-number fields
Cheque layout calibrated to sub-millimetre tolerances against your bank's pre-printed cheque stock, with a per-stock offset configuration
Batch PDF export of an entire check run as one paginated, print-ready document for a continuous printer job
Legal and courtesy amount-in-words conversion honouring your currency, decimal handling, and language
This app adds a proper Check Run DocType to ERPNext that selects eligible Payment Entry and Purchase Invoice records by company, bank account, party, and due-date window, then generates a single batch of sequentially numbered cheques. Cheque numbering is driven by a per-bank-account Cheque Book DocType (start number, last-used pointer, and a uniqueness constraint), so numbers are never reused and gaps are logged. A Print Format renders each cheque with a MICR line — E-13B or CMC-7 depending on your region — computing the routing/transit, account, and cheque fields and laying them out to sub-millimetre tolerances so they register correctly on your bank-supplied cheque stock. The whole run exports as a single paginated PDF for a continuous print job, and a courtesy/legal amount-in-words converter handles your currency and language.
Under the hood it is a standard Frappe app installed on your bench. hooks.py doc events fire validate and on_submit server scripts that enforce numbering, block cheques above a role-configurable approval ceiling, and write an immutable Cheque Register ledger row for every printed instrument. Void and reissue are first-class: voiding a cheque reverses the linked Payment Entry (or cancels the GL impact), stamps the number Void so it can never be re-picked, and — on reissue — draws the next valid number while keeping a full audit chain back to the original. Post-dated cheques get their own PDC lifecycle: they sit in a Pending state, a scheduler_events daily job promotes them for deposit on their value date, and clearance automation posts the bank-clearance Journal Entry (or reconciles it against a Bank Statement import) and flips the cheque to Cleared — or Bounced, which re-opens the payable. Everything is exposed through whitelisted methods and the Frappe REST API, guarded by dedicated role profiles (AP Clerk, Treasury Approver) and permission rules, with client scripts giving in-form validation and a "Print Run" action.
Because this is build-to-order, nothing is a generic download. We start with a short scoping call to capture your bank's exact cheque stock dimensions, MICR standard, numbering rules, approval thresholds, and PDC/clearance workflow, then build the app against your Frappe/ERPNext v15 or v16 instance. You get the work on a staging site for UAT first, then a clean production install — with source code, git repo handover, and a support window so your team owns it fully.
Issues supplier payments daily and needs to batch approved Payment Entries into a single numbered check run, print them on bank stock in one job, and never worry about a duplicate or out-of-sequence cheque number.
Owns bank relationships and cash positioning, and needs enforceable approval ceilings, a tamper-evident cheque register, and clear visibility of which cheques are printed, presented, or still outstanding.
Accountable for audit and controls, and needs the void/reissue audit chain, immutable ledger, and clearance journal automation to hold up to internal and external audit inside ERPNext.
Maintains the bench and integrations, and needs a clean Frappe app with documented hooks, whitelisted methods, and REST endpoints that upgrades safely across v15/v16 rather than ad-hoc customizations.
Buy the license on ecosire.com and download the Check Run & Printed Cheque Manager 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 Check Run & Printed Cheque Manager 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 |
|---|---|---|---|---|
| Batch check runs | Dedicated Check Run DocType batches many payments into one numbered job | Possible but you design and build the batching logic yourself | Often single-cheque printing only, limited batching | |
| MICR-line printing | E-13B/CMC-7 encoding calibrated to your bank stock during UAT | Depends entirely on your developer's MICR knowledge | Generic template, region and stock may not match | |
| Cheque numbering control | Cheque Book pointer with DB uniqueness, gap logging, no reuse | You must build and test the numbering guarantees | Basic sequential field, weak uniqueness enforcement | |
| Void / reissue | Reverses payment, stamps number Void, full reissue audit chain | Bespoke logic; audit chain only if you scope it | Rarely handled beyond a status flag | |
| Post-dated cheque lifecycle | PDC state machine with value-date scheduler and promotion | Built from scratch, ongoing maintenance on you | Seldom covered; usually a separate concern | |
| Clearance automation | Posts clearance Journal Entry or reconciles bank statement, handles bounces | You design the reconciliation and bounce flow | Manual clearance typical | |
| Ownership & source | Full source code plus git repo handover, you own it | You own it but carry all build cost and risk | Licensed binary, limited or no source access | |
| Support & fit | Scoped to your bank/workflow with a post-go-live support window | Support quality varies with your team or contractor | Generic support, may not fit your bank rules |
This is a build-to-order app, not an instant download. Typical delivery is 2-4 weeks from confirmed scope, depending on your MICR standard, cheque-stock complexity, and PDC/clearance requirements. We lock the timeline after the scoping call and share progress on a staging site.
Yes — that is exactly why we scope first. We capture your bank's stock dimensions, MICR standard (E-13B or CMC-7), and field positions, then build a calibrated Print Format with per-stock offset adjustments. We test alignment on your actual stock during UAT before go-live.
Yes. It is built as a standard Frappe app using hooks.py doc events, server/client scripts, whitelisted methods, and scheduler_events, and we build and test it against your specific v15 or v16 instance. We confirm your exact version during scoping.
Voiding reverses the linked Payment Entry (or cancels its GL impact) and permanently stamps the cheque number Void so it can never be re-picked. Reissue draws the next valid number and keeps a full audit chain back to the original, and every action writes an immutable Cheque Register row.
Every engagement includes a post-go-live support window for bug fixes and configuration tweaks. Because you receive full source code and the git repository, your team can maintain and extend it, and we offer ongoing support or a Frappe/ERPNext version-upgrade retainer on request.
Yes. Cheque-clearance automation can post a bank-clearance Journal Entry directly or reconcile presented cheques against an imported Bank Statement, flipping each cheque to Cleared or Bounced — with bounce handling that re-opens the underlying payable.
Yes. Core actions are exposed through whitelisted methods and the Frappe REST API, guarded by role profiles and permission rules, so an approved external system can create runs, trigger printing, or query cheque status programmatically.
A build-to-order ERPNext app that aggregates approved payments into check runs, bulk-prints MICR-formatted cheques on your bank stock, and tracks the full void/reissue and post-dated cheque (PDC) lifecycle. ECOSIRE scopes, builds, installs, and supports it for you.