[Feature] [ERPNext v13] New Point of Sale Beta Testing

Hello ERPNext users,

For the past few months I have been refactoring ERPNext Point of Sale (online). The goal of the refactoring was to make the transactions faster to meet the POS needs.
The plan was to:

  • Make an intermediate invoice while transacting with the POS UI. Named POS Invoice.
  • POS Invoices will be consolidated / merged into a Sales Invoice at the time of closing.
  • POS Invoices will not affect accounting or stock ledger.
  • At the time of consolidation, the combined accounting & stock ledger entries will be made.
  • The consolidated Sales Invoice will contain all the items purchased by a customer in a day. Or between opening and closing period.

The said process has now been implemented and with a new UI as well. Now it needs to be tested thoroughly to have it merged and released in the ERPNext version 13.


If you have a local test instance, then pull the changes from this fork. After pulling the changes run:
bench --site [your-site-name] migrate
bench build && bench restart

I’ll shortly set up a public test site on which non-devs can test and give feedback on.


Test Site:
Username: Administrator
Password: root

P.S: Site has been dropped now. Will update it soon


This is something nice. How do you plan to handle mistakes? In retail mostly users enter cash to card or card to cash for those, user have to cancel and amend the invoice and correct the mistake, idk how you plan to handle this in pos intermediate invoice.

Accounting is understood but stock entry on day closing is not a good idea from stock managers point of view as they will never know the actual stock in hand until the day is closed.

This is periodic inventory control which is quite old now. Instead its better to have instant inventory deduction or user will not know the exact inventory until the day is closed. Unless you maintain a stock ledger for pos sales separately.

No change in pos ui?
Please check one of our proposed work in pos enhancement thread. We have the codes for that if you want you can reuse it.

Cart needs more detail of item, unit cost, tax, total. Also test with longer item names and see how the ui reacts.

This looks good.

Is return sales taken care off, in this new pos plan? Returns should be done from pos instead of sales invoice view.

Tried this and the page is blank nothing is loading from mobile phone. Will try it from pc later.

Nice work though, will test it out in detail and share the feedback.
Please consider a better pos ui otherwise the whole point of having a pos is lost, as having functions behind ur pos is good but practically the ui needs to be simple and easy.
Will get back to you with point to point details of pos ui.

User should set up mode of payments correctly to avoid this. Let me know if I am missing some legit use case.

If this is needed then user can cancel amend POS Invoice before closing.

There is stock validation before purchasing an item and it works (needs real world tests though). The same logic can be used to create a report for stock managers to find how many items has been transacted just by POS and also the user will know what is available stock. (This was planned to be done. Thanks for point it out.)

Can I have a screenshot for item selector?

All those details are in “Item Details Screen”. And after having this tested by some of our customers they say those details shouldn’t be visible until they want to see it.

Yes. You can load draft / return invoices and process them further.

It was down some hours back. Its back again.

It a user input error not MOP. When counter person is selling they take cash but by mistake they select card or vis-a-vis.

Which customers are they? I think you should consider general use case and then work on it. If you follow a single use case then again community will have to add to it themselves.
What we have done is we have given a custom fields selection in our app so users can select what they want to see in cart area.

ok will try again now.

I love the JS UI, but i hope you know It is too advance for counter people. The transition is fluid and there is alot of waste of space.
And displaying an Item in full view is not practical use case in POS.

Please check some major Vendors POS screen. What your working on is very nice in technical point of view but I feel that its way too advance for retail counter person to handle.

  • Removing 1 item from the cart causes the cart to be stuck, only option after this is to proceed with the checkout,

  • Change amount should also display after printing, as during processing the invoice cashier are busy handling the cash. We have added Change value to be displayed on Print /New Order Lightbox in V11 offline pos.

Here is our app

You can find all these thing which we have already been using in production environment.

This was something we planned for.

This is something we had worked on.

Hi @nextchamp.saqib

I just tried to use the system , not a bad attempt .

I noticed that once if a put two products in the shopping cart, I can only make changes to the last one. I cannot seem to be able to change quantities or even remove the previous ones.

Am I missing something here ?

Click on the cart item and the respective item details will be opened for editing.

No there is some bug.

This should be pretty much avoidable from the new payment screen. The MOP are represented as card where user has to click and enter the amount. If this still doesn’t solve the issue then maybe I am missing something.

I mentioned that details should be hidden until it is very much needed for a transaction. Details should be there and user will have a provision to see it. About the custom fields, it will be implemented but we just don’t have the right place for it on the screen (which doesn’t disrupts the overall looks).

Before starting the project I did come up with a design which had multiple buttons on the screen for easy access just like typical POS screen has. However our team suggested that I should take a look at modern pos systems (eg. Shopify POS, Square POS, Odoo POS). So in the 2nd iteration of the UI design I took inspiration from these.
I think having contextual buttons on the screen would be the right way to go. Having all the buttons just sitting on the screen is a little confusing and definitely I am not saying this just from my perspective. We do have some heavy POS users, they don’t need any user intervention (except few) from the pos screen everything auto fetches and the invoices are generated.

And lastly, I started project by taking the requirements/idea from recent pos enhancement discussion on discuss, I am still open to any feedback as this is still isn’t into production yet.

