Cashier shift closing

I need this feature for POS:

  1. A cashier can close his shift, so he will get the amount of cash that should be available in a drawer, and he can insert amount of cash that is actually available in the drawer.
  2. Print cash reconciliation report with shift duration in hours, shift starting date time, shift ending date and time, store name and username of the cashier, cashier name, and total sales.


1 Like

Looking forward for some help for the same. Any guidance please

Counterwise Sale/Cashier Shift Closing should have following fields:

  1. Cash - with denominations
  2. Card - Bank Name, EDC No, Batch No, Amt.
  3. Credit Note
  4. GV Coupons etc

which are entered by cashier himself.

1 Like

You need to create a DocType for this. It is not available currently.

Well, I agree that you need a way to properly close out a cashier. However, I don’t agree with the cashier entering the fields data. I prefer to have the system generate the data for the cashier and they have to sign off on the report.

I had a dev team develop for me an alternate version of the “Sales Register Report” that could be sorted by the userid. This is available to the accounting department as a sortable report for any and all users.

The same report is available to the cashier but only for their own transactions. They cannot generate the report for anyone but themselves.

This allows the cashier to print out the sales register report for their time at the register and put it with their drawer in the accounting department for supervised counting and closeout.

The report looks like this:

Each of the columns has a Total at the bottom to make the calculations easier at the end of a shift. Of course your version might need different columns, but this one worked best for me.

The column that is to the far left and not visible on this screenshot is the “Owner” column. If the owner is running the report, then only their data is available to them. If the accounting department it running the report is can include any or all owners.

The empty box at the top of every column allows the user to sort for specific information is the column.

All of the columns are representations of the checkout payment modes available to the cashier. We did not go further with this to try to ferret out banks of the charge cards because we use a separate card approval system outside of ERPNext and just catalog all charge sales as one lump group of sales. The accounting department works out the banking info.

By having the actual cash sales and the change returned, it is possible to get to the amount that should be in the drawer at the end of the shift.

Of course we had to have this developed for us. It was submitted to the community as a PR but rejected. (Everything I commission to be developed is submitted to PR process but not everything is accepted). I believe this was rejected because it was so specific to my needs that it might not have fit with the community at large. Every column is of course hard coded into the report and to alter the columns is a monumental task. But at least you know it can be done, so your own version of this might be of use to your needs.


Hello @bkm,

Hope all is well with you

First of all i wanna thank you for your description and solution that you gave, but I have some questions.

How we can prevent accountant users to view others invoices? you mentioned above that user can view only their transaction, but we tested that but still it gives us all transaction…

One more thing, how we can handle the internal transactions between cashiers (closing the cashiers) the sub cashier should close his/her cash to the Main Cash… what is the proposed workflow for that?

The customized version of the report was coded to use the role permissions in v10. If you were an account user then the report would only show your transactions and you were not even able to edit the “owner” field to change it to anything but yourself. Again, as stated in the original post, I paid developers to make this for me. I am not tech savy enough to know how they did it, except to know that account users are prevented from changing the owner field and account managers are allowed to edit the owner field to get any specific report or leave the owner field blank and get all transactions.

BTW… the original “Sales Register Report” had it’s permission level set so that only Account Managers could access the report. The modified version of the report named the “JMI Sales Register” was available to all users with the “Account User” role permission set in their profile.

Hmm… that one is a bit more complicated. The ERPNext system was never setup to handle tiered cashiers (cashiers reporting to other cashiers). I do not believe the role permissions alone would be enough to sort out that kind of layered reporting structure. In the case I had to get working, it was agreed that all cashiers turned their cash drawers into the accounting department at the end of a shift. There would be no middle-man. Once the cash drawer was turned in, it was the sole responsibility of the accounting department to manage the materials and monies given to them by the cashier. If the cashiers total cash didn’t match the amount given, then it was recorded to be evaluated later by other management parties.

It would take a very different level of permissions to handle further layering of the “chain-of-responsibility” for the actual cash and paperwork. Probably a significant development effort to make that work.