We are a shipbuilding company with the functional currency of USD. We entered in the long-term contract to build a ship for a customer in China. The contract price is set in CNY.

How do we account for a contract asset under IFRS 15? In USD or in CNY? And, the second question – how do we translate the amounts in CNY to USD? Should we assess the transaction price based on the foreign exchange rate applicable at the date of the contract and then use it throughout the contract?


The transaction price in the contract is set in CNY. Therefore, you will account for foreign currency items, because your functional currency is USD.

Now, how to apply foreign exchange rates?

It all boils down to the question whether we are dealing with monetary or non-monetary items.

The standard IAS 21 defines monetary items as units of currency held and assets and liabilities to be received or paid in a fixed or determinable number of units of currency.

Are contract assets monetary?

A contract asset arises when an entity performs, but is not entitled to a payment yet.

Therefore, simply said: performance is the first, payment follows after that.

As a result, how will the contract asset be settled?

In most cases, by the payment that follows.

It means that the contract assets are monetary.

The exception is when the entity is entitled to some other form of payment, like goods or non-monetary items, but in most cases, contract assets are monetary.

As a result, you should initially recognize the contract asset applying the rate at the date of the transaction , and at the end of the reporting period, translate it using year-end exchange rate with the difference recognized in profit or loss.


Imagine you build a ship with the revenue recognized over time. You are recognizing revenues monthly. You start working on 1 November 20X3 and on 30 November, you assess that based on the progress towards completion, you should recognize a contract asset amounting to 700 000 CNY.

The rate at 31 November 20X3 is 1 CNY = 0,1421 USD, thus you recognize revenue and a contract asset amounting to 99 470 USD. The journal entry is

  • Debit Contract assets: USD 99 470
  • Credit Revenues: USD 99 470

Now, at the year-end, the exchange rate is 1 CNY = 0,145 USD.

Since the contract asset is monetary, you need to translate it by the year-end rate.

Special For You! Have you already checked out the  IFRS Kit ? It’s a full IFRS learning package with more than 40 hours of private video tutorials, more than 140 IFRS case studies solved in Excel, more than 180 pages of handouts and many bonuses included. If you take action today and subscribe to the IFRS Kit, you’ll get it at discount! Click here to check it out!
Therefore, 700 000 CNY*0,145 USD = 101 500 USD.

The difference from previously recognized amount is 2 030 USD, so the year-end journal entry is:

  • Debit Contract assets: USD 2 030
  • Credit Foreign exchange gain in profit or loss: USD 2 030


Are contract liabilities monetary?

As opposed to contract assets, most contract liabilities are non-monetary.


Because, the situation is different. First, there is a payment by the customer followed by the delivery of the performance obligation.

For example, this happens when the customers are required to pay up-front.

In most cases, contract liabilities are NOT discharged by the payment of cash. Instead, they are discharged by the delivery of non-monetary items, whether goods or services in line with the contract.

It means that contract liabilities are NON-monetary.

As a result, you should initially recognize the contract liability applying the rate at the date of the transaction, and at the end of the reporting period, you will not translate it using the reporting-date exchange rate. You leave it as it is.

Then when you deliver the goods, you simply derecognize it at that rate.


Let’s take the same case as above, just this time, the contract liability of 700 000 CNY arises since the client paid up front on 1 November 20X3.

The exchange rate on 1 November 20X3 was 1 USD = 0,1368 CNY, so you need to recognize a contract liability of 95 760 USD.

The journal entry on 1 November is:

  • Debit Bank account: 95 760 USD
  • Credit Contract liability: 95 760 USD

You do not perform any entries on 31 December 20X3.

Then imagine that you deliver the ship on 1 February 20X4, when the exchange rate is 1 USD = 0,149 CNY. The total contract price was 7 mil CNY, thereof 700 000 paid up-front and 6,3 mil CNY to be paid when the ship is delivered.

Let’s say that this time, the performance obligation is satisfied at the point of time (at delivery of the ship), so we are not applying progress towards completion method here, to make it simple.

Thus, you will recognize the receivable for the remaining part of 6.3 mil CNY, applying the transaction date rate, amounting to 938 700 USD (6.3 mil*0,149).

  • Debit Trade receivable: 938 700 USD
  • Credit Revenue from sale: 938 700 USD

And then, we need to deal with the non-monetary contract liability that is discharged by the delivery of the ship:

  • Debit Contract liability: 95 760 USD
  • Credit Revenue from sale: 95 760 USD

Of course, you need to take care about cost of sales and inventories, but that’s not the subject of this article.

You can see more examples directly in the illustrative examples coming with IFRIC 22.

Final note

If you are not sure what is monetary or non-monetary, here’s the cheat sheet: