Branch Office Feature Improvements

Branch Office Feature Improvements

This page lists the improvements needed in Mifos X to

  1. support Branch operations of a Bank

  2. make the Teller module more aligned with expectations from a Bank’s branch operations

Broadly, the below improvements are grouped into Functional Improvement and Technical Improvements.

 

 

1. Functional Improvements

1.1 Improved User Interface for Branch Operations and Teller module

Navigation could be from a main option called “Branch Operations”. The potential navigation paths under “Branch Operations” could be as follows:

The Navigation options are visible only if the Branch Operations module is enabled in configurations.

Roughly, the navigation and functionality grouping will be as follows:

 

BranchOperations-MenuNavigationOptions.png

 

2nd Level Navigation

Next Level Navigation

2nd Level Navigation

Next Level Navigation

Branch Operations

  • Open Branch

  • Branch Cash Position (along with Teller status and Vault status - opened or closed)

  • Close Branch

Manage Vault

  • Open Vault

  • Allocate Cash to Teller

  • Vault Summary

  • Vault Transaction Details

  • Confirm Settlement of Cash from Teller

  • Close Vault

Teller Operations

  • Open Teller

  • Confirm Cash Allocation from Vault

  • Cashier Transactions

    • Cash-In

    • Cash-Out

    • Exceptions (Raise approval-request for breached limits)

    • Links to other modules like Loans, Deposits etc.

  • Teller Summary

  • Teller Transaction Details

  • Teller Reconciliation

  • Settle Cash to Vault

  • Close Teller

Approve Breached Limit

List of Request for Approvals for Limits-breach and facility for user with appropriate permission to approve them

Admin

In Office/Branch view additional options to be added for:

  • Global Configurations

    • Branch Operations (Enabled / Disabled) - under Admin → System → Configurations (default is “Disabled”)

Branch Admin

  • Branch Operations Setup (options below are visible only if Branch Operations is enabled under Global Configurations)

    • Enable Branch Operations (for a branch)

    • Teller Limits (for a branch)

    • Manage Tellers

    • Manage Cashiers for Teller

Note: It would be good to get a UI/UX designer involved in designing the navigation and user experience for Admins, Branch Manager, Vault Managers and Cashiers at Tellers.

1.1.1 Navigation based on currently logged in user

Conditionally show options for the Branch Operations and Teller Operations based on the rules:

Condition

Options to Show

Notes

Condition

Options to Show

Notes

a) Configuration for Branch Operations Enabled = true

b) Currently logged in user has permissions for managing configurations

Show options in UI for user to do Admin Features listed below for:

  • Branch Admin

  • Teller Management

 

a) Configuration for Branch Operations Enabled = true

b) Currently logged in user has permissions for Branch Operations functions

Show option to do

  • “Branch Operations” listed below

  • “Branch Admin” listed below

 

a) Configuration for Branch Operations Enabled = true

b) Currently logged in user has permissions for Vault Operations functions

Show option to do

  • “Manage Vault” listed below

 

a) Configuration for Branch Operations Enabled = true

b) Currently logged in user has permissions for Teller Operations functions

Show option to do

  • “Teller Operations” listed below

 

1.2 Branch Operations

1.2.1 Open Office / Branch

Opens a branch and allows Vault and Teller transactions to be allowed for the given office / branch

New permission needed for “Open Office / Branch”

User and timestamp to be stored for audit purposes.

1.2.2 Branch Cash Position

Displays the current Vault cash position and each Teller cash position.

Vault shown with:

Opening Balance, Cash-In, Cash-Out, Closing Balance, Physical Balance, Status (open or closed), Notes

Each Teller listed with:

Cashier-Name, Opening Balance, Cash-In, Cash-Out, Closing Balance, Physical Balance, Status (open or closed), Notes

Summary of Cash Position shown below (combined balances from Vault and Tellers)

1.2.3 Close Office / Branch

Allowed only if Vault and each Teller for the given office / branch is closed.

