Hello Team,
I’d like to propose significant improvements to the Teller module in alignment with FINERACT-204 <https://issues.apache.org/jira/browse/FINERACT-204>. While global financial services are increasingly shifting toward cashless transactions — with account-to-account transfers becoming the norm — the reality remains that branch banking is still widely practiced, especially in emerging markets. As such, cash handling and teller operations continue to be critical components of day-to-day banking. Most mature core banking platforms offer robust teller modules that support cash management, reconciliation, and audit trails. By strengthening Fineract’s teller capabilities, we can: - Better support institutions operating in cash-heavy environments - Improve adoption rates by offering parity with commercial systems - Increase conversion from legacy platforms to Fineract I believe this enhancement aligns with the broader goal of making Fineract more versatile and enterprise-ready. If the community supports this direction, I’m committed to contributing the necessary improvements to deliver a more mature and feature-complete Teller module. The following outlines the backend enhancement plan for the Teller Module 1. We maintain the m_tellers entity in the code base and christen it as branch vaults, then modify it to have attached to it a dedicated GL cash account - users can set it up as a multi-branch GL like all other GLs or a dedicated Vault Cash GL per branch 2. We Maintain the m_cashiers entity and christen it as Teller Tills, then modify it to have attached to it dedicated GL cash account - this means that each teller can have a dedicated GL account 3. At the moment, there's a setup in the accounting module to link Teller and Cashier to GL accounts but the associated transactions in the journal entries entity cannot be directly linked to cash allocation and settlement transactions performed by cashiers making tracking of branch cash balances and overages/shortages impossible 4. The platform also doesn't even provide for other cash transactions other than movement and settlement of cash between cashier and teller. 5. We will include the transaction types to enable us to perform cash deposit and cash withdrawal at the branches. 6. The m_cashier_transaction entity will be modified to include debit_account and credit_account to capture a cash deposit or withdrawal transaction 7. For cash deposit, accounting entry will be - CREDIT the customer account and DEBIT the GL associated with the Till performing the transaction 8. For cash withdrawal, the accounting entry will be - DEBIT the customer account and CREDIT the GL associated with the Till performing the transaction 9. Each branch will have one vault (which means one GL for the branch vault) but multiple tills can be created and associated with this vault for the branch - this means multiple Cash GLs, one for each cashier in the branch 10. A till with its associated GL account can either be for a human teller or an ATM machine 11. Cash should be transferred into the tills (the associated GL account should have a positive balance) before withdrawals are performed against the tills - this will be simpler if we maintain balances for these GL accounts (more on balance maintenance in another proposal) 12. Balance update for both the tills, vault, customer accounts are going to be online 13. Till cash can be transferred back to the vault after the day's transactions 14. At any point, the total cash in the branch will reflect the sum of balances on all cashier tills in the branch and the balance on the branch vault account - this is essential to cash position management and therefore risk management at the branches 15. Branch cash position management implies we have to introduce the concept of interbranch entries - at any point in time the sum of all inter branch balances must be zero 16. We can also enable denomination management to enhance cashier cash balancing procedures for those working with denominations 17. There will be overage/shortage accounts in the branch that will hold cash in the branch that would have been recorded in the system but cannot be accounted for 18. With this, financial institutions can ensure some controls by requiring that all cashier till balances are zero at the close of each working day 19. We will also introduce mandates on accounts. Mandate is a regulatory requirement in many countries. Introduction of mandates will make it easier to support joint accounts 20. At the moment, we could use the groups feature to handle joint accounts once mandates are available Front-end Changes 1. We'll rework the teller management screens within the *Organization* setup menu to reflect the changes 2. We'll have a dedicated screen for teller transactions - precisely, cash deposit and cash withdrawal - cheques will come in later 3. The dedicated screen will have a lazy list of all accounts with search criteria to enable tellers search for specific accounts 4. The details displayed on the account should include the available balance on the account, the status of the account, the last few transactions on the account, and most importantly the mandate on the account 5. We will also include an option to verify the identity of the originator of the transaction. In here, we can show the image of the account owner, their signature or do biometric verification if there is an integration into an external verification service or all of the above 6. A withdrawal transaction without corresponding balance on the cashier till account will fail 7. Each cashier can print their call over report at any point in time 8. This dedicated cashier screen will only show up in the menus of users who have been designated and setup as cashiers Please let me know what you think. regards, Jamal