{"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":"2024-07-25T10:41:50","modified_gmt":"2024-07-25T03:41:50","slug":"tax-residency-date-calculator-thailand","status":"publish","type":"page","link":"https:\/\/360-consulting.co\/de\/tax-residency-date-calculator-thailand\/","title":{"rendered":"Rechner f\u00fcr die steuerliche Ans\u00e4ssigkeit in Thailand"},"content":{"rendered":"\n<p>Thai Tax Residency is defined in Section 41 of the Thai Revenue Code. It says: Any person staying in Thailand for <strong>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<p>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\n\n\n<\/p>\n\n\n\n<!DOCTYPE html>\n<html>\n<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script id="bv-lazyload-images" data-cfasync="false" bv-exclude="true">var __defProp=Object.defineProperty;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var bv_lazyload_event_listener="load",bv_lazyload_events=["mousemove","click","keydown","wheel","touchmove","touchend"],bv_use_srcset_attr=!1,bv_style_observer,img_observer,picture_lazy_observer;bv_lazyload_event_listener=="load"?window.addEventListener("load",event=>{handle_lazyload_images()}):bv_lazyload_event_listener=="readystatechange"&&document.addEventListener("readystatechange",event=>{document.readyState==="interactive"&&handle_lazyload_images()});function add_lazyload_image_event_listeners(handle_lazyload_images2){bv_lazyload_events.forEach(function(event){document.addEventListener(event,handle_lazyload_images2,!0)})}__name(add_lazyload_image_event_listeners,"add_lazyload_image_event_listeners");function remove_lazyload_image_event_listeners(){bv_lazyload_events.forEach(function(event){document.removeEventListener(event,handle_lazyload_images,!0)})}__name(remove_lazyload_image_event_listeners,"remove_lazyload_image_event_listeners");function bv_replace_lazyloaded_image_url(element2){let src_value=element2.getAttribute("bv-data-src"),srcset_value=element2.getAttribute("bv-data-srcset"),currentSrc=element2.getAttribute("src");currentSrc&&currentSrc.startsWith("data:image/svg+xml")&&(bv_use_srcset_attr&&srcset_value&&element2.setAttribute("srcset",srcset_value),src_value&&element2.setAttribute("src",src_value))}__name(bv_replace_lazyloaded_image_url,"bv_replace_lazyloaded_image_url");function bv_replace_inline_style_image_url(element2){let bv_style_attr=element2.getAttribute("bv-data-style");if(console.log(bv_style_attr),bv_style_attr){let currentStyles=element2.getAttribute("style")||"",newStyle=currentStyles+(currentStyles?";":"")+bv_style_attr;element2.setAttribute("style",newStyle)}else console.log("BV_STYLE_ATTRIBUTE_NOT_FOUND : "+entry)}__name(bv_replace_inline_style_image_url,"bv_replace_inline_style_image_url");function handleLazyloadImages(entries){entries.map(entry2=>{entry2.isIntersecting&&(bv_replace_lazyloaded_image_url(entry2.target),img_observer.unobserve(entry2.target))})}__name(handleLazyloadImages,"handleLazyloadImages");function handleOnscreenInlineStyleImages(entries){entries.map(entry2=>{entry2.isIntersecting&&(bv_replace_inline_style_image_url(entry2.target),bv_style_observer.unobserve(entry2.target))})}__name(handleOnscreenInlineStyleImages,"handleOnscreenInlineStyleImages");function handlePictureTags(entries){entries.map(entry2=>{entry2.isIntersecting&&(bv_replace_picture_tag_url(entry2.target),picture_lazy_observer.unobserve(entry2.target))})}__name(handlePictureTags,"handlePictureTags");function bv_replace_picture_tag_url(element2){const child_elements=element2.children;for(let i=0;i<child_elements.length;i++){let child_elem=child_elements[i],_srcset=child_elem.getAttribute("bv-data-srcset"),_src=child_elem.getAttribute("bv-data-src");_srcset&&child_elem.setAttribute("srcset",_srcset),_src&&child_elem.setAttribute("src",_src),bv_replace_picture_tag_url(child_elem)}}__name(bv_replace_picture_tag_url,"bv_replace_picture_tag_url"),"IntersectionObserver"in window&&(bv_style_observer=new IntersectionObserver(handleOnscreenInlineStyleImages),img_observer=new IntersectionObserver(handleLazyloadImages),picture_lazy_observer=new IntersectionObserver(handlePictureTags));function handle_lazyload_images(){"IntersectionObserver"in window?(document.querySelectorAll(".bv-lazyload-bg-style").forEach(target_element=>{bv_style_observer.observe(target_element)}),document.querySelectorAll(".bv-lazyload-tag-img").forEach(img_element=>{img_observer.observe(img_element)}),document.querySelectorAll(".bv-lazyload-picture").forEach(picture_element=>{picture_lazy_observer.observe(picture_element)})):(document.querySelectorAll(".bv-lazyload-bg-style").forEach(target_element=>{bv_replace_inline_style_image_url(target_element)}),document.querySelectorAll(".bv-lazyload-tag-img").forEach(target_element=>{bv_replace_lazyloaded_image_url(target_element)}),document.querySelectorAll(".bv-lazyload-picture").forEach(picture_element=>{bv_replace_picture_tag_url(element)}))}__name(handle_lazyload_images,"handle_lazyload_images");
</script>

<script id="bv-dl-scripts-list" data-cfasync="false" bv-exclude="true">
var scriptAttrs = [{"attrs":{"defer":true,"data-cfasync":false,"async":false,"bv_inline_delayed":true},"bv_unique_id":"0mv1k8oykeNrrZFj0GtR","reference":0},{"attrs":{"src":"data:text\/javascript;base64, ZnVuY3Rpb24gYnZfdHJpZ2dlcl9haXJsaWZ0X2V2ZW50KHRhcmdldCwgZXZlbnRfdHlwZSkgewoKICBpZiAoZXZlbnRfdHlwZSA9PT0gInJlYWR5c3RhdGVjaGFuZ2UiKSB7CiAgICBpZiAoYnZfc3RhdGVfY291bnRlciA9PT0gMCkgewogICAgICBidl9zdGF0ZV9jb3VudGVyICs9IDEKICAgICAgYnZfY3VzdG9tX3JlYWR5X3N0YXRlX3ZhbHVlID0gImludGVyYWN0aXZlIgogICAgfSBlbHNlIGlmKGJ2X3N0YXRlX2NvdW50ZXIgPT09IDEpIHsKICAgICAgYnZfc3RhdGVfY291bnRlciArPSAxCiAgICAgIGJ2X2N1c3RvbV9yZWFkeV9zdGF0ZV92YWx1ZSA9ICJjb21wbGV0ZSIKICAgIH0KICB9CgogIGxldCBldmVudF9uYW1lID0gIkFpcmxpZnQiICsgZXZlbnRfdHlwZTsKICBsZXQgc3ludGhldGljRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnRfbmFtZSwgeyBidWJibGVzOiB0cnVlIH0pOwoKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ludGhldGljRXZlbnQsICJ0eXBlIiwgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGV2ZW50X3R5cGU7IH0sIHNldDogZnVuY3Rpb24gKCkgeyB9IH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzeW50aGV0aWNFdmVudCwgInRhcmdldCIsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0YXJnZXQ7IH0sIHNldDogZnVuY3Rpb24gKCkgeyB9IH0pOwoKICB0YXJnZXQuZGlzcGF0Y2hFdmVudChzeW50aGV0aWNFdmVudCk7Cn0KCmZ1bmN0aW9uIGJ2X2Rpc3BhdGNoRGVsYXllZEV2ZW50cygpIHsKICAgIGJ2X3RyaWdnZXJfYWlybGlmdF9ldmVudChkb2N1bWVudCwgInJlYWR5c3RhdGVjaGFuZ2UiKTsKICAgIGJ2X3RyaWdnZXJfYWlybGlmdF9ldmVudChkb2N1bWVudCwgIkRPTUNvbnRlbnRMb2FkZWQiKTsKCiAgICBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICBidl90cmlnZ2VyX2FpcmxpZnRfZXZlbnQoZG9jdW1lbnQsICJyZWFkeXN0YXRlY2hhbmdlIik7CgogICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICBidl90cmlnZ2VyX2FpcmxpZnRfZXZlbnQod2luZG93LCAibG9hZCIpOwogICAgICAgICAgICBidl90cmlnZ2VyX2FpcmxpZnRfZXZlbnQod2luZG93LCAicGFnZXNob3ciKTsKICAgICAgICB9LCAwKTsKICAgIH0sIDApOwp9Cgp2YXIgYnZfc3RhdGVfY291bnRlciA9IDAKCmJ2X2Rpc3BhdGNoRGVsYXllZEV2ZW50cygpOwoK","id":"bv-trigger-listener","type":"text\/javascript","defer":true,"async":false},"bv_unique_id":"d6fe9c24159ed4a27d224d91c70f8fdc","reference":100000000}];
</script>
<script id="bv-web-worker" type="javascript/worker" data-cfasync="false" bv-exclude="true">var __defProp=Object.defineProperty;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});self.onmessage=function(e){var counter=e.data.fetch_urls.length;e.data.fetch_urls.forEach(function(fetch_url){loadUrl(fetch_url,function(){console.log("DONE: "+fetch_url),counter=counter-1,counter===0&&self.postMessage({status:"SUCCESS"})})})};async function loadUrl(fetch_url,callback){try{var request=new Request(fetch_url,{mode:"no-cors",redirect:"follow"});await fetch(request),callback()}catch(fetchError){console.log("Fetch Error loading URL:",fetchError);try{var xhr=new XMLHttpRequest;xhr.onerror=callback,xhr.onload=callback,xhr.responseType="blob",xhr.open("GET",fetch_url,!0),xhr.send()}catch(xhrError){console.log("XHR Error loading URL:",xhrError),callback()}}}__name(loadUrl,"loadUrl");
</script>
<script id="bv-web-worker-handler" data-cfasync="false" bv-exclude="true">var __defProp=Object.defineProperty;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});if(typeof scriptAttrs<"u"&&Array.isArray(scriptAttrs)&&scriptAttrs.length>0){const lastElement=scriptAttrs[scriptAttrs.length-1];if(lastElement.attrs&&lastElement.attrs.id==="bv-trigger-listener"){var bv_custom_ready_state_value="loading";Object.defineProperty(document,"readyState",{get:__name(function(){return bv_custom_ready_state_value},"get"),set:__name(function(){},"set")})}}if(typeof scriptAttrs>"u"||!Array.isArray(scriptAttrs))var scriptAttrs=[];if(typeof linkStyleAttrs>"u"||!Array.isArray(linkStyleAttrs))var linkStyleAttrs=[];function isMobileDevice(){return window.innerWidth<=500}__name(isMobileDevice,"isMobileDevice");var js_dom_loaded=!1;document.addEventListener("DOMContentLoaded",()=>{js_dom_loaded=!0});const EVENTS=["mousemove","click","keydown","wheel","touchmove","touchend"];var scriptUrls=[],styleUrls=[],bvEventCalled=!1,workerFinished=!1,functionExec=!1,scriptsInjected=!1,stylesInjected=!1,bv_load_event_fired=!1,autoInjectTimerStarted=!1;const BV_AUTO_INJECT_ENABLED=!0,BV_DESKTOP_AUTO_INJECT_DELAY=1e3,BV_MOBILE_AUTO_INJECT_DELAY=1e4,BV_WORKER_TIMEOUT_DURATION=3e3;scriptAttrs.forEach((scriptAttr,index)=>{scriptAttr.attrs.src&&!scriptAttr.attrs.src.includes("data:text/javascript")&&(scriptUrls[index]=scriptAttr.attrs.src)}),linkStyleAttrs.forEach((linkAttr,index)=>{styleUrls[index]=linkAttr.attrs.href});var fetchUrls=scriptUrls.concat(styleUrls);function addEventListeners(bvEventHandler2){EVENTS.forEach(function(event){document.addEventListener(event,bvEventFired,!0),document.addEventListener(event,bvEventHandler2,!0)})}__name(addEventListeners,"addEventListeners");function removeEventListeners(){EVENTS.forEach(function(event){document.removeEventListener(event,bvEventHandler,!0)})}__name(removeEventListeners,"removeEventListeners");function bvEventFired(){bvEventCalled||(bvEventCalled=!0,workerFinished=!0)}__name(bvEventFired,"bvEventFired");function bvGetElement(attributes,element){Object.keys(attributes).forEach(function(attr){attr==="async"?element.async=attributes[attr]:attr==="innerHTML"?element.innerHTML=atob(attributes[attr]):element.setAttribute(attr,attributes[attr])})}__name(bvGetElement,"bvGetElement");function bvAddElement(attr,element){var attributes=attr.attrs;if(attributes.bv_inline_delayed){let bvScriptId=attr.bv_unique_id,bvScriptElement=document.querySelector("[bv_unique_id='"+bvScriptId+"']");bvScriptElement?(!attributes.innerHTML&&!attributes.src&&bvScriptElement.textContent.trim()!==""&&(attributes.src="data:text/javascript;base64, "+btoa(unescape(encodeURIComponent(bvScriptElement.textContent)))),bvGetElement(attributes,element),bvScriptElement.after(element)):console.log(`Script not found for ${bvScriptId}`)}else{bvGetElement(attributes,element);var templateId=attr.bv_unique_id,targetElement=document.querySelector("[id='"+templateId+"']");targetElement&&targetElement.after(element)}}__name(bvAddElement,"bvAddElement");function injectStyles(){if(stylesInjected){console.log("Styles already injected, skipping");return}stylesInjected=!0,document.querySelectorAll('style[type="bv_inline_delayed_css"], template[id]').forEach(element=>{if(element.tagName.toLowerCase()==="style"){var new_style=document.createElement("style");new_style.type="text/css",new_style.textContent=element.textContent,element.after(new_style),new_style.parentNode?element.remove():console.log("PARENT NODE NOT FOUND")}else if(element.tagName.toLowerCase()==="template"){var templateId=element.id,linkStyleAttr=linkStyleAttrs.find(attr=>attr.bv_unique_id===templateId);if(linkStyleAttr){var link=document.createElement("link");bvAddElement(linkStyleAttr,link),element.parentNode&&element.parentNode.replaceChild(link,element),console.log("EXTERNAL STYLE ADDED")}else console.log(`No linkStyleAttr found for template ID ${templateId}`)}}),linkStyleAttrs.forEach((linkStyleAttr,index)=>{console.log("STYLE ADDED");var element=document.createElement("link");bvAddElement(linkStyleAttr,element)})}__name(injectStyles,"injectStyles");function injectScripts(){if(scriptsInjected){console.log("Scripts already injected, skipping");return}scriptsInjected=!0;let last_script_element;scriptAttrs.forEach((scriptAttr,index)=>{if(bv_custom_ready_state_value==="loading"&&scriptAttr.attrs&&scriptAttr.attrs.is_first_defer_element===!0)if(last_script_element){const readyStateScript=document.createElement("script");readyStateScript.src="data:text/javascript;base64, "+btoa(unescape(encodeURIComponent("bv_custom_ready_state_value = 'interactive';"))),readyStateScript.async=!1,last_script_element.after(readyStateScript)}else bv_custom_ready_state_value="interactive",console.log('Ready state manually set to "interactive"');console.log("JS ADDED");var element=document.createElement("script");last_script_element=element,bvAddElement(scriptAttr,element)})}__name(injectScripts,"injectScripts");function bvEventHandler(){console.log("EVENT FIRED"),js_dom_loaded&&bvEventCalled&&workerFinished&&!functionExec&&(functionExec=!0,injectStyles(),injectScripts(),removeEventListeners())}__name(bvEventHandler,"bvEventHandler");function autoInjectScriptsAfterLoad(){js_dom_loaded&&workerFinished&&!scriptsInjected&&!stylesInjected&&(console.log("Auto-injecting styles and scripts after timer"),injectStyles(),injectScripts())}__name(autoInjectScriptsAfterLoad,"autoInjectScriptsAfterLoad");function startAutoInjectTimer(){if(BV_AUTO_INJECT_ENABLED&&!autoInjectTimerStarted&&bv_load_event_fired&&!bvEventCalled){autoInjectTimerStarted=!0;var delay=isMobileDevice()?BV_MOBILE_AUTO_INJECT_DELAY:BV_DESKTOP_AUTO_INJECT_DELAY;console.log("Starting auto-inject timer with delay: "+delay+"ms"),setTimeout(function(){autoInjectScriptsAfterLoad()},delay)}}__name(startAutoInjectTimer,"startAutoInjectTimer"),addEventListeners(bvEventHandler);var requestObject=window.URL||window.webkitURL,bvWorker=new Worker(requestObject.createObjectURL(new Blob([document.getElementById("bv-web-worker").textContent],{type:"text/javascript"})));bvWorker.onmessage=function(e){e.data.status==="SUCCESS"&&(console.log("WORKER_FINISHED"),workerFinished=!0,bvEventHandler(),startAutoInjectTimer())},addEventListener("load",()=>{bvEventHandler(),bv_call_fetch_urls(),bv_load_event_fired=!0});function bv_call_fetch_urls(){!bv_load_event_fired&&!workerFinished&&(bvWorker.postMessage({fetch_urls:fetchUrls}),bv_initiate_worker_timer())}__name(bv_call_fetch_urls,"bv_call_fetch_urls"),setTimeout(function(){bv_call_fetch_urls()},5e3);function bv_initiate_worker_timer(){setTimeout(function(){workerFinished||(console.log("WORKER_TIMEDOUT"),workerFinished=!0,bvWorker.terminate()),bvEventHandler(),startAutoInjectTimer()},BV_WORKER_TIMEOUT_DURATION)}__name(bv_initiate_worker_timer,"bv_initiate_worker_timer");
</script>
\n    <title>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<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>&nbsp;This calculator is provided for informational purposes only and should not be considered tax advice.&nbsp;The results are based on your input and may not reflect your specific tax residency situation.&nbsp;We disclaim any liability for the accuracy of the results or any actions you take based on them.&nbsp;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&#8230;<\/p>","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 &amp; 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\/de\/author\/360-consulting\/"},"comment_info":0,"_links":{"self":[{"href":"https:\/\/360-consulting.co\/de\/wp-json\/wp\/v2\/pages\/2125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/360-consulting.co\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/360-consulting.co\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/360-consulting.co\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/360-consulting.co\/de\/wp-json\/wp\/v2\/comments?post=2125"}],"version-history":[{"count":40,"href":"https:\/\/360-consulting.co\/de\/wp-json\/wp\/v2\/pages\/2125\/revisions"}],"predecessor-version":[{"id":2190,"href":"https:\/\/360-consulting.co\/de\/wp-json\/wp\/v2\/pages\/2125\/revisions\/2190"}],"wp:attachment":[{"href":"https:\/\/360-consulting.co\/de\/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: 697a88275612b74899291503. Config Timestamp: 2026-01-28 22:05:25 UTC, Cached Timestamp: 2026-04-05 14:38:04 UTC -->