How do I account for freight charges in TMS


Introduction

We have received numerous questions with regards to how freight invoices and freight charges are transferred to orders and how this ideally should be set up. This is currently limited to do for customer and vendor freight charges added to sales and purchase orders.

The transportation charges calculated through the rate route workbench is apportioned to the order line when you ship confirm the load. The apportionment is handled by the apportionment engine that is set as a parameter to the rating engine used in the rating profile for the actual shipping carrier. At the same time as you ship confirm and the charges are apportioned, a freight bill is created with the same charge, which later will be used for the freight reconciliation process. Three scenarios for transferring the freight charges to the source documents will be described in this blog post, one for each order flow. Note that the figures in the scenarios are for illustrative purposes only to indicate where the freight charges are going in the scenarios, and not reflected in the shown screenshots.

Scenario 1: Purchase order flow

In this illustrative example, we are buying a product from a vendor with the price of 120, in addition to that we are responsible for paying freight and one of our contracted carriers takes care of the freight and charges 20 to bring the product to our warehouse. We add this freight charge to the purchase order and finally through generating product receipt the freight charge is added to the inventory value.

For information on how to do the purchase order flow with transportation planning there is a demo script on the demo data site on PartnerSource named SCM Demo Script - Inbound transportation planning, which gives a demo of the inbound transportation process.

First thing to think about is that when you are creating your purchase order you need to make sure to use a delivery term you’ve set to Add transportation charges to orders. Alternatively, change the preferred delivery term on the vendor account.

Next you need to make sure you have correct miscellaneous charges set up in order for the charges to be transferred to the correct debit or credit accounts. In order to set up miscellaneous charges, go to Transportation management > Setup > General > Miscellaneous charges. In order to transfer charges to purchase orders, you need to a miscellaneous charge set up with the Charges module set to Vendor. This means that the miscellaneous charge will apply to “accounts payable” and will take effect when creating charges associated with purchase order lines.

You will also need to specify a Charges code, which determines the effective credit and debit account that should apply to the freight charge. The options here are dependent on the charges module used. When using demo data, we are using the charges code Vnd Freigt when the charges module is set to Vendor. Right click on the charges code and select View details to see how it is set up.

As seen in the above picture, the debit posting is to Item, this adds the charge to the item cost. As we were responsible for paying the freight, the credit posting goes to a ledger account set up for this purpose. If we would have a contract where the vendor pays freight we could instead have set the credit type to Customer/Vendor to add the transportation charge to the vendor’s account. Additionally, if we didn’t want the transportation costs to be added to price of the item, we could have set a ledger account in the debit posting in order to record the charge as an expense as part of the total for the purchase order. For more information, see Create charges codes.

The last mandatory set up in the miscellaneous charges form is the Miscellaneous charge type, where you have three different options:

  • None – Select if you want the total rate charge to be applied to the order.
  • Customer Select if you have a customer specific rate generated (for example, through discounts or override charges) and want a separate miscellaneous charge to be added on your source document lines for that rate.
  • Shipper – Select if you have a vendor specific rate generated (for example, through vendor discounts) and want a separate miscellaneous charge to be added on your source document line for that rate.

If you are setting up general miscellaneous charges meant to work across all purchase orders you would choose None, as the total transportation rate will then be applied to the order

If you would like to have separate lines in the charges transactions for vendor discounts you could create separate miscellaneous charges with Miscellaneous charge type set to Shipper and set other case specific criteria (such as site, warehouse, shipping carrier, etc.) for which the charge should apply to.

The rest of the options in the Miscellaneous charges form are optional and can be used to specify certain criteria.

After you have confirmed the inbound shipment in the Load planning workbench, you can view the transferred charges. This can be done through the purchase order form in the purchase order line, where you click Financials > Charges > Maintain charges.

Purchase order transportation charges

When you generate product receipt, the transportation charges will be added to the inventory value.

Scenario 2: Transfer order flow