No further transactions allowed for Vault and Tellers

New permission needed for “Close Office / Branch”

User and timestamp to be stored for audit purposes.

1.3 Manage Vault

1.3.1 Open Vault

Opens the vault for the given office / branch and allows Teller transactions to be allowed for the given office / branch.

Validation: Office / Branch should be already open

New permission needed for “Open Vault”

User and timestamp to be stored for audit purposes.

1.3.2 Allocate Cash to Teller

Screen for user to:

Select Teller (Cashier Name to be displayed automated based on selected Teller)

Select Currency and Enter amount to be allocated to Teller and user clicks on Save.

Existing permission for Allocate-Cash-To-Teller to be renamed/re-used

User and timestamp to be stored for audit purposes.

Internal accounting entry will use GL associated “Vault-to-Teller Cash in Transit”.

1.3.3 Vault Summary

Shows Date-wise (default is for current date with option for user to select another date) - Vault Opening Balance, Total of Cash-Ins to Vault, Total of Cash-Outs from Vault, Closing Balance, Physical Balance, Shortfall/Excess, Notes. (only Physical Balance and Notes are editable)

Each currency is displayed as a separate column in this screen (if transactons in different currencies have been entered)

1.3.4 Vault Transaction Details

Shows Date-wise (default is for current date with option for user to select another date) - Vault Opening Balance, Each Cash-In transaction to Vault, Each Cash-Out transaction from Vault, Vault Closing Balance (no fields are editable)

Each currency is displayed as a separate column in this screen (if transactons in different currencies have been entered)

1.3.5 Accept Cash Settlement from Teller

Screen for user to:

View list of Tellers with Cashier Names who have initiated Settlement of Cash to Seller without displaying amount (but currency name is displayed) entered by Teller / Cashier and status as “Awaiting confirmation”

Check-box available to user to “View Already Confirmed Transactions”

For each of the listed Settlement transactions which are not yet confirmed - when user clicks on it - user enters amount. After user enters amount, the amount submitted by Cashier is displayed and any shortfall / excess is displayed and allows user to enter Notes and allows user clicks on Save.

New permission needed for “Confirm-Cash-Settlement-From-Teller”

User and timestamp to be stored for audit purposes.

1.3.6 Close Vault

Allowed only if each Teller for the given office / branch is closed.

No further transactions allowed from the Vault

New permission needed for “Close Vault”

User and timestamp to be stored for audit purposes.

1.4 Teller Operations

1.4.1 Open Teller

User clicks on “Open” against a specific Teller listed along with Cashier Names.

Opens the selected Teller for the given office / branch and allows Teller transactions to be allowed for the given office / branch.

Validation: Vault should be already open

New permission needed for “Open Teller”

User and timestamp to be stored for audit purposes.

1.4.2 Confirm Cash Allocation from Vault

Allowed only if the currently logged in user is allocated as a Cashier at a Teller for the current system date

Shows list of Cash allocation transactions with currency which are not yet confirm by Teller / Cashier. Amount entered by Vault is not displayed by default.

For each of the listed Allocation transactions - when user clicks on it - user enters amount. After user enters amount, the amount submitted by Vault is displayed and any shortfall / excess is displayed and allows user to enter Notes and allows user clicks on Save.

New permission needed for “Confirm-Cash-Allocation-From-Vault”

The Teller reference, User and timestamp to be stored for audit purposes.

1.4.3 Cashier Transactions

Allowed only if the currently logged in user is allocated as a Cashier at a Teller for the current system date

Note: For all Cashier transactions (at Teller desks) - user will not be allowed to change the Payment Type. The Payment Type will be defaulted to the Payment Type selected by Administrator under “Set default Payment Type to be used for all Tellers”. Based on this Payment Type - the internal accounting entries will be created differently for regular transactions vs Cashier / Teller transactions.

1.4.3.1 Cash-In

Allows user to record a stand-alone (without any dependency on Client, Loans and Deposit modules) cash-in transaction

1.4.3.2 Cash-Out

