Work sample 05 / 17Clean-up & reconciliation

Xero clean-up and hire billing check, with an Airtable, Glide and Make asset app

How I take a hire or equipment business from a year of loosely coded Xero invoices and a paper asset log to clean books, a billing check and a yard app the crew can use.

Area
Clean-up & reconciliation
Tools
Xero · Airtable · Glide · Make
Typical scope
US$2,500–4,500
Timeline
About 4 weeks · 4 fixed milestones

Work sample: realistic data, built to show how I approach this kind of project. Not a past client job.

01The problem

Hire and equipment businesses often run two records that never meet: invoices in Xero, coded by whoever raised them, and an asset log on paper or in a spreadsheet that says what went out to which site. When the two drift apart, hire keeps running on sites that are not being billed, and the income accounts stop telling the owner which service lines pay.

The work is to straighten out a full year of Xero coding, rebuild the asset log into something reliable, check billing site by site, and then put a simple app in place so the log stays right from here on.

Owners usually notice it as

  1. Income coded to one catch-all account, or to different accounts for the same service
  2. Duplicate contacts for the same customer, with different tax defaults
  3. Assets on the log that nobody can find, or that came back from the wrong site
  4. No quick way to say which sites are on hire right now and what they should be billed

02Scope

A fixed scope agreed in writing before anything is built. The table shows what a project like this usually covers and what it leaves out.

Exhibit 1Scope: what a project like this covers
AreaIncluded
Xero codingFull financial year of invoice lines re-coded by rule into service-line income accounts, with a review queue for anything a rule cannot place
Tax and contactsTax-code review on every line; duplicate contacts merged with the owner's sign-off
Asset logPaper or spreadsheet log rebuilt into one register: duplicates, wrong-site returns and items not returned listed for follow-up
Billing checkEvery site-asset pairing checked against what was invoiced, with under- and over-billing listed for the owner to decide
Asset appAirtable base, Glide app for the yard and a Make scenario that drafts hire invoices in Xero
Not includedBAS lodgement, payroll and anything that needs a registered tax or BAS agent
Exhibit 2Typical data volumes for this kind of project (log scale)
Xero invoice lines, 12 months2,500
Invoices1,850
Asset log rows1,400
Site-asset pairings checked450
Customer contacts150

Typical volumes for a business of this size. The sample files are sized as described in section 05.

Exhibit 3Fixed milestones, each released when you sign off its deliverable
MilestoneDeliverableTimingShareWeeks 1–4
M1 Audit and planExports, data profile, coding rules agreed, findings memoWeek 120%
M2 Xero clean-upRe-coding journals, tax fixes, contact merges ready to postWeeks 2–330%
M3 Asset log and billing checkRebuilt register, billing check by site, decision listWeek 325%
M4 App, handoverAirtable, Glide and Make live, SOP and walkthroughWeek 425%

Typical scope for this kind of project: US$2,500–4,500

About 4 weeks across 4 fixed milestones. The fixed quote follows a US$300 Systems Health Check, which confirms the volumes and the scope first. Your software subscriptions are billed to you by the vendors.

03What I fixed, and why

Exhibit 4How the work flows, from the first record to sign-off
φ = 1.61801XEROinvoice lines02RULEScode + queue03REGISTERasset log04CHECKsite vs billed05APPGlide + Make06XEROdraft invoices6 STAGES · ONE PASS FROM FIRST RECORD TO SIGN-OFFi. profile the year firstii. rebuild the log as a registeriii. put the app on top01XEROinvoice lines02RULEScode + queue03REGISTERasset log04CHECKsite vs billed05APPGlide + Make06XEROdraft invoices

