PageSourceSearch

https://www.thelocal.ch/20260826/what-americans-abroad-need-to-know-about-the-october-15th-tax-deadline

html thelocal.ch collected 2026-09-24 17:08:45 UTC 144,233 bytes, 2,950 lines download raw bytes

1<!doctype html>
2<html lang="en" data-edition="ch">
3<head>
4    
4<script>
5(function (window) {
6    var contract = {"contract_version":1,"authoritative_vendor":"inmobi_choice","authoritative_source":"native_app","required_timing":"Consent must be provided before consent-dependent web scripts initialize.","statuses":["applied","missing","invalid","refresh_required"],"required_fields":["cmp_vendor","consent_source","consent_available","tc_string","addtl_consent","consent_collected_at","consent_required"],"optional_fields":["gpp_string","us_privacy_string","cmp_version","contract_version"],"stale_conditions":["contract_version_mismatch","consent_required_without_available_signal"],"globals":{"contract":"__TLConsentHandoverContract","bootstrap":"__TLConsentHandover","state":"__TLConsentHandoverState","preload_payload":"__TL_NATIVE_CONSENT__","apply_function":"__TLApplyNativeConsent"},"events":{"state":"tl:consent-handover:state"},"transports":[{"name":"preload_global","mode":"script_injection","description":"Native sets window.__TL_NATIVE_CONSENT__ before WebView article scripts execute."},{"name":"apply_function","mode":"javascript_bridge","description":"Native calls window.__TLApplyNativeConsent(payload) as soon as the bridge is ready."}]};
7    var globalNames = contract.globals || {};
8    var contractGlobalName = globalNames.contract || '__TLConsentHandoverContract';
9    var bootstrapGlobalName = globalNames.bootstrap || '__TLConsentHandover';
10    var stateGlobalName = globalNames.state || '__TLConsentHandoverState';
11    var preloadGlobalName = globalNames.preload_payload || '__TL_NATIVE_CONSENT__';
12    var applyFunctionName = globalNames.apply_function || '__TLApplyNativeConsent';
13    var stateEventName = contract.events && contract.events.state ? contract.events.state : 'tl:consent-handover:state';
14
15    window[contractGlobalName] = contract;
16
17    var clone = function (value) {
18        try {
19            return JSON.parse(JSON.stringify(value));
20        } catch (error) {
21            return value;
22        }
23    };
24
25    var dispatchState = function () {
26        if (typeof window.dispatchEvent !== 'function' || typeof window.CustomEvent !== 'function') {
27            return;
28        }
29
30        window.dispatchEvent(new CustomEvent(stateEventName, {
31            detail: clone(window[stateGlobalName]),
32        }));
33    };
34
35    var normalizeString = function (value) {
36        if (typeof value !== 'string') {
37            return null;
38        }
39
40        var normalized = value.trim();
41
42        return normalized === '' ? '' : normalized;
43    };
44
45    var parseTimestamp = function (value) {
46        if (typeof value !== 'string') {
47            return null;
48        }
49
50        var trimmed = value.trim();
51        if (trimmed === '') {
52            return null;
53        }
54
55        var timestamp = Date.parse(trimmed);
56
57        if (Number.isNaN(timestamp)) {
58            return null;
59        }
60
61        return new Date(timestamp).toISOString();
62    };
63
64    var evaluatePayload = function (payload) {
65        if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
66            return {
67                status: 'missing',
68                ready: false,
69                errors: ['payload_missing'],
70                payload: null,
71            };
72        }
73
74        var normalizedPayload = {
75            cmp_vendor: normalizeString(payload.cmp_vendor),
76            consent_source: normalizeString(payload.consent_source),
77            consent_available: typeof payload.consent_available === 'boolean' ? payload.consent_available : null,
78            tc_string: normalizeString(payload.tc_string),
79            addtl_consent: normalizeString(payload.addtl_consent),
80            gpp_string: normalizeString(payload.gpp_string),
81            us_privacy_string: normalizeString(payload.us_privacy_string),
82            consent_collected_at: parseTimestamp(payload.consent_collected_at),
83            cmp_version: normalizeString(payload.cmp_version),
84            consent_required: typeof payload.consent_required === 'boolean' ? payload.consent_required : null,
85            contract_version: Number.isInteger(payload.contract_version) ? payload.contract_version : contract.contract_version,
86        };
87
88        var errors = [];
89        if (normalizedPayload.cmp_vendor !== contract.authoritative_vendor) {
90            errors.push('unsupported_cmp_vendor');
91        }
92        if (normalizedPayload.consent_source !== contract.authoritative_source) {
93            errors.push('unsupported_consent_source');
94        }
95        if (normalizedPayload.consent_available === null) {
96            errors.push('consent_available_missing');
97        }
98        if (normalizedPayload.consent_required === null) {
99            errors.push('consent_required_missing');
100        }
101        if (normalizedPayload.consent_collected_at === null) {
102            errors.push('consent_collected_at_invalid');
103        }
104        if (normalizedPayload.addtl_consent === null) {
105            errors.push('addtl_consent_missing');
106        }
107
108        if (normalizedPayload.contract_version !== contract.contract_version) {
109            return {
110                status: 'refresh_required',
111                ready: true,
112                errors: ['contract_version_mismatch'],
113                payload: normalizedPayload,
114            };
115        }
116
117        if (normalizedPayload.consent_required === true && normalizedPayload.consent_available === false) {
118            return {
119                status: 'refresh_required',
120                ready: true,
121                errors: ['consent_refresh_required'],
122                payload: normalizedPayload,
123            };
124        }
125
126        if (normalizedPayload.consent_available === true && normalizedPayload.tc_string === '') {
127            errors.push('tc_string_missing');
128        }
129
130        if (errors.length > 0) {
131            return {
132                status: 'invalid',
133                ready: true,
134                errors: errors,
135                payload: normalizedPayload,
136            };
137        }
138
139        return {
140            status: 'applied',
141            ready: true,
142            errors: [],
143            payload: normalizedPayload,
144        };
145    };
146
147    var updateState = function (nextState) {
148        window[stateGlobalName] = {
149            contract_version: contract.contract_version,
150            status: nextState.status,
151            ready: nextState.ready,
152            errors: nextState.errors || [],
153            payload: nextState.payload || null,
154            transport: nextState.transport || null,
155            updated_at: new Date().toISOString(),
156        };
157
158        dispatchState();
159
160        return clone(window[stateGlobalName]);
161    };
162
163    if (!window[stateGlobalName]) {
164        window[stateGlobalName] = {
165            contract_version: contract.contract_version,
166            status: 'missing',
167            ready: false,
168            errors: [],
169            payload: null,
170            transport: null,
171            updated_at: null,
172        };
173    }
174
175    window[bootstrapGlobalName] = window[bootstrapGlobalName] || {
176        version: contract.contract_version,
177        statuses: contract.statuses,
178        requiredTiming: contract.required_timing,
179        getContract: function () {
180            return clone(contract);
181        },
182        getState: function () {
183            return clone(window[stateGlobalName]);
184        },
185        applyPayload: function (payload, metadata) {
186            var evaluated = evaluatePayload(payload);
187
188            return updateState({
189                status: evaluated.status,
190                ready: evaluated.ready,
191                errors: evaluated.errors,
192                payload: evaluated.payload,
193                transport: metadata && metadata.transport ? metadata.transport : 'javascript_bridge',
194            });
195        },
196        markMissing: function (metadata) {
197            return updateState({
198                status: 'missing',
199                ready: true,
200                errors: ['payload_missing'],
201                payload: null,
202                transport: metadata && metadata.transport ? metadata.transport : 'missing',
203            });
204        },
205        onStateChange: function (callback) {
206            if (typeof callback !== 'function' || typeof window.addEventListener !== 'function') {
207                return function () {
208                };
209            }
210
211            var listener = function (event) {
212                callback(event.detail);
213            };
214
215            window.addEventListener(stateEventName, listener);
216
217            return function () {
218                if (typeof window.removeEventListener === 'function') {
219                    window.removeEventListener(stateEventName, listener);
220                }
221            };
222        },
223    };
224
225    window[applyFunctionName] = function (payload) {
226        return window[bootstrapGlobalName].applyPayload(payload, {
227            transport: 'javascript_bridge',
228        });
229    };
230
231    if (
232        Object.prototype.hasOwnProperty.call(window, preloadGlobalName)
233        && window[preloadGlobalName]
234    ) {
235        window[bootstrapGlobalName].applyPayload(window[preloadGlobalName], {
236            transport: 'script_injection',
237        });
238    } else {
239        dispatchState();
240    }
241})(window);
242</script>
242<script>
243(function (window) {
244    var legacyCookieNames = [
245        'OptanonConsent',
246        'OptanonAlertBoxClosed',
247        'OnetrustActiveGroups',
248        'cmapi_cookie_privacy',
249        'cmapi_cookie_privacy_custom',
250        'cmapi_gtm_bl',
251        'cmapi_gtm_privacy',
252    ];
253    var legacyCookiePrefixes = ['__cmp', 'cmapi_'];
254    var legacyGlobalNames = [
255        '__cmp',
256        '__dsa',
257        '__gpp',
258        '__tcfapi',
259        '__dsaLocator',
260        '__gppLocator',
261        '__tcfapiLocator',
262        'Optanon',
263        'OptanonWrapper',
264        'cmp_addFrame',
265        'cmp_dsastub',
266        'cmp_gpp_ping',
267        'cmp_gppstub',
268        'cmp_msghandler',
269        'cmp_rc',
270        'cmp_setGppStub',
271        'cmp_setStub',
272        'cmp_stub',
273    ];
274    var legacyStorageKeys = [
275        'OptanonConsent',
276        'OptanonAlertBoxClosed',
277        'OnetrustActiveGroups',
278    ];
279
280    var clearCookieAcrossScopes = function (cookieName) {
281        if (typeof cookieName !== 'string' || cookieName === '') {
282            return;
283        }
284
285        var hostname = window.location.hostname || '';
286        var parts = hostname.split('.').filter(Boolean);
287        var domains = [''];
288
289        if (parts.length > 2) {
290            domains.push('.' + parts.slice(1).join('.'));
291        }
292
293        domains.forEach(function (domain) {
294            var domainPart = domain ? ';domain=' + domain : '';
295            window.document.cookie = cookieName + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/' + domainPart;
296        });
297    };
298
299    var clearStorageValue = function (storage, key) {
300        try {
301            if (storage && typeof storage.removeItem === 'function') {
302                storage.removeItem(key);
303            }
304        } catch (error) {
305        }
306    };
307
308    var clearPrefixedCookies = function () {
309        var cookies = window.document.cookie ? window.document.cookie.split(';') : [];
310
311        cookies.forEach(function (rawCookie) {
312            var separatorIndex = rawCookie.indexOf('=');
313            var cookieName = (separatorIndex >= 0 ? rawCookie.slice(0, separatorIndex) : rawCookie).trim();
314
315            if (!cookieName) {
316                return;
317            }
318
319            if (!legacyCookiePrefixes.some(function (prefix) {
320                return cookieName.indexOf(prefix) === 0;
321            })) {
322                return;
323            }
324
325            clearCookieAcrossScopes(cookieName);
326        });
327    };
328
329    window.__TLClearLegacyConsentArtifacts = window.__TLClearLegacyConsentArtifacts || function () {
330        legacyCookieNames.forEach(function (cookieName) {
331            clearCookieAcrossScopes(cookieName);
332        });
333
334        clearPrefixedCookies();
335
336        legacyStorageKeys.forEach(function (storageKey) {
337            clearStorageValue(window.localStorage, storageKey);
338            clearStorageValue(window.sessionStorage, storageKey);
339        });
340
341        legacyGlobalNames.forEach(function (globalName) {
342            try {
343                if (Object.prototype.hasOwnProperty.call(window, globalName)) {
344                    delete window[globalName];
345                    return;
346                }
347            } catch (error) {
348            }
349
350            try {
351                window[globalName] = undefined;
352            } catch (error) {
353            }
354        });
355    };
356
357    window.__TLClearLegacyConsentArtifacts();
358})(window);
359</script>
359<script>
360(function (window) {
361    var contract = window.__TLConsentHandoverContract || {};
362    var bootstrap = window.__TLConsentHandover || null;
363    var stateGlobalName = '__TLArticleConsentBootstrapState';
364    var diagnosticsGlobalName = '__TLArticleConsentDiagnosticsState';
365    var preloadGlobalName = '__TL_NATIVE_CONSENT__';
366    var applyFunctionName = '__TLApplyNativeConsent';
367    var stateEventName = 'tl:article-consent-bootstrap:state';
368    var diagnosticsEventName = 'tl:consent-handover:diagnostics';
369    var bootstrapTimeoutMs = 250;
370    var timeoutId = null;
371    var tcfEventListeners = [];
372    var gppEventListeners = [];
373
374    var clone = function (value) {
375        try {
376            return JSON.parse(JSON.stringify(value));
377        } catch (error) {
378            return value;
379        }
380    };
381
382    var hasOwn = function (object, key) {
383        return !!object && Object.prototype.hasOwnProperty.call(object, key);
384    };
385
386    var safeStateSnapshot = function (state) {
387        var currentState = state || {};
388        var payload = currentState.payload || {};
389
390        return {
391            status: typeof currentState.status === 'string' ? currentState.status : 'missing',
392            ready: currentState.ready === true,
393            transport: typeof currentState.transport === 'string' ? currentState.transport : null,
394            errors: Array.isArray(currentState.errors) ? currentState.errors.slice() : [],
395            payload_present: !!currentState.payload,
396            payload_summary: {
397                consent_available: typeof payload.consent_available === 'boolean',
398                consent_required: typeof payload.consent_required === 'boolean',
399                tc_string_present: typeof payload.tc_string === 'string' && payload.tc_string !== '',
400                gpp_string_present: typeof payload.gpp_string === 'string' && payload.gpp_string !== '',
401                us_privacy_string_present: typeof payload.us_privacy_string === 'string' && payload.us_privacy_string !== '',
402            },
403            updated_at: typeof currentState.updated_at === 'string' ? currentState.updated_at : null,
404        };
405    };
406
407    var buildDiagnosticsDecision = function (decision) {
408        var currentDecision = decision || {};
409
410        return {
411            surface: typeof currentDecision.surface === 'string' && currentDecision.surface !== ''
412                ? currentDecision.surface
413                : null,
414            consumer: typeof currentDecision.consumer === 'string' && currentDecision.consumer !== ''
415                ? currentDecision.consumer
416                : null,
417            allowed: typeof currentDecision.allowed === 'boolean' ? currentDecision.allowed : null,
418            reason: typeof currentDecision.reason === 'string' && currentDecision.reason !== ''
419                ? currentDecision.reason
420                : null,
421            event: typeof currentDecision.event === 'string' && currentDecision.event !== ''
422                ? currentDecision.event
423                : null,
424        };
425    };
426
427    var buildDiagnosticsSnapshot = function (decision) {
428        return {
429            contract_version: contract.contract_version || 1,
430            handover: safeStateSnapshot(window.__TLConsentHandoverState || null),
431            bootstrap: safeStateSnapshot(window[stateGlobalName] || null),
432            preload_present: hasOwn(window, preloadGlobalName) && !!window[preloadGlobalName],
433            decision: buildDiagnosticsDecision(decision),
434            updated_at: new Date().toISOString(),
435        };
436    };
437
438    var dispatchDiagnostics = function () {
439        if (typeof window.dispatchEvent !== 'function' || typeof window.CustomEvent !== 'function') {
440            return;
441        }
442
443        window.dispatchEvent(new CustomEvent(diagnosticsEventName, {
444            detail: clone(window[diagnosticsGlobalName]),
445        }));
446    };
447
448    var publishDiagnostics = function (decision) {
449        window[diagnosticsGlobalName] = buildDiagnosticsSnapshot(decision);
450        dispatchDiagnostics();
451
452        return clone(window[diagnosticsGlobalName]);
453    };
454
455    if (typeof window.__TLClearLegacyConsentArtifacts === 'function') {
456        window.__TLClearLegacyConsentArtifacts();
457    }
458
459    window[diagnosticsGlobalName] = window[diagnosticsGlobalName] || buildDiagnosticsSnapshot({
460        surface: 'bootstrap',
461        consumer: 'article_bootstrap',
462        allowed: false,
463        reason: 'awaiting_consent',
464        event: 'initial_state',
465    });
466
467    var dispatchState = function () {
468        if (typeof window.dispatchEvent !== 'function' || typeof window.CustomEvent !== 'function') {
469            return;
470        }
471
472        window.dispatchEvent(new CustomEvent(stateEventName, {
473            detail: clone(window[stateGlobalName]),
474        }));
475    };
476
477    var publishState = function (nextState) {
478        window[stateGlobalName] = {
479            contract_version: contract.contract_version || 1,
480            status: nextState.status || 'missing',
481            ready: !!nextState.ready,
482            errors: Array.isArray(nextState.errors) ? nextState.errors.slice() : [],
483            payload: nextState.payload || null,
484            transport: nextState.transport || null,
485            updated_at: new Date().toISOString(),
486        };
487
488        dispatchState();
489        publishDiagnostics({
490            surface: 'bootstrap',
491            consumer: 'article_bootstrap',
492            allowed: window[stateGlobalName].status === 'applied',
493            reason: window[stateGlobalName].status === 'applied'
494                ? 'consent_applied'
495                : window[stateGlobalName].status,
496            event: 'state_update',
497        });
498
499        return clone(window[stateGlobalName]);
500    };
501
502    var buildTcfData = function () {
503        var state = window[stateGlobalName] || {};
504        var payload = state.payload || {};
505        var consentGranted = state.status === 'applied' && state.ready === true;
506        var tcString = typeof payload.tc_string === 'string' ? payload.tc_string : '';
507        var gppString = typeof payload.gpp_string === 'string' ? payload.gpp_string : '';
508        var usPrivacyString = typeof payload.us_privacy_string === 'string' ? payload.us_privacy_string : '';
509        var eventStatus = consentGranted ? 'tcloaded' : 'cmpuishown';
510
511        return {
512            gdprApplies: consentGranted,
513            tcString: tcString,
514            eventStatus: eventStatus,
515            cmpStatus: consentGranted ? 'loaded' : 'stub',
516            cmpLoaded: consentGranted,
517            listenerId: 0,
518            purpose: {
519                consents: {
520                    1: consentGranted,
521                },
522            },
523            tcData: {
524                tcString: tcString,
525                gppString: gppString,
526                usPrivacyString: usPrivacyString,
527            },
528        };
529    };
530
531    var notifyListeners = function () {
532        var tcfData = buildTcfData();
533
534        tcfEventListeners.slice().forEach(function (listener) {
535            try {
536                listener(tcfData, true);
537            } catch (error) {
538            }
539        });
540
541        gppEventListeners.slice().forEach(function (listener) {
542            try {
543                listener(tcfData, true);
544            } catch (error) {
545            }
546        });
547    };
548
549    var installConsentApis = function () {
550        if (typeof window.__tcfapi !== 'function') {
551            window.__tcfapi = function (command, version, callback, parameter) {
552                var tcfData = buildTcfData();
553
554                if (command === 'ping') {
555                    if (typeof callback === 'function') {
556                        callback({
557                            gdprApplies: tcfData.gdprApplies,
558                            cmpLoaded: tcfData.cmpLoaded,
559                            cmpStatus: tcfData.cmpStatus,
560                        }, true);
561                    }
562
563                    return;
564                }
565
566                if (command === 'addEventListener' && typeof callback === 'function') {
567                    tcfEventListeners.push(callback);
568                    callback(tcfData, true);
569                    return tcfEventListeners.length;
570                }
571
572                if (command === 'removeEventListener') {
573                    tcfEventListeners = tcfEventListeners.filter(function (listener) {
574                        return listener !== callback;
575                    });
576
577                    if (typeof callback === 'function') {
578                        callback(true, true);
579                    }
580
581                    return true;
582                }
583
584                if (command === 'getTCData' && typeof callback === 'function') {
585                    callback(tcfData, true);
586                    return;
587                }
588
589                if (command === 'displayConsentUi' && typeof callback === 'function') {
590                    callback(true, true);
591                    return;
592                }
593
594                if (typeof callback === 'function') {
595                    callback(tcfData, true);
596                }
597            };
598        }
599
600        if (typeof window.__gpp !== 'function') {
601            window.__gpp = function (command, callback, parameter, version) {
602                var tcfData = buildTcfData();
603
604                if (command === 'ping') {
605                    if (typeof callback === 'function') {
606                        callback({
607                            gppVersion: '1.1',
608                            cmpStatus: tcfData.cmpStatus,
609                            cmpDisplayStatus: tcfData.gdprApplies ? 'visible' : 'hidden',
610                            signalStatus: tcfData.gdprApplies ? 'ready' : 'not ready',
611                            supportedAPIs: ['2:tcfeuv2', '6:uspv1', '7:usnatv1'],
612                            cmpId: 10,
613                            sectionList: [],
614                            applicableSections: [-1],
615                            gppString: tcfData.tcData.gppString,
616                            parsedSections: {},
617                        }, true);
618                    }
619
620                    return;
621                }
622
623                if (command === 'addEventListener' && typeof callback === 'function') {
624                    gppEventListeners.push(callback);
625                    callback({
626                        eventName: 'listenerRegistered',
627                        listenerId: gppEventListeners.length,
628                        data: true,
629                        pingData: {
630                            gppVersion: '1.1',
631                            cmpStatus: tcfData.cmpStatus,
632                            cmpDisplayStatus: tcfData.gdprApplies ? 'visible' : 'hidden',
633                            signalStatus: tcfData.gdprApplies ? 'ready' : 'not ready',
634                            supportedAPIs: ['2:tcfeuv2', '6:uspv1', '7:usnatv1'],
635                            cmpId: 10,
636                            sectionList: [],
637                            applicableSections: [-1],
638                            gppString: tcfData.tcData.gppString,
639                            parsedSections: {},
640                        },
641                    }, true);
642                    return gppEventListeners.length;
643                }
644
645                if (command === 'removeEventListener' && typeof callback === 'function') {
646                    gppEventListeners = gppEventListeners.filter(function (listener) {
647                        return listener !== callback;
648                    });
649
650                    callback({
651                        eventName: 'listenerRemoved',
652                        listenerId: parameter,
653                        data: true,
654                    }, true);
655                    return true;
656                }
657
658                if (typeof callback === 'function') {
659                    callback(tcfData, true);
660                }
661            };
662        }
663    };
664
665    var mirrorContractState = function () {
666        if (!window.__TLConsentHandoverState) {
667            return null;
668        }
669
670        return publishState(window.__TLConsentHandoverState);
671    };
672
673    var clearBootstrapTimeout = function () {
674        if (timeoutId) {
675            window.clearTimeout(timeoutId);
676            timeoutId = null;
677        }
678    };
679
680    var settleMissing = function () {
681        var currentState = window.__TLConsentHandoverState || {};
682
683        if (currentState.ready && currentState.status !== 'missing') {
684            clearBootstrapTimeout();
685            return mirrorContractState();
686        }
687
688        if (!bootstrap || typeof bootstrap.markMissing !== 'function') {
689            clearBootstrapTimeout();
690            publishDiagnostics({
691                surface: 'bootstrap',
692                consumer: 'article_bootstrap',
693                allowed: false,
694                reason: 'consent_missing',
695                event: 'timeout_missing',
696            });
697            return mirrorContractState();
698        }
699
700        clearBootstrapTimeout();
701
702        var nextState = publishState(bootstrap.markMissing({
703            transport: 'article_bootstrap',
704        }));
705
706        publishDiagnostics({
707            surface: 'bootstrap',
708            consumer: 'article_bootstrap',
709            allowed: false,
710            reason: nextState.status === 'missing' ? 'consent_missing' : nextState.status,
711            event: 'timeout_missing',
712        });
713
714        return nextState;
715    };
716
717    var syncNativeConsent = function () {
718        if (!bootstrap) {
719            return false;
720        }
721
722        if (
723            Object.prototype.hasOwnProperty.call(window, preloadGlobalName)
724            && window[preloadGlobalName]
725            && typeof window[applyFunctionName] === 'function'
726        ) {
727            clearBootstrapTimeout();
728            publishState(window[applyFunctionName](window[preloadGlobalName]));
729            return true;
730        }
731
732        if (window.__TLConsentHandoverState && window.__TLConsentHandoverState.ready) {
733            clearBootstrapTimeout();
734            mirrorContractState();
735            return true;
736        }
737
738        return false;
739    };
740
741    window[stateGlobalName] = window[stateGlobalName] || {
742        contract_version: contract.contract_version || 1,
743        status: 'missing',
744        ready: false,
745        errors: [],
746        payload: null,
747        transport: null,
748        updated_at: null,
749    };
750
751    window.__TLArticleConsentBootstrap = window.__TLArticleConsentBootstrap || {
752        version: contract.contract_version || 1,
753        getState: function () {
754            return clone(window[stateGlobalName]);
755        },
756        shouldSuppressWebCmp: function () {
757            var state = window[stateGlobalName] || {};
758
759            return state.ready === true && state.status === 'applied';
760        },
761        refresh: function () {
762            return syncNativeConsent();
763        },
764    };
765
766    window.__TLArticleConsentDiagnostics = window.__TLArticleConsentDiagnostics || {
767        version: contract.contract_version || 1,
768        getState: function () {
769            return clone(window[diagnosticsGlobalName]);
770        },
771        record: function (decision) {
772            return publishDiagnostics(decision);
773        },
774    };
775
776    window.__TLRecordArticleConsentDiagnostics = window.__TLRecordArticleConsentDiagnostics || function (decision) {
777        return publishDiagnostics(decision);
778    };
779
780    if (!bootstrap || typeof bootstrap.onStateChange !== 'function') {
781        syncNativeConsent();
782        timeoutId = window.setTimeout(settleMissing, bootstrapTimeoutMs);
783        return;
784    }
785
786    bootstrap.onStateChange(function (state) {
787        if (!state) {
788            return;
789        }
790
791        if (state.ready && state.status !== 'missing') {
792            clearBootstrapTimeout();
793            if (state.status === 'applied') {
794                installConsentApis();
795                notifyListeners();
796            }
797        }
798
799        publishState(state);
800    });
801
802    if (!syncNativeConsent()) {
803        timeoutId = window.setTimeout(settleMissing, bootstrapTimeoutMs);
804    } else if (window[stateGlobalName] && window[stateGlobalName].status === 'applied') {
805        installConsentApis();
806        notifyListeners();
807    }
808
809    window.addEventListener('pagehide', function () {
810        if (timeoutId) {
811            window.clearTimeout(timeoutId);
812        }
813    }, { once: true });
814})(window);
815</script>
815<script>
816(function (window) {
817    var eventName = 'tl:article-consent-bootstrap:state';
818    var diagnosticsFunctionName = '__TLRecordArticleConsentDiagnostics';
819    var diagnosticsDefaultSurface = 'consent_gate';
820
821    var recordDiagnostics = function (state, metadata, allowed, reason) {
822        var diagnostics = typeof window[diagnosticsFunctionName] === 'function'
823            ? window[diagnosticsFunctionName]
824            : null;
825
826        if (!diagnostics) {
827            return;
828        }
829
830        diagnostics({
831            surface: metadata && typeof metadata.surface === 'string' && metadata.surface !== ''
832                ? metadata.surface
833                : diagnosticsDefaultSurface,
834            consumer: metadata && typeof metadata.consumer === 'string' && metadata.consumer !== ''
835                ? metadata.consumer
836                : null,
837            allowed: typeof allowed === 'boolean' ? allowed : null,
838            reason: typeof reason === 'string' && reason !== ''
839                ? reason
840                : null,
841            event: 'consent_gate',
842            state: state && typeof state.status === 'string' ? state.status : null,
843        });
844    };
845
846    var reasonFromState = function (currentState) {
847        if (!currentState) {
848            return 'consent_missing';
849        }
850
851        if (currentState.status === 'applied') {
852            return 'consent_applied';
853        }
854
855        if (currentState.status === 'refresh_required') {
856            return 'consent_refresh_required';
857        }
858
859        if (currentState.status === 'invalid') {
860            return 'consent_invalid';
861        }
862
863        if (currentState.status === 'missing') {
864            return 'consent_missing';
865        }
866
867        return 'awaiting_consent';
868    };
869
870    window.__TLExecuteWhenArticleConsentReady = window.__TLExecuteWhenArticleConsentReady || function (callback, metadata) {
871        var bootstrap = window.__TLArticleConsentBootstrap || null;
872        var state = bootstrap && typeof bootstrap.getState === 'function'
873            ? bootstrap.getState()
874            : window.__TLArticleConsentBootstrapState || null;
875
876        var canRun = function (currentState) {
877            return !!currentState && currentState.ready === true && currentState.status === 'applied';
878        };
879
880        var isSettled = function (currentState) {
881            return !!currentState && currentState.ready === true;
882        };
883
884        if (typeof callback !== 'function') {
885            return false;
886        }
887
888        if (canRun(state)) {
889            recordDiagnostics(state, metadata, true, 'consent_applied');
890            callback(state);
891            return true;
892        }
893
894        if (isSettled(state)) {
895            recordDiagnostics(state, metadata, false, reasonFromState(state));
896            return false;
897        }
898
899        recordDiagnostics(state, metadata, null, 'awaiting_consent');
900        var listener = function (event) {
901            var nextState = event && event.detail ? event.detail : null;
902
903            if (!isSettled(nextState)) {
904                return;
905            }
906
907            window.removeEventListener(eventName, listener);
908
909            if (canRun(nextState)) {
910                recordDiagnostics(nextState, metadata, true, 'consent_applied');
911                callback(nextState);
912            } else {
913                recordDiagnostics(nextState, metadata, false, reasonFromState(nextState));
914            }
915        };
916
917        window.addEventListener(eventName, listener);
918
919        return null;
920    };
921})(window);
922</script>
922<!-- InMobi Choice. Consent Manager Tag v3.0 (for TCF 2.3) -->
923<link rel="preload" as="script" href="https://cmp.inmobi.com/choice/Uznnx7uFLxujG/www.thelocal.ch/choice.js?tag_version=V3">
924<script type="text/javascript">
925(function() {
926window.__TLWebCmpOwner = 'application';
927var articleConsentBootstrap = window.__TLArticleConsentBootstrap || null;
928
929if (articleConsentBootstrap && typeof articleConsentBootstrap.shouldSuppressWebCmp === 'function' && articleConsentBootstrap.shouldSuppressWebCmp()) {
930    return;
931}
932
933var uspTries = 0;
934var uspTriesLimit = 3;
935
936function makeStub() {
937var TCF_LOCATOR_NAME = '__tcfapiLocator';
938var queue = [];
939var win = window;
940var cmpFrame;
941
942function addFrame() {
943var doc = win.document;
944var otherCMP = !!(win.frames[TCF_LOCATOR_NAME]);
945
946if (!otherCMP) {
947if (doc.body) {
948var iframe = doc.createElement('iframe');
949
950iframe.style.cssText = 'display:none';
951iframe.name = TCF_LOCATOR_NAME;
952doc.body.appendChild(iframe);
953} else {
954setTimeout(addFrame, 5);
955}
956}
957return !otherCMP;
958}
959
960function tcfAPIHandler() {
961var gdprApplies;
962var args = arguments;
963
964if (!args.length) {
965return queue;
966} else if (args[0] === 'setGdprApplies') {
967if (
968args.length > 3 &&
969args[2] === 2 &&
970typeof args[3] === 'boolean'
971) {
972gdprApplies = args[3];
973if (typeof args[2] === 'function') {
974args[2]('set', true);
975}
976}
977} else if (args[0] === 'ping') {
978var retr = {
979gdprApplies: gdprApplies,
980cmpLoaded: false,
981cmpStatus: 'stub'
982};
983
984if (typeof args[2] === 'function') {
985args[2](retr);
986}
987} else {
988if (args[0] === 'init' && typeof args[3] === 'object') {
989args[3] = Object.assign(args[3], { tag_version: 'V3' });
990}
991queue.push(args);
992}
993}
994
995function postMessageEventHandler(event) {
996var msgIsString = typeof event.data === 'string';
997var json = {};
998
999try {
1000if (msgIsString) {
1001json = JSON.parse(event.data);
1002} else {
1003json = event.data;
1004}
1005} catch (ignore) {}
1006
1007var payload = json.__tcfapiCall;
1008
1009if (payload) {
1010window.__tcfapi(
1011payload.command,
1012payload.version,
1013function(retValue, success) {
1014var returnMsg = {
1015  __tcfapiReturn: {
1016    returnValue: retValue,
1017    success: success,
1018    callId: payload.callId
1019  }
1020};
1021if (msgIsString) {
1022  returnMsg = JSON.stringify(returnMsg);
1023}
1024if (event && event.source && event.source.postMessage) {
1025  event.source.postMessage(returnMsg, '*');
1026}
1027},
1028payload.parameter
1029);
1030}
1031}
1032
1033while (win) {
1034try {
1035if (win.frames[TCF_LOCATOR_NAME]) {
1036cmpFrame = win;
1037break;
1038}
1039} catch (ignore) {}
1040
1041if (win === window.top) {
1042break;
1043}
1044win = win.parent;
1045}
1046if (!cmpFrame) {
1047addFrame();
1048win.__tcfapi = tcfAPIHandler;
1049win.addEventListener('message', postMessageEventHandler, false);
1050}
1051}
1052
1053makeStub();
1054
1055function makeGppStub() {
1056const CMP_ID = 10;
1057const SUPPORTED_APIS = [
1058'2:tcfeuv2',
1059'6:uspv1',
1060'7:usnatv1',
1061'8:usca',
1062'9:usvav1',
1063'10:uscov1',
1064'11:usutv1',
1065'12:usctv1'
1066];
1067
1068window.__gpp_addFrame = function (n) {
1069if (!window.frames[n]) {
1070if (document.body) {
1071var i = document.createElement('iframe');
1072i.style.cssText = 'display:none';
1073i.name = n;
1074document.body.appendChild(i);
1075} else {
1076window.setTimeout(window.__gpp_addFrame, 10, n);
1077}
1078}
1079};
1080window.__gpp_stub = function () {
1081var b = arguments;
1082__gpp.queue = __gpp.queue || [];
1083__gpp.events = __gpp.events || [];
1084
1085if (!b.length || (b.length == 1 && b[0] == 'queue')) {
1086return __gpp.queue;
1087}
1088
1089if (b.length == 1 && b[0] == 'events') {
1090return __gpp.events;
1091}
1092
1093var cmd = b[0];
1094var clb = b.length > 1 ? b[1] : null;
1095var par = b.length > 2 ? b[2] : null;
1096if (cmd === 'ping') {
1097clb(
1098{
1099gppVersion: '1.1',
1100cmpStatus: 'stub',
1101cmpDisplayStatus: 'hidden',
1102signalStatus: 'not ready',
1103supportedAPIs: SUPPORTED_APIS,
1104cmpId: CMP_ID,
1105sectionList: [],
1106applicableSections: [-1],
1107gppString: '',
1108parsedSections: {},
1109},
1110true
1111);
1112} else if (cmd === 'addEventListener') {
1113if (!('lastId' in __gpp)) {
1114__gpp.lastId = 0;
1115}
1116__gpp.lastId++;
1117var lnr = __gpp.lastId;
1118__gpp.events.push({
1119id: lnr,
1120callback: clb,
1121parameter: par,
1122});
1123clb(
1124{
1125eventName: 'listenerRegistered',
1126listenerId: lnr,
1127data: true,
1128pingData: {
1129  gppVersion: '1.1',
1130  cmpStatus: 'stub',
1131  cmpDisplayStatus: 'hidden',
1132  signalStatus: 'not ready',
1133  supportedAPIs: SUPPORTED_APIS,
1134  cmpId: CMP_ID,
1135  sectionList: [],
1136  applicableSections: [-1],
1137  gppString: '',
1138  parsedSections: {},
1139},
1140},
1141true
1142);
1143} else if (cmd === 'removeEventListener') {
1144var success = false;
1145for (var i = 0; i < __gpp.events.length; i++) {
1146if (__gpp.events[i].id == par) {
1147__gpp.events.splice(i, 1);
1148success = true;
1149break;
1150}
1151}
1152clb(
1153{
1154eventName: 'listenerRemoved',
1155listenerId: par,
1156data: success,
1157pingData: {
1158  gppVersion: '1.1',
1159  cmpStatus: 'stub',
1160  cmpDisplayStatus: 'hidden',
1161  signalStatus: 'not ready',
1162  supportedAPIs: SUPPORTED_APIS,
1163  cmpId: CMP_ID,
1164  sectionList: [],
1165  applicableSections: [-1],
1166  gppString: '',
1167  parsedSections: {},
1168},
1169},
1170true
1171);
1172} else if (cmd === 'hasSection') {
1173clb(false, true);
1174} else if (cmd === 'getSection' || cmd === 'getField') {
1175clb(null, true);
1176} else {
1177__gpp.queue.push([].slice.apply(b));
1178}
1179};
1180window.__gpp_msghandler = function (event) {
1181var msgIsString = typeof event.data === 'string';
1182try {
1183var json = msgIsString ? JSON.parse(event.data) : event.data;
1184} catch (e) {
1185var json = null;
1186}
1187if (typeof json === 'object' && json !== null && '__gppCall' in json) {
1188var i = json.__gppCall;
1189window.__gpp(
1190i.command,
1191function(retValue, success) {
1192var returnMsg = {
1193  __gppReturn: {
1194    returnValue: retValue,
1195    success: success,
1196    callId: i.callId,
1197  },
1198};
1199event.source.postMessage(msgIsString ? JSON.stringify(returnMsg) : returnMsg, '*');
1200},
1201'parameter' in i ? i.parameter : null,
1202'version' in i ? i.version : '1.1'
1203);
1204}
1205};
1206if (!('__gpp' in window) || typeof window.__gpp !== 'function') {
1207window.__gpp = window.__gpp_stub;
1208window.addEventListener('message', window.__gpp_msghandler, false);
1209window.__gpp_addFrame('__gppLocator');
1210}
1211}
1212
1213makeGppStub();
1214
1215var uspStubFunction = function() {
1216var arg = arguments;
1217if (typeof window.__uspapi !== uspStubFunction) {
1218setTimeout(function() {
1219if (typeof window.__uspapi !== 'undefined') {
1220window.__uspapi.apply(window.__uspapi, arg);
1221}
1222}, 500);
1223}
1224};
1225
1226var checkIfUspIsReady = function() {
1227uspTries++;
1228if (window.__uspapi === uspStubFunction && uspTries < uspTriesLimit) {
1229console.warn('USP is not accessible');
1230} else {
1231clearInterval(uspInterval);
1232}
1233};
1234
1235if (typeof window.__uspapi === 'undefined') {
1236window.__uspapi = uspStubFunction;
1237var uspInterval = setInterval(checkIfUspIsReady, 6000);
1238}
1239})();
1240</script>
vendor: 1 bytes, line 1240
1240
1241<script type="text/javascript" src="https://cmp.inmobi.com/choice/Uznnx7uFLxujG/www.thelocal.ch/choice.js?tag_version=V3" fetchpriority="high"></script>
1241
1242<!-- End InMobi Choice. Consent Manager Tag v3.0 -->
1243<script async src="https://functions.adnami.io/api/macro/adsm.macro.thelocal.ch.js"></script>
1243
1244    
1244<script>
1245        !(function(n){function t(e){n.addEventListener(e,B)}function o(e){n.removeEventListener(e,B)}function u(e,n,t){L?C(e,n):(t||u.lazy&&void 0===t?q:S).push(e,n)}function c(e){k.head.appendChild(e)}function i(e,n){z.call(e.attributes)[y](n)}function r(e,n,t,o){return o=(n?k.getElementById(n):o)||k.createElement(e),n&&(o.id=n),t&&(o.onload=t),o}function s(e,n,t){(t=e.src)&&((n=r(m)).rel="preload",n.as=h,n.href=t,(t=e[g](w))&&n[b](w,t),(t=e[g](x))&&n[b](x,t),c(n))}function a(e,n){return z.call((n||k).querySelectorAll(e))}function f(e,n){e.parentNode.replaceChild(n,e)}function l(t,e){a("source,img",t)[y](l),i(t,function(e,n){(n=/^data-(.+)/.exec(e.name))&&t[b](n[1],e.value)}),"string"==typeof e&&e&&(t.className+=" "+e),p in t&&t[p]()}function e(e,n,t){u(function(t){(t=a(e||N))[y](s),(function o(e,n){(e=t[E]())&&((n=r(e.nodeName)).text=e.text,i(e,function(e){"type"!=e.name&&n[b](e.name,e.value)}),n.src&&!n[g]("async")?(n.onload=n.onerror=o,f(e,n)):(f(e,n),o()))})()},n,t)}var d="Defer",m="link",h="script",p="load",v="pageshow",y="forEach",g="getAttribute",b="setAttribute",E="shift",w="crossorigin",x="integrity",A=["mousemove","keydown","touchstart","wheel"],I="on"+v in n?v:p,N=h+"[type=deferjs]",j=n.IntersectionObserver,k=n.document||n,C=n.setTimeout,L=/p/.test(k.readyState),S=[],q=[],z=S.slice,B=function(e,n){for(n=I==e.type?(o(I),L=u,A[y](t),S):(A[y](o),q);n[0];)C(n[E](),n[E]())};e(),u.all=e,u.dom=function(e,n,i,c,r){u(function(t){function o(e){c&&!1===c(e)||l(e,i)}t=!!j&&new j(function(e){e[y](function(e,n){e.isIntersecting&&(t.unobserve(n=e.target),o(n))})},r),a(e||"[data-src]")[y](function(e){e[d]!=u&&(e[d]=u,t?t.observe(e):o(e))})},n,!1)},u.css=function(n,t,e,o,i){u(function(e){(e=r(m,t,o)).rel="stylesheet",e.href=n,c(e)},e,i)},u.js=function(n,t,e,o,i){u(function(e){(e=r(h,t,o)).src=n,c(e)},e,i)},u.reveal=l,n[d]=u,L||t(I)})(this);
1246    </script>
1246
1247    <link rel="dns-prefetch" href="//cmp.inmobi.com">
1248    <link rel="dns-prefetch" href="//experience.piano.io">
1249    <link rel="preconnect" href="https://cmp.inmobi.com" crossorigin>
1250    <link rel="preconnect" href="https://experience.piano.io" crossorigin>
1251        <link rel="dns-prefetch" href="//cdnjs.cloudflare.com">
1252    <link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin>
1253            <link rel="dns-prefetch" href="//assets.thelocal.com">
1254    <link rel="preconnect" href="https://assets.thelocal.com" crossorigin>
1255    
1256        <link rel="preload" href="https://www.thelocal.ch/fonts/noto-sans-v27-latin-regular.woff2" as="font" type="font/woff2" crossorigin>
1257    <link rel="preload" href="https://www.thelocal.ch/fonts/noto-sans-v27-latin-700.woff2" as="font" type="font/woff2" crossorigin>
1258    <link rel="preload" href="https://www.thelocal.ch/fonts/eb-garamond-v26-latin-700.woff2" as="font" type="font/woff2" crossorigin>
1259    <style>
1260        .article-card__media {
1261            width: 100%;
1262            height: auto;
1263            overflow: hidden;
1264            aspect-ratio: var(--article-card-media-ratio, 300 / 190);
1265        }
1266
1267        .article-card--hero .article-card__media {
1268            max-height: 390px;
1269        }
1270
1271        .article-card--regular .article-card__media,
1272        .article-card--center .article-card__media {
1273            max-height: 190px;
1274        }
1275
1276        @media (max-width: 576px) {
1277            .hp-new__container .hp-new__article {
1278                min-width: 0;
1279            }
1280
1281            .hp-new__container .hp-new__article--mobileRight .article-card,
1282            .hp-new__container .hp-new__article--mobileRight .article-card__content {
1283                min-width: 0;
1284            }
1285
1286            .article-card--hero .article-card__media {
1287                max-height: 230px;
1288            }
1289        }
1290    </style>
1291    
1292        <link
1293        rel="preload"
1294        as="image"
1295        href="https://assets.thelocal.com/cdn-cgi/rs:fit:850/quality:75/plain/https://apiwp.thelocal.com/wp-content/uploads/2026/08/startupstockphotos-student-849825_1280.jpg@webp"
1296                imagesrcset="https://assets.thelocal.com/cdn-cgi/rs:fit:450/quality:75/plain/https://apiwp.thelocal.com/wp-content/uploads/2026/08/startupstockphotos-student-849825_1280.jpg@webp 450w, https://assets.thelocal.com/cdn-cgi/rs:fit:850/quality:75/plain/https://apiwp.thelocal.com/wp-content/uploads/2026/08/startupstockphotos-student-849825_1280.jpg@webp 850w"
1297                imagesizes="(max-width: 576px) 92vw, (max-width: 1200px) 80vw, 850px"
1298        fetchpriority="high"
1299    >
1300    
1301    
1302    
1303        
1303<script type="tl-js">
1304            document.cookie = "__adblocker=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";
1305            var setNptTechAdblockerCookie = function(adblocker) {
1306                var d = new Date();
1307                d.setTime(d.getTime() + 60 * 5 * 1000);
1308                document.cookie = "__adblocker=" + (adblocker ? "true" : "false") + "; expires=" + d.toUTCString() + "; path=/";
1309            };
1310            var script = document.createElement("script");
1311            script.setAttribute("async", true);
1312            script.setAttribute("src", "//www.npttech.com/advertising.js");
1313            script.setAttribute("onerror", "setNptTechAdblockerCookie(true);");
1314            document.getElementsByTagName("head")[0].appendChild(script);
1315        </script>
1315
1316        
1317    <meta name="csrf-token" content="CaEiB5wNeoh1oBzX6E6AOn2szQWSFSLF9XgzqTqH">
1318    <meta charset="utf-8">
1319    <meta name="referrer" content="origin">
1320    <meta name="viewport" content="width=device-width, initial-scale=1">
1321    <meta name='robots' content='max-image-preview:large'/>
1322    <meta name="robots" content="max-snippet:-1">
1323    <meta name="apple-mobile-web-app-capable" content="yes">
1324    <meta name="apple-itunes-app" content="app-id=1078564301">
1325    <meta name="p:domain_verify" content="8948a77d334a5a512e1a94f7df2371e4"/>
1326    <meta property="fb:pages" content="381700821924600" />
1327    <meta property="fb:app_id" content="1722590698056362" />
1328    <link rel="profile" href="https://gmpg.org/xfn/11">
1329    <link rel="icon" href="/images/favicons/ch.ico" type="image/x-icon"/>
1330    <link rel="shortcut icon" href="/images/favicons/ch.ico"/>
1331    <link rel="apple-touch-icon" sizes="120x120" href="/images/ch/image/apple-touch-icon/120.png">
1332    <link rel="apple-touch-icon" sizes="152x152" href="/images/ch/image/apple-touch-icon/152.png">
1333    <link rel="apple-touch-icon" sizes="167x167" href="/images/ch/image/apple-touch-icon/167.png">
1334    <link rel="apple-touch-icon" sizes="180x180" href="/images/ch/image/apple-touch-icon/180.png">
1335    <meta name="theme-color" content="#EF6C00"/>
1336
1337 
1338    <title>What Americans abroad need to know about the October 15th tax deadline</title>
1339    <meta property="news_keywords" content="by-myexpattaxes"/>
1340    <meta property="article:published_time" content="2026-08-26T09:11:29+02:00" />
1341    <meta property="article:modified_time" content="2026-08-26T09:11:21+02:00"/>
1342    <meta name="cXenseParse:articleid" content="269231"/>
1343            <meta property="cXenseParse:image" content="https://assets.thelocal.com/cdn-cgi/rs:fit:1200/quality:75/plain/https://apiwp.thelocal.com/wp-content/uploads/2026/08/startupstockphotos-student-849825_1280.jpg@webp"/>
1344        <meta property="cXenseParse:url" content="https://www.thelocal.ch/20260826/what-americans-abroad-need-to-know-about-the-october-15th-tax-deadline"/>
1345    <meta property="og:article:author" content=""/>
1346    <meta property="og:locale" content="en_US" />
1347    <meta property="og:type" content="article"/>
1348    <meta property="og:url" content="https://www.thelocal.ch/20260826/what-americans-abroad-need-to-know-about-the-october-15th-tax-deadline"/>
1349    <meta property="og:title" content="What Americans abroad need to know about the October 15th tax deadline"/>
1350    <meta property="og:description" content="A key tax deadline for Americans is coming up on October 15th. Our guide breaks down exactly what you need to know to avoid any nasty surprises."/>
1351            <meta property="og:image" content="https://assets.thelocal.com/cdn-cgi/rs:fit:1200/quality:75/plain/https://apiwp.thelocal.com/wp-content/uploads/2026/08/watermarks-logo-startupstockphotos-student-849825_1280.jpg@webp"/>
1352        <meta property="og:image:type" content="image/webp">
1353        <meta property="og:site_name" content="The Local Switzerland" />
1354    <meta name="twitter:card" content="summary_large_image" />
1355    <meta name="twitter:site" content="@TheLocalSwitz" />
1356    <meta name="twitter:title" content="What Americans abroad need to know about the October 15th tax deadline" />
1357    <meta name="twitter:description" content="A key tax deadline for Americans is coming up on October 15th. Our guide breaks down exactly what you need to know to avoid any nasty surprises." />
1358            <meta name="twitter:image" content="https://assets.thelocal.com/cdn-cgi/rs:fit:1200/quality:75/plain/https://apiwp.thelocal.com/wp-content/uploads/2026/08/watermarks-logo-startupstockphotos-student-849825_1280.jpg@webp" />
1359        <meta name="twitter:label1" content="Written by">
1360    <meta name="twitter:data1" content="">
1361    <meta name="description" content="A key tax deadline for Americans is coming up on October 15th. Our guide breaks down exactly what you need to know to avoid any nasty surprises." />
1362        <link rel="canonical" href="https://www.thelocal.com/20260826/what-americans-abroad-need-to-know-about-the-october-15th-tax-deadline" />
1363            <meta name="googlebot" content="noindex">
1364                <meta property="article:content_tier" content="free" />
1365                <meta name="cXenseParse:tlo-articletype" content="sponsored"/>
1366            <!-- Styles -->
1367        <link href="/css/app.css?id=9ab2763b6c87721691374f36204319e4" rel="stylesheet">
1368    <noscript><link rel="stylesheet" href="/css/app.css?id=9ab2763b6c87721691374f36204319e4"></noscript>
1369        
1369<script>
1370        // All web analytics events enter GTM through this application-owned bridge.
1371        window.__TL_ANALYTICS__ = window.__TL_ANALYTICS__ || {
1372            push: function (event) {
1373                window.dataLayer = window.dataLayer || [];
1374                window.dataLayer.push(event);
1375            },
1376        };
1377    </script>
1377
1378            
1378<script>
1379            window.__TL_ANALYTICS__.push({
1380                'event': 'Pageview',
1381                'pagePath': 'https://www.thelocal.ch/20260826/what-americans-abroad-need-to-know-about-the-october-15th-tax-deadline',
1382                'pageTitle': 'What Americans abroad need to know about the October 15th tax deadline',
1383                'pageId': '872811',
1384                'pageTags': 'sponsored, by-myexpattaxes',
1385                'visitorType': 'free',
1386                'UID': '',
1387            });
1388            
1389            if(document.referrer !== '') {
1390                let prevUrl = new URL(document.referrer);
1391                if(prevUrl.pathname === '/') {
1392                    window.__TL_ANALYTICS__.push({ ecommerce: null });
1393                    window.__TL_ANALYTICS__.push({
1394                        event: 'select_promotion',
1395                        ecommerce: {
1396                            promotion_name: 'Homepage',
1397                            items: [
1398                                {
1399                                    item_id: '872811',
1400                                    item_name: 'What Americans abroad need to know about the October 15th tax deadline',
1401                                    item_category: 'by myexpattaxes'
1402                                }
1403                            ]
1404                        }
1405                    });
1406                }
1407            }
1408            </script>
1408
1409        
1409<script>
1410            (function(w,d,s,l,i){
1411                var loadTagManager = function() {
1412                    if (w.__TLGtmLoading) {
1413                        return;
1414                    }
1415                    w.__TLGtmLoading = true;
1416
1417                    if (w.__TLPerfMarks && typeof w.__TLPerfMarks.mark === 'function') {
1418                        w.__TLPerfMarks.mark('tl:thirdparty:gtm:start');
1419                    }
1420                    w[l]=w[l]||[];
1421                    w[l].push({'gtm.start': new Date().getTime(), event:'gtm.js'});
1422                    var f=d.getElementsByTagName(s)[0];
1423                    var j=d.createElement(s);
1424                    var dl=l!='dataLayer' ? '&l='+l : '';
1425                    j.async=true;
1426                    j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;
1427                    f.parentNode.insertBefore(j,f);
1428
1429                    if (w.__TLPerfMarks && typeof w.__TLPerfMarks.measure === 'function') {
1430                        w.__TLPerfMarks.mark('tl:thirdparty:gtm:end');
1431                        w.__TLPerfMarks.measure('tl:thirdparty:gtm', 'tl:thirdparty:gtm:start', 'tl:thirdparty:gtm:end');
1432                    }
1433                };
1434
1435                var installCmpDuplicateGuard = function() {
1436                    // The application owns InMobi; GTM must not bootstrap another CMP.
1437                    if (w.__TLCmpDuplicateGuardInstalled || !w.Node || !w.Node.prototype) {
1438                        return;
1439                    }
1440
1441                    var originalAppendChild = w.Node.prototype.appendChild;
1442                    var originalInsertBefore = w.Node.prototype.insertBefore;
1443                    var isDuplicateCmpNode = function(node) {
1444                        if (w.__TLWebCmpOwner !== 'application' || !node) {
1445                            return false;
1446                        }
1447
1448                        if (
1449                            node.tagName === 'SCRIPT'
1450                            && typeof node.src === 'string'
1451                            && node.src.indexOf('https://cmp.inmobi.com/choice/') === 0
1452                        ) {
1453                            return true;
1454                        }
1455
1456                        return node.tagName === 'IFRAME'
1457                            && node.name === '__tcfapiLocator'
1458                            && d.querySelector('iframe[name=__tcfapiLocator]') !== null;
1459                    };
1460
1461                    w.Node.prototype.appendChild = function(node) {
1462                        if (isDuplicateCmpNode(node)) {
1463                            w.__TLCmpDuplicateBlocks = (w.__TLCmpDuplicateBlocks || 0) + 1;
1464                            return node;
1465                        }
1466
1467                        return originalAppendChild.call(this, node);
1468                    };
1469
1470                    w.Node.prototype.insertBefore = function(node, referenceNode) {
1471                        if (isDuplicateCmpNode(node)) {
1472                            w.__TLCmpDuplicateBlocks = (w.__TLCmpDuplicateBlocks || 0) + 1;
1473                            return node;
1474                        }
1475
1476                        return originalInsertBefore.call(this, node, referenceNode);
1477                    };
1478
1479                    w.__TLCmpDuplicateGuardInstalled = true;
1480                };
1481
1482                var protectCmpApi = function() {
1483                    if (w.__TLCmpApiProtected || typeof w.__tcfapi !== 'function') {
1484                        return;
1485                    }
1486
1487                    var canonicalTcfApi = w.__tcfapi;
1488                    Object.defineProperty(w, '__tcfapi', {
1489                        configurable: true,
1490                        get: function() {
1491                            return canonicalTcfApi;
1492                        },
1493                        set: function() {
1494                            w.__TLCmpDuplicateBlocks = (w.__TLCmpDuplicateBlocks || 0) + 1;
1495                        }
1496                    });
1497                    w.__TLCmpApiProtected = true;
1498                };
1499
1500                installCmpDuplicateGuard();
1501
1502                var cmpWaitStartedAt = Date.now();
1503                var waitForCmpBootstrap = function() {
1504                    if (Date.now() - cmpWaitStartedAt >= 10000) {
1505                        loadTagManager();
1506                        return;
1507                    }
1508
1509                    if (typeof w.__tcfapi !== 'function') {
1510                        w.setTimeout(waitForCmpBootstrap, 25);
1511                        return;
1512                    }
1513
1514                    var pingCompleted = false;
1515                    var retry = function() {
1516                        if (pingCompleted) {
1517                            return;
1518                        }
1519
1520                        pingCompleted = true;
1521                        w.setTimeout(waitForCmpBootstrap, 25);
1522                    };
1523
1524                    try {
1525                        w.__tcfapi('ping', 2, function(pingData, success) {
1526                            if (pingCompleted) {
1527                                return;
1528                            }
1529
1530                            pingCompleted = true;
1531                            if (success !== false && pingData && pingData.cmpLoaded === true) {
1532                                protectCmpApi();
1533                                loadTagManager();
1534                                return;
1535                            }
1536
1537                            w.setTimeout(waitForCmpBootstrap, 25);
1538                        });
1539                        w.setTimeout(retry, 100);
1540                    } catch (error) {
1541                        retry();
1542                    }
1543                };
1544
1545                waitForCmpBootstrap();
1546            })(window,document,'script','dataLayer','GTM-NMLDXPL');
1547        </script>
1547
1548    
1548<script>
1549        try {
1550            // Piano can leave __utp behind after a logout, so this optimistic member styling
1551            // must not treat a leftover token as a session while a logout is still pending.
1552            const loggedOutAt = Math.max(
1553                Number(sessionStorage.getItem('tl-force-piano-logout-at') || 0),
1554                Number(localStorage.getItem('tl-force-piano-logout-at') || 0)
1555            );
1556            const hasPendingLogout = loggedOutAt > 0 && (Date.now() - loggedOutAt) < 300000;
1557
1558            // Only the Piano access token proves a session. piano-uid is a cached identifier from
1559            // an earlier experience execution: it survives clearing cookies and logging out, so
1560            // trusting it hid the login button and showed member links to signed-out visitors.
1561            const hasPianoAccessToken = document.cookie.includes('__utp=');
1562
1563            if (!hasPianoAccessToken) {
1564                // The token is gone, so the cached uid is stale. Drop it before anything else
1565                // treats it as an identity, such as the account subscription banner lookup.
1566                localStorage.removeItem('piano-uid');
1567                localStorage.removeItem('piano_uid');
1568            }
1569
1570            if (hasPianoAccessToken && !hasPendingLogout) {
1571                document.documentElement.classList.add('has-piano-session');
1572            }
1573        } catch (error) {
1574            // Storage can be unavailable in private browsing mode.
1575        }
1576    </script>
1576
1577        
1577<script type="application/javascript" async defer src="https://experience.piano.io/xbuilder/experience/load?aid=0nYzKk1Epu"></script>
1577<script type="application/javascript" async defer src="https://cdn.cxense.com/cx.cce.js" data-vendor="iab:412"></script>
1577<script type='application/javascript' data-vendor="iab:412">var cX = window.cX = window.cX || {}; cX.callQueue = cX.callQueue || []; cX.options = cX.options || { compat: { c1x: { wait: 3000 } } };cX.CCE = cX.CCE || {}; cX.CCE.callQueue = cX.CCE.callQueue || [];cX.callQueue.push(['setSiteId', '1129593794869594600']);</script>
1577
1578
1579    
1579<script>
1580        (function () {
1581            window.tp = window.tp || [];
1582            const tp = window.tp;
1583            const diagnosticsEnabled = false;
1584
1585            function recordPianoDiagnostic(name) {
1586                if (!diagnosticsEnabled) {
1587                    return;
1588                }
1589
1590                const diagnostics = window.__TL_PIANO_DIAGNOSTICS__ = window.__TL_PIANO_DIAGNOSTICS__ || {
1591                    pianoScriptLoads: 0,
1592                    experienceInitializations: 0,
1593                    pianoSyncRequests: 0,
1594                    pianoSyncSuccesses: 0,
1595                    pianoSyncFailures: 0,
1596                    documentNavigations: 0,
1597                    dataLayerEvents: {},
1598                };
1599
1600                if (name.startsWith('dataLayer:')) {
1601                    const eventName = name.slice('dataLayer:'.length);
1602                    diagnostics.dataLayerEvents[eventName] = (diagnostics.dataLayerEvents[eventName] || 0) + 1;
1603                    return;
1604                }
1605
1606                diagnostics[name] = (diagnostics[name] || 0) + 1;
1607            }
1608
1609            window.__TL_RECORD_PIANO_DIAGNOSTIC__ = recordPianoDiagnostic;
1610
1611            document.querySelectorAll('script[src*="experience.piano.io"]').forEach((script) => {
1612                script.addEventListener('load', () => recordPianoDiagnostic('pianoScriptLoads'), { once: true });
1613            });
1614
1615            function createPianoAnalyticsBridge() {
1616                const emittedEventKeys = new Set();
1617
1618                function claim(eventName, identifier) {
1619                    const eventKey = [eventName, identifier || window.location.pathname].join(':');
1620                    if (emittedEventKeys.has(eventKey)) {
1621                        return '';
1622                    }
1623
1624                    emittedEventKeys.add(eventKey);
1625
1626                    return eventKey;
1627                }
1628
1629                function track(eventName, parameters, identifier) {
1630                    const eventKey = claim(eventName, identifier);
1631                    if (!eventKey) {
1632                        return false;
1633                    }
1634
1635                    window.__TL_ANALYTICS__.push({
1636                        event: eventName,
1637                        edition: window.__EDITION__ || document.documentElement.dataset.edition || 'unknown',
1638                        piano_event_key: eventKey,
1639                        ...(parameters || {}),
1640                    });
1641                    recordPianoDiagnostic(`dataLayer:${eventName}`);
1642
1643                    return true;
1644                }
1645
1646                return { claim, track };
1647            }
1648
1649            // This bridge is created before Composer executes so every Piano event reaches GTM
1650            // through one path. Composer's direct GA4 integration must remain disabled.
1651            window.__TL_PIANO_ANALYTICS__ = window.__TL_PIANO_ANALYTICS__ || createPianoAnalyticsBridge();
1652
1653            const pianoSyncUrl = "https:\/\/www.thelocal.ch\/piano-sync";
1654            const pianoSyncStorageKey = 'tl-piano-sync-token';
1655            let pianoLoginInProgress = false;
1656
1657            function getPianoAccessToken() {
1658                const match = document.cookie.match(/(?:^|;\s*)__utp=([^;]+)/);
1659
1660                return match ? decodeURIComponent(match[1]) : '';
1661            }
1662
1663            // The Vue layout recovers a missing Laravel session from the same token and reloads
1664            // when it succeeds. Claim the token here so a login reload cannot be followed by a
1665            // second recovery reload on the page it just loaded.
1666            function markPianoSessionSynced(accessToken) {
1667                if (!accessToken) {
1668                    return;
1669                }
1670
1671                try {
1672                    window.sessionStorage.setItem(pianoSyncStorageKey, accessToken);
1673                } catch (error) {
1674                    // Storage can be unavailable in private browsing mode.
1675                }
1676            }
1677
1678            function createPianoWebSession(url, payload) {
1679                const csrfToken = document.querySelector('meta[name="csrf-token"]')?.getAttribute('content');
1680
1681                return fetch(url, {
1682                    method: 'POST',
1683                    credentials: 'same-origin',
1684                    headers: {
1685                        Accept: 'application/json',
1686                        'Content-Type': 'application/json',
1687                        'X-CSRF-TOKEN': csrfToken || '',
1688                    },
1689                    body: JSON.stringify(payload),
1690                }).then((response) => response.json());
1691            }
1692
1693            function shouldReloadAfterPianoLogin(loginEvent) {
1694                const source = loginEvent && typeof loginEvent.source === 'string'
1695                    ? loginEvent.source.toUpperCase()
1696                    : '';
1697
1698                return source !== 'OFFER';
1699            }
1700
1701            // This runs before Composer can display an offer. It must not wait for an async Vue
1702            // chunk, otherwise a paywall login can finish without creating the Laravel session.
1703            window.__TL_COMPLETE_PIANO_LOGIN__ = function (loginEvent, retrying = false) {
1704                if (pianoLoginInProgress) {
1705                    return;
1706                }
1707
1708                pianoLoginInProgress = true;
1709
1710                const eventData = loginEvent && typeof loginEvent === 'object' ? loginEvent : {};
1711                const accessToken = eventData.token || getPianoAccessToken();
1712
1713                const sessionRequest = accessToken
1714                    ? createPianoWebSession(pianoSyncUrl, { token: accessToken })
1715                    : null;
1716
1717                if (!sessionRequest) {
1718                    if (!retrying) {
1719                        // Composer can set __utp immediately after this callback. Retry once on
1720                        // the next event-loop turn before treating the login event as incomplete.
1721                        window.setTimeout(() => {
1722                            pianoLoginInProgress = false;
1723                            window.__TL_COMPLETE_PIANO_LOGIN__({
1724                                ...eventData,
1725                                token: getPianoAccessToken(),
1726                            }, true);
1727                        }, 0);
1728                        return;
1729                    }
1730
1731                    pianoLoginInProgress = false;
1732                    return;
1733                }
1734
1735                window.__TL_PIANO_ANALYTICS__.track('login', {}, 'login');
1736                recordPianoDiagnostic('pianoSyncRequests');
1737
1738                sessionRequest
1739                    .then((response) => {
1740                        if (response && (response.message === 'Piano sync success' || response.message === 'User logged in successfully')) {
1741                            recordPianoDiagnostic('pianoSyncSuccesses');
1742                            markPianoSessionSynced(accessToken || getPianoAccessToken());
1743
1744                            // Authentication inside an offer must return control to Piano so the
1745                            // checkout can advance from registration to payment. Direct Piano ID
1746                            // login still needs a reload to apply the new PHP session to this page.
1747                            if (!shouldReloadAfterPianoLogin(eventData)) {
1748                                pianoLoginInProgress = false;
1749                                return;
1750                            }
1751
1752                            recordPianoDiagnostic('documentNavigations');
1753                            window.location.reload();
1754                            return;
1755                        }
1756
1757                        pianoLoginInProgress = false;
1758                        recordPianoDiagnostic('pianoSyncFailures');
1759                    })
1760                    .catch(() => {
1761                        pianoLoginInProgress = false;
1762                        recordPianoDiagnostic('pianoSyncFailures');
1763                    });
1764            };
1765
1766            tp.push([
1767                'addHandler',
1768                'loginSuccess',
1769                function (event) {
1770                    window.__TL_COMPLETE_PIANO_LOGIN__(event);
1771                },
1772            ]);
1773
1774            // Offers can render during the first experience execution, before Vue mounts.
1775            // Register this handler before calling tp.experience.init() so that event is not lost.
1776            tp.push([
1777                'addHandler',
1778                'showOffer',
1779                function (event) {
1780                    const offerId = event && event.offerId ? event.offerId : '';
1781                    window.__TL_PIANO_ANALYTICS__.track('piano_offer_view', {
1782                        piano_offer_id: offerId,
1783                    }, offerId || 'offer');
1784                },
1785            ]);
1786
1787            // The first experience execution also happens before the Vue chunk registers its own
1788            // callbacks, so the resolved uid was lost on a cold load. Persist it here and let the
1789            // layout react through the window event; the layout still owns account rendering.
1790            tp.push([
1791                'addHandler',
1792                'experienceExecute',
1793                function (event) {
1794                    const uid = event && event.user ? event.user.uid : '';
1795                    if (uid && uid !== 'anon') {
1796                        try {
1797                            window.localStorage.setItem('piano-uid', uid);
1798                        } catch (error) {
1799                            // Storage can be unavailable in private browsing mode.
1800                        }
1801                    }
1802
1803                    window.__TL_PIANO_EXPERIENCE_EXECUTED__ = true;
1804                    window.dispatchEvent(new CustomEvent('tl:piano-experience-execute', { detail: event }));
1805                },
1806            ]);
1807
1808            function hasPendingForcedPianoLogout() {
1809                const key = 'tl-force-piano-logout-at';
1810                const maxAgeMs = 5 * 60 * 1000;
1811                const readTimestamp = (storage, storageKey) => {
1812                    try {
1813                        if (!storage || typeof storage.getItem !== 'function') {
1814                            return 0;
1815                        }
1816
1817                        return Number(storage.getItem(storageKey || key) || 0);
1818                    } catch (error) {
1819                        return 0;
1820                    }
1821                };
1822
1823                const lastMarkedAt = Math.max(
1824                    readTimestamp(window.sessionStorage),
1825                    readTimestamp(window.localStorage)
1826                );
1827
1828                if (lastMarkedAt <= 0 || Date.now() - lastMarkedAt >= maxAgeMs) {
1829                    return false;
1830                }
1831
1832                // The logout attempt needs an initialized Piano, so deferring the experience for
1833                // every load until the attempt succeeds could suppress Piano entirely. Defer once.
1834                return Math.max(
1835                    readTimestamp(window.sessionStorage, 'tl-force-piano-logout-ran'),
1836                    readTimestamp(window.localStorage, 'tl-force-piano-logout-ran')
1837                ) <= 0;
1838            }
1839
1840            tp.push([
1841                'init',
1842                function () {
1843                    if (window.__TL_PIANO_EXPERIENCE_STARTED__) {
1844                        return;
1845                    }
1846
1847                    if (hasPendingForcedPianoLogout()) {
1848                        window.__TL_PIANO_EXPERIENCE_DEFERRED__ = true;
1849                        return;
1850                    }
1851
1852                    try {
1853                        if (tp && tp.experience && typeof tp.experience.init === 'function') {
1854                            window.__TL_PIANO_EXPERIENCE_STARTED__ = true;
1855                            recordPianoDiagnostic('experienceInitializations');
1856                            tp.experience.init();
1857                        }
1858                    } catch (error) {
1859                        window.__TL_PIANO_EXPERIENCE_STARTED__ = false;
1860                    }
1861                },
1862            ]);
1863        })();
1864    </script>
1864
1865            
1865<script type="application/ld+json">{"@context":"https://schema.org","@type":"AdvertiserContentArticle","mainEntityOfPage":{"@type":"WebPage","@id":"https://www.thelocal.ch/20260826/what-americans-abroad-need-to-know-about-the-october-15th-tax-deadline"},"headline":"What Americans abroad need to know about the October 15th tax deadline","datePublished":"2026-08-26T09:11:29+02:00","dateModified":"2026-08-26T09:11:21+02:00","description":"A key tax deadline for Americans is coming up on October 15th. Our guide breaks down exactly what you need to know to avoid any nasty surprises.","keywords":"Switzerland news, by-myexpattaxes","isAccessibleForFree":true,"author":{"@type":"Organization","name":"The Local","email":"[email protected]","url":"https://www.thelocal.ch"},"isPartOf":{"@type":["CreativeWork","Product"],"name":"The Local Switzerland","productID":"thelocal.ch:member"},"publisher":{"@type":"NewsMediaOrganization","name":"The Local Switzerland","keywords":"Switzerland's news in English","logo":{"@type":"ImageObject","url":"https://www.thelocal.ch/images/the-local-network-logo-300x60.png","width":300,"height":60}},"image":"https://assets.thelocal.com/cdn-cgi/rs:fit:1200/quality:75/plain/https://apiwp.thelocal.com/wp-content/uploads/2026/08/startupstockphotos-student-849825_1280.jpg@webp"}</script>
1865
1866        
1866<script async type="tl-js" subscriptions-control="manual" src="https://news.google.com/swg/js/v1/swg.js"></script>
1866
1867            
1868    
1869        
1869<script type="tl-js">
1870    (function () {
1871        var endpoint = "https://www.thelocal.ch/beehiiv/article-embed-subscribe";
1872        var messageTimeout;
1873
1874        function messageFromHtml(html) {
1875            var doc = new DOMParser().parseFromString(html, 'text/html');
1876            var message = doc.querySelector('.tl-embed-message__text');
1877
1878            return message ? message.textContent.trim() : '';
1879        }
1880
1881        function setMessage(form, type, message) {
1882            var container = form.closest('.tl-newsletter-form');
1883            var target = container ? container.querySelector('[data-beehiiv-signup-message]') : null;
1884
1885            if (! target) {
1886                if (typeof window.TheLocalNotify === 'function') {
1887                    window.TheLocalNotify(type, message);
1888                }
1889
1890                return;
1891            }
1892
1893            target.textContent = message;
1894            target.className = 'tl-newsletter-form__message tl-newsletter-form__message--' + type;
1895            target.hidden = false;
1896
1897            return { container: container, target: target };
1898        }
1899
1900        function showSuccessMessage(form, message) {
1901            var messageElements = setMessage(form, 'success', message);
1902            if (! messageElements) {
1903                return;
1904            }
1905
1906            window.clearTimeout(messageTimeout);
1907
1908            if (! form.querySelector('.tl-newsletter-form__input')) {
1909                form.remove();
1910                messageTimeout = window.setTimeout(function () {
1911                    messageElements.container.remove();
1912                }, 5000);
1913
1914                return;
1915            }
1916
1917            messageTimeout = window.setTimeout(function () {
1918                messageElements.target.hidden = true;
1919            }, 5000);
1920        }
1921
1922        document.addEventListener('submit', function (event) {
1923            var form = event.target;
1924
1925            if (! form || ! form.matches || ! form.matches('[data-beehiiv-signup-form]')) {
1926                return;
1927            }
1928
1929            event.preventDefault();
1930
1931            var button = form.querySelector('button[type="submit"]');
1932            if (button) {
1933                button.disabled = true;
1934            }
1935
1936            fetch(form.action || endpoint, {
1937                method: 'POST',
1938                body: new FormData(form),
1939                headers: {
1940                    'Accept': 'text/html',
1941                    'X-Requested-With': 'XMLHttpRequest'
1942                }
1943            }).then(function (response) {
1944                return response.text().then(function (html) {
1945                    var message = messageFromHtml(html);
1946
1947                    if (! response.ok || ! message) {
1948                        throw new Error(message || 'We could not subscribe you right now. Please try again later.');
1949                    }
1950
1951                    form.reset();
1952                    showSuccessMessage(form, message || 'You have been subscribed successfully.');
1953                });
1954            }).catch(function (error) {
1955                setMessage(form, 'error', error.message || 'We could not subscribe you right now. Please try again later.');
1956            }).finally(function () {
1957                if (button) {
1958                    button.disabled = false;
1959                }
1960            });
1961        });
1962    })();
1963</script>
1963
1964        
1964<script>
1965        window.__EDITION__ = "ch";
1966    </script>
1966
1967
1968    <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css' type='text/css' media='all' />
1969
1970    
1971    
1972                
1972<script type="tl-js">
1973                    window._taboola = window._taboola || [];
1974                    _taboola.push({article:"auto"});
1975                    !function (e, f, u, i) {
1976                        if (!document.getElementById(i)){
1977                        e.async = 1;
1978                        e.src = u;
1979                        e.id = i;
1980                        f.parentNode.insertBefore(e, f);
1981                        }
1982                    }(document.createElement("script"),
1983                    document.getElementsByTagName("script")[0],
1984                    "//cdn.taboola.com/libtrc/thelocal-network/loader.js",
1985                    "tb_loader_script");
1986                    if(window.performance && typeof window.performance.mark == "function")
1987                        {window.performance.mark("tbl_ic");}
1988                </script>
1988
1989                
1990    </head>
1991<body class="antialiased article-page article-page--commercial" data-auth="false">
vendor: 72 bytes, lines 1991-1992
1991
1992    <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
1992GTM-NMLDXPL
vendor: 92 bytes, lines 1992-1994
1992" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1993    
1994    
1994<div class="relative min-h-screen sm:pt-0" id="app">
1995        <default-js :data="{&quot;login_route&quot;:&quot;https:\/\/www.thelocal.ch\/login&quot;,&quot;register_route&quot;:&quot;https:\/\/www.thelocal.ch\/register&quot;,&quot;logout_route&quot;:&quot;https:\/\/www.thelocal.ch\/logout&quot;,&quot;piano_sync_route&quot;:&quot;https:\/\/www.thelocal.ch\/piano-sync&quot;,&quot;account_route&quot;:&quot;https:\/\/www.thelocal.ch\/members\/account&quot;,&quot;account_path&quot;:&quot;\/members\/account&quot;,&quot;piano_abandoned_cart_route&quot;:&quot;https:\/\/www.thelocal.ch\/api\/v1\/piano\/abandoned-cart&quot;,&quot;home_route&quot;:&quot;https:\/\/www.thelocal.ch&quot;,&quot;auth&quot;:false,&quot;auth_paid&quot;:false}"></default-js>
1996                                                    <header class="site-header">
1997                <div class="container">
1998    <nav class="navbar navbar--complex">
1999        <div class="nav-spacer nav-spacer--toggler">
2000            <button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasWithBackdrop" aria-controls="offcanvasWithBackdrop" aria-expanded="false" aria-label="Toggle navigation">
2001                <span class="navbar-toggler-icon"></span>
2002            </button>
2003        </div>
2004        <a class="navbar-brand" href="https://www.thelocal.ch">
2005            <img width="269" height="51" src="https://www.thelocal.ch/images/logo-ch.svg" alt="The Local">
2006        </a>
2007        <div class="nav-spacer nav-spacer--menu" role="navigation" aria-label="Quick Links">
2008                            <div class="login-box tablet-login-box"></div>
2009                                        <ul class="secondary-menu navbar-nav">
2010                                            <li class="nav-item dropdown">
2011                    <a class="nav-link dropdown-toggle" id="SwissNewsDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
2012                        Swiss News
2013                    </a>
2014                    <ul class="dropdown-menu" aria-labelledby="SwissNewsDropdown">
2015                                                    <li>
2016                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/category/switzerland-news">Latest news</a>
2017                                            
2018                            </li>
2019                                                    <li>
2020                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/zurich">Zurich</a>
2021                                            
2022                            </li>
2023                                                    <li>
2024                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/geneva">Geneva</a>
2025                                            
2026                            </li>
2027                                                    <li>
2028                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/basel">Basel</a>
2029                                            
2030                            </li>
2031                                                    <li>
2032                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/lausanne">lausanne</a>
2033                                            
2034                            </li>
2035                                                    <li>
2036                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/cost-of-living">Cost of living</a>
2037                                            
2038                            </li>
2039                                                    <li>
2040                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/travel-news">Travel news</a>
2041                                            
2042                            </li>
2043                                            </ul>
2044                </li>
2045                                                                                                                                                                                                                                                                <li class="nav-item dropdown">
2046                    <a class="nav-link dropdown-toggle" id="PracticalhelpDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
2047                        Practical help
2048                    </a>
2049                    <ul class="dropdown-menu" aria-labelledby="PracticalhelpDropdown">
2050                                                    <li>
2051                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/category/living-in-switzerland">Living in Switzerland</a>
2052                                            
2053                            </li>
2054                                                    <li>
2055                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/moving-to-switzerland">Moving to Switzerland</a>
2056                                            
2057                            </li>
2058                                                    <li>
2059                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/studying-in-switzerland">Studying in Switzerland</a>
2060                                            
2061                            </li>
2062                                                    <li>
2063                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/money">Money</a>
2064                                            
2065                            </li>
2066                                                    <li>
2067                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/v
2067isas">Visas</a>
2068                                            
2069                            </li>
2070                                                    <li>
2071                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/swiss-citizenship">Swiss citizenship</a>
2072                                            
2073                            </li>
2074                                                    <li>
2075                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/residency-permits">Residency permits</a>
2076                                            
2077                            </li>
2078                                                    <li>
2079                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/taxes">Taxes</a>
2080                                            
2081                            </li>
2082                                                    <li>
2083                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/question">Reader questions</a>
2084                                            
2085                            </li>
2086                                            </ul>
2087                </li>
2088                                                                                                                                                                                                                                                                                                                        <li class="nav-item dropdown">
2089                    <a class="nav-link dropdown-toggle" id="LearnaboutSwitzerlandDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
2090                        Learn about Switzerland
2091                    </a>
2092                    <ul class="dropdown-menu" aria-labelledby="LearnaboutSwitzerlandDropdown">
2093                                                    <li>
2094                                                                        <a class="dropdown-item" href="/language-lessons">Language Lessons</a>
2095                                            
2096                            </li>
2097                                                    <li>
2098                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/category/switzerland-explained">Switzerland Explained</a>
2099                                            
2100                            </li>
2101                                                    <li>
2102                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/discover-switzerland">Discover Switzerland</a>
2103                                            
2104                            </li>
2105                                                    <li>
2106                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/food-drink">Food and Drink</a>
2107                                            
2108                            </li>
2109                                            </ul>
2110                </li>
2111                                                                                                                                                                            <li class="nav-item dropdown">
2112                    <a class="nav-link dropdown-toggle" id="HomesDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
2113                        Homes
2114                    </a>
2115                    <ul class="dropdown-menu" aria-labelledby="HomesDropdown">
2116                                                    <li>
2117                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/property">Property</a>
2118                                            
2119                            </li>
2120                                                    <li>
2121                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/renting">Renting</a>
2122                                            
2123                            </li>
2124                                                    <li>
2125                                                                        <a class="dropdown-item" href="/rentals">Find rentals</a>
2126                                            
2127                            </li>
2128                                            </ul>
2129                </li>
2130                                                                                                                                                <li class="nav-item dropdown">
2131                    <a class="nav-link dropdown-toggle" id="JobsDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
2132                        Jobs
2133                    </a>
2134                    <ul class="dropdown-menu" aria-labelledby="JobsDropdown">
2135                                                    <li>
2136                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/working-in-switzerland">Working in Switzerland</a>
2137                                            
2138                            </li>
2139                                                    <li>
2140                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/work-permits">Work permits</a>
2141                                            
2142                            </li>
2143                                            </ul>
2144                </li>
2145                                                                                                                    <li class="nav-item">
2146                    <a href="/business-directory" class="nav-link">Local directory</a>
2147                </li>
2148                                <li class="nav-item nav-item--btn login-box"></li>
2149    </ul>
2150                    </div>
2151                <div class="search-nav-container">
2152            <search-component-js :data='{"search_route":"\/search","api_search_route":"\/api\/search","api_popular_route":"\/api\/search\/popular","api_autocomplete_route":"\/api\/search\/autocomplete","api_click_route":"\/api\/search\/click","edition":"ch","popular_searches":["switzerland","residence permit","taxes","housing","travel"],"source":"header"}'></search-component-js>
2153        </div>
2154
2155        <div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvasWithBackdrop" aria-labelledby="offcanvasWithBackdropLabel">
2156            <div class="offcanvas-header">
2157                <a href="https://www.thelocal.ch">
2158                    <img width="200" height="51" src="https://www.thelocal.ch/images/logo-ch.svg" alt="The Local">
2159                </a>
2160
2161                <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>
2162            </div>
2163            <div class="offcanvas-body">
2164                                    <div class="login-box"></div>
2165                
2166                                    <ul class="navbar-nav">
2167    <h5>Topics</h5>
2168                                            <li class="nav-item dropdown">
2169                    <a class="nav-link dropdown-toggle" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
2170                        Swiss News
2171                    </a>
2172                    <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
2173                                                    <li>
2174                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/category/switzerland-news">Latest news</a>
2175                                                      
2176                            </li>
2177                                                    <li>
2178                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/zurich">Zurich</a>
2179                                                      
2180                            </li>
2181                                                    <li>
2182                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/geneva">Geneva</a>
2183                                                      
2184                            </li>
2185                                                    <li>
2186                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/basel">Basel</a>
2187                                                      
2188                            </li>
2189                                                    <li>
2190                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/lausanne">lausanne</a>
2191                                                      
2192                            </li>
2193                                                    <li>
2194                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/cost-of-living">Cost of living</a>
2195                                                      
2196                            </li>
2197                                                    <li>
2198                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/travel-news">Travel news</a>
2199                                                      
2200                            </li>
2201                                            </ul>
2202                </li>
2203                                                                                                                                                                                                                                                                <li class="nav-item dropdown">
2204                    <a class="nav-link dropdown-toggle" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
2205                        Practical help
2206                    </a>
2207                    <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
2208                                                    <li>
2209                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/category/living-in-switzerland">Living in Switzerland</a>
2210                                                      
2211                            </li>
2212                                                    <li>
2213                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/moving-to-switzerland">Moving to Switzerland</a>
2214                                                      
2215                            </li>
2216                                                    <li>
2217                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/studying-in-switzerland">Studying in Switzerland</a>
2218                                                      
2219                            </li>
2220                                                    <li>
2221                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/money">Money</a>
2222                                                      
2223                            </li>
2224                                                    <li>
2225                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/v
2225isas">Visas</a>
2226                                                      
2227                            </li>
2228                                                    <li>
2229                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/swiss-citizenship">Swiss citizenship</a>
2230                                                      
2231                            </li>
2232                                                    <li>
2233                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/residency-permits">Residency permits</a>
2234                                                      
2235                            </li>
2236                                                    <li>
2237                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/taxes">Taxes</a>
2238                                                      
2239                            </li>
2240                                                    <li>
2241                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/question">Reader questions</a>
2242                                                      
2243                            </li>
2244                                            </ul>
2245                </li>
2246                                                                                                                                                                                                                                                                                                                        <li class="nav-item dropdown">
2247                    <a class="nav-link dropdown-toggle" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
2248                        Learn about Switzerland
2249                    </a>
2250                    <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
2251                                                    <li>
2252                                                                        <a class="dropdown-item" href="/language-lessons">Language Lessons</a>
2253                                                      
2254                            </li>
2255                                                    <li>
2256                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/category/switzerland-explained">Switzerland Explained</a>
2257                                                      
2258                            </li>
2259                                                    <li>
2260                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/discover-switzerland">Discover Switzerland</a>
2261                                                      
2262                            </li>
2263                                                    <li>
2264                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/food-drink">Food and Drink</a>
2265                                                      
2266                            </li>
2267                                            </ul>
2268                </li>
2269                                                                                                                                                                            <li class="nav-item dropdown">
2270                    <a class="nav-link dropdown-toggle" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
2271                        Homes
2272                    </a>
2273                    <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
2274                                                    <li>
2275                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/property">Property</a>
2276                                                      
2277                            </li>
2278                                                    <li>
2279                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/renting">Renting</a>
2280                                                      
2281                            </li>
2282                                                    <li>
2283                                                                        <a class="dropdown-item" href="/rentals">Find rentals</a>
2284                                                      
2285                            </li>
2286                                            </ul>
2287                </li>
2288                                                                                                                                                <li class="nav-item dropdown">
2289                    <a class="nav-link dropdown-toggle" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
2290                        Jobs
2291                    </a>
2292                    <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
2293                                                    <li>
2294                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/working-in-switzerland">Working in Switzerland</a>
2295                                                      
2296                            </li>
2297                                                    <li>
2298                                                                        <a class="dropdown-item" href="https://www.thelocal.ch/tag/work-permits">Work permits</a>
2299                                                      
2300                            </li>
2301                                            </ul>
2302                </li>
2303                                                                                                        </ul>
2304                                <ul class="navbar-nav">
2305    <h5>Choose edition</h5>
2306    <li class="nav-item dropdown">
2307        <a class="nav-link dropdown-toggle editorial-select text-capitalize" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
2308            switzerland
2309        </a>
2310        <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
2311            <li class="nav-item">
2312                <a class="dropdown-item " aria-current="page" href="https://www.thelocal.com">All Editions</a>
2313            </li>
2314            <li class="nav-item">
2315                <a class="dropdown-item " href="https://www.thelocal.at">
2316                    <div class="fflag fflag-AT ff-sm" title="Austria AT"></div>
2317                    Austria
2318                </a>
2319            </li>
2320            <li class="nav-item">
2321                <a class="dropdown-item " href="https://www.thelocal.dk">
2322                    <div class="fflag fflag-DK ff-sm" title="Denmark DK"></div>
2323                    Denmark
2324                </a>
2325            </li>
2326            <li class="nav-item">
2327                <a class="dropdown-item " href="https://www.thelocal.fr">
2328                    <div class="fflag fflag-FR ff-sm" title="France FR"></div>
2329                    France
2330                </a>
2331            </li>
2332            <li class="nav-item">
2333                <a class="dropdown-item " href="https://www.thelocal.de">
2334                    <div class="fflag fflag-DE ff-sm" title="Germany DE"></div>
2335                    Germany
2336                </a>
2337            </li>
2338            <li class="nav-item">
2339                <a class="dropdown-item " href="https://www.thelocal.it">
2340                    <div class="fflag fflag-IT ff-sm" title="Italy IT"></div>
2341                    Italy
2342                </a>
2343            </li>
2344            <li class="nav-item">
2345                <a class="dropdown-item " href="https://www.thelocal.no">
2346                    <div class="fflag fflag-NO ff-sm" title="Norway NO"></div>
2347                    Norway
2348                </a>
2349            </li>
2350            <li class="nav-item">
2351                <a class="dropdown-item " href="https://www.thelocal.es">
2352                    <div class="fflag fflag-ES ff-sm" title="Spain ES"></div>
2353                    Spain
2354                </a>
2355            </li>
2356            <li class="nav-item">
2357                <a class="dropdown-item " href="https://www.thelocal.se">
2358                    <div class="fflag fflag-SE ff-sm" title="Sweden SE"></div>
2359                    Sweden
2360                </a>
2361            </li>
2362            <li class="nav-item">
2363                <a class="dropdown-item active" href="https://www.thelocal.ch">
2364                    <div class="fflag fflag-CH ff-sm" title="Switzerland CH"></div>
2365                    Switzerland
2366                </a>
2367            </li>
2368        </ul>
2369    </li>
2370</ul>                <ul class="navbar-nav">
2371    <h5>Membership</h5>
2372                                        <li class="nav-item">
2373                    <a class="nav-link" href="/membership-offer?tpcc=ch-menu">
2374                        <i class="fas fa-user"></i> Become a member
2375                    </a>
2376                </li>
2377                                                    <li class="nav-item">
2378                    <a class="nav-link" href="https://www.thelocal.ch/free-newsletter">
2379                        <i class="far fa-envelope"></i> Newsletters
2380                    </a>
2381                </li>
2382                                                                                            <li class="nav-item">
2383                    <a class="nav-link" href="https://thelocalhelp.zendesk.com/hc/en-us">
2384                        <i class="far fa-circle-question"></i> Help Centre
2385                    </a>
2386                </li>
2387                                                    <li class="nav-item">
2388                    <a class="nav-link" href="https://www.thelocal.ch/gift-voucher">
2389                        <i class="fas fa-gift"></i> Gift Vouchers
2390                    </a>
2391                </li>
2392                                                    <li class="nav-item">
2393                    <a class="nav-link" href="https://www.thelocal.ch/membership-student">
2394                        <i class="fas fa-user-graduate"></i> Educational Access
2395                    </a>
2396                </li>
2397                                                    <li class="nav-item">
2398                    <a class="nav-link" href="https://www.thelocal.ch/corporate-membership">
2399                        <i class="fas fa-shop"></i> Corporate Access
2400                    </a>
2401                </li>
2402                        
2403</ul>
2404                <ul class="navbar-nav">
2405    <h5>The Local</h5>
2406                                    <li class="nav-item">
2407                    <a class="nav-link " href="https://www.thelocal.ch/aboutus">
2408                        <svg width="19" height="21" viewBox="0 0 19 21" fill="none" xmlns="http://www.w3.org/2000/svg">
2409                            <path fill-rule="evenodd" clip-rule="evenodd" d="M10.8308 0.140769C12.1981 0.11446 13.3947 0.545022 14.4697 1.31952C15.7353 2.23134 
240916.8409 3.33514 17.7224 4.66327C19.3268 7.08071 19.3926 9.64971 18.0746 12.1655C16.5195 15.1337 14.2777 17.4821 11.4716 19.1511C8.9412 20.6559 6.44941 20.4185 4.12068 18.5811C2.97483 17.677 1.98205 16.5975 1.17851 15.3519C-0.183885 13.2406 -0.384344 10.9492 0.677905 8.68117C2.32618 5.16019 4.89327 2.53048 8.21247 0.740604C9.03625 0.296567 9.94191 0.110995 10.8308 0.140769ZM5.89386 10.1305C5.89386 11.9832 5.89308 13.8359 5.89464 15.6885C5.89464 16.0886 5.96593 16.1658 6.34723 16.166C8.45369 16.1685 10.5604 16.1683 12.667 16.1663C13.06 16.166 13.1893 16.0309 13.1938 15.6164C13.1992 15.0853 13.199 14.5544 13.1938 14.0233C13.1896 13.6005 13.0926 13.4997 12.6988 13.4995C11.4213 13.4981 10.1436 13.4886 8.86679 13.5063C8.55971 13.5105 8.46343 13.4226 8.46575 13.0947C8.47902 11.2776 8.472 9.46015 8.472 7.64307C8.472 6.65168 8.47519 5.66056 8.46981 4.6693C8.46762 4.19074 8.36233 4.08564 7.91767 4.08422C7.42438 4.08255 6.93146 4.08306 6.43828 4.08397C5.93732 4.08474 5.89431 4.12876 5.89407 4.64325C5.89407 6.4724 5.89407 8.30142 5.89407 10.1304L5.89386 10.1305Z" fill="#666666"/>
2410                            </svg> About Us
2411                    </a>
2412                </li>
2413                                                    <li class="nav-item">
2414                    <a class="nav-link " href="https://www.thelocal.ch/contact">
2415                        <i class="far fa-envelope"></i>Contact Us
2416                    </a>
2417                </li>
2418                                                    <li class="nav-item">
2419                    <a class="nav-link " href="https://www.thelocal.ch/news-archive">
2420                        <i class="fa-solid fa-box-archive"></i>News Archive
2421                    </a>
2422                </li>
2423                                                    <li class="nav-item">
2424                    <a class="nav-link " href="https://www.thelocal.ch/search">
2425                        <i class="fa-solid fa-magnifying-glass"></i>Search articles
2426                    </a>
2427                </li>
2428                                                    <li class="nav-item">
2429                    <a class="nav-link " href="https://www.thelocal.ch/topics">
2430                        <i class="fa-solid fa-newspaper"></i>All topics
2431                    </a>
2432                </li>
2433                                                                                            <li class="nav-item">
2434                    <a class="nav-link " href="https://www.thelocal.ch/advertise-with-us">
2435                        <i class="fas fa-tag"></i> Advertise with us
2436                    </a>
2437                </li>
2438                                                    <li class="nav-item">
2439                    <a class="nav-link " href="/business-directory">
2440                        <i class="fas fa-briefcase"></i> Local directory
2441                    </a>
2442                </li>
2443                                                    <li class="nav-item">
2444                    <a class="nav-link " href="https://jobs.thelocal.com/employers/">
2445                        <i class="fa-solid fa-clipboard-list"></i> Post a job ad
2446                    </a>
2447                </li>
2448                    </ul>                <ul class="navbar-nav">
2449    <div class="footer-badges">
2450        <h5>Get The Local App</h5>
2451        <a href="https://apps.apple.com/app/the-local/id1078564301?ppid=87d73ebb-5099-4635-b188-9af5077c6013" target="_blank">
2452            <img class="lazyload" data-src="https://www.thelocal.ch/images/App_Store_Badge__wht.svg" width="120" height="40" alt="App Store">
2453        </a>
2454
2455        <a href="https://play.google.com/store/apps/details?id=com.thelocal.app" target="_blank">
2456            <img class="lazyload" data-src="https://www.thelocal.ch/images/google-play-badge.webp" width="150" height="60" alt="Google Play Store">
2457        </a>
2458    </div>
2459
2460    <ul class="footer-socialLinks">
2461                                                    <li>
2462                        <a href="https://www.facebook.com/TheLocalSwitzerland" target="_blank">
2463                            <i class="fab fa-square-facebook"></i>
2464                        </a>
2465                    </li>
2466                                                                        <li>
2467                        <a href="https://bsky.app/profile/thelocalswitz.bsky.social" target="_blank">
2468                            <i class="fab fa-square-bluesky"></i>
2469                        </a>
2470                    </li>
2471                                                                        <li>
2472                        <a href="https://www.instagram.com/thelocalswitzerland" target="_blank">
2473                            <i class="fab fa-square-instagram"></i>
2474                        </a>
2475                    </li>
2476                                                                        <li>
2477                        <a href="https://www.threads.net/@thelocalswitzerland" target="_blank">
2478                            <i class="fab fa-square-threads"></i>
2479                        </a>
2480                    </li>
2481                                                                        <li>
2482                        <a href="https://www.linkedin.com/company/thelocaleurope/" target="_blank">
2483                            <i class="fab fa-linkedin"></i>
2484                        </a>
2485                    </li>
2486                                </ul>
2487</ul>
2488                <div class="footer-column footer-column__general d-block d-md-none">
2489                    <img width="211" height="40" src="https://www.thelocal.ch/images/logo-ch.svg" alt="The Local" class="footer-logo">
2490                    <p class="footer-info">The Local Europe AB<br>Västmannagatan 43<br>113 25 Stockholm<br>Sweden</p>
2491                </div>
2492
2493            </div>
2494        </div>
2495    </nav>
2496</div>
2497<script>
2498    (function () {
2499        if (!document.documentElement.classList.contains('has-piano-session')) {
2500            return;
2501        }
2502
2503        const newsletterUrl = "https:\/\/www.thelocal.ch\/members\/newsletters";
2504        const accountUrl = "https:\/\/www.thelocal.ch\/members\/account";
2505
2506        document.querySelectorAll('.secondary-menu > .login-box').forEach((loginBox) => {
2507            const accountLink = loginBox.cloneNode(false);
2508            loginBox.classList.remove('login-box');
2509            loginBox.classList.add('nav-item--member-link');
2510            loginBox.innerHTML = `<a href="${newsletterUrl}" class="nav-link nav-link--member">Newsletters</a>`;
2511            accountLink.classList.remove('login-box', 'nav-item--btn');
2512            accountLink.classList.add('nav-item--member-link');
2513            accountLink.innerHTML = `<a href="${accountUrl}" class="nav-link nav-link--member">My account</a>`;
2514            loginBox.after(accountLink);
2515        });
2516
2517        document.querySelectorAll('.login-box').forEach((loginBox) => {
2518            const isOffcanvasNavigation = loginBox.closest('.offcanvas-body');
2519            loginBox.classList.remove('login-box');
2520            loginBox.classList.add('member-navigation');
2521            loginBox.innerHTML = isOffcanvasNavigation
2522                ? `<a href="${accountUrl}" class="nav-link">My Account</a><a href="${newsletterUrl}" class="nav-link">Newsletters</a>`
2523                : `<a href="${newsletterUrl}" class="nav-link nav-link--member">Newsletters</a><a href="${accountUrl}" class="nav-link nav-link--member">My account</a>`;
2524        });
2525
2526        document.querySelectorAll('.offcanvas-body a[href*="membership-offer"], .offcanvas-body a[href*="free-newsletter"]').forEach((link) => {
2527            const isMembershipOffer = link.href.includes('membership-offer');
2528            link.href = isMembershipOffer ? accountUrl : newsletterUrl;
2529            link.innerHTML = isMembershipOffer
2530                ? '<i class="fas fa-user"></i> My Account'
2531                : '<i class="far fa-envelope"></i> Newsletters';
2532        });
2533    })();
2534</script>
2534
2535            </header>
2536                
2537                <div id="pn-header" class="pn-header"></div>
2538                <div id="main" class="site">
2539            <article-js :data="{&quot;post_comment_route&quot;:&quot;https:\/\/www.thelocal.ch\/comment\/save&quot;,&quot;comments_load_route&quot;:&quot;https:\/\/www.thelocal.ch\/comment\/269231\/load&quot;,&quot;comments_load_token&quot;:&quot;eyJhcnRpY2xlX2lkIjoyNjkyMzF9.30cff5f668b072e70df5785a339bf0e4e8cb18f8cf3030bcab2991571c8950a5&quot;,&quot;comments_page_size&quot;:5,&quot;terms_url&quot;:&quot;https:\/\/www.thelocal.ch\/terms-of-use&quot;,&quot;isCommercial&quot;:true}"></article-js>
2540<div class="article-single article-single--sponsored">
2541    <div class="container-md">
2542        <div class="row">
2543            <div class="col-12 mobile-full-width">
2544                <main class="article-single__main article-single__main--featured article--commercial " data-url="https://www.thelocal.ch/20260826/what-americans-abroad-need-to-know-about-the-october-15th-tax-deadline">
2545                    
2546                    <div class="tag-wrapper">
2547                                                                                    <a href="https://www.thelocal.ch/tag/by-myexpattaxes" class="tag">Presented by myexpattaxes</a>
2548                                                                                                                    <img src="https://assets.thelocal.com/cdn-cgi/rs:fit:250/quality:75/plain/https://apiwp.thelocal.com/wp-content/uploads/2026/08/Screenshot-2026-08-21-105102.jpg@webp" alt="by myexpattaxes">
2549                                                                        </div>
2550                    <h1>What Americans abroad need to know about the October 15th tax deadline</h1>
2551                    <p class="article-single__excerpt">
2552                        A key tax deadline for Americans is coming up on October 15th. Our guide breaks down exactly what you need to know to avoid any nasty surprises.
2553                    </p>
2554                    <div class="meta">
2555                        <div class="article-single__author">
2556                            <div>
2557                                <span>
2558                                    Published: Wed 26 Aug 2026 09:11 CEST
2559                                </span>
2560                            </div>
2561                        </div>
2562                                                                        <div class="article-single__social">
2563                            <div class="article-actions-bar">
2564                                <button class="copy article-action article-action--share" type="button">Share</button>
2565                                <ul class="social-sharers article-actions">
2566                                    <li class="social-sharers__save article-actions__item">
2567                                        <save-article-js :data="{&quot;currentEditorial&quot;:&quot;ch&quot;,&quot;articleUrl&quot;:&quot;https:\/\/www.thelocal.ch\/20260826\/what-americans-abroad-need-to-know-about-the-october-15th-tax-deadline&quot;,&quot;isCommercial&quot;:false,&quot;save_article_route&quot;:&quot;https:\/\/www.thelocal.ch\/api\/v1\/user\/save-article&quot;,&quot;saved_articles_route&quot;:&quot;https:\/\/www.thelocal.ch\/members\/saved-articles&quot;,&quot;articleId&quot;:269231,&quot;userId&quot;:null,&quot;websitePlatform&quot;:&quot;web&quot;,&quot;isArticleSavedByUser&quot;:false,&quot;inSavedPage&quot;:false,&quot;isPaidUser&quot;:false}"></save-article-js>
2568                                    </li>
2569                                                                        <li>
2570                                        <button class="social-share facebook" data-sharer="facebook" title="Facebook">
2571                                            <i class="fab fa-facebook-f"></i>
2572                                        </button>
2573                                    </li>
2574                                    <li>
2575                                        <button class="social-share twitter" data-sharer="twitter" data-tweet="What Americans abroad need to know about the October 15th tax deadline" title="Twitter">
2576                                            <i class="fab fa-twitter"></i>
2577                                        </button>
2578                                    </li>
2579                                    <li>
2580                                        <button class="social-share linkedin" data-sharer="linkedin" title="LinkedIn">
2581                                            <i class="fab fa-linkedin-in"></i>
2582                                        </button>
2583                                    </li>
2584                                </ul>
2585                            </div>
2586                        </div>
2587                    </div>
2588                    <button
2589                        type="button"
2590                        aria-label="Get the app"
2591                        data-label="Get the app"
2592                        data-ios-url="https://apps.apple.com/app/the-local/id1078564301?ppid=87d73ebb-5099-4635-b188-9af5077c6013"
2593                        data-android-url="https://play.google.com/store/apps/details?id=com.thelocal.app"
2594                        class="article-app-cta"
2595                    ></button>
2596                    <figure class="figure article-single__feature">
2597                        <img
2598                            width="855"
2599                            height="524"
2600                            style="min-height: 250px;aspect-ratio: 855 / 524;"
2601                            src="https://assets.thelocal.com/cdn-cgi/rs:fit:850/quality:75/plain/https://apiwp.thelocal.com/wp-content/uploads/2026/08/startupstockphotos-student-849825_1280.jpg@webp"
2602                                                        srcset="https://assets.thelocal.com/cdn-cgi/rs:fit:450/quality:75/plain/https://apiwp.thelocal.com/wp-content/uploads/2026/08/startupstockphotos-student-849825_1280.jpg@webp 450w, https://assets.thelocal.com/cdn-cgi/rs:fit:850/quality:75/plain/https://apiwp.thelocal.com/wp-content/uploads/2026/08/startupstockphotos-student-849825_1280.jpg@webp 850w"
2603                            sizes="(max-width: 576px) 92vw, (max-width: 1200px) 80vw, 850px"
2604                                                        fetchpriority="high"
2605                            loading="eager"
2606                            decoding="async"
2607                            class="figure-img img-fluid"
2608                            alt="What Americans abroad need to know about the October 15th tax deadline"
2609                        >
2610                        <figcaption class="figure-caption">We explain what Americans living overseas need to know about the October 15th tax deadline. Image by <a href="https://pixabay.com/users/startupstockphotos-690514/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=849825">StartupStockPhotos</a> from <a href="https://pixabay.com//?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=849825">Pixabay</a></figcaption>
2611                    </figure>
2612                                        <div  class="article-single__content cXenseParse">
2613                        <p>Thursday, October 15th, 2026, is the last day for Americans abroad who requested additional time to file your 2025 federal tax return. If you also need to file an FBAR, it's due on the same date.</p>
2614<p>What trips up many US expats is what the extension actually covers: it gives you more time to file, no more time to pay.</p>
2615<p>In this guide, we break down what Americans abroad need to know about the October 15th deadline for both your tax return and your FBAR, why filing matters even if you owe nothing, and what happens if you don't file in time.</p>
2616<p><strong>What October 15th Covers</strong></p>
2617<p>The October 15th tax deadline is about filing, and only filing.</p>
2618<p>As a US citizen living abroad, you get an automatic two-month filing extension to June 15th, with no paperwork required. Filing Form 4868 by that date added another four months, moving your due date to October 15th.</p>
2619<p>Your FBAR is due the same day, although it's a separate filing that doesn't go to the IRS at all (more on FBARs below).</p>
2620<p><a target="_blank" rel="external noopener sponsored" href="https://www.myexpattaxes.com/?utm_source=thelocal&amp;utm_medium=sponsored&amp;utm_campaign=oct15-deadline-2025&amp;utm_content=brand-link"><strong>Don’t leave it until the deadline: start your return today</strong></a></p>
2621<p><strong>What the October 15th extension doesn't cover </strong></p>
2622<p>Living abroad doesn't move the payment date. Whatever you owed on your 2025 return was due April 15th, 2026, and both interest and the late-payment penalty run from that date, not from June 15th or October 15th.</p>
2623<p>Interest is compounded daily and continues to accrue on any unpaid tax until the balance is paid in full. For example, at the current rate of 7 percent a year, a $6,000 balance carried from April 15th to October 15th works out to a little over $200 in interest, and that's before any penalties.</p>
2624<p>The late payment penalty is separate: 0.5 percent of the unpaid tax for each month or part of a month it goes unpaid, up to a maximum of 25 percent. Form 4868 puts it plainly: "Form 4868 doesn't extend the time to pay taxes."</p>
2625<p>If you haven't paid, paying now stops the interest from growing. Use IRS Direct Pay, or apply for a payment plan if you can't pay in full.<br />
2626<br />
2627<a target="_blank" rel="external noopener sponsored" href="https://link.thelocal.com/55b2c3be"><strong>Still need to file? Get started before October 15th</strong></a></p>
2628<p><strong>October 15th is also the FBAR Deadline</strong></p>
2629<p>If the combined value of your foreign financial accounts exceeds $10,000 at any point in 2025, you may need to file the Report of Foreign Bank and Financial Accounts (FBAR).</p>
2630<p>This can include accounts you have signature or other authority over but don’t own, such as certain business accounts, as well as accounts you closed during the year.</p>
2631<p>The FBAR is separate from your US tax return. It is filed electronically with the Financial Crimes Enforcement Network (FinCEN) through the BSA E-Filing System, rather than as part of your return to the IRS.</p>
2632<p>The good news is that the October 15th FBAR extension is automatic. If you missed the usual April 15th deadline, there’s no additional form to submit or extension to request.</p>
2633<p>Missing it is expensive. The maximum penalty for a non-willful violation is $16,536, and since the Supreme Court's decision in the 2023 case, Bittner v. United States, it applies per report rather than per account.</p>
2634<p><strong>What happens if you miss the October 15th deadline?</strong></p>
2635<p>Your return is late, and the failure-to-file penalty is 5 percent of any unpaid tax for each month, or part of a month, that it remains outstanding, up to 25 percent.</p>
2636<p>For most Americans abroad, that may come to nothing, because expat tax breaks like the Foreign Tax Credit and the Foreign Earned Income Exclusion can significantly reduce what you owe, and in many cases bring it to zero.</p>
2637<p>But those benefits only apply if you claim them, and to claim them, you must file, even if you expect your US tax bill to be zero.</p>
2638<p>If October 15th hasn't arrived yet and you know you won't make it, you may have one more option.</p>
2639<p>Americans abroad can request a further extension to December 15th by writing to the IRS with the reason. It's discretionary, and you'll only hear back if it's refused.</p>
2640<p><strong>What if you didn't file Form 4868</strong><strong>?</strong></p>
2641<p>If you didn't file Form 4868, you can still file your return, and it's worth doing as soon as you can. Without the extension, your 2025 return was due June 15th, so it's already late, and if you have unpaid tax the failure-to-file penalty builds each month until it reaches 25 percent. Filing is what stop it.</p>
2642<p>
2642Fortunately, you may not be charged at all. The IRS now applies penalty relief automatically through a programme called Automatic Exemption from Penalty, which is replacing the old First-Time Abatement process and applies to eligible 2025 returns.</p>
2643<p>If you meet the eligibility requirements, including filing and paying on time for the three prior years, the relief applies automatically without a separate request. It doesn't cover penalties for the FBAR or other international information returns, which have their own procedures.</p>
2644<p>If you're behind on several years rather than one, the Streamlined Filing Compliance Procedures may offer a route back. You file the last three years of returns and six years of FBARs, certify that your non-compliance was non-willful, and if you qualify, the penalties are waived.</p>
2645<p><a target="_blank" rel="external noopener sponsored" href="https://link.thelocal.com/25bdf0d3"><strong>Ready to file? Create a free account</strong></a></p>
2646<p><strong>The bottom line</strong></p>
2647<p>October 15th is manageable if you start now, and remember: filing is how you claim the expat tax benefits that could reduce or eliminate your US tax bill.</p>
2648<p><a target="_blank" rel="external noopener sponsored" href="https://link.thelocal.com/55b2c3be" target="_blank" rel="noopener">MyExpatTaxes</a> was built by Americans living abroad, for Americans living abroad. You get the most affordable DIY expat tax software, plus flat-priced tax services with trusted tax professionals. File your return and your FBAR in one place.</p>
2649<p>See the <a target="_blank" rel="external noopener sponsored" href="https://link.thelocal.com/7f675998" target="_blank" rel="noopener">plans and prices,</a> or <a target="_blank" rel="external noopener sponsored" href="https://app.myexpattaxes.com/wizard/introduction/2025?utm_source=thelocal&amp;utm_medium=sponsored&amp;utm_campaign=oct15-deadline-2025&amp;utm_content=free-account-cta" target="_blank" rel="noopener">create a free account</a> today to stay compliant and file your 2025 return without the stress.</p>                    </div>
2650                    
2651                    <div class="member-container"></div>
2652                    
2653                    <div class="article-single__tags">
2654                        <h3 class="block-title border-0">More</h3>
2655                        <div class="tags-block">
2656                                                                                                <a href="https://www.thelocal.ch/tag/by-myexpattaxes">#by myexpattaxes</a>
2657                                                                                    </div>
2658                    </div>
2659
2660                    <div class="sponsor-signoff">
2661                        <div class="article-single__author mb-1">
2662                                                    </div>
2663                        <p>This content was paid for by an advertiser and produced by <b>The Local's Creative Studio</b>.</p>
2664                    </div>
2665
2666                    
2667                    <div class="article-single__worth">
2668                        
2669                        <h3 class="block-title">See Also</h3>
2670                        <div class="read-also-recs"></div>
2671                    </div>
2672
2673                </main>
2674            </div>
2675        </div>
2676    </div>
2677
2678</div>
2679
2680<script type="application/javascript">
2681	window.tp = window.tp || [];
2682
2683	var tp = window.tp;
2684
2685	tp.push(["setContentCreated", "2026-08-26T09:11:29+02:00"]);
2686	tp.push(["setContentSection", "Sponsored Content"]);
2687	tp.push(["setTags", ["sponsored","by-myexpattaxes"]]);
2688</script>
2688
2689        </div>
2690                
2691        <div id="pn-footer" class="pn-footer"><div id="pn-footer-show"></div></div>
2692        <footer class="site-footer dark">
2693            <div class="container">
2694    <div class="footer-links">
2695        <div class="row">
2696            <div class="col-lg-3 d-none d-md-block">
2697                <div class="footer-column footer-column__general">
2698                    <img width="211" height="40"
2699                        src="https://www.thelocal.ch/images/logo-ch.svg" alt="The Local"
2700                        class="footer-logo">
2701                    <p class="footer-info">The Local Europe AB<br>Västmannagatan 43<br>113 25 Stockholm<br>Sweden</p>
2702                </div>
2703                <div class="footer-badges">
2704                    <a href="https://apps.apple.com/app/the-local/id1078564301?ppid=87d73ebb-5099-4635-b188-9af5077c6013" target="_blank" aria-label="Apple App Store link">
2705                        <img class="lazyload" data-src="https://www.thelocal.ch/images/App_Store_Badge__wht.svg" width="120" height="40" alt="App Store">
2706                    </a>
2707
2708                    <a href="https://play.google.com/store/apps/details?id=com.thelocal.app" target="_blank" aria-label="Google Play Store link">
2709                        <img class="lazyload" data-src="https://www.thelocal.ch/images/google-play-badge.webp" width="150" height="60" alt="Google Play Store">
2710                    </a>
2711                </div>
2712                <ul class="footer-socialLinks">
2713                    <li>
2714                        <a href="https://www.facebook.com/TheLocalSwitzerland" target="_blank" aria-label="The Local Facebook profile">
2715                            <i class="fab fa-square-facebook"></i>
2716                        </a>
2717                    </li>
2718                    <li>
2719                        <a href="https://bsky.app/profile/thelocalswitz.bsky.social" target="_blank" aria-label="The Local X profile">
2720                            <i class="fab fa-square-bluesky"></i>
2721                        </a>
2722                    </li>
2723                    <li>
2724                        <a href="https://www.instagram.com/thelocalswitzerland" target="_blank" aria-label="The Local Instagram profile">
2725                            <i class="fab fa-square-instagram"></i>
2726                        </a>
2727                    </li>
2728                    <li>
2729                        <a href="https://www.threads.net/@thelocalswitzerland" target="_blank" aria-label="The Local Threads profile">
2730                            <i class="fab fa-square-threads"></i>
2731                        </a>
2732                    </li>
2733                    <li>
2734                        <a href="https://www.linkedin.com/company/thelocaleurope/" target="_blank" aria-label="The Local LinkedIn profile">
2735                            <i class="fab fa-linkedin"></i>
2736                        </a>
2737                    </li>
2738                </ul>
2739            </div>
2740            <div class="col-lg-2 d-none d-md-block">
2741                <div class="footer-column">
2742                    <h4>The Local</h4>
2743                    <nav class="footer-nav">
2744                        <a href="https://www.thelocal.ch/aboutus">About us</a>
2745                        <a href="https://www.thelocal.ch/contact">Contact us</a>
2746                        <a href="https://www.thelocal.ch/news-archive">News Archive</a>
2747                        <a href="https://www.thelocal.ch/search">Search articles</a>
2748                        <a href="https://www.thelocal.ch/tag/working-in-switzerland">Find jobs in Switzerland</a>
2749                        
2750                                                    <a href="https://www.thelocal.ch/rentals">Find a rental in Switzerland</a>
2751                                                                        <a href="https://jobs.thelocal.com/employers/" target="_blank">Post a job ad</a>
2752                        <a href="https://www.thelocal.ch/advertise-with-us">Advertise with us</a>
2753                                                <a href="/business-directory">Local Directory</a>
2754                                            </nav>
2755                </div>
2756            </div>
2757            <div class="col-lg-2 d-none d-md-block">
2758                <div class="footer-column">
2759                    <h4>Membership</h4>
2760                    <nav class="footer-nav">
2761                        
2762                                                <a class="pn-login" href="javascript:void(0);" role="button" tabindex="-1">Login</a>
2763                            <a href="/membership-offer?tpcc=ch-menu">Become a member</a>
2764                                                        <a href="https://www.thelocal.ch/free-newsletter">Newsletters</a>
2765                                                                            <a href="https://thelocalhelp.zendesk.com/hc/en-us" target="_blank">Help Centre</a>
2766                                                <a href="https://www.thelocal.ch/gift-voucher">Gift Vouchers</a>
2767                        <a href="https://www.thelocal.ch/membership-student">Educational access</a>
2768                                                <a href="https://www.thelocal.ch/corporate-membership">Corporate access</a>
2769                    </nav>
2770                </div>
2771            </div>
2772            <div class="col-lg-2 d-none d-md-block">
2773                <div class="footer-column">
2774                    <h4>Popular Topics</h4>
2775                    <nav class="footer-nav">
2776    <a href="https://www.thelocal.ch/category/switzerland-news">Latest News</a>
2777    <a href="https://www.thelocal.ch/tag/zurich">Zurich</a>
2778    <a href="https://www.thelocal.ch/tag/geneva">Geneva</a>
2779    <a href="https://www.thelocal.ch/tag/basel">Basel</a>
2780    <a href="https://www.thelocal.ch/tag/lausanne">Lausanne</a>
2781    <a href="https://www.thelocal.ch/category/switzerland-explained">Switzerland explained</a>
2782    <a href="https://www.thelocal.ch/category/living-in-switzerland">Living in Switzerland</a>
2783    <a href="https://www.thelocal.ch/topics">All topics</a>
2784</nav>
2785                </div>
2786            </div>
2787            <div class="col-lg-3">
2788                <div class="footer-column footer-column__subscribe">
2789                    <h4>
2789Get daily news straight in your inbox</h4>
2790                    <div class="footer-newsletter">
2791                        <div class="tl-newsletter-form">
2792    <div class="tl-newsletter-form__inner">
2793                            <form class="tl-newsletter-form__form" method="POST" action="https://www.thelocal.ch/beehiiv/footer-subscribe" data-beehiiv-signup-form>
2794                <input type="hidden" name="_token" value="CaEiB5wNeoh1oBzX6E6AOn2szQWSFSLF9XgzqTqH" autocomplete="off">                                                            <input type="hidden" name="custom_fields[]" value="Daily">
2795                                                    <input type="text" name="website" tabindex="-1" autocomplete="off" aria-hidden="true" hidden>
2796                                    <input class="tl-newsletter-form__input" type="email" name="email" placeholder="Your email address" value="" required>
2797                                <button class="tl-newsletter-form__button" type="submit">Sign up</button>
2798            </form>
2799            <p class="tl-newsletter-form__message" data-beehiiv-signup-message role="status" aria-live="polite" hidden></p>
2800                    </div>
2801</div>
2802
2803                    </div>
2804                    <p class="footer-terms">
2805                        By signing up you agree to our <a href="https://www.thelocal.ch/terms-of-use">Terms of Use</a> and <a href="https://www.thelocal.ch/privacy-policy">Privacy Policy.</a> We will use your email address to send you newsletters as well as information and offers related to your account.
2806                    </p>
2807                </div>
2808            </div>
2809        </div>
2810    </div>
2811</div>
2812<div class="footer-copyright">
2813    <div class="container">
2814        <p>2026 The Local, All Rights Reserved.</p>
2815        <div class="dp-links">
2816                            <a href="javascript:void(0);" class="cmp-manage-cookies" role="button" tabindex="0">Manage Cookies</a>
2817                        <a href="https://www.thelocal.ch/privacy-policy">Privacy Policy</a>
2818            <a href="https://www.thelocal.ch/terms-of-use">Terms & Conditions</a>
2819        </div>
2820    </div>
2821</div>
2822        </footer>
2823            </div>
2824        
2824<script src="/js/manifest.js?id=8dbb10a76f77e9f2b7cf0702852d0a79"></script>
2824
2825    
2825<script src="/js/js/vendor-utils.1cd4678413e6ef15.js?id=3386e19637a4657e3f311ed9221431ad"></script>
2825
2826    
2826<script src="/js/vendor.js?id=9f4833b40453c6f04949adc25a2635d2"></script>
2826
2827    
2827<script src="/js/vue.js?id=31a3093f90e1a46ac1171699c4e46f8b"></script>
2827
2828    
2828<script src="/js/js/bootstrap.8c0aa6d31d7d2b59.js?id=1ee00102a9731642dc805b8e3f873d11"></script>
2828
2829    
2829<script src="/js/app.js?id=405d03c51fed55dff499f4da68e72766"></script>
2829
2830        
2831        
2831<script type="tl-js">
2832            function makeid(length) {
2833                var result           = "";
2834                var characters       = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
2835                var charactersLength = characters.length;
2836                for ( var i = 0; i < length; i++ ) {
2837                    result += characters.charAt(Math.floor(Math.random() *
2838                    charactersLength));
2839                }
2840                return result;
2841            }
2842            + new Date()
2843            let timestampMS = new Date().getTime();
2844            let timestamp = Math.floor(timestampMS / 1000);
2845            let g4_location_hostname = encodeURIComponent(window.location.hostname)
2846            let g4_location_path;
2847            if(encodeURIComponent(window.location.pathname) !== "" || encodeURIComponent(window.location.pathname) !== null || encodeURIComponent(window.location.pathname) !== undefined){
2848                g4_location_path = encodeURIComponent(window.location.pathname)
2849            } else {
2850                g4_location_path = "path_not_exist";
2851            }
2852            let g4_location = encodeURIComponent(window.location)
2853            let referrer = encodeURIComponent(document.referrer);
2854            let siteTitle = encodeURIComponent(document.title);
2855            let cid = makeid(9) + "." + Math.floor(Math.random() * (999999 - 100000 + 1)) + 100000
2856            var queryString = window.location.search
2857            var queryParams = new URLSearchParams(queryString);
2858            let utm_campaign = queryParams.has("utm_campaign") ? queryParams.get("utm_campaign") : "";
2859            let utm_source = queryParams.has("utm_source") ? queryParams.get("utm_source") : "";
2860            let utm_term = queryParams.has("utm_term") ? queryParams.get("utm_term") : "";
2861            let utm_medium = queryParams.has("utm_medium") ? queryParams.get("utm_medium") : "";
2862            let domain = "ch";
2863            let country = "";
2864            var req = new XMLHttpRequest();
2865            req.open("GET", document.location, true);
2866            req.send(null);
2867            var headers = req.getAllResponseHeaders().toLowerCase();
2868            let headersArr = headers.split("\r\n")
2869
2870            for (let index = 0; index < headersArr.length; index++) {
2871                const element = headersArr[index];
2872                if(element.includes("visitor-country")){
2873                    country = element.split(":").pop();
2874                }
2875            }
2876
2877            function sendToAllNewsEvent() {
2878                    if(referrer.includes("thelocal.")){
2879                        referrer = "";
2880                    }
2881
2882                    fetch(`https://ss.thelocal.com/g/collect?v=2&en=total_page_view_ga4&tid=G-XFSR2700S9&cid=${cid}&dt=${siteTitle}&dr=${referrer}&dl=${g4_location}&ep.measurement_model=consent_independent_volume_estimate&ep.country_c=${country}&ep.hostname_c=${g4_location_hostname}&ep.path_c=${g4_location_path}&ep.utm_campaign_c=${utm_campaign}&ep.utm_source_c=${utm_source}&ep.utm_term_c=${utm_term}&ep.utm_medium_c=${utm_medium}`,
2883                    {
2884                    method: "POST",
2885                    mode: "no-cors",
2886                },).then((response) => {
2887                    // console.log(response)
2888                });
2889
2890            }
2891
2892            function sendEvent() {
2893
2894                let measurement_id = "";
2895                const measurement_ids = {
2896                    "at":"G-M0QF2J98ZG",
2897                    "ch":"G-RKPPBTRQGN",
2898                    "com":"G-PXG8C23QQX",
2899                    "de":"G-68EFP8XFKZ",
2900                    "dk":"G-87R3SHFK20",
2901                    "es":"G-XZ791ZL201",
2902                    "fr":"G-1LX6T78HZR",
2903                    "it":"G-FYSRWRX4T3",
2904                    "no":"G-B6VF16B85K",
2905                    "se":"G-S57KNFL4T3"
2906                }
2907
2908                if(referrer.includes("thelocal.")){
2909                    referrer = "";
2910                }
2911
2912                if(measurement_ids.hasOwnProperty(domain)){
2913                    measurement_id = measurement_ids[domain];
2914                }
2915
2916                fetch(`https://ss.thelocal.com/g/collect?v=2&en=total_page_view_ga4&tid=${measurement_id}&cid=${cid}&dt=${siteTitle}&dr=${referrer}&dl=${g4_location}&ep.measurement_model=consent_independent_volume_estimate&ep.country_c=${country}&ep.hostname_c=${g4_location_hostname}&ep.path_c=${g4_location_path}&ep.utm_campaign_c=${utm_campaign}&ep.utm_source_c=${utm_source}&ep.utm_term_c=${utm_term}&ep.utm_medium_c=${utm_medium}`,
2917                {
2918                    method: "POST",
2919                    mode: "no-cors",
2920                },).then((response) => {
2921                    // console.log(response)
2922                });
2923
2924            }
2925
2926            function runAnalyticsEvents() {
2927                sendEvent();
2928                sendToAllNewsEvent();
2929            }
2930
2931            if ("requestIdleCallback" in window) {
2932                window.requestIdleCallback(runAnalyticsEvents, { timeout: 2500 });
2933            } else {
2934                setTimeout(runAnalyticsEvents, 1200);
2935            }
2936        </script>
2936
2937    
2938                
2938<script type="tl-js">
2939                    window._taboola = window._taboola || [];
2940                    _taboola.push({flush: true});
2941                </script>
2941
2942                
2943    
2943<script>
2944        Defer.all('script[type="tl-js"]', 0, true);
2945    </script>
2945
2946    
2946<script>
2947        Defer.all('script[type="tl-chunk-js"]', 0, false);
2948    </script>
2948
2949</body>
2950</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.