Allows user to record a stand-alone (without any dependency on Client, Loans and Deposit modules) cash-out transaction

1.4.3.3 Inter-branch Transactions at Teller

Allows user to record a Cash-In transaction that is for a client who belongs to another branch.

1.4.3.4 Transactions that have crossed-limits and needs further authorization

Allows user to record a Cash-In or Cash-Out transaction that is above the authorized limits specified (using “Set Limits for Teller (at a Branch)”). Such transactions will need approval from a user who has permissions to “Approve-Over-Limit-Teller-Transactions”.

1.4.4 Teller Summary

Shows Date-wise (default is for current date with option for user to select another date) - Teller Opening Balance, Total of Cash-Ins to Teller, Total of Cash-Outs from Teller, Closing Balance, Physical Balance, Shortfall/Excess, Notes. (only Physical Balance and Notes are editable)

Each currency is displayed as a separate column in this screen (if transactons in different currencies have been entered)

1.4.5 Teller Transaction Details (Teller Journal)

Shows Date-wise (default is for current date with option for user to select another date) - Teller Opening Balance, Each Cash-In transaction to Teller, Each Cash-Out transaction from Teller, Teller Closing Balance (no fields are editable)

Each currency is displayed as a separate column in this screen (if transactons in different currencies have been entered)

1.4.6 Teller Reconciliation

Shows current date’s current status with Teller Opening Balance, Total of Cash-Ins to Teller, Total of Cash-Outs from Teller, Closing Balance, Physical Balance, Shortfall/Excess, Notes. (only Physical Balance and Notes are editable). This can be done multiple times till Closing of Teller.

Each currency is displayed as a separate column in this screen (if transactons in different currencies have been entered)

1.4.7 Settle Cash to Vault

Screen for user to:

Select Currency and Enter amount to be settled to Vault and user clicks on Save.

Existing permission for Settle-Cash-To-Vault to be renamed/re-used

A check-box to specify if this settlement is the End-Of-Day (EOD) settlement.

If it is EOD settlement, then the difference between Teller Cash Balance and user-entered Amount is shown as either Shortage or Excess. If there is a Shortage or Excess, then user is asked for confirmation and notes for this Shortage or Excess. This Shortage or Excess will be accounted against the “Teller Shortage / Excess Suspense” GL account.

The Teller reference, User and timestamp to be stored for audit purposes.

 

1.4.7 Close Teller

No further transactions allowed from the Teller / by the Cashier

New permission needed for “Close Teller”

User and timestamp to be stored for audit purposes.

1.5 Admin features

1.5.1 Global Configuration to enable Branch Operations

This is enable Branch Operations module in the system

1.5.2 Branch Admin

1.5.2.1 Enable Teller (for a Branch)

This is a configuration to enable Teller Operations module for a specific branch.

This means that some branches may have teller desks and some branches may not have teller desks.

1.5.2.2 Set default Payment Type to be used for all Tellers

Here the administrator sets the default Payment Type to be used as a default Payment Type when a Cashier is doing any transaction at a Teller desk.

Note: At the time of doing transactions - Cashier (at Teller desk) may be able to change the payment type to any non-cash Payment Type, but will not be allowed to select any other Payment Type for which “Is Cash Payment?” is set to True.

Also, Administrator may select a GL account against this payment account - which will be the “Default GL Account to be used for this Payment Type”. This is an optional field (dropdown), but will be mandatory if accounting is to used.

1.5.2.3 Set Limits for Tellers (at a Branch-level)

The Limits can be set for Tellers for the following parameters (the parameters are not to be set for a specific Teller Desk or for a specific cashier allocated to a Teller Desk, but is common for all Teller Desks at a given branch).

If more than one currency is enabled, then it should be allowed for each currency separately for the below parameters.

a. Max Cash Balance allowed:

Further transactions to be blocked if balance at this Teller Desk exceeds this limit at any given point in time.

