{"id":2125,"date":"2024-07-04T09:21:34","date_gmt":"2024-07-04T02:21:34","guid":{"rendered":"https:\/\/360-consulting.co\/?page_id=2125"},"modified":"2026-06-23T11:38:19","modified_gmt":"2026-06-23T04:38:19","slug":"tax-residency-date-calculator-thailand","status":"publish","type":"page","link":"https:\/\/360-consulting.co\/en\/tax-residency-date-calculator-thailand\/","title":{"rendered":"Tax Residency Calculator for Thailand"},"content":{"rendered":"\n

Thai Tax Residency is defined in Section 41 of the Thai Revenue Code. It says: Any person staying in Thailand for a period or periods aggregating 180 days or more in any tax year<\/strong> (= calendar year) shall be deemed a resident of Thailand.<\/p>\n\n\n\n

Therefore, if you are planning to either become a Thai Tax Resident or not, you should keep track of your days that you spend in Thailand in each calendar year. This calculator allows you to enter your stay or multiple stays in Thailand and it will tell you, whether you will be considered Tax Resident or not in each particular tax year.<\/p>\n\n\n<\/p>\n\n\n\n\n\n \n Tax Residency Calculator<\/title>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <style>\n #tax-calculator {\n max-width: 100%;\n padding: 10px;\n font-family: Arial, sans-serif;\n }\n .entry {\n margin-bottom: 15px;\n display: flex;\n flex-wrap: wrap;\n }\n .entry-fields {\n width: 95%;\n display: flex;\n flex-direction: column;\n }\n .entry label {\n display: flex;\n flex-direction: column;\n margin-bottom: 5px;\n }\n input[type=\"date\"] {\n width: 100%;\n padding: 8px;\n box-sizing: border-box;\n border: 1px solid #ccc;\n border-radius: 4px;\n }\n button {\n padding: 10px 15px;\n margin: 5px 0;\n background-color: #0073aa;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n }\n .remove-entry {\n width: 5%;\n background-color: #dc3232;\n align-self: center;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: 5px;\n }\n @media (min-width: 600px) {\n #tax-calculator {\n max-width: 600px;\n }\n .entry {\n flex-wrap: nowrap;\n }\n .entry-fields {\n width: auto;\n flex-direction: row;\n }\n .entry label {\n flex: 1;\n margin-right: 10px;\n }\n input[type=\"date\"] {\n width: auto;\n }\n .remove-entry {\n width: auto;\n height: auto;\n margin-left: 10px;\n }\n }\n <\/style>\n<\/head>\n<body>\n <div id=\"tax-calculator\">\n <div id=\"entries\">\n <div class=\"entry\">\n <div class=\"entry-fields\">\n <label>Entry Date: <input class=\"entry-date\" type=\"date\" required><\/label>\n <label>Departure Date: <input class=\"departure-date\" type=\"date\" required><\/label>\n <\/div>\n <button class=\"remove-entry\" type=\"button\">\u00d7<\/button>\n <\/div>\n <\/div>\n <div>\n <button id=\"add-entry\" type=\"button\">Add Another Stay<\/button>\n <button id=\"calculate\" type=\"button\">Calculate<\/button>\n <\/div>\n <div class=\"error\" id=\"error\" style=\"color: red; margin-top: 10px;\"><\/div>\n <div id=\"results\" style=\"margin-top: 20px;\"><\/div>\n <\/div>\n\n <script>\n document.addEventListener('DOMContentLoaded', function() {\n function addEntry() {\n const entry = document.createElement('div');\n entry.className = 'entry';\n entry.innerHTML = `\n <div class=\"entry-fields\">\n <label>Entry Date: <input type=\"date\" class=\"entry-date\" required><\/label>\n <label>Departure Date: <input type=\"date\" class=\"departure-date\" required><\/label>\n <\/div>\n <button type=\"button\" class=\"remove-entry\">\u00d7<\/button>\n `;\n document.getElementById('entries').appendChild(entry);\n entry.querySelector('.remove-entry').addEventListener('click', removeEntry);\n }\n\n function removeEntry(e) {\n const entries = document.querySelectorAll('.entry');\n if(entries.length > 1) {\n e.target.closest('.entry').remove();\n } else {\n alert(\"You must have at least one entry.\");\n }\n }\n\n function calculateResidency() {\n const entries = document.querySelectorAll('.entry');\n const stays = [];\n const errorElement = document.getElementById('error');\n errorElement.textContent = '';\n\n const staySet = new Set();\n entries.forEach((entry) => {\n const entryDate = new Date(entry.querySelector('.entry-date').value);\n const departureDate = new Date(entry.querySelector('.departure-date').value);\n const stayString = `${entryDate.toISOString()}-${departureDate.toISOString()}`;\n if(!staySet.has(stayString)) {\n staySet.add(stayString);\n stays.push({\n entry: entryDate,\n departure: departureDate\n });\n }\n });\n\n if(stays.length === 0) {\n errorElement.textContent = 'Error: No valid entries provided.';\n return;\n }\n\n stays.sort((a, b) => a.entry - b.entry);\n\n for(let i = 1; i < stays.length; i++) {\n if(stays[i].entry <= stays[i - 1].departure) {\n errorElement.textContent = 'Error: Stays are overlapping. Please correct the dates.';\n return;\n }\n }\n\n const yearlyStays = {};\n stays.forEach(stay => {\n let currentDate = new Date(stay.entry);\n while(currentDate <= stay.departure) {\n const year = currentDate.getFullYear();\n if(!yearlyStays[year]) yearlyStays[year] = 0;\n yearlyStays[year]++;\n currentDate.setDate(currentDate.getDate() + 1);\n }\n });\n\n let resultsHtml = '<h2>Calculation:<\/h2>';\n for(const [year, days] of Object.entries(yearlyStays)) {\n resultsHtml += `<p>${year}: ${days} days`;\n if(days >= 180) {\n resultsHtml += ` <span style=\"color: red;\">-> Tax Resident in Thailand for the year ${year}<\/span>`;\n } else {\n resultsHtml += ` <span style=\"color: green;\">-> Not a Thai Tax Resident for the year ${year}<\/span>`;\n }\n resultsHtml += '<\/p>';\n }\n\n document.getElementById('results').innerHTML = resultsHtml;\n }\n\n document.getElementById('add-entry').addEventListener('click', addEntry);\n document.querySelector('.remove-entry').addEventListener('click', removeEntry);\n document.getElementById('calculate').addEventListener('click', calculateResidency);\n });\n <\/script>\n<\/body>\n<\/html>\n\n\n<p>\n\n\n\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading2125_ef8154-66, .wp-block-kadence-advancedheading.kt-adv-heading2125_ef8154-66[data-kb-block=\"kb-adv-heading2125_ef8154-66\"]{padding-top:var(--global-kb-spacing-md, 2rem);padding-bottom:var(--global-kb-spacing-sm, 1.5rem);font-size:var(--global-kb-font-size-sm, 0.9rem);font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading2125_ef8154-66 mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading2125_ef8154-66[data-kb-block=\"kb-adv-heading2125_ef8154-66\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading2125_ef8154-66 img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading2125_ef8154-66[data-kb-block=\"kb-adv-heading2125_ef8154-66\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<p class=\"kt-adv-heading2125_ef8154-66 wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading2125_ef8154-66\"><strong>Disclaimer:<\/strong> This calculator is provided for informational purposes only and should not be considered tax advice. The results are based on your input and may not reflect your specific tax residency situation. We disclaim any liability for the accuracy of the results or any actions you take based on them. We recommend consulting with a tax professional for definitive guidance on your tax residency status.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Thai Tax Residency is defined in Section 41 of the Thai Revenue Code. It says: Any person staying in Thailand for a period or periods aggregating 180 days or more in any tax year (= calendar year) shall be deemed a resident of Thailand. Therefore, if you are planning to either become a Thai Tax…<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"show","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","slim_seo":{"title":"Tax Residency Calculator for Thailand - 360 Consulting - Expat & Legal Services","description":"Thai Tax Residency is defined in Section 41 of the Thai Revenue Code. It says: Any person staying in Thailand for a period or periods aggregating 180 days or mo"},"footnotes":""},"class_list":["post-2125","page","type-page","status-publish","hentry"],"taxonomy_info":[],"featured_image_src_large":false,"author_info":{"display_name":"360 Consulting","author_link":"https:\/\/360-consulting.co\/en\/author\/360-consulting\/"},"comment_info":0,"_links":{"self":[{"href":"https:\/\/360-consulting.co\/en\/wp-json\/wp\/v2\/pages\/2125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/360-consulting.co\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/360-consulting.co\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/360-consulting.co\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/360-consulting.co\/en\/wp-json\/wp\/v2\/comments?post=2125"}],"version-history":[{"count":43,"href":"https:\/\/360-consulting.co\/en\/wp-json\/wp\/v2\/pages\/2125\/revisions"}],"predecessor-version":[{"id":2407,"href":"https:\/\/360-consulting.co\/en\/wp-json\/wp\/v2\/pages\/2125\/revisions\/2407"}],"wp:attachment":[{"href":"https:\/\/360-consulting.co\/en\/wp-json\/wp\/v2\/media?parent=2125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}<!-- This website is optimized by Airlift. Learn more: https://airlift.net. Template:. Learn more: https://airlift.net. Template: 6a1f53265612b71a48cafe5d. Config Timestamp: 2026-06-02 22:03:16 UTC, Cached Timestamp: 2026-07-24 22:10:10 UTC, Optimization Time: 7.82ms -->