Construction drawing. Each stage has its own check before the next one starts.

  1. 01

    Profile the year first

    I export the Xero invoice lines, contacts and the asset log and profile them before changing anything: which accounts are used for what, how many spellings each site has, where the dates do not line up.

  2. 02

    Code by rule, review by exception

    Coding rules handle the bulk; anything a rule cannot place goes to a review queue with the reason, so nothing is guessed.

  3. 03

    Rebuild the log as a register

    One row per asset movement, sites normalised, duplicates and impossible returns flagged.

  4. 04

    Check billing site by site

    Each site-asset pairing on hire is compared with what Xero billed for the same period. The owner decides what to re-bill or credit.

  5. 05

    Put the app on top

    Airtable holds the register, Glide gives the yard a phone screen to book assets out and in, and Make drafts the hire invoice in Xero. Drafts only: a person approves before anything is sent.

04Checks

Nothing goes live on trust. These checks run before sign-off and stay in the files, so they can be re-run after every change.

  1. Every invoice line counted once: coded by rule, queued for review or excluded with a reason
  2. Re-coding journals net to zero across the year
  3. No contact merged without a matching business number, email or owner sign-off
  4. Asset register rows reconcile to the original log, row for row
  5. Running the Make scenario twice creates no extra drafts
Exhibit 5Controls in the sample files: 35 of 35 pass
CheckWhat it catchesStatus
Lines counted + voided = lines in the exportNothing dropped or double countedPASS
Income by rule (Category Rules) = income in the exportEvery line falls under exactly one rule or the no-rule bucketPASS
Lines by rule = counted linesSame, by countPASS
Revenue by Service total = income in the exportThe new view loses nothingPASS
Before (200 + 260) = after (Revenue by Service)Re-coding moves income, it does not create itPASS
Recode journals: debits = creditsJournals balancePASS
Recode journals: months out of balanceEach monthly journal balances on its ownPASS
Recode journals: net credit to 4010-4040 and 835 = rule-coded incomeJournals match the line-level codingPASS
Rule-coded lines with no accountEvery rule gives an accountPASS
Review queue = counted lines needing a personNothing needing a decision is hiddenPASS
Show all 35 checks
CheckWhat it catchesStatus
Tax Review lines = counted lines with the wrong tax rateEvery tax error is listedPASS
GST effect: Tax Review = Invoice LinesTwo independent calculations agreePASS
Contacts whose master is missing or merged againOne level of merge, no chainsPASS
Contacts kept separate (similar name, different tax number) that were mergedNo false mergesPASS
Invoice lines by contact = lines in the exportEvery line belongs to a known contactPASS
Duplicate dockets left in the clean logEach docket counted oncePASS
Duplicate dockets removed = DUPLICATE issuesEvery removal is on the issues listPASS
Sites below zero at 30 JuneWrong-site returns all resolvedPASS
Asset Position total = net units in the log to 30 JunePosition is completePASS
Fleet: should own - yard - on hire - not returned - varianceFleet adds upPASS
Stocktake variance = STOCKTAKE VARIANCE issuesVariance is raised, not absorbedPASS
Billable unit-weeks: Billing Check = Hire Cycles in FY26Billing check is completePASS
Invoiced hire unit-weeks: Billing Check = Invoice LinesEvery hire line is matched to a sitePASS
Hire credits: Billing Check = Invoice LinesCredit notes are countedPASS
Make run log: errors = incidents listedEvery error execution is explainedPASS
Make run log: every error retried, resumed or raisedNo error is dropped silentlyPASS
Make run log: unresolved errorsNothing left incomplete at month endPASS
Make run log: S02 drafts = Make July RunThe log and the billing run agreePASS
Make run log: S02 ran every day in JulyA missed day would miss cyclesPASS
Make run log: every scenario has run historyNo scenario is switched off unnoticedPASS
Make July run: repeated idempotency keysA re-run cannot double billPASS
Make July run: amount = unit-weeks x rateDraft amounts are rightPASS
Exceptions: billing rows = pairs not agreeingEvery billing gap is on the registerPASS
Exceptions: open asset issuesEvery open asset issue is on the registerPASS
Engine regression: line coding disagreementsEngine matches the answer key on every linePASS

Status read from the sample workbook. Each check is a formula, not a typed value.

05Handover

Everything is handed over in editable files you own, with the steps written down so your team is not dependent on me.

