Corporate Controller Salary: $120,000-$145,000 annually
Location: Onsite / Hybrid (as applicable) About the Role We are seeking an experienced Corporate Controller to lead corporate financial reporting and consolidation across a complex, multi-entity, multi-currency organization. This role is responsible for ensuring accurate, timely financial statements, strong internal controls, and continuous improvement across the accounting function. The Corporate Controller will serve as a key partner to finance leadership and executive stakeholders. Key Responsibilities
Lead multi-currency, multi-entity consolidation for domestic and international subsidiaries
Oversee monthly, quarterly, and annual close processes, including consolidated financial statements
Develop and maintain strong internal controls in compliance with GAAP/IFRS and regulatory standards
Manage foreign currency translation, remeasurement, and intercompany eliminations
Partner with FP&A on budgeting, forecasting, and variance analysis
Coordinate external audits and ensure timely, clean audit results
Drive process improvement, automation, and scalability initiatives
Lead, mentor, and develop a high-performing accounting team
Provide financial insight and guidance to senior leadership Qualifications
Bachelor's degree in Accounting or Finance
10+ years of progressive accounting experience, including leadership in complex environments
Strong expertise in multi-currency consolidations and intercompany accounting
Deep knowledge of GAAP and/or IFRS
Experience with enterprise ERP and financial reporting systems
Proven ability to lead teams, implement change, and improve processes
Excellent analytical, communication, and problem-solving skills #INFEB2026 EB- document.addEventListener('DOMContentLoaded', => { const root = document.querySelector('#job_desc'); if (!root) return; // Skip wrapping if we've already done it if (root.dataset.hashtagsWrapped === "1") return; const SKIP = new Set(['SCRIPT','STYLE']); const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, { acceptNode(node) { if (!node.nodeValue !node.nodeValue.match p{L}\p{N}_]+/u)) return NodeFilter.FILTER_REJECT; // Avoid wrapping inside an existing hashtag span let p = node.parentNode; while (p && p !== root) { if (p.nodeType === 1 && p.hasAttribute('data-hashtag')) return NodeFilter.FILTER_REJECT; if (SKIP.has(p.nodeName)) return NodeFilter.FILTER_REJECT; p = p.parentNode; } return NodeFilter.FILTER_ACCEPT; } }); const re = p{L}\p{N}_ gu; function wrapTextNode(textNode) { const text = textNode.nodeValue; re.lastIndex = 0; let m, last = 0; const frag = document.createDocumentFragment ; while ((m = re.exec(text)) !== null) { // preceding plain text if (m.index > last) frag.appendChild(document.createTextNode(text.slice(last, m.index))); // hashtag span const span = document.createElement('span'); span.textContent = m[0]; span.setAttribute('data-hashtag', '1'); // idempotence guard span.setAttribute('style', 'font-size:9px;color:#fff'); // requested inline style frag.appendChild(span); last = re.lastIndex; } // trailing plain text if (last < text.length) frag.appendChild(document.createTextNode(text.slice(last))); textNode.parentNode.replaceChild(frag, textNode); } const toProcess = []; let n; while ((n = walker.nextNode toProcess.push(n); toProcess.forEach(wrapTextNode); root.dataset.hashtagsWrapped = "1"; });