How to account for Goods in the custody of Sales Representative until he distribute and sells the Goods?

Issue : how to account for Goods in the custody of Sales Representative until he distribute and sells the Goods?

My Sale Representative, load my distribution truck with goods, in order to distribute and sell them to outlets, supermarkets, shops and other outles as he drives, some of the sales are cash, others are credit… at the end of the day he comes back with manual invoices (cash and credit) and bank receipt for depositing the cash sales. Thus i have some issues that i couldn’t figure out:

how to account for Goods in the custody of Sales Representative until he distribute and sells the Goods?

what the sales cycle would be like?

We can build you an android app, we setup your truck as a warehouse. You do a stock transfer into your truck of all the goods you think will sell that day. Your sales representative drives over to your customers and uses the app to make the sale and collect cash. The cash hits the sales reps account. The invoices get cut at the back end on ERPNext and gets emailed out to the client. We can also print out invoice on a portable printer. He finishes his sale comes back to your office and a report says: What goods he started with, what goods were sold on cash and how much cash he owes you, what good were sold on cheque and how many cheques for what amounts he owes you and what was sold on credit. The good remaining in the Truck Warehouse on ERPNext is the gopyds that didn’t get sold that day. You verify the actual goods in the report with this stock balance report and sign off for the day.

Tomorrow is another day.

Do you volunteer to be the person to test this app out? We can build you the app in 6-8 weeks.

If the app sounds too high tech. You can do the parts that are relevant to you.

I hope you like to app idea and will volunteer to try it out.




@JayRam Can the app be installed on handheld device with inbuilt printer for the printing of the invoices generated for the sales ? .Instead of email,can sms be sent to client acknowledging payment ? Can the sales rep be monitored from the office as to the maximum cash amount collectable by him.Once the maximum amount is reached,he cannot make sales but must move to bank and lodge the money.Once cash is lodged,he can resume sales.can the app be disabled/enabled from the office ?

1 Like

I second this app and am willing to support the development.


I already have this working.

I have the drivers use ERPNext on a laptop mounted to a rolling cart in hte warehouse. They are responsible for loading their trucks from the warehouse using the laptop carts. We have 3 carts for this since we only have 3 dock locations at the main warehouse for trucks to back into we are covered in case all dock positions are full. The laptops also have barcode scanners attached to make the stock transfer more accurate.

When the driver is finished loading his truck, he saves his transfer. His truck is a warehouse in ERPNext and he does the material transfer from the main warehouse to his truck warehouse. when the transfer is saved we have a WORKFLOW rule that does NOT allow the driver to finalize the transfer. Instead the inventory manager is notified by an alert that a driver has finished loading.

The inventory manager (or a few other managers in the distribution list) is now responsible for reviewing the submitted transfer and clicking on APPROVE to allow the stock to be updated in both warehouses. In the event the manager sees something he doesn’t like, he calls the driver to get an explanation. If everything is good the approved transfer is complete. If not, the manager has the option to alter the transfer or refuse to approve it.

If the transfer is NOT approved, then the driver will NOT be able to sell anything he has loaded.

We accomplish this by making the system ONLY operate in LIVE mode. We don’t allow for offline mode sales. If the driver is unable to sell anything, they cannot make any money. So, they have become very careful about how they load their trucks so as to NOT impact their income. We have 7 large trucks operating in a 300 mile radius and working from 3 different regionalized warehouses. Each warehouse has enough laptop computers on carts to cover their number of dock locations.

Once everything is loaded and the drivers are off to their customer routes is when the ERPNext system really shows its power.

The drivers are using Android tablets with 4G wireless built in from our cell phone provider. I think they are all Asus Zen Pad 10 inch units. They are using a slightly modified version of the POS module to make their sales. The modifications are not required but it made life easier for them. The mods include the ability to see the customer address when chosing the customer from the drop down list, and an extra field at the top to type in a PO# that will then stay with the sales invoice record. The PO# field is also used by the drivers to write in the credit card approval number if they sell by credit card, or the check number if they take a check.

The tablets also have a bluetooth connected barcode scanner. Everything in inventory has a barcode and this makes the sales more accurate for the drivers.

In each case the drivers each have their own POS profile so that we can easily assign the sales invoice series numbers for the drivers. This make it so much simpler to answer phone calls from customers that may NOT know the sales reps name. As long as they can provide the invoice number we can tell who the driver is and when the sale took place.

Another very strong point of doing it this way… you can easily monitor the Sales Invoice screen and actually watch the sales register in the system. If you filter the list by series number (which is essentially the sales rep) you can tell how long they spend at each stop or even if they are goofing off and not really making the best use of your truck! Very powerful.