For transfer order scenarios where you want to use TMS to ship items from one site to another, it is not possible to add the calculated charges to the transfer order through miscellaneous charges.

We are aware of this missing capability in TMS and will support this eventually.

In case inventory is evaluated by the costing method Standard cost, you have the option to add the transportation costs to the item (Cost object=Item+Site) on the receiving Site. For more information about standard costs, see Setting up and maintaining standard costs and Working with cost accounting.

You simply include the expected transportation cost in the standard cost at the receiving site.

In the example illustrated below we have a material flow going from Site 1 to Site 2. The estimated transportation cost is 20.00. The difference in Standard cost will be posted at the main account associated with the posting type Cost change variance. This main account will act as the Transportation cost absorption account. By end of fiscal period this account should be reconciled against the actually expensed Transportation cost. Any major difference can be corrected by doing a Standard cost revaluation.

Example:

 

Scenario 3: Handling freight charges for sales orders

In this scenario we have a sales order for an item with a cost of 120. The shipping carrier we use are charging 20 for the transportation and we want to add the transportation charges to the sales order for the customer to pay. The final price for the customer including freight will then be 140.

For the full outbound transportation process, including adding miscellaneous charges to sales orders, see the ‘Outbound transportation planning and execution’ white paper. You can download it from PartnerSource or CustomerSource.

The basic things you need to set up in order for freight charges to be transferred to the order upon ship confirmation is to use a delivery term that are set to add transportation charges to orders and a miscellaneous charge applicable to your order type.

In order to set up delivery terms, go to Sales and marketing > Setup > Distribution > Terms of Delivery or Procurement and Sourcing > Setup > Distribution > Terms of delivery. You can either create new delivery terms or modify existing delivery term as necessary. Make sure that Freight charge terms is set and that Add transportation charges to orders is selected.

In order to set up miscellaneous charges, go to Transportation management > Setup > General > Miscellaneous charges. In order to transfer charges to sales order you need to have a miscellaneous charge set up with the Charges module set to Customer.  This means that the miscellaneous charge will apply to “accounts receivable” and will take effect when creating charges associated with sales order lines.

You will also need to specify a Charges code, which determines the effective credit and debit account that should apply to the freight charge. The options here are dependent on the charges module used. When using demo data, we are using the charges code FREIGHT when the charges module is set to Customer. Right click on the charges code and select View details to see how it is set up.

In the picture above you see that for the charges code Freight the credit posting is set to a ledger account, which will account for the expenses from the transportation charges. The debit posting is set to Customer/Vendor, which will add the transportation charge to the customer’s account. For more information, see Charges code (form).

If you would like to have separate lines in the charges transactions for discounts or override charges you could create separate miscellaneous charges with Miscellaneous charge type set to Customer and set other case specific criteria (such as site, warehouse, shipping carrier, etc.) for which the charge should apply to.

After you have confirmed the outbound shipment in the Load planning workbench, you can view the transferred charges. This can be done through the sales order form in the sales/purchase order line, where you click Financials > Charges > Maintain charges.

 Sales order transportation charges

EDIT: As pointed out by Steven in the comments, for scenario 3, the charges codes has been mixed. It has now been corrected and the screenshot replaced. The debit posting should be Customer/Vendor and the credit posting to a ledger account.