1 Like

Yes. There was. Fixed it.

@fkardame Also please also checkout serialised and batched item transactions from POS.

It is working now

It was not working yesterday when I tried it

@fkardame I kind of like the layout, it is clean and more user friendly. i disagree with you on the need to have item details in the cart section, the fact that you can click on the item and the full detail including image shows up by the left instead of way down at the bottom is genius.

Having said that @nextchamp.saqib two other observations

  1. Can we at least have amount in the shopping cart? So we can have Qty/Item name/Price/Amount on each line. it is not a deal breaker but would be a nice to have
  2. Can we add more of an item to the cart by clicking on the item again? For example if I click on item racket, it is added to the shopping cart with qty 1. If I click on racket again the qty should change to 2
  3. Can we have an option where the pos order cannot be completed until full payment is taken? This is very critical for retail front end

Actually I was going to do that but forgot along the way. It is very important for people using barcode scanner. Scanning multiple of same items should increase quantity.

Yes. Complete order button should be disabled until paid amount is set.


  1. How do we handle return transactions from the PoS? I cannot see it
  2. What about using loyalty points as a payment method?
  3. What about using customer balances/available credit notes as a payment method? this was a major issue with PoS all the while
1 Like

Click on Menu → Show Recent Orders → Filter out the invoice → click process return.
This is still in beta so returns need to be tested extensively.

If a customer is enrolled in a Loyalty Program then at the time of Payment loyalty program appears as a payment method where you can add the points to be redeemed.
Loyalty Program can be selected in the UI itself by clicking on the customer info (email | phone) on the top of the cart.

This is challenging. I will discuss and let you know.

The return is not working as you stated, I cannot see where to process return. Can you look at this? i would love to test it

Also once you click on show recent orders, there is no way to get back to pos invoice creation page, you are stuck in the show recent orders page, maybe you should look at putting an option under menu to create new invoice or something.

Just click on Show recent orders again. Its actually a toggle :sweat_smile:. I may rename “Show Recent Orders” to “Toggle Recent Orders”. I need a better solution for this. Will add this to the feedback list as well.

Click on any Paid Invoice. It will display its summary on the right side and there you can click on return.

1 Like

UI issues of the current test project:

  • Add item, quantity button is selected but pressing numbers gives an error. Have to tap quantity in details or untap-retap Quantity button to make it work. (Edit: Now nothing is selected by default. Also quantity somehow carries over to the next scanned item…)
  • It should never be possible to unselect the entry modes. One should always be selected no matter what, resetting to Quantity by default every new scan.
  • Trying to add an item that already exists in the invoice just… does nothing. It should increment the count.
  • I get width issues on the item list and numpad if I navigate to other screens and back to POS.
  • Rate might be better as “manual price” or something similar.
  • Currently selected item in the list should be highlighted.
  • Remove should be background red, foreground white, and have a confirmation.
  • Maybe a stretch, but items should be locked to whole numbers or partial? Can’t buy .3 jars, after all. But we already try to ignore that issue with default Erpnext.

No matter what you give the users they will always make mistakes. So its not wrong in the screen its human behaviour.

This is right and that is the reason I mentioned that there is alot of waste of space and the item selection to cart transition is too much to be on pos screen, Example when I click on the item then it item then it only works for 1 item and when I remove it then the cart is non functional. Maybe some bug.

Lets take a use case of 1 customer coming with 10 items. He wants and different quantities per item and after scanning all the items he wants to know a price of a single item from the middle of the list.
then user will have to touch it to get its details. now assume user wants to know price of 5 items, so you want the cashier to click on each item one by one to give him the price after scanning all the processes.

As I mentioned I love the UI and transition as per the LOOKS but when i place myself in the shoes of a cashier and the situations they face, its quite heavy and time consuming for the cashier to touch so many times. we need to create a UI which will need the least amount of touch and display as much as information about the item and the cart details.

Firstly Image is not useful in retail POS if we talk about FMCG, in apparels it is useful and the image size can be reduced as much as possible.

Another Point of View is, in a fast retail enviroment, we should reduce the switching of screens, example: First Screen Items and Cart, Second screen Payment & print.

Here I see Item view collapses to the side when selected an item from the cart while the cart switches from right to left when checkout is press. and after submitting there is a third screen…
Why so complex???

Not allowing opening now.

Here you say you disagree.

Here you ask for the same thing ???

This should work as the POS is still WIP, As only the last item is switching which means he have not starting working on cart logic yet. We faced the same issue when adding batch non-consolidated cart.

Yes good point, We have added this to the custom app so maybe you can re-use our codes.

From my point of view it is very advance to be used by regular counter employees, It is not a criticism as I said before If I was to use it as a Cashier I would love this but if I have to give it to someone with very limited computing knowledge then its very hard and confusing. I would also get confused a bit if I have to handle 5 customer standing in queue.

How many items can you fit in this cart view? Expect to put atleast 7-10 without the need of scrolling

I think we can simplify it.

If you need prove of my point of view then I can create a Video standing in front of one of our production POS with live transaction going on.

This was just an artifact of a new version being uploaded/installed. It works again.

1 Like