Virtual Bookkeeper — QuickBooks Online Setup & Ongoing Bookkeeping (Construction)

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

TYPE OF WORK

Part Time

SALARY

$5-9/hour

HOURS PER WEEK

16

DATE UPDATED

Jun 11, 2026

JOB OVERVIEW

Virtual Bookkeeper — QuickBooks Online Setup & Ongoing Bookkeeping (Construction)
Full-time or part-time | Remote (Philippines) | Long-term | Ontario, Canada business hours (Eastern Time)
About the company
I am the co-founder of a Canadian solar construction company based in Ontario. We build and service ground-mount solar farms, commercial rooftop solar, and battery storage systems. We are in our first months of operation and hiring field crews now, so this role is a ground-floor opportunity to set up our accounting properly from day one and grow with the business.
What you will do
I need an experienced bookkeeper to set up QuickBooks Online from scratch and then run the day-to-day books as the ongoing bookkeeper. This is a long-term role. The first 30 to 60 days are heavy on setup and configuration. After that, it settles into steady monthly bookkeeping, payroll reconciliation, job costing, and financial reporting.
Phase 1 — QuickBooks Online setup
• Configure a new QuickBooks Online company file (Plus or Advanced tier) for a Canadian construction business
• Build a proper chart of accounts tailored to construction, including COGS categories for labour, materials, equipment rental, subcontractors, and site costs
• Set up classes and locations for tracking by project and by business unit
• Configure sales tax (HST for Ontario, with the ability to handle other provinces later)
• Set up customers, vendors, items, and service codes
• Configure bank feeds, credit card feeds, and bank rules
• Set up project tracking and job costing so we can see profitability by project
• Build out the opening balances correctly
• Integrate QBO with our other systems (payroll platform, receipt capture, expense tools) and set up the rules for how data flows in
• Document the setup and the monthly close process so it is repeatable
Phase 2 — Ongoing monthly bookkeeping
• Categorize transactions from bank and credit card feeds
• Reconcile bank accounts, credit cards, and loan accounts monthly
• Manage accounts payable: enter bills, match to POs or receipts, schedule payments for approval
• Manage accounts receivable: create invoices, apply payments, follow up on aging
• Record payroll journal entries from our payroll platform and reconcile to QBO
• Track project costs by job so we can report gross margin per project
• Prepare and file HST returns
• Month-end close: accruals, prepaid expenses, depreciation, intercompany if applicable
• Produce monthly financial statements (P&L, balance sheet, cash flow) and a simple project-level profitability report
• Coordinate with our external accountant at year-end for tax filings and any audit prep
Required experience
• Minimum 5 years of bookkeeping experience
• QuickBooks Online ProAdvisor certification, or equivalent demonstrated QBO expertise (setup from scratch, not just maintaining an existing file)
• Strong working knowledge of construction industry bookkeeping: job costing, progress billing, holdbacks or retainage, subcontractor management, WIP tracking, cost codes, and project-based P&L
• Experience with Canadian bookkeeping standards, including HST/GST and Ontario payroll deductions (CPP, EI, income tax, WSIB)
• Comfortable building a chart of accounts from scratch for a new company
• Strong Excel or Google Sheets skills
• Clear written and spoken English
• Reliable internet, quiet work environment, and ability to work during Ontario business hours (Eastern Time, roughly 9:00 AM to 5:00 PM ET, which is 9:00 PM to 5:00 AM Manila time).

Nice to have
• Experience with Canadian construction accounting specifically (holdbacks, T5018 contractor reporting, WSIB clearance certificates)
• Familiarity with payroll functions within QBO
• Experience with expense management and receipt capture tools
• Experience setting up open-book reporting for investors or minority shareholders
• CPA or equivalent accounting designation is a plus, not a requirement
What I am looking for in a person
• Detail-oriented and organized. I want someone who treats the books like their own business.
• Proactive. If you see a problem in how we are coding things, I want you to flag it and propose a fix.
• Comfortable building systems and documentation, not just data entry
• Able to ask good questions when something is unclear rather than guessing
• Long-term mindset. I want to grow this relationship as the company scales from a handful of employees to a much larger field operation.
Hours and compensation
Start: Part-time (roughly 20 hours per week) during the setup phase, with the potential to grow into full-time as the company scales through 2026 and 2027. I am flexible on this for the right person.
Pay: Competitive pay based on experience and certifications.
Long-term: I am looking to build a long-term relationship, not a short project. If this goes well, I expect this to be a multi-year role with growing responsibility.
How to apply
Please reply with:
• A short paragraph about your QBO setup experience, specifically any construction companies you have set up from scratch
• Your QuickBooks ProAdvisor ID or a link to your certification (if applicable)
• A summary of your experience with Canadian bookkeeping (HST, Ontario payroll, T5018, etc.)
• A brief answer to this question: If I gave you a brand-new QBO file today for a solar construction company, what are the first five things you would set up before recording a single transaction?