Comments (17)

  1. Steven says:

    Hi Markus,

    Interesting article, thank you for that. I think that the setup of the carge code in scenario 3 (Sales) is not correct. Debit and Credit setup should be reversed for it to work (when I tried it, it only worked when i did). It would seems logic to post a charge to the debit side for a customer, and as a result, I guess that you would need different charge codes for vendors and for customers. Or am I wrong?

    I also tried out the apportionment part and got this working in eg. a scenario with 2 sales orders with different total weights on one load. Nice! I found these apportionment parameter on the rate engine but how can it be changed? Via code?

  2. Hi Steven,

    You are absolutely correct, if you would have checked the TechNet link there as well it says the same as well. I used the wrong screenshot when I wrote this up, and got the description wrong. I have now changed the description and the screenshot to be correct. Thanks for the input!

    As to the apportionment part, if you 'Initialize base engine data' from TMS parameters you get both AppWeight and AppVolume generic engines. By making AppVolume default and changing parameters on your rate engines to use it should make them apportion on volume instead. But you could also create another one that apportions per quantity as well, the parameters needed for that is briefly described in the TMS engines white paper.

  3. Matt says:

    Hi Markus,

    Great article. When I go to the Terms of delivery form to enable the "Add transportation charges to orders" field, the field is greyed out and cannot be enabled. Do you know what would cause this?

  4. Hi Matt. The 'Add transportation charges to orders' field should not be greyed out. Do you have any customizations that could affect this?

  5. NR says:

    Hi Markus,

    Great post, thanks a lot!

    With the above functionality, will the delivery fee for a retail sales order be calculated based on either ZipCode and/or City…

    I see that the delivery fee has been attached to the customer, but where is the setup for the zip code since freight charges vary by region? If I am right, this has to be a customization?

    Hope this question makes sense.

  6. Hi NR,

    This post does not take up the general setup needed for TMS, such as setting up how delivery fees is being calculated. It is possible to calculate delivery fees based on zip codes or zones out of the box using either one of the point-to-point rating engies or the postal zone weight rate engine. I suggest you have a look at these two white papers to learn more: blogs.msdn.com/…/new-white-papers-for-tms.aspx

  7. Glenn Boivin says:

    Markus,

    Thanks for the great information. Although we have not yet setup TMS, I think this gives us a good start in understanding a key benefit in doing so.

  8. Line Watterud says:

    Hi Markus,

    How about when you want to reverse a charge on a sales order after it has been invoiced? There is a Reverse button in the Charges transactions form, but when I click on it I am only told that the misc. charge must be debited to an account. How do we set up for this?

  9. Hi Markus,

    After I have confirmed the inbound shipment in the Load planning workbench, I cannot view the transferred charges when I click Financials > Charges > Maintain charges. I have crossed checked all steps with your purchase order scenario. Right now charges code are shifted in charges transactions with fixed category whereas charges value fields show 0.00 value.

  10. Thanks for all the feedback!

    Line: I don't know the scenario you are explaining. To my knowledge there is no reverse button in the Charges transactions form. You will need to conduct regular financial procedures to reverse your charges. It lies outside of TMS.

    Muzzafar Have you considered how you are apportioning your charges? If you apportion by weight your released products needs to have weight set up under the 'Manage inventory' tab on the product.

  11. Hi Markus,

    thanks it's working, what if in case I set up manual rate, do i still need to have weight setup for a product?

  12. Lorenzo Migazzi says:

    Hi Markus,

    thanks for your posts, they are a great source of inspiration and knowledge for me.

    So, I turn to you in the hope to solve an issue with routing and rating of a load.

    I know that the only way we have to route and rate a load is the form TMSRateRouteWorkbench.

    But seems that this form works only with one "To" address, so if the load contains more shipments with different destination addresses, the form uses the address of the last shipment of the load, per rating/routing the whole load.

    What is the right way to rate/route a load of this type?

    1. Wojtek says:

      I have the same problem. The main problem is in logic of making plans. First are Loads and then Shipments. Load – is physical a place where we put our goods (pallets, boxes, big-bags etc.) it could be: truck, container, railway carriage etc. Loads are always restricted by: volume, weight or combination of this connected with ADR rules. Shipment is a “transaction” for transportation from point A to point B. There are always starting point and ending point, no matter how much intermediate stops for reload or other things. Shipments never restricted by: volume or weight (excluding some connections to ADR rules, but it is not the point).
      Here we have 1. Load (restricted) and then 2. Shipment (making automatically from line in load with different address of shipping – without restrictions). 3. Release to warehouse – here we have checking for Load overload (Load/Shipment). The system cannot find this earlier. If the volume/weight restrictions are saved (no overload) we can have more than one shipment in Load and then we looking for best rout …. Some shipment could have address that destroying ours rules of routings and costs for shipping. It is not optimal algorithm.
      Proper logic should be different: The operator should make shipment from lines even from multiple sales orders with different sipping addresses on each line. In that logic, you make shipment from A to B (also split for customer, because an address could be exactly the same, but different firms and we needed separate packing and invoices). When we have all shipments we build/search Loads. This is a point to use automats for searching routing in existing Loads or build new Loads with own routings heritage from Shipments. On this moment we can choose shipping (even multiple) and search the best Load for them with restriction for type of load (container, small truck, railway carriage etc.). If shipment are too big for load, we can see info about it, and proposition to split it on load or split it manually. If we have more than one shipment in Load we can build a rout simply setting a sequence number of shipment in load, and we have automatic LiFo rule for loading in warehouse! Of course in future can be implemented solutions for Traveling Salesman Problem. For example:
      In examples the letter is a symbol for a city/address of delivery, if letter is far away from A (our warehouse) the length is longer. For e.g.: A-to-B is 25km (~16 miles), A-to-C is 40km, A-to-K is 120km, A-to-Z is 400km.
      1. Shipment_S1 from A-to-K for 90 pallets some goods. We make one shipment, and look one the best Load. We choose trucks, but restrictions are only 30pallets per truck. We split Shipment_S1 for 3 equal part, we make S1_1- Load_L1 from A-to-K, S1_2- Load_L2 from A-to-K, S1_3 – Load_L3 from A-to-K. For each load we reserve one ramp and do others plans (appointment, release to warehouse etc.). Of course we can choose a railway carriage with setting pallets one on another (~ typically 144 pallets per cart) or simply (~72 pallets per cart). In this case we have S1 (no splits) – Load_L4 from A-to-K for all 90 pallets or mixing S1_4 – Load_L5 from A-to-K for 72 pallets on rail and S1_5 – Load_L5 from A-to-K for 18 pallets on truck or Load_L6 (see next example).
      2. Shipment_S2 from A-to-B for 2 pallets, Shipment_S3 from A-to-Z for 3 pallets, Shipment_S4 from A-to-C for 7 pallets. All shipment goes to one Load (one truck) – Load_L6. In this moment we set sequence manually or automatically. S2 get 1, S3 gets 3, S4 gets 2 and if we want maximally use volume of the truck, we can get also S1_5. And then sequence be like: S2-1; S3-4, S4-2, S1_5-3. You now 12 pallets + 18 pallets is exactly 30 ;). We compose the Load_L6 from A-to-Z (the farthest city) by B,C and K. For warehouse we can set sequence of loading (in future using mobile devices). The order of loading (LiFo) will be opposite for sequence. They goes: S3 (3pal to Z),S1_5 (18pal to K), S4 (7pal to C) and S2 (2pal to B). Order of unloading will be: B – 25km (S2-2pal), C – 40km (S4 – 7pal), K – 120km (S1_5 – 18pal), Z – 400km (S3 – 3pal). All length of rout is 400km.
      For crossdocking shipments it will be also easier, because we could use option for load searching with checkbox “cross” and it will be working some like searching the airplane flights with or without transfers.
      If logic will be as is exemplify above, and we use shipment like “a smallest unit of routing”, we can do any combination of rout and load. Times of transportation, meeting points for crossdocking and planning for delivery dates will be easier, because we will have sequence of shipments in load.

  13. pamungkas says:

    Can I show up freight bill charges without PO and SO ? i used directly used transfer order. but did’nt show up invoice matches and freight bill detail, can u help me please..

    1. wicco choi says:

      dear pamungkas,

      you cannot create the invoice because for TO you must customization..

  14. MohammadT says:

    Hi Markus,

    Great article, thank you so much for your explanation.

Skip to main content