CONTROLLER FOR US FRACTIONAL CFO FIRM (FULL TIME, MULTI-ENTITY, PE-BACKED CLIENTS)

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Any

SALARY

25-35 / hr

HOURS PER WEEK

40

DATE UPDATED

Jul 4, 2026

JOB OVERVIEW

Stack Growth Solutions is a US fractional CFO firm serving private equity and private credit backed companies. We build finance functions for multi-entity businesses from scratch: monthly close, consolidation, budgeting, lender reporting, and the systems behind them. We are hiring a full time Controller to run engagements for client books directly, while working with the firm's owner.

10-25 hrs / week to start. Full time within 6 months.

This is not an easy role and the pay rate reflects that. We want someone who has the past experience of successfully completing tough challenges in similar roles. Our clients are growing companies with stale or missing finance infrastructure. You will work with owner to redesign and build the close process, the budget, and the accounting systems. You will then take the lead in running those functions day to day. You will work closely with firm leadership and client leadership on system design, business operations, and workflow, but you are expected to drive the build, spot what is broken, and propose the fix without being asked. You must also be a strong communicator as you will be discussing strategic plans with the CFO firm owner and clients directly.

You will own:
- Designing and standing up accounting systems, processes, and controls from scratch for multi-entity groups
- The monthly close calendar for a nine-entity roll-up, from checklist through reviewed financials
- Full-cycle accounting oversight: billing, receivables, payables, payroll review, work in progress, accruals, intercompany, cutoff
- Review of client bookkeepers' work against a defined standard
- Book cleanup and chart of accounts standardization to audit-ready quality
- Building annual budgets and supporting forecasting in FP&A software (Fathom, Jirav, or similar)
- Lender reporting preparation and consolidation support (QuickBooks and Intuit Enterprise Suite, Fathom)
- Streamlining accounting and operational workflows, and documenting SOPs as you build, in our templates

The bar:
- 5+ years in accounting with full-cycle ownership: you have personally owned everything from billing and AR/AP through close and reporting, not one slice of it
- At least 2 years owning a monthly close end to end
- You have built accounting processes or systems from scratch at least once: new entity, new ERP, post-acquisition cleanup, or a company that had nothing
- Multi-entity and intercompany experience required; roll-up, PE-backed, construction or field services (WIP, job costing), or public accounting background strongly preferred
- Budget buildout experience required; Fathom or Jirav exposure strongly preferred
- US GAAP fluency; QuickBooks Online expert; strong with technology generally and quick to learn new tools
- Written English clean enough to go to a US CEO without editing
- At least 6 hours of daily overlap with US Eastern time

How we work: everything is reviewed, everything is documented, and our deadlines are lender deadlines. Numbers that are close are wrong. If your work regularly needs a second pass, or you wait to be told what to build, this is not the right seat.

Process: application, one interview, paid test assignment on a real close scenario. Begin your application with the word LEDGER so we know you read this.

To apply, answer the following in your cover letter. Answers without specifics will not be considered.
- In your most recent close role: how many entities, how many business days to close, and what single item most often delayed it? What did you change to fix it?
- Describe a time you built an accounting process or system from scratch: what existed before, what you built, what tools you used, and how long it took to run reliably without you touching it.
- Describe an intercompany or multi-entity mess you personally untangled: the cause, how you found it, the fix, and what you put in place so it never came back.
- What share of your work has been reviewing others' work versus preparing your own? Describe a material error you caught in review that the preparer insisted was correct.
- In five sentences or fewer, explain to a non-financial CEO why his June financials changed after he already reviewed them. Write it as if you were sending it.
- Your expected monthly salary for full time work, and your working hours in US Eastern time.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.0215
Total Execution Time  0.0228
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,510,760 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/CONTROLLER-FOR-US-FRACTIONAL-CFO-FIRM-FULL-TIME-MULTI-ENTITY-PE-BACKED-CLIENTS-1682382
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0139 seconds)  (Hide)
0.0009   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0009   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1682382
 LIMIT 1 
0.0010   SELECT *
FROM `employers`
WHERE `employer_id` = 881736
 LIMIT 1 
0.0014   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1682382
AND `misc`.`idIS NULL 
0.0010   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-07-12',ej.date_added) duration_daysDATEDIFF('2026-07-12',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-07-12',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1682382' 
0.0009   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1682382 
0.0013   UPDATE employer_jobs SET hit_counts '***Jul-04-2026=469***Jul-05-2026=143***Jul-06-2026=136***Jul-07-2026=68***Jul-08-2026=23***Jul-09-2026=9***Jul-10-2026=5***Jul-11-2026=9***Jul-12-2026=1' WHERE job_id'1682382'  
0.0012   UPDATE employer_jobs SET monthly_hits '***Jul-2026=863' WHERE job_id'1682382'  
0.0014   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1682382' AND status LIKE 'sent%' ORDER BY id DESC  
0.0008   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1682382 
0.0014   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '881736'
AND `date_added` >= '2022-06-08' 
0.0008   select from teasers 
0.0008   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)