Applications that skip the last question will not be reviewed. I am looking for someone who can think, not just follow a checklist.

Thank you for reading all the way to the end. I look forward to hearing from you.

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0269
Total Execution Time  0.0282
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,516,264 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Virtual-Bookkeeper-QuickBooks-Online-Setup-Ongoing-Bookkeeping-Construction-1623882
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0198 seconds)  (Hide)
0.0008   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0009   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1623882
 LIMIT 1 
0.0009   SELECT *
FROM `employers`
WHERE `employer_id` = 667051
 LIMIT 1 
0.0034   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1623882
AND `misc`.`idIS NULL 
0.0011   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-07-16',ej.date_added) duration_daysDATEDIFF('2026-07-16',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-16',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1623882' 
0.0013   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1623882 
0.0016   UPDATE employer_jobs SET hit_counts '***Apr-14-2026=602***Apr-15-2026=1050***Apr-16-2026=408***Apr-17-2026=145***Apr-18-2026=105***Apr-19-2026=71***Apr-20-2026=126***Apr-21-2026=56***Apr-22-2026=76***Apr-23-2026=50***Apr-24-2026=41***Apr-25-2026=23***Apr-26-2026=25***Apr-27-2026=36***Apr-28-2026=33***Apr-29-2026=31***Apr-30-2026=28***May-01-2026=24***May-02-2026=14***May-03-2026=11***May-04-2026=21***May-05-2026=19***May-06-2026=10***May-07-2026=21***May-08-2026=18***May-09-2026=9***May-10-2026=8***May-11-2026=11***May-12-2026=17***May-13-2026=20***May-14-2026=15***May-15-2026=11***May-16-2026=10***May-17-2026=16***May-18-2026=14***May-19-2026=10***May-20-2026=15***May-21-2026=15***May-22-2026=14***May-23-2026=4***May-24-2026=11***May-25-2026=12***May-26-2026=11***May-27-2026=14***May-28-2026=15***May-29-2026=8***May-30-2026=7***May-31-2026=6***Jun-01-2026=12***Jun-02-2026=20***Jun-03-2026=15***Jun-04-2026=8***Jun-05-2026=10***Jun-06-2026=4***Jun-07-2026=4***Jun-08-2026=5***Jun-09-2026=8***Jun-10-2026=8***Jun-11-2026=441***Jun-12-2026=397***Jun-13-2026=175***Jun-14-2026=106***Jun-15-2026=125***Jun-16-2026=80***Jun-17-2026=74***Jun-18-2026=64***Jun-19-2026=42***Jun-20-2026=34***Jun-21-2026=14***Jun-22-2026=25***Jun-23-2026=36***Jun-24-2026=25***Jun-25-2026=39***Jun-26-2026=27***Jun-27-2026=21***Jun-28-2026=16***Jun-29-2026=37***Jun-30-2026=19***Jul-01-2026=26***Jul-02-2026=18***Jul-03-2026=25***Jul-04-2026=21***Jul-05-2026=24***Jul-06-2026=12***Jul-07-2026=31***Jul-08-2026=27***Jul-09-2026=18***Jul-10-2026=18***Jul-11-2026=15***Jul-16-2026=1' WHERE job_id'1623882'  
0.0012   UPDATE employer_jobs SET monthly_hits '***Apr-2026=2906***May-2026=411***Jun-2026=1890***Jul-2026=236' WHERE job_id'1623882'  
0.0019   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1623882' AND status LIKE 'sent%' ORDER BY id DESC  
0.0009   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1623882 
0.0041   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '667051'
AND `date_added` >= '2022-06-08' 
0.0009   select from teasers 
0.0008   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)