[New USE CASE] How can I get shipping crates tracked and returned?

I have a use case where I ship a delicate piece of equipment to a customer and I need to get the shipping crate back from them. In this case the custom shipping crate is almost of equal value as the contents of the crate.

I need to get the crates back because they take a long time to custom build, they are expensive, and they can be shipped many times.

Any Idea how I would setup something like this in ERPNext (I am using v13)?

  • I would identify each crate with it’s own identification (serial #, asset #, whatever) so I can keep track of them (at least I hope I can).
  • I need to find a way to track which crates are in the warehouse and which crates are still out (not yet returned) with a shipment.
  • I would also want to know exactly where I shipped any given serial numbered crate.
  • After 20 round trip shipments the crate can be retired and a new serial numbered crate will be built to replace it.
  • It would also be a good idea to have a mechanism for figuring out which crates are over due for return so I can have my admin team making phone calls to get them picked up.

Has anyone done anything remotely similar? Should the crates be company assets? If so how would I assign the assets to a shipment for a fixed period of time?

I would love to hear how you configured your returnable items, crates, or containers and then tracked them. :smiley:

I need to find a path through ERPNext to make this work.


1 Like

I have no experience on this use case, I do not think ERPNext supports this out of box.
My draft idea is as following

  1. create one crate as serialized package(item group or a custom field?) item
  2. create on custom button in delivery note form, click this button will switch to stock entry form with default purpose stock transfer and customer location as destination warehouse, user can choose the crate item(package item)
  3. create one custom field shipped counter in serial number doctype and also server script to update this counter field when transferred to destination warehouse, maybe further logic can be coded like once reached the threshold value send mail notification to admin.

as how to monitor the to-be returned crate which can be based on the stock transfer records.

Hmmm… @szufisher, that sounds more complicated than it needs to be.

I was actually thinking more along the line of including the serialized shipping crate on the sales order and create some sort of return authorization to be printed out and sent along with the packing list. That way the customer can empty the crate and then use the RMA to immediately return the crate.

Does ERPNext handle RMA’s (Returned Material Authorizations) ??

If so could someone point me to the relevant instructions for that process?

If there is a RMA function that I can take advantage of, then the crate becomes a serialized product that is sold with the equipment and returned to inventory when it comes back.

Then I would just need to have a way to figure out how many crates and which serial numbers are still out (and needed to be returned).

I don’t like doing anything custom these days because it makes the upgrade process so much harder later. So, I would not feel comfortable trying to put a custom button somewhere that might need to be fixed with every version upgrade.

Still trying to find a path that makes sense and one that would be easy to do with existing functionality.

Has anyone ever run an RMA process with ERPNext? Maybe that is where I need to be looking.


Does anything in this thread help ?

Hmm… It appears @max_morais_dmm may have figured this out. His last post in that thread may work. I am rebuilding the test server right now and will set that up as a test. Will post back if it works!

Thanks @smino


1 Like

Ok, based on this post from another topic:

In that scenario we are dealing with “Lending” or “Comodato”, and your Returnable item need to be serialized some how, to it works properly

So, you will need to create an Bundle for example

** Beer Walls 42 (bundle)*
** Beer (Stock Item)*
** Beer Bottle (Stock Returnable Item), but serialized*

Also you will need create one warehouse called “Containers on Customer Custody” for example

While making the Delivery of the good (can be also in invoices that affect Stock), under the Bundled Item, attach the target warehouse for the Beer Bottle.

ERPNext will move the item for your warehouse to another warehouse, but now it will carry a relationship with the customer, so you will be able to know how many Bottles a certain customer have, looking for that warehouse.

For receive back the item, just move the item, ensuring your targeted the property serial no on the relationship, and it will get returned into your warehouse.

@max_morais_dmm seems to indicate that you can define a target warehouse (instead of a customer) in a Deliver Note for an element of a Item Bundle.

For the life of me, I cannot figure out how to do this. I have been trying for several days now to figure out hos to do this but I have not been able to find a way to define a target warehouse for a line item of a delivery note.

It only seems to be possible to define a source warehouse, or a customer delivery point.

I already have the container serialized and added to the Sales Order and the Delivery note. The container is part of a bundle with the contents.

Can someone point me to where I an define the target warehouse that will override the delivery to a customer on a delivery note?

Or am I going about this incorrectly?!?

@max_morais_dmm Can you tell me how you managed to do this. I would like to replicate it in my system but having no luck so far.

Thank in advance to anyone that can figure this out and point out how to d the target warehouse.

~BKM :thinking:

@bkm I’m seeing that on recent versions of ERPNext the field “To Warehouse” on “Packed Item” is read-only!

It’s really strange, because I didnt found the code, that is preventing this field to be editable!

Any way!

Customize the “Product Bundle Item” table, and add a field called “Target Warehouse”, that is a link for the Warehouse, select the disired target warehouse on the Product Bundles, and it will be fetched properly in the documents.

Just to explain, why it works

This line of code, is used to make the stock transaction for sales transactions, on top of that, you can see, it will use the target_warehouse

Just curious - if you construct a product bundle for a crate and sales item - does erpnext delivery note allow you to deliver one part of bundle (sales item) to customer (remove from inventory) while the other part (crate) to a separate “receivable” warehouse (remains in our inventory)?

@zerodiscount is exactly what I’m explaining for @bkm, ERPNext allow this

But sounds the feature is disabled on the UI, but still available on the code

Hmm… That is the scary part. The option to add a target warehouse is not anywhere to be found in the GUI. This probably means that the developers were cleaning up some things that went against optimum workflows and removed the ability to do this in user interface.

If the developers were starting the process of removing the path through the system that allows the “Target Warehouse” to work, then they will likely remove the underlying code in some future update.

This would present problem for me because I do not want to be stuck with a version that I cannot upgrade.

I appreciate @max_morais_dmm for the creativity of the solution he presented, but I will have to find a different solution that does not have the risk of being deleted from the code in the near future.


@bkm I dont think this is the case!

I think it’s an unplanned behavior

@max_morais_dmm @bkm - since the crates are in possession of customer - technically they cannot be in your inventory - just fyi to be consistent. My suggestion would be to make a proper delivery note for crate item (remove from inventory) and then return back to inventory when received. You can keep invoice pending for the crate delivery (if desired) or actually invoice the customer for the crate each time (should they not return) and credit that invoice as well when returned.Preformatted text

True… but that does not give you an easy way to track which serial numbers are not returned or what customers might still have them. Using your method you would have to check each and every sales record to see if the crate was returned.

At least with the strange behavior of the @max_morais_dmm method, the only outstanding crates will all be in one searchable warehouse.

Still not a fan of something that might leave me stuck in a version and unable to upgrade, but it does appear (at least in the code) as if it will work.

Anyone else have an idea for this?


If you assign a serial number to crate item - the system will track which are sold. This becomes a report / query issue for that item.

I know it would be nice if the code stayed the same, but I cannot risk that when setting up a new business on ERPNext. If the next upgrade of the version were to take away this “undocumented” feature, then I would be in a bad position to support it going forward.


@bkm I opened an Issue


Thanks Max

It will be interesting to see if they do anything with it or if they indicate they didn’t intend for this to be a feature. Good idea of opening an issue so we can get some idea of the developers intent. I will be watching this github link.


Interested in the ways it could be handled.
One thing I find not workable, is how do you track sales that was done before implementing ERPNEXT going by this process:

** Beer Bottle (Stock Returnable Item) serialized*

If we are to take this route to solving the problem
In my case study we should have over 5000 customer with over 30 different item(different price value) of returnables of about 950+ pack in various customers custody.
Is there a way to work this out?