In this work sample

A full-year hire business: 2,538 Xero invoice lines on 1,853 invoices, a 1,396-row asset log and 446 site-asset pairings, in a 28-tab workbook with 26,445 formulas and 35 controls.

  1. Clean Xero file with the journals posted by you or your bookkeeper
  2. Workbook with the coding rules, register and billing check, every figure a formula
  3. Airtable base, Glide app and Make scenario in your accounts
  4. SOP for booking assets out and in, and for the monthly billing check
  5. A recorded walkthrough

06Files in this work sample

Screens from the sample files. Select one to open it full size.

Dashboard tab: income, tax, contacts, assets, billing and controls, every figure a formula
Exhibit 6Dashboard tab: income, tax, contacts, assets, billing and controls, every figure a formula

Xero-Hire-Billing-Cleanup-FY26.xlsx › Dashboard

Invoice Lines tab: each Xero line with its rule, category, new account, service line and expected tax
Exhibit 7Invoice Lines tab: each Xero line with its rule, category, new account, service line and expected tax

Xero-Hire-Billing-Cleanup-FY26.xlsx › Invoice audit

Hire Billing Check tab: billable unit-weeks rebuilt from the asset log against unit-weeks invoiced, per site and asset
Exhibit 8Hire Billing Check tab: billable unit-weeks rebuilt from the asset log against unit-weeks invoiced, per site and asset

Xero-Hire-Billing-Cleanup-FY26.xlsx › Billing check

Make Scenarios tab: the 10 scenarios with trigger, schedule, error handling and alert
Exhibit 9Make Scenarios tab: the 10 scenarios with trigger, schedule, error handling and alert

Xero-Hire-Billing-Cleanup-FY26.xlsx › Make map

Make Incidents tab: the 12 error executions in the July 2026 run log, how each was handled and who resolved it
Exhibit 10Make Incidents tab: the 12 error executions in the July 2026 run log, how each was handled and who resolved it

Xero-Hire-Billing-Cleanup-FY26.xlsx › Make run log

Airtable schema tab: tables and fields for sites, customers, assets, movements, hire periods, billing runs and exceptions
Exhibit 11Airtable schema tab: tables and fields for sites, customers, assets, movements, hire periods, billing runs and exceptions

Xero-Hire-Billing-Cleanup-FY26.xlsx › Airtable schema

Controls tab: 35 formula controls, all PASS
Exhibit 12Controls tab: 35 formula controls, all PASS

Xero-Hire-Billing-Cleanup-FY26.xlsx › Controls

Report page: target process from docket to paid invoice across the yard, Glide and Airtable, Make, Xero and the office
Exhibit 13Report page: target process from docket to paid invoice across the yard, Glide and Airtable, Make, Xero and the office

Xero-Hire-Billing-Report.pdf · page 7

Overview of the Xero hire billing work sample: invoice lines coded by rule, review queue, GST to correct, hire under- and over-billing and the July draft run
Exhibit 14Overview of the Xero hire billing work sample: invoice lines coded by rule, review queue, GST to correct, hire under- and over-billing and the July draft run

PREVIEW.png · one-page overview

FilesDownload the work sample
FileWhat it isSize
Xero-Hire-Billing-Cleanup-FY26.xlsxWorkbook: re-coded invoice lines, revenue by service line, recode journals, tax review, contacts, chart fix map, asset ledger, fleet reconciliation, hire billing check, Airtable/Glide design, Make suite (10 scenarios), July run log and incidents, controls and test log728.1 KB
Xero-Hire-Billing-Report.pdfReport (20 pages): data profile, findings, options, target design, the Make suite and its July run log, results, controls, tests, cutover, RACI, risks, SOP782.9 KB
Executive-Summary.pdfOne-page executive summary138.7 KB

Tell me what’s bugging you and I’ll tell you where I’d look first.

Send a short note on Upwork about what is slowing the business down. I’ll reply with where I’d start, and whether the US$300 Systems Health Check is the right first step.