Shipment basics - request for input to "The book"

Hello fellow friends,

although I’ve been in Tryton now for more than 3 years, I still cannot use the shipment module. Would somebody be so kind and just throw at me the very basics? - Just a few bullet points will be good enough, no bells and whistles please. And really the basics, no sophistication is required. As you would do for your grandmother.

As mostly when I achieve some basic abilities, I’ll proceed that into “The book”; meanwhile we have a few visitors per day, so it may be a little useful to some people.

Thanks a lot in advance, Wolf

Stock module implements Shipments (Customer+return, Supplier+return, Internal Shipment).

Then there are a number of modules extending stock with various features, and a few extending account, purchase and sale to interact with stock.

While I can not co-author the DACH book, I can answer specific questions about shipments.
I think the documentation is pretty well written.
Then perhaps the right way to go about the problem is to ask what you do not understand and how the documentation misleads you so that this can be corrected, and then you can also write your learnings in DACH book.

1 Like

He, Josef, thanks for taking care!

Guess you’re talking about, true? - I made several attempts, but did not get any idea where to start and how. Would you be so kind and tell me which articles I should read - and which order of reading makes sense?

Thanks a lot, Wolf

Yes, I am referring to Stock module documentation.

I think it is more useful if you study the Stock module documentation and test it on a fresh testing database. Then when you get stuck or do not understand something I can help, but I need a specific question, then I can give an exact answer.

Stock module has Locations, a warehouse by default has Input, Output and Storage location.
You can check the stock level for the entire warehouse, or you can check stock for each individual location.

A stock move moves products of type Goods (you can not stock services) from one location to another. Usually you will not create moves directly (although you can if you really need to).
For example to set initial stock levels.

Lets say you make a Sale which has Shipment method: On order processed:
When you confirm the sale a shipment will be created with all the data completed, such as customer, delivery address, and the goods that have been sold.

The first state in this case will be Waiting.
If all the data is correct, then you should Assign.
During this stage tryton checks that you have the product on stock and it assigns it to this shipment so that another shipment can not assign the same stock.

Then when you click on Pick you move the goods from the storage location into the output location.
This is the inventory move, you will see that it went from assigned to done.
Now you can check your stock for output location, and you will see that you have the goods from your shipment in the output area.

In your customer shipment, now you should go to the Outgoing moves tab.
This is the move that will send the goods from output to customer location.
After you pack the goods you should click on Pack.

Now you are waiting for the customer to pick up, or for the carrier to arrive.

When the goods have been picked up by customer/carrier/transporter you should click on Done.
When you have clicked on Done you will see that the goods has moved from Output location to Customer.

PS: In Customer location you can see all goods that has been sent to all the customers, because goods that were taken from somewhere must go somewhere to balance the stock keeping.

Of course, you can also use shipments directly, but it is simpler if you use for example sale, or purchase. Most likely you want to also invoice goods that you sell.

But with tryton is very generic so I think it is easier to explain with a particular use case.
For example I do not know if what I have written is useful to you, maybe you are getting stuck at something different.

Dear Josef,
thank you so much for taking all the time. Now I think I understood why I never ever had an idea how to approach my “shipment” question: It’s a matter of language - different concepts in wording.

I wrote about “shipment” - but what I actually mean is “invoicing parcel costs”, assuming, the “shipment” procedures might be helpful. So this is my problem:

  • At present, I have 4 products (type “service”) für 4 different parcel sizes.
  • When processing a sale, at the end I add one of these “parcel products” to the sale.
  • Warehouse does the packaging and tells me the actual size of parcel
  • When I did an incorrect guess about parcel size, I cannot delete the wrong parcel product, because the sale already is completed.

So how would I deal with parcel prices in a correct matter? Guess, I should not just have ordinary “parcel products”, but they should somehow be linked into the shipment process. Could you tell me how?


Did you check stock_shipment_cost and carrier modules ?

Thank you for taking care.

I installed “stock_shipment_cost” and “carrier” modules and checked docu. What I find is

The Stock Shipment Cost Module adds a shipment cost on the outgoing moves which is calculated from the carrier purchase price. This cost is added to the product margin reports.

Well, at least to me, that does not tell anything. In my menu, I did not find any further entries in the “shipment” section. So - how would I handle this feature?


This a very specific use case.

Again, you don’t follow standards.

It may happen that shipment costs have to be included in sale order and invoice.
It is the way editors send books to book-shops in France. They apply a better VAT rate if they do that.
This bookshop specific was developed by b2ck on top of carrier module for an editor.
This doesn’t mean that “guessing” the parcel is a good practice.

Also keep in mind that shipping costs are not products.

I’d really love to learn how doing it “according to the standards” works. But I do not find any documentation, I cannot guess it from the GUI, and I cannot read the code. So I’m sort of lost.

