Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Accounting
  3. Post Dated Cheques (PDC) v 19.0
  4. Sales Conditions FAQ

Post Dated Cheques (PDC)

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 19.0 Third Party 78
Download for v 19.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Versions 16.0 17.0 18.0 19.0
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Discuss (mail)
• Invoicing (account)
Community Apps Dependencies Show
Accounting Suite Base
Lines of code 5623
Technical Name eh_account_pdc
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
Versions 16.0 17.0 18.0 19.0
ERP Heritage · Accounting Suite
POST DATED CHEQUE MANAGEMENT

Post Dated Cheques (PDC)

Track issued and received post dated cheques as real records with a guarded lifecycle and balanced journal entries on present, clear and bounce.

Free · LGPL-3FREE · LGPL-3ODOO 19 COMMUNITYv19.0.1.0.7
Cheque register
Cheque books
Bounce + replace
FX cheques
Auto-present cron

Why this module

Post Dated Cheques (PDC)

01 / DEPTH

Real records, real entries

Every cheque is a queryable, exportable, audit-ready record. Present, clear and bounce each post a balanced double-entry journal through a suspense account, not a status flag with no accounting behind it.

02 / GUARDS

The book is the source of truth

Serial allocation takes a Postgres row lock so concurrent registrations queue rather than race, rejects out-of-order serials, and exhausts the book automatically. A unique constraint on book and number is the backstop.

03 / OWNERSHIP

Yours to keep

LGPL-3 source on disk. No activation key, no phone-home, no recurring licence. Bounce reasons are configurable data, not hard-coded enum literals. Read it, extend it, fork it if you need to.

Day in the life

An accounts clerk handles a bounced foreign-currency cheque.

A customer's USD cheque was deposited last week and the bank now returns it. The clerk opens the cheque, runs the bounce wizard, picks insufficient funds as the reason and enters the bank charge. The module reverses the original present entry (which had converted the USD amount into company currency while carrying the signed USD in amount_currency, so the reversal stays balanced) and records the charge amount on the cheque. The customer agrees to re-bank. The replace wizard chains a fresh cheque with a new value date and stamps the original as replaced, so the trail from the first cheque to its replacement is intact. Tomorrow the daily cron will auto-present the replacement once its value date arrives, each row in its own savepoint so a single bad record cannot abort the run.

Edge cases

The cases most modules quietly ignore.

In the shipped code today, each one a place where a cheaper module silently does the wrong thing.

FX · MULTI-CURRENCY

A foreign-currency cheque posts the present, clear and bounce entries by converting the cheque amount into company currency for debit and credit while carrying the signed foreign amount in amount_currency, so FX cheques post balanced and stay reconcilable.

EARLY PRESENTATION

A post dated cheque cannot be presented before its value date, because real banks refuse it. An explicit eh_pdc_force_early context key exists for opening-balance and data-import backfill.

CONCURRENCY

Registration takes a SELECT FOR UPDATE row lock on the cheque book so two simultaneous registrations queue instead of racing the next-serial pointer, with a unique constraint on book and cheque number as the safety net.

SERIAL GAPS

Registering a serial that is not the book's next number is rejected with a remediation message, preventing out-of-order or skipped cheque numbers.

BOUNCE IDEMPOTENCY

The bounce only posts a reversal when the present move actually exists and is posted, so it never double-reverses and never reverses an unposted entry.

BOOK EXHAUSTION

When the last serial in a book is consumed the book flips to exhausted automatically, and only one in-use book is allowed per journal and company.

HARD-FAIL ACCOUNTS

Posting raises an explicit error naming the missing suspense, default, receivable or payable account rather than writing a one-sided or broken journal entry.

What is inside

Built to do the job, end to end.

  • Cheque register. One model for issued (payable) and received (receivable) cheques with a direction flag, counterparty, bank journal, issue and value dates, amount and currency. Guarded lifecycle: draft, registered, presented, cleared, bounced, replaced, cancelled, each transition stamping user and timestamp.
  • Cheque books. Per bank journal with start and end serials, a next-serial pointer and remaining count. Concurrency-safe allocation by row lock, serial-gap rejection, automatic exhaustion when the last serial is consumed, and one in-use book per journal and company.
  • Posting engine. Present, clear and bounce post balanced double-entry journals through a suspense account, with multi-currency conversion and amount_currency. A hard-fail resolver names any missing account rather than posting a broken move. Cleared-cheque bank lines are available to standard bank reconciliation.
  • Bounce and replace. Bounce wizard with a configurable reason lookup (insufficient funds, signature, stop payment, account closed, post dated, technical, amount mismatch, other) and a bank-charge amount captured on the cheque. Replace wizard re-banks via a new cheque carrying a new value date and chains it to the original.
  • Auto-present cron. A daily cron auto-presents every registered cheque, issued or received, once its value date arrives. Each cheque runs in its own savepoint so a single failing row never aborts the batch.
  • Smart buttons and register report. Smart-button counters on the partner, invoice and payment forms show linked or open cheques, plus a kanban grouped by state. A printable PDF cheque register prints any filtered selection with status and lifecycle dates; the list groups interactively by journal or direction.

Honest about the edges

What this does not do, so nothing surprises you.

  • There is no write-off transition. A bounced cheque can be replaced or left bounced; the bank-charge amount is stored on the cheque as data and is not posted to any account, and there is no FX gain or loss posting.
  • The cron auto-presents both issued and received cheques on their value date. There is no per-direction or per-bank-policy switch.
  • The payment link is an informational read-only field. Clearance posts a bank journal entry but does not stamp the linked payment as reconciled.
  • There is no aged or aging report and no dashboard. The only report is a flat PDF cheque register; outstanding cheques are surfaced through the built-in Overdue filter, smart buttons and a state kanban.
  • There is no cheque-to-journal-entry drill in the form, no partner-ledger integration and no close-checklist integration.
Search

post dated cheque management odoo, PDC odoo 19 community, cheque register odoo, cheque book serial tracking odoo, issued and received cheque tracking, cheque bounce and replace workflow, post dated cheque accounting, cheque clearing suspense account odoo, cheque lifecycle state machine odoo

Languages

Available in 19 languages

The interface ships translated out of the box. Switch language in Odoo and the fields, menus, and messages follow.

ArabicChinese (Simplified)Chinese (Traditional)DutchFrenchGermanHindiIndonesianItalianJapaneseKoreanPolishPortuguese (Brazil)RussianSpanishSwedishThaiTurkishVietnamese
ERP Heritage

Production-grade Odoo accounting, built to an engineering bar and documented honestly. Support: info@erpheritage.com.au
Developed by ERP Heritage - Odoo Implementation • LinkedIn

v19.0.1.0.7 · LGPL-3 · Odoo 19 Community

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with