There have been several developments in the “Transfer Pricing” legislation in Thailand since it joined the Inclusive Framework on “Base Erosion and Profit Shifting” (BEPS) in 2017.

On November 21, 2018, Thailand introduced specific Transfer Pricing provisions in the Income Tax Act, which apply to accounting periods beginning on or after January 1, 2019.

The Thai Revenue Department issued the Notification of the Director General of the Revenue Department No. 407 (the Notice) on September 30, 2021, which describes the information to be included in the Transfer Pricing documentation when requested by the Revenue Department.

Related Parties

A related party is defined under Thai laws as:

  • A legal entity directly or indirectly holding shares of another legal entity exceeding 50% upwards of the total share capital;
  • Two legal persons with the same shareholder directly or indirectly holding more than 50% of the total share capital of these entities; or
  • Legal entities related by shareholding, management, or control, whereby one legal entity cannot act independently of another legal entity as defined in the Ministerial Regulations.

Transfer Pricing Methods

The Thai tax authority has provided a list of five acceptable Transfer Pricing methods to be considered when determining the most appropriate method for pricing related party transactions.

These are methods recognized by the OECD. The Thai tax authority also permits the application of other methods not included in the list.

  • Comparable Uncontrolled Price Method.
  • Cost Plus Method.
  • Resale Price Method.
  • Profit Split Method.
  • Transactional Net Margin Method.

Transfer Pricing Documentation

The Transfer Pricing laws of Thailand require companies or legal partnerships with annual revenues higher than THB 200 million to prepare supporting documentation indicating their related party or legal partnership transactions comply with the Arm’s Length Principle.

Related Party Filing Form

Large companies must file an annual corporate income tax (CIT) return and a Related Party Disclosure Form. The information on related parties and transaction amounts must be included in the Related Party Disclosure Form.

Local Report

Companies required to file the Related Party Disclosure Form may receive a notification from the Revenue Department with the purpose of filing the Local Report. It must be filed within 60 days of receipt.

Country-by-Country Reporting

The Thai Country-by-Country Reporting requirements are under the OECD. Country-by-Country Reports must be filed to the Revenue Department jointly with a Thai CIT if:

  • Consolidated group revenue in the accounting period concerned equals THB 28 000 million (28 000 000 000 000) or more.

Transfer Pricing Penalties

Failure to properly file the Local Report may be subject to a fine not exceeding THB 200,000 (two hundred thousand).

Failure to properly file the Related Party Disclosure Form may result in a fine not exceeding 200,000 THB (two hundred thousand).

There are no penalty provisions related to the Country-by-Country Reporting.

Source: The Revenue Department of Thailand

Read More

 Author:       Wolfgang Hartl
 Author URI:
function WCD_rmrl(options) {
  const readLessText = options.readLessText;
  const readMoreText = options.readMoreText;

  const rmrlContent = document.querySelectorAll("[wcd_rmrl_percentage]");

  rmrlContent.forEach((element) => {
    // INITIAL SETUP (define height, overflow and attributes) = "hidden";
    element.setAttribute("wcd_rmrl_max", element.clientHeight + "px");

    var percentage = element.getAttribute("wcd_rmrl_percentage");
    var height = element.clientHeight;
    height = Math.round((height / 100) * percentage) + "px";

    element.setAttribute("wcd_rmrl_min", height); = height;

    trigger = element.nextSibling;
    trigger.addEventListener("click", function () {
      if ( == element.getAttribute("wcd_rmrl_min")) { = element.getAttribute("wcd_rmrl_max");
        this.childNodes.forEach((node) => {
          if (node.nodeValue !== null) {
            node.nodeValue = readLessText;
      } else { = element.getAttribute("wcd_rmrl_min");
        this.childNodes.forEach((node) => {
          if (node.nodeValue !== null) {
            node.nodeValue = readMoreText;
  const rmrl = new WCD_rmrl({
    readLessText : 'Read Less',
    readMoreText : 'Read More',


Contact us

To communicate with us you need to fill out the following form

Google reCaptcha: Invalid site key.