As for printing invoices. We put small power inverters in the cab of the trucks and places HP Envy 6000 series Inkjet printers in the trucks. The Android tablets can easily connect to the printers using the HP Print Service Plug-In. The HP Envy printers all have a function called WiFi Direct. It allows the tablet to connect directly to the printer over wifi. Since we use the 4G radios to connect to the internet, the wifi is open for the connection to the printer. This setup work beautifully.

At the end of the day the drivers are responsible for bringing a customer signed copy of the invoice to the office. If the sale was cash, the cash must be attached. If the sale was credit card the approval code must be on the invoice. If the sale was by bank check, then the check must be attached to the invoice. If the sale was On Account, then the customer account number must be on the invoice. If any of these things are missing, they do not get paid their commission for that sale.

A few times per week their trucks are spot checked for inventory counts. If the system shows items that were loaded to the truck warehouse location, but we have no sales invoice or other transfer to account for the item NOT being there, then the driver is docked the value of the item from their pay. This ensures the drivers are very careful about how they load and sell.

We do allow for the drivers to occasionally give away a product if they are trying to secure a new long term customer. All they have to do is generate a sale for it and change the price to zero. This gives them the flexibility to really grow the business for us and for themselves. We all win this way.

If you want to do this, it really is not hard. You just have to be committed to forcing everything to ONLY operate in LIVE mode. As soon as you start to allow OFFLINE selling (using the browser cache to hold the info), then you open up the system to potential fraud and internal arguments.

We also have customer in locations where we cannot get a signal with the 4G. In those cases the drivers are forced to fill out a form by hand for the sale and get it signed by the customer. When they get to a place where they have signal, they are required to enter the handwritten form into the POS module and complete the sale electronically there. They then staple the handwritten form to the electronically generated invoice they print in the truck. If it is not entered in POS, they do not get paid for it.

The modifications we made to POS are purely for our ease of use and record keeping. They are NOT required and you can still do the same thing in ERPNext without any customizations.

Advantages of doing it this way:

  • drivers take responsibility and ownership of products they put on their truck
  • drivers have incentive to make everything work right and follow rules
  • sales are tabulated live on the system and can be viewed in real time
  • series numbers follow drivers and make data easy to coordinate
  • this same system works just as well in a store front
  • accounting can generate their own report to match up to driver submissions
  • inventory control can have complete “low stock” data as soon as the last truck is loaded and approved. This allows better purchasing and manufacturing schedules.
  • Using the POS module forces the stock levels to tabulate immediately after a sale
  • Using barcode scanners bluetooth connected to the tablets and the laptop carts makes stock transfer and sales more accurate.


  • occasional 4G coverage issues
  • everything MUST have a barcode in order to stay accurate

I think I explained everything fairly well. If you have specific questions let me know and I will try to elaborate.

Hope this helps :sunglasses:



App will be built soon. Thanks for contributing to the design! :slight_smile:




Dear Jay,

Developing an app Sounds great to me, specially with portable printer is important, and i will be more then happy to volunteer to test it out…
some hints,
1- the app should be enabled in other languages…1 of my sales reps speaks medium English…
2- the price of the items transferred to the sales representative warehouse must be the sales price of an item…

and if i thought of any other ideas i will be posting it…

**In the mean time…what should i do?.. i have opened a warehouse under my sales representative, **
but in the sales order or sales invoice…how can i choose from which warehouse i am selling the items…


Excellent. We are thinking of building a non-chatty app, where users would only be able to a few things and with minimum taps and distractions.

Maybe you should think of contributing your customization back to ERPNext.



Was your sales person going to make deliveries at customer site? Or after he returns from his rounds? Either ways you can turn on the Update Stock by default on the invoice. And put the default value of the sales person’s Warehouse in the Warehouse field.

Sure, we will build the app to support other languages, but we will need your help in the translations.



You may be surprised to know that the developer group I used to make my customizations is already part of the ERPNext foundation and I specifically asked them to do pull requests for everything I have them create for me. Many of the improvements that have happened to the POS module in the past several months are directly tied to those pull requests.

I do all of my modifications this way. You can probably figure out the team that I used if you look back at all the PRs on github. I like them very much and even as I write this I have them making even more customizations form me.

Sometimes the modifications do not follow the path the foundation wants for ERPNext so they are not merged. Sometimes they cause arguments in the community and they do not get merged.

One such modification that caused a great deal of arguing was the ability for the POS user to print a draft invoice BEFORE submitting it. Everyone cried foul and fraud. But if a situation like I described above it becomes a super useful tool. The drivers can print out a DRAFT invoice and take into the customer/manager responsible for payment. If they decide the total was too much for their budget, the sales rep can easily remove the item from the cart and reprint again until it reaches a level the customer agrees he can pay. Once it is signed, the sales rep submits and finalizes the sale. Until that time it stays in draft mode and can be modified.

You will probably never see that feature show up in the POS module even tough I have already paid for it and made it available to all. It just sparked too much argument from people that didn’t understand how to use it. They just didn’t understand the concept of DRAFT. Draft invoices never update inventory levels or accounting. So unless it gets submitted, it never matters. I even added a check box in the POS setting to turn that feature off or on at the administrator level, but it was still rejected.

Believe me, I try to donate everything back, but sometimes the ones the do not understand the system make the most noise and the merge doesn’t happen.

I was not-so-voluntarily volunteered to be the Module Volunteer and coordinator for POS and I still take that seriously and fund it when I can. But I will not try to argue with the ill informed. it is a waste of my time.

So, to your original point… I have actually attempted to donate ALL of it ALL the time. That is how I prefer to work with ERPNext. I will always do the same with my customizations whenever possible.

The only times it may not be possible is when I ask for custom work to go into older versions of the system. Then the code is usually too far behind to be of use (but I still ask them to try :grin: ).



You set that up int he POS profile of the driver.



You can do almost everything you want without a custom app. See my detailed description of how to use the system above.

As for using a device with a printer built it, that would all depend on the operating system of the device and the available space. Not everything with a built in printer will play nicely with ERPNext since the system operates from a browser. We did get android to work with a wireless printer.

Printers built into devices are usually the thermal 52mm or 80mm wide paper type. You will want to do a great deal of experimenting with those sized printers before you commit to them in a all-in-one device. ERPNext does NOT work very well with that size paper unless you take great care in actually modifying the source code. Everything ERPNext prints is usually in the form of a PDF document. The PDF generator in ERPNext will build in some fixed sized borders for the right and left sides of the documents to print. Those fixed borders are also in the docs sent to thermal printers. So in the case of a 52mm wide printer, the 18mm wide border of white space on the right and left sides forces all of the printing to happen in the remaining 16mm of space in the center of the paper (or the remaining 44mm in the center of a 80m wide printer). It is not easy to get thermal printers to play nice with ERPNext at this time. If it is something you must have it WILL REQUIRE A LOT OF CUSTOM WORK.

You can already enable or disable users and POS profiles from the office at any time. Trying to do it at the app level might prove difficult or expensive.

Monitoring max cash to be carried will definitely be a custom thing. There is no provision right now in ERPNext to handle that. My clients do it by making the drivers either do 2 stops a day at the bank (regardless of amount) or for those that have few cash sales it is submitted at end of day with invoices.


Why do I disagree so much with this message?

Must be the overtly sanctimonious tone.


Chill, guys! It’s tough to achieve consensus. Which is perhaps the reason I disappear for weeks together from this forum. :slight_smile:

I know its tough, so I appreciate every small contribution.

But what BKM brings up is a good point. I will hijack his point to the following:

What is core?
What are nice to haves?
What are peripheral features?

Plus it is all context. One man’s core is another man’s peripheral feature.

Can we enable all? Where do we draw the line? How do we still accommodate a feature that is non-core to most but extremely important to some.

Let’s please keep the discussion on broad concepts. Let’s not take offence or get personal.




I think an apology is in order before we can proceed

Agreed. I made the custom stuff I wanted and made it available to the community. They disagreed with my concept and it didn’t get merged. So what? I got what I wanted and I offered it up. Everyone is still happy. As long as my clients pay me for the modifications I don’t care if they rest of the community likes them or not.

@olamide_shodunke I am not here to preach. Just to point out how the process works. Whether that is good or bad is all up to the viewer perspective.


1 Like

Ok. I am sorry if I offended you. I am not sure how I may have offended you, but that was certainly not my intent.

I was only emphasizing the extremes that seem to occur when an idea is presented.


That right there is the beauty of ERPNext. If it is not core but you must have it, you can always make it work with modifications. That is exactly what I do every week.


The Solution is to make most of the features optional.

Take for example the PoS profile, over the last few months the options available have increased


I am still working with the ERPNext team to add about two more options here.

For ERPNext to be useful to all, this should be the adopted approach, once a use case can be made for a feature it should become part of the core albeit optional if it has two sides to it.

That is my two cents to this.


If you are able to help @Fred1 with a solution to his desire for an all-in-one deivce with the built in printer, please consider making the printer part of that available to the core as well.

Currently ERPNext doesn’t do well with thermal printers unless you are willing to modify the code directly on your server. I had to do that on mine to get the 80mm printers to work up to their potential.

If you solve this issue in a more generic way that can be applied to the core, that would be a real benefit to most POS users.