Warning to be shown to the user who is allocated as cashier for a given Teller Desk when cash balance is equal to or exceeds 90% of value specified for this parameter.

b. Low Cash Balance alert limit - based on this limit - a warning is to be shown to the user who is allocated as cashier for a given Teller Desk when cash balance is equal to or less than the value specified for this parameter.

c. Max Single Transaction value allowed for Cash-In - if any Cash-In transaction value exceeds this limit, then it will be allowed only with an approval from a branch user with appropriate permission.

d. Max Single Transaction value allowed for Cash-Out - if any Cash-Out transaction value exceeds this limit, then it will be allowed only with an approval from a branch user with appropriate permission.

e. Max Cash-Out Value of Transactions for a given day - if the daily total Cash-Out transaction value exceeds this limit, then it will be allowed only with an approval from a branch user with appropriate permission.

1.5.3 Teller Management

These functions include setting up Teller Desks for a given branch and then allocating branch staff as Teller for a specific Teller Desk for a given date (or a date range).

1.5.3.1 Create / Update Teller Desks of a Branch

Define the Teller Desks that are present in a Branch.

Attributes of Teller Desk will include, Teller Desk Name, Description, Start Date and End Date.

Setting Limits is not needed at Teller Desk level, but will be defined at the Branch-Level

Functions available for Teller Desks:

List Teller Desks (for a selected Branch or for the logged in user’s branch)

Add, Update, Activate, Deactivate and Delete Teller Desks. (Delete will be allowed only if there are not Staff allocations for the selected Teller Desk)

1.5.3.1 Allocate Staff as Cashier at a Teller of a Branch

CRUD operations on Cashiers assigned to Tellers.

 

1.6 Accounting Changes

When Branch Operations is enabled and when a transactions is recorded by a user who is a cashier / teller for the given date of transaction - the accounting journal entries will differ as follows:

Note:

In a single instance - some branches may have tellers and some branches may not have tellers. So, the accounting journal entry is not always fixed for all branches.

To achieve this differing accounting entries - the following approach could be used:

a) A default payment type for Cash at Teller - to be chosen by an Administrator using “Set default Payment Type to be used for all Tellers”

b) The current mapping under “Financial Activity Mapping” for “(102) Cash At Teller” could be removed (as this is already handled by the “Set default Payment Type to be used for all Tellers” admin feature.

c) A new Financial Activity Mapping could be added for “Vault GL Account” and a Cash Asset GL account to be selected under this.

d) A new Financial Activity Mapping could be added for “Vault-to-Teller Cash in Transit” and a suspense Cash Asset GL account to be selected under this.

e) A new Financial Activity Mapping could be added for “Branch-to-Branch Cash in Transit” and a suspense Cash Asset GL account to be selected under this.

f) A new Financial Activity Mapping could be added for “Teller Shortage / Excess Suspense” and a suspense Cash Asset GL account to be selected under this.

Sample transactions listed below. The below assumes that the “Cash at Teller” GL is mapped under “Set default Payment Type to be used for all Tellers”.

1.6.1 For Loan Disbursement at Teller

Example: Loan disbursement of 5000 done via Cash

Teller scenario:

Loan Portfolio (Debit). 5000

Cash at Teller (Credit) 5000

Non-Teller scenario:

Loan Portfolio (Debit). 5000

Cash in Hand (Credit) 5000

1.6.2 For Loan Repayment at Teller

Example: Loan repayment of 500 done via Cash - of which 400 is towards principal and 100 is towards interest.

Teller scenario:

Cash at Teller (Debit) 500

Loan Portfolio (Credit) 400

Interest on Loans (Credit) 100

Non-Teller scenario:

Cash in Hand (Debit) 500

Loan Portfolio (Credit) 400

Interest on Loans (Credit) 100

 

1.6.3 For Savings Deposit at Teller

Example: 300 deposited to Savings account via cash

Teller scenario:

Cash at Teller (Debit). 300

Savings Portfolio (Credit). 300

Non-Teller scenario:

Cash in Hand (Debit). 300

