Intercompany Project Invoicing in AX 2012 R3 (Part 2)

In my last post, I showed you how to set up the new intercompany invoicing for projects feature in the upcoming AX 2012 R3 release. I’ll finish by show you how the transactions are actually processed. In my example, I’m an employee in Contoso Consulting USA (SUSB) working on a project in Contoso Consulting France (SFRA). Below is my weekly timesheet:

To keep things simple, I have only recorded my work on Monday for a project in SFRA. My timesheet could have a mix of SFRA and SUSB projects. After submitting my time to workflow and posting the approved timesheet, let’s take a look at the ledger voucher.

The first two lines of the voucher account for the payroll cost of the employee time and will look familiar to you if you have worked with AX projects. However, note that the last two lines (a 10% markup on the cost) are generated to handle the accrued revenue that will be recognized when SFRA will be billed for the time. Before AX 2012 R2 CU7, this amount would have been posted directly to the contracting legal entity ledger. The next step is to generate an invoice for SFRA. This is done by clicking the New button on the list page Project management and accounting > Common > Project invoices > Intercompany customer invoices

In this example, I am selecting the single timesheet transaction that I previously posted. You can create an single invoice with multiple timesheets, employee expenses, and vendor expenses. You can also create them in batch via Project management and accounting > Periodic > Project invoices > Create intercompany customer invoices. When I click OK, I can see the resulting invoice.

Unlike a standard project invoice, this invoice is based on the free text invoice in the accounts receivable module. There is an additional tab on the line details where you can see details about the source transaction. The sales price defaults to the one established in the transfer pricing form but can be changed by the user (for example, you may need to negotiate a lower rate with the contracting legal entity). Let’s take a quick look at the voucher from posting this invoice.

Two of the lines in the voucher represent the reversal of the the revenue accruals done at time of timesheet posting. The other two lines are the intercompany revenue and receivable customer balance from the invoice posting. In this case, they are the same amount but you could also recognize more or less revenue than originally accrued. Also note that if there are tax requirements on the intercompany labor, they would be represented here.

The other thing that happens when the intercompany invoice is posted is that a corresponding vendor invoice is created in the contracting legal entity. I’ll switch over to the other company and find this invoice from Accounts payable > Common > Vendor invoices > Pending vendor invoices. Let’s take a look at the vendor invoice.

The first thing you will notice is that this is not an item-based invoice line. It uses the procurement category that we set up previously for the contracting legal entity. The other thing that you might notice is the value of the Project category field in the line details. The category is an hour category (PM), not an item category. We have extended the vendor invoice to support any project category (item, hour, or expense). Finally, notice that the cost price (in USD) is the same that we used on the intercompany customer invoice. The sales price (in EUR) is based on the sales price setup in the contracting company and represents what the project customer will pay. 

To wrap up, let’s take a look at the project transaction created from posting the intercompany vendor invoice.

As you can see, the costs are recorded against the project in SFRA. The Transaction origin is “Vendor invoice” and the Worker field references an employee of SUSB. If this transaction is for a time and materials project, it is ready to be added to a project invoice proposal.