This is the standard situation a beginner in Tryton (after 3 years (; ) drops into.

IMHO, you would get lost in any ERP if you consider that a parcel is a product and you can modify the order at shipment time to change it.

Dear Dominique, thank you for taking the time. I’m very much certain that you are right, and I’m absolutely willing (as written above several times) to learn how to do it correctly. So I understood:

I shall not define the parcel price I’m invoicing to the customer as a product. Got it.

But again - as written above several times - what is the adequate way of doing it? - I installed and activated shipment cost and carrier module. I find

menu > carrier > Configuration > Selection and
menu > Carriers

What should I do with these? - Did I miss any settings required?
And how do I finally assign shipping costs (parcel price) to the actual shipment?

Sorry for being so dumb, but this is (at least to me) not at all self-explaining, and I did not find any explanation. So any help will be appreciated, and certainly an explanation “for the rest of us” in our book will help other people in the future.


You can (sort of) do what you want like this:
Sale - Invoice Method: On shipment sent
Sale - Shipment cost Method: On Shipment

In the Shipment, in cost tab:set cost and cost sale to the value you like.
When you complete the shipment the invoice will be generated with the right value.
But the sale will still be the old value, which is a mess.

Maybe I am doing you a disservice for showing you a complicated way which should probably not be used.

Maybe the right way is to check statistics: how much money do you lose by wrong package size / year?
Maybe you can add 0.1 euro / package profit, that can account for the cost of the wrong packages.

Also how much effort do you put into this issue and compare it to the amount of money you lose from wrong packages?

Refering to the title of this thread “Shipment basics”, I try here to sort things a bit.

If shipment cost is just a cost, then, cost is charged by the carrier and appears in reports
Packaging is often configured as “consumable” so the system considers they are always available.
This was the simple case (and usual case) and I would call it “Shipment basics”.

Now the awful case:
If customer pays a fee added to the sale order, this fee can be calculated and it can be complex to tune it. One must consider the location of delivery, delivery delays, product dimensions and properties which both imply the choice of a carrier and the cost is then to be picked from the tariff of this carrier. Even worse if products require separate packaging. Tryton provide a set of modules to elaborate solutions from simple to complex. A complex calculation requires a complex configuration or even some additional code.

Charging real costs is complex and industry dependent, this is why I previously talked about the book market, which requires the shipment fees to be calculated precisely before shipment ( invoice must be put inside the parcel before closing for VAT reasons, and Tryton did it).

Dear friends, I really appreciate your effort&time you’re putting into this discussion. Hope, in the end we’ll have some outcome worth it.

Interesting. Maybe this is country-dependent? - In Germany, the case “shipment included” more or less was introduced with Chinese sellers on e**y, only a few years ago. With all other sellers, it still is a rare exception. We still are used to have as a standard:
products' prices + service/shipment fee = invoice_total
German law says that same VAT applies to shipment fee as on rest of the goods. So in my country (and maybe other ones) this is the “basic case”.

I totally agree - this is an awful case. And as I’m a simple-minded guy, I would not want to go into it.

But there seems to be a middle course:
Finish the parcel, check weight&size and then apply the actual shipment fee. I’m quite certain this is standard at least in my country, maybe in other ones as well. As I have a range of 2,50 to at least 32€ in shipment fees charged, I do not want to neglect these differences. That would annoy my valued customers.

So at the moment, I get the impression that Tryton does not have a mechanism to map this procedure. What I’m thinking about is a popup at “customer shipments”: After “pack”, I should be asked “Which shipment fee applies to this shipment?” - which will then appear on customer’s invoice.

Is it true that we’ll need a particular module like “manually_apply_shipment_fee” to achieve this?


The cost of shipment sold to the customer can be set on the shipment by editing the “Cost Sale” field from sale_shipment_cost module if the shipment cost method is “On Shipment”.
But an initial shipment cost line must have to be computed on the sale quotation (even if set to 0) by setting a carrier on the sale. The invoiced price will be the value set on each shipment.

Quite usual in France, but is not the use case you submitted.
It is not usual to modify the shipment fee after the order is validated.
The alternative to predetermined shipment fees was (up to recently) shipping fee paid at delivery by the customer to the carrier.

In fact true. With B2C business, usually shipment fee is fixed with at order time. So I was not precise enough in my description.

This is common in B2B business here. When I know my suppliers, when we trust each others, the charge is dependent on parcel size/weight.

Interesting. I never heard of this before.

So it looks as if there are more different “basic cases” than I expected before.

I’m afraid, I am still missing a bit. With that approach described, somewhere at least one shipment fee must be set, I guess - which then can be assigned to the actual shipment. Sorry, but I still do not know how to do this.

With awesome help by fellow friend @dotbit via video call, I proceeded a few steps. First, I noticed to have missed to install sale-shipment-cost. But now, another question occured:

menu > Carrier > Configuration > Selection,
I can set up “From country”, “to country” and “Carrier”. But in “Carrier”, I can only choose carrier products, which previously have been set up in
menu > carriers > carriers
under “Carrier Products”.

So my guess is that the label “carrier” in
menu > Carrier > Configuration > Selection may not be appropriate, “carrier product” would be better.

The same is in sales, shipment and maybe some other places I’m not aware of.

If I assume the label “carrier product” instead of “carrier”, the proceeding makes sense to me, is easy and straightforward. Should we think about a change in labelling here?


For me the name is right.

I think the labeling is right.

A carrier defines a carrier, that is someone providing carrier service to you.
A carrier product is the product that this carrier is providing, and depending on the modules you have installed may be charged to the customer.

I think this is right. You should only be able to match from-to routes to existing carriers.
I do not think this is the right place to create new carriers, this is handled by the Carriers.