Accountant-CPA required (bookkeeping as well)

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

TYPE OF WORK

Full Time

SALARY

17-20 an hour

HOURS PER WEEK

40

DATE UPDATED

Sep 30, 2026

JOB OVERVIEW

US CONSTRUCTION & REAL ESTATE BOOKKEEPER / CPA (QUICKBOOKS)
Full-time, remote, long-term

We're a US commercial general contractor plus a real estate investment and
property-management group (multiple companies), based in New York. We're
looking for a sharp, detail-obsessed bookkeeper — CPA required — who already
knows US construction and real estate accounting. This is a long-term seat for
the right person, with room to grow into a lead accounting role.

This is NOT general/retail bookkeeping. If you have not done job costing and
WIP for a US construction company, this role is not for you.

MUST-HAVE (do not apply without these):
- CPA (Philippine CPA is fine)
- 3+ years bookkeeping/accounting for US CLIENTS
- Real, hands-on US CONSTRUCTION accounting experience:
job costing, cost codes, WIP schedules, over/under-billing, retainage
- US REAL ESTATE accounting experience:
property-level P&Ls, owner statements, security-deposit ledgers, depreciation
- Advanced QuickBooks Online (Sage / Foundation / Knowify a big plus)
- Strong Excel/Google Sheets
- Excellent written and spoken English
- Able to overlap at least 4 hours with US Eastern time (8am-12pm ET)

WHAT YOU'LL DO:
- Code all costs to the correct job and cost code; keep job-cost reports clean
- Build and maintain WIP schedules; flag underbilled or margin-fading jobs
- Bank and credit-card reconciliations, AP/AR, progress billing (AIA G702/G703)
- Track retainage receivable and payable separately
- Sub compliance: collect COIs, W-9s, lien waivers; prepare 1099s
- Real estate books: property P&Ls, owner statements, seller-note amortization
- Prepare clean month-end packages for our US CPA firm

WHAT WE OFFER:
-17-20 an hour USD
- Stable, long-term, full-time work with a growing US company
- Competitive pay based on experience
- Clear systems and a real path to a lead accounting role

HOW TO APPLY (follow exactly — we ignore applications that don't):
Start your message with the word LEDGER. Then answer:
1. Name the largest US construction client you've kept books for, and what
software you ran their WIP in.
2. In one or two sentences: what does a consistently UNDERBILLED job tell you?
3. Your available hours in US Eastern time.

Applicants who follow these steps and know their WIP will be moved to a short
paid test project.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0011
Controller Execution Time ( Jobseekers / Job )  0.0190
Total Execution Time  0.0210
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,506,384 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Accountant-CPA-required-bookkeeping-as-well-1712608
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0121 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
= 'USD-PHP' 
0.0012   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1712608
 LIMIT 1 
0.0013   SELECT *
FROM `employers`
WHERE `employer_id` = 356403
 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` = 1712608
AND `misc`.`id` IS NULL 
0.0004   SELECT e.business_name, e.logo, e.website, e.rebill_date, e.date_added member_date, hits, DATEDIFF('2026-10-06',ej.date_added) duration_days, DATEDIFF('2026-10-06',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-10-06',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != 1 AND ej.deleted = 0 AND job_id = '1712608' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1712608 
0.0006   UPDATE employer_jobs SET hit_counts = '***Aug-19-2026=508***Aug-20-2026=333***Aug-21-2026=150***Aug-22-2026=56***Aug-23-2026=42***Aug-24-2026=64***Aug-25-2026=46***Aug-26-2026=26***Aug-27-2026=15***Aug-28-2026=11***Aug-29-2026=7***Aug-30-2026=6***Aug-31-2026=11***Sep-01-2026=7***Sep-02-2026=8***Sep-03-2026=9***Sep-04-2026=11***Sep-05-2026=7***Sep-06-2026=5***Sep-07-2026=6***Sep-08-2026=9***Sep-09-2026=12***Sep-10-2026=5***Sep-11-2026=4***Sep-12-2026=5***Sep-14-2026=6***Sep-15-2026=4***Sep-16-2026=10***Sep-17-2026=5***Sep-18-2026=5***Sep-19-2026=7***Sep-20-2026=1***Sep-21-2026=7***Sep-22-2026=2***Sep-23-2026=447***Sep-24-2026=232***Sep-25-2026=76***Sep-26-2026=30***Sep-27-2026=20***Sep-28-2026=43***Sep-29-2026=45***Sep-30-2026=1418***Oct-01-2026=227***Oct-02-2026=78***Oct-03-2026=36***Oct-06-2026=2' WHERE job_id= '1712608'  
0.0005   UPDATE employer_jobs SET monthly_hits = '***Aug-2026=1275***Sep-2026=2442***Oct-2026=343' WHERE job_id= '1712608'  
0.0007   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id = '' AND job_id = '1712608' 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` = 1712608 
0.0051   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '356403'
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)