Savings Portfolio (Credit). 300

1.6.4 For Savings Withdrawal at Teller

Example: 200 withdrawn Savings account via cash

Teller scenario:

Savings Portfolio (Crebit). 200

Cash at Teller (Credit) 200

Non-Teller scenario:

Savings Portfolio (Debit). 200

Cash in Hand (Credit) 200

Similar changes needed in other modules Term Deposits, Recurring Deposits, Client Transactions etc.

2. Technical Improvements

Below are rough notes (to be refined by architect and once refined - this line to be deleted)

2.1 Remove dependency of Teller module on other modules at the database or repository layer

Currently there is a dependency of Teller module code on the repository layer of other modules like Office, Staff, Currency etc. This dependency should be removed and the dependency to be implemented between service layers.

2.2 Dependency of Teller on Loans and Deposits modules should be based on events and not direct function calls or at the Database Layer

Currently Teller module has a direct dependency on the loan transactions and deposit transactions to display the Cashier Transactions (at a Teller). This dependency has to be removed to make the dependency based on Events. For example: When a loan repayment is done, the loans module will publish a “loan repayment event” - which will be consumed by the Teller module and the Teller module will make a corresponding cash-in transaction for the Cashier.

Open question - A customer may walk-in to a cashier and pay 1,000 to be split up as 500 to a loan repayment, 300 to savings deposit and 200 for annual client membership fees. How can these 3 separate transactions reflect as a single cash-in transaction at Teller and the 3 transactions be linked to this one cash-in transaction?

2.3. Use new Command Processor approach for Branch Operations / Teller module

To be detailed - the specific details of change in approach for new Command Process and the benefit of doing this.

2.4 Permission Management for Branch Operations / Teller module

(To be detailed - the specific details of change in approach for Permission management / checking)

2.4.1 List of new permissions:

Open Office / Branch

View Branch Cash Position

Close Office / Branch

View Office / Branch Open / Close History

Open Vault

Vault Summary

Vault Transaction Details

Confirm Settlement of Cash from Teller

Close Vault

Open Teller

Confirm Cash Allocation from Vault

Teller / Cashier Transactions

Teller Cash-In

Teller Cash-Out

Teller Transaction Exceptions

Teller Summary

Teller Transaction Details

Teller Reconciliation

Close Teller

Teller Limits (for a branch)

Approve transaction that exceeds Limits

 

2.4.2 List of changes in permissions:

Allocate Cash to Teller

Settle Cash to Vault

Manage Tellers

Manage Cashiers for Teller

 

3. Open Points to be discussed and Closed

S.No.

Open Point

Status

Decision / Notes

S.No.

Open Point

Status

Decision / Notes

  1.  

Should currency denominations be captured during Cash allocation or Cash Settlement?

Open

Regular transactions (Cash-In and Cash-Out) does not support currency denominations.

  1.  

At the time of EOD Cash Settlement at Teller - can any cash (small amount or loose change) be left at the Teller Desk or should the Teller Desk balance be always zero at EOD?

Open

Some small finance organisations or MFIs may decide to leave small amounts at the (locked) Teller Desk at EOD. Need this to be confirmed with someone who is more familiar with branch operations.

  1.  

Is Branch-to-Branch cash transfer option to be supported as a separate module? Can this be supported using Accounting Rules / Frequent Postings

Open

It may be beneficial to have a separate feature - and implement an initiator + acceptor workflow that is separate from just accounting entries

  1.  

As per email from “Jamal Inkoom” (jinkoom@gmail.com) on the Mifos user group (mifos-developer@lists.sourceforge.net) - Should this be supported - each teller can have a dedicated GL account?

Open

This would mean that if there are 300 branches with 2 teller desks at each branch - it would need 600 GL accounts for Teller Cash alone? Isn’t the approach discussed in this page sufficient?

  1.  

As per above email - 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

Open

To check if the feature described under “Teller Shortage / Excess Suspense” is sufficient for this.

  1.