Construction Bookkeeper / Accountant, QuickBooks Online (Cleanup + Ongoing)

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

TYPE OF WORK

Full Time

SALARY

$4 to $6 per hour

HOURS PER WEEK

30

DATE UPDATED

Sep 25, 2026

JOB OVERVIEW

SarokaFi is a US-based financial operations firm serving construction contractors and service businesses. We're an advisory firm that does bookkeeping. Our clients count on us for clean books, clear numbers, and real guidance, and we're growing our team.

We're looking for an experienced **Construction Bookkeeper / Accountant** to join us long-term. You'll start by cleaning up one client's books, bringing several years of backlogged financials up to date. After that the role becomes ongoing monthly bookkeeping, and you'll manage **1 to 10 client books**. You'll work alongside our US team and each client's account representative. This clients books are needing to be cleaned up within 3 weeks.

What you'll do

Phase 1: Cleanup project
- Review prior years of books in QuickBooks Online and find errors, gaps, and misclassifications
- Reconcile bank, credit card, and loan accounts back to the correct opening balances
- Clean up AR, AP, undeposited funds, uncategorized items, and duplicate transactions
- Rebuild or correct job costing so each job shows accurate revenue and costs
- Document what you found and fixed, and list open questions for the client

Phase 2: Ongoing bookkeeping (1–10 clients)
- Monthly transaction coding, reconciliations, and month-end close in QuickBooks Online
- Manage close checklists, tasks, and client questions in Double ( ---------- )
- Job costing, progress billing, and retainage tracking
- Track AP and subcontractor bills, including W-9/1099 readiness
- Prepare accurate monthly financial statements for our account reps to review with clients
- Communicate clearly and on time with our team

Must-haves
- 3+ years of bookkeeping/accounting experience with **US clients
- **Strong QuickBooks Online skills.** Desktop-only experience is not enough.
- **Construction accounting experience**: job costing, progress billing (AIA G702/G703), retainage, WIP schedules, subcontractors
- **Proven catch-up/cleanup experience**: you've taken messy books from years behind to current
- Solid understanding of accrual vs. cash, the balance sheet, and reconciliations
- Good written English and the habit of asking questions instead of guessing
- Reliable internet, a backup power plan, and a quiet workspace

**Nice-to-haves**
- Experience with Double ( ---------- ) or another close/workflow platform (Karbon, Financial Cents, etc.)
- QuickBooks Online ProAdvisor certification
- Familiarity with construction software (JobTread, Buildertrend, Procore, etc.)
- Knowledge of Profit First, US payroll, or certified payroll
- Accounting degree or CPA-track coursework

**What we offer**
- Long-term, stable work with a growing US firm
- Room to grow as we add clients: more hours, more responsibility, and higher pay
- Training on our systems, SOPs, and Profit First
- A respectful, organized team that answers your questions

---

## How to apply

We read every application. To show us you read the whole posting:

1. Start your application with the subject line: **"Construction Cleanup — [Your Name]"**
2. Answer these three questions briefly (3–5 sentences each):
- **Tell us about a cleanup project you completed.** How many years behind were the books, what was wrong, and how did you bring them current?
- **A contractor bills 50% of a $100,000 job with 10% retainage.** How would you record that invoice in QuickBooks Online, and where does the retainage show on the balance sheet?
- **Which construction clients have you worked with** (trade, approximate revenue, number of jobs), and how did you track job costing for them?
3. Include your resume and your expected hourly rate.
4. Note your available hours and time zone overlap.

Applications that skip the questions won't be reviewed.

Shortlisted candidates will complete a short paid-or-unpaid [TBD] QuickBooks Online skills test and a video interview.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0010
Controller Execution Time ( Jobseekers / Job )  0.0136
Total Execution Time  0.0151
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,509,872 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Construction-Bookkeeper-Accountant-QuickBooks-Online-Cleanup-Ongoing-1738325
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0076 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
= 'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1738325
 LIMIT 1 
0.0003   SELECT *
FROM `employers`
WHERE `employer_id` = 931059
 LIMIT 1 
0.0008   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `misc` ON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1738325
AND `misc`.`id` IS NULL 
0.0005   SELECT e.business_name, e.logo, e.website, e.rebill_date, e.date_added member_date, hits, DATEDIFF('2026-09-27',ej.date_added) duration_days, DATEDIFF('2026-09-27',e.rebill_date) duration_rebill, ej.*, e.deactivate FROM employers e, employer_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-09-27',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != 1 AND ej.deleted = 0 AND job_id = '1738325' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1738325 
0.0016   UPDATE employer_jobs SET hit_counts = '***Sep-25-2026=401***Sep-26-2026=400***Sep-27-2026=2' WHERE job_id= '1738325'  
0.0007   UPDATE employer_jobs SET monthly_hits = '***Sep-2026=803' WHERE job_id= '1738325'  
0.0007   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id = '' AND job_id = '1738325' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1738325 
0.0011   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '931059'
AND `date_added` >= '2022-06-08' 
0.0003   select * from teasers 
0.0002   SELECT * FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)