Bookkeeper (Xero)

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

TYPE OF WORK

Full Time

SALARY

$8 per hour

HOURS PER WEEK

38

DATE UPDATED

Jul 31, 2026

JOB OVERVIEW

Read this before you apply:

This role requires at least 5 years of hands-on Xero experience as your primary accounting system, including multi-currency, tracking categories, manual journals, fixed assets and high-volume bank reconciliation.

Every shortlisted candidate sits a timed, unassisted practical test in Xero before any offer is made. There is no way to talk your way past it.

If Xero is something you have used occasionally, or you have mainly worked in QuickBooks, MYOB, Zoho or spreadsheets, this is not the role for you.

Applications that do not follow the instructions at the bottom of this ad will not be read.



About us
We are a digital-first export company selling into multiple international markets through online marketplaces and our own e-commerce stores. We operate across several currencies and legal entities, and reconcile marketplace settlements every month.

The books need to be clean, consistently coded, and closed to a fixed timetable. This is a detail role. Accuracy matters more here than speed.



Non-negotiable requirements

You will not be shortlisted without all of these:

5+ years using Xero as your day-to-day system. Not occasional exposure, not "I've seen it before"
Multi-currency Xero: foreign currency bank accounts, realised and unrealised FX gains and losses, month-end revaluation
Tracking categories: you know Xero allows only two, and you have designed or worked within a structure inside that constraint
Manual journals, accruals and prepayments, posted to a month-end deadline
Bank reconciliation at volume, including finding and fixing an out-of-balance rather than forcing it
Hubdoc or Dext as your document capture workflow
Fixed asset register and depreciation run inside Xero
Written English strong enough to query a supplier or explain a variance clearly, without help
Attention to detail. This is the single trait we screen hardest for, and the practical test is built to expose it

Strongly preferred

Marketplace settlement reconciliation (Amazon, Walmart or similar): breaking a single net deposit into revenue, marketplace fees, fulfilment fees, advertising, refunds, reserves and chargebacks
Shopify, Stripe or PayPal payout reconciliation including fees
An inventory or order management system feeding Xero (we use Cin7)
NZ GST, including zero-rated exports and GST on imports
Intercompany reconciliation between related entities in different countries
Xero certification or adviser status



What you will be responsible for
Accounts payable
Process supplier bills through Hubdoc into Xero, coded correctly to account and tracking category
Reconcile supplier statements monthly and resolve discrepancies before payment
Prepare payment runs for approval. Never process a bank detail change without independent verification
Maintain supplier records and onboarding
Accounts receivable
Raise and send customer invoices with the correct tax treatment (zero-rated export vs domestic)
Allocate receipts, chase overdue accounts, keep the aged receivables ledger clean
Marketplace and channel reconciliation
Process Amazon and Walmart settlements to the correct accounts
Reconcile Shopify and payment gateway payouts including fees
Make sure Cin7 to Xero flows (sales, COGS, inventory) tie out
Banking and month-end
Keep bank feeds current and reconcile through the month, not in a panic at the end of it
Reconcile all bank, credit card and petty cash accounts
Handle multi-currency accounts and FX gains and losses
Post accruals, prepayments and recurring journals
Run a documented month-end close checklist to a set timetable
Coding integrity
Learn and apply our coding methodology so reporting stays consistent across markets and channels
Maintain the chart of accounts and tracking category discipline
Actively hunt for miscodings and anomalies, then flag and fix them
Keep freight, duty, 3PL and tariff costs coded consistently
Compliance and admin
Support EU VAT and sales tax data requests from our external advisers
Maintain the fixed asset register
Support intercompany reconciliation between related entities in different countries
Keep the accounts inbox triaged with nothing falling through
Process employee expense claims and maintain a complete audit trail



How we select
Application screen. Your answers to the three questions below.
Interview. Systems depth, marketplace settlements, multi-currency, judgement.
Practical Xero test. Timed, unassisted, screen shared.
Reference check focused on accuracy and reliability.



How to apply
Follow these instructions exactly. This is the first test.

Put "Xero Bookkeeper - LEDGER" in your subject line, and answer all three questions in the body of your application:

How many years have you used Xero as your main day-to-day accounting system, and roughly how many Xero organisations have you worked in?
How many tracking categories does Xero allow, what are they used for, and how would you set them up for a business selling in several countries through several sales channels?
If you had several hundred transactions to code in Xero, how would you do it quickly without losing accuracy? Name the specific Xero features you would use.

Applications missing the subject line or any of the three answers will not be considered.

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.0236
Total Execution Time  0.0249
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,509,464 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Bookkeeper-Xero-1699883
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 15 (0.0169 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0012   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1699883
 LIMIT 1 
0.0015   SELECT *
FROM `employers`
WHERE `employer_id` = 538218
 LIMIT 1 
0.0008   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1699883
AND `misc`.`idIS NULL 
0.0003   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1699883
AND `misc`.`idIS NULL 
0.0004   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-08-15',ej.date_added) duration_daysDATEDIFF('2026-08-15',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-08-15',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1699883' 
0.0007   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1699883 
0.0003   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1699883
AND `misc`.`idIS NULL 
0.0008   UPDATE employer_jobs SET hit_counts '***Jul-31-2026=1301***Aug-01-2026=274***Aug-02-2026=215***Aug-03-2026=210***Aug-04-2026=131***Aug-05-2026=75***Aug-06-2026=51***Aug-07-2026=43***Aug-08-2026=22***Aug-13-2026=1***Aug-15-2026=1' WHERE job_id'1699883'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Jul-2026=1301***Aug-2026=1023' WHERE job_id'1699883'  
0.0008   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1699883' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1699883 
0.0079   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '538218'
AND `date_added` >= '2022-06-08' 
0.0005   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)