Comments (28)

  1. Sandeep Chaudhury says:

    Hi Brian,

    Thank you for this post. Very nicely put up and informative. I just have a few comments.

    1. It will be very nice to have an option where users can choose between the two models of handling intercompany timesheets. One is what it is until CU6 and the other model will be the new process you have described. Your thoughts ?
    2. Automatic creation of vendor invoice is a very good functionality. BTW, how are the financial dimensions handled here ? Are they all fetched from the Project/Vendor?

    3. Is the Project master now shared across all entities in R3, as we are able to see the Project details under "Intercompany Project tab" of Intercompany Project Invoices form ?

    4. When the timesheet is approved and posted in resourcing entity, there are no project transactions created in the contracting legal entity. So will it be it true to say that, we cannot accrue revenue and  bill the customer unless the intercompany vendor invoice is posted ?



  2. Christian Boodts says:

    Great blog, thanks !

  3. Thanks for the feedback, Sandeep. Here are a few answers to your questions:

    1. We considered leaving the previous intercompany timesheet process in place but supporting both code paths was too much for minimal benefit. The new process is a superset of the old process and you can accomplish the same effect by creating and posting the intercompany invoices and resulting vendor invoices in a scheduled batch.
    2. The dimension values default from the vendor (intercompany account) and the project.

    3. Project is still bound to a legal entity. The intercompany project tab on the invoice is a cross-company query that comes from the LE selected on the timesheet line.

    4. Yes, the contracting customer cannot be billed until the intercompany and resulting vendor invoice are processed. By disconnecting the intercompany accounting from the timesheet, we enable adjustments to the transferred cost. We heard from several customers that they didn't like to "lock in" the transfer prices until just before the end customer was invoiced. It does add some complexity but a lot more flexibility.


  4. Teki says:

    Nice Blog!!,

    One of the nice features is to "Accrue Revenue" when lending resources.

  5. Avinash says:

    hi brian

    just what i was looking for. can you put in a scenario for posting vendor expenses against a project in borrowing legal entity. would be really useful.

  6. Jussi says:

    How about the Project date?? You have originally posted the hours in 1/13/2014 but after Intercompany Invoicing the project date has changed to 1/14/2014. So it looks that it has changed the date, when work has been reported (01/13/2014) to the Invoice date (01/14/2014)

  7. Avinash says:

    hi brian

    great job – clearly explained the logic and flow of the intercompany project billing. can you also put in steps to booking AP invoice against a project in CLE (especially for CU7). would be of great help.

  8. Emilien Muller says:

    Hi Brian,

    Thanks a lot for this interesting blog. It's not so easy to find contributions on the interco project features of AX…

    Do you know if AX 2012 R2 CU7 supports interco hour transactions on a project setup with "Never Ledger" for "Post Costs – hour" and "Accrue revenue – hour" enabled (Project group settings)?

    I'm asking because we are facing the following issues during our testing:

    1. As you mentioned in your previous post, the hours posting in the resourcing entity is intercompany cost against payroll allocation and WIP against accrued revenue. Is there a way to bypass the first entry (eg: with zero amounts) and still recognize the WIP?
    2. When posting the A/P invoice in the contracting entity, the accounting entry is Never Ledger against Vendor Balance. What does mean a "Never Ledger" posting type? It seems that the costs are not posted to the project and no WIP is recognized.

    3. Finally (and probably a consequence of the previous point), we are unable to invoice the final customer. The hour transaction does not appear on the invoice proposal.

    Thanks for your appreciated feedback.


  9. Olivier Saroléa says:

    Hello Brian,

    Thank  you for your posting.  Is it possible to post automatically the vendor invoice when you have generated the intercompany customer invoice please?

    Or the vendor invoice is only in the pending vendor invoices and we have to post it manually?

    Thank you for help,



  10. Jussi, the project date on the final hour transaction should have been the date of the original timesheet entry. We have made an update available on LCS for both R3 and CU7 to transfer the original transaction date via the vendor invoice line posting. This will ensure that the final invoice presented to the customer in the contracting legal entity will have the correct date.

  11. Avinash, the ability to book a vendor invoice in an RLE against a project in a CLE was added in R3, not in CU7. I will look at writing another blog post with an example of this.

  12. Marie Demesmaeker says:

    Hi Brian,

    After submitting my time to workflow and posting the approved timesheet, what's the easiest and fasted way to take a look at the ledger voucher? On the timesheet, if you click on Hours transactions, the Hours transaction form is empty. I presume this is due to the fact in the CLE nothing is booked yet. So, if only hours were booked on the ICO project, how do we know the Voucher number of the Timesheet booking in the RLE / how do we see the ledger voucher in no time?

    Kind regards,


  13. Hi, Marie. Are you using CU7 or R3? On R3, we added a button on the timesheet details form (in the AX client) to view the voucher. I don't think this button was there in CU7 but you can verify.

  14. Smriti says:

    I need to find in the code where the sales price is being updated for the table ProjItemTransSale table. Can you let me know on this.I have tried checking in all methods and in table level but unable to trace this. Can you please let me know

  15. Smriti, you need to be a little descriptive of what you are trying to do. The ProjItemTransSale table is populated during the project transaction posting process. The sales price is calculated during by the source of the transaction (item journal, vendor invoice, product receipt, etc.) Item pricing is usually determined by the inventory module but it also depends on whether the item is a stocked or non-stocked or a category-based purchase line.

  16. Priyadhaarshan says:

    "Avinash, the ability to book a vendor invoice in an RLE against a project in a CLE was added in R3, not in CU7. I will look at writing another blog post with an example of this."

    Hi Brian – Can you help by letting know on this functionality. I still find that I am not able to choose projects in intercompany journals (General journal, invoice journals, hour journal etc). The warning "Project not allowed for intercompany." still shows up in r3 as well.

  17. Priyadhaarshan, you need to use the vendor invoice source document rather than the invoice journal. It will let you select a project from another company. We didn't add this support to the journals.

  18. Tatyana Wentzel says:

    Hi, Brian.  Thank you for the detailed steps, they helped a lot.  I have a question about project P&L from the global point of view.  For example, if in your scenario, the worker in US company accrued cost $100, US company billed France company project for $120, and then France company billed that transaction to the outside customer for $150, from the project perspective, you’ll see $120 cost and $30 margin.  But from the global project management point, you should be able to see $100 cost and $50 margin.  Is there a way to see on the France project the fact that the original spent amount was $100?

    Thank you,

    Tatyana Wentzel

  19. Hi, Tatyana! If you are talking about at the aggregate level, when you consolidate the P&L across companies, the intercompany cost and revenue should net out so that you aren't "double dipping" revenue. On a single company income statement, your transfer pricing model should determine where the revenue will accrue. If you want it to stay with the lending company, you can use "percentage of sales price". If you want it to stay in the borrowing company, you can use "charges percentage".

  20. One more thing, if you are talking about an individual transaction, you can trace from the hour transaction in the borrowing company to the vendor invoice line to the original timesheet line in the lending company.

  21. Tatyana Wentzel says:

    Thank you, Brian, for the response.  My post was about Project P&L, not the GL.  GL consolidation would work. I’m talking about the entire project P&L report where you have Project Hour-Cost column that summarizes cost from all project hour transactions.  This column will have cost plus markup vs. original cost from the user timesheet.  So, from the global project management perspective, your project Gross margin will be decreased by the markup amount.  Based on your second post, it looks like we can add a new column to the Project P&L report and for each hour transaction, go back to the original timesheet through Vendor Invoice and then summarize it them all for the project and use that cost for margin calculation.

    Thank you,


  22. If you don't want to "charge" borrowing companies for resources, why would you use a markup in the transfer price? Yes, in the borrowing company, you will not get the base labor cost but I expect this is desired (takes "opportunity cost" into account).

  23. Chandu Naresh says:

    Hi Brian,

    This is the most value added feature, I was looking for from Project Management.

    I have a request, can we have a Project Inter-Company P&L Statement at the RLE, by each project and Inter Company customer wise as part of the standard solution?

    This will help asceratining overall project profitability across the entities (with markup & without markup – category wise).

  24. Tatyana Wentzel says:

    Per US and foreign income tax laws, as a foreign subsidiary, I cannot work for another company for free.  So, if my borrowing and lending companies are in two different countries, I have to have arm’s length transactions for billing/revenue purpose.  So, if I don’t add a markup to the transfer price in AX, I have to develop another way to reallocate revenue back to the lending company based on its employees hours worked.  

  25. Hi, Chandru. The project subledger is bound to a single legal entity (as is the project) so currently the only way to get a cross-company P&L is through the Analysis Services cube (or a fairly complicated cross-company query). Of course, you will have to be careful if your companies use different currencies. Also, Project ID will not be guaranteed to be unique unless you prefix them with the company ID. At some point, we would like to "unstripe" the project and project subledger but I'm not sure when that will happen

  26. Chandu Naresh says:

    Hi Brian,

    Thank you for your reply.

    We at Hitachi Solutions are taking this as a challenge considering the pains of our multiple clients.

    We will try to develop the cross company reporting for Project profitability. Will keep you updated on the results

  27. Lally says:

    Hi Brain ,

    Ax 2012 R2/ R3

    Generally when user posts any invoice transactions against the customer in the project module , it will post to sub ledger ( Customer ) and main ledger ( main account ) , based on the configuration that is main account is linked with customer group in the customer posting profile.

    But when it comes to On hold Funding type is linked with internal organization , so when the costs posts to on hold funding type , how it is and where it is linked with sub ledger and main account ?( like customer posting profile )

    Does it posts to sub ledger and main ledger when the entries posts to On hold funding type ?

    Thanks in advance

  28. Lally, as John noted on the Community site, on-hold revenue does not get posted. It represents potential revenue that may not be charged because of limits in the project contract. If you can renegotiate the limits with the customer, you can then adjust the transactions to make them billable.