Work snippetPayments + credits

Credit notes, part payments and overpayments between ServiceM8 and Xero

How I would approach the invoices that are not paid in full for an 18-tech electrical business, so a credit, a part payment, an overpayment or a cent of tax rounding leaves the same balance in the job system and in Xero.

Work snippet with example figures.

Area
Payments + credits
Tools
ServiceM8 · Xero
Typical scope
US$2,000–3,500
Timeline
About 5 weeks · 4 fixed milestones

Context and systems map

An 18-tech electrical business with one branch, a bookkeeper and an outside accountant. ServiceM8 raises job invoices and Xero holds the ledger. Most invoices are paid in full, and the rest are the problem: part payments, credit notes after a job is changed, overpayments and tax lines that do not add up to the cent.

The systems in play

In the example each of those situations is mapped to a written rule, so that the job system and Xero show the same balance for the same invoice, and every difference of even one cent has a reason.

Systems map: who uses what
SystemWhat it does for the business
ServiceM8Raises invoices, records payments and credits against a job.
XeroHolds invoices, credit notes, payments, prepayments and overpayments.
Exceptions listA weekly list of invoices where the two systems show different balances.
Rules sheetOne written page for each situation: what is created, where, and who approves.
BookkeeperWorks the list and approves refunds and write-offs.
AccountantSigns off the treatment of rounding and tax differences.

How the data moves

  1. Job changes after invoicing
  2. Credit note or adjustment
  3. Payment received
  4. Applied in Xero
  5. Balance compared
  6. Exceptions list
  7. Approved action

Problem

What the owner sees

  1. Customer statements that disagree with the invoice
  2. Credit notes that sit unapplied while the customer is chased
  3. Overpayments nobody refunds
  4. A cent here and there that makes reconciliation fail

Native sync handles the clean case well. The rest depends on the order in which things happen: a payment before a credit note, two part payments, a refund after an overpayment. Without written rules each case is handled differently by whoever is working that day.

Where the drift starts
Everyday situationWhat goes wrong
Credit note issued after a part paymentThe credit is applied to the wrong invoice or left unallocated
Part payment recorded in one system onlyThe balance in Xero and in the job system differ
OverpaymentThe extra sits as an unapplied payment for months
Tax roundingPer-line tax in one system and per-invoice tax in the other differ by a cent
Mixed tax codes on one invoiceA tax-free line is taxed or the reverse
Invoice voided after a paymentThe payment is orphaned and the customer shows a credit

Approach

Four steps, in this order. Each one ends with a result that is checked.

  1. LookA read-only comparison of invoice balances between ServiceM8 and Xero for 12 months, listing every difference and its cause.
  2. Agree the rulesOne written rule for each situation: credit, part payment, overpayment, refund, write-off and rounding.
  3. Build and testRules are applied in a test file, then to the open exceptions with approval, then to new items weekly.
  4. Keep it matchedA weekly balance comparison and an exceptions list with owners.
Rules agreed in writing (example settings)
ItemExample setting
Credit notesCreated in Xero from the job system adjustment, allocated to the original invoice first, then to the oldest open invoice
Part paymentsApplied as received, never rounded; the remaining balance is the difference
OverpaymentsHeld as an overpayment on the customer and listed; refund or credit within 14 days after approval
RoundingDifferences up to 0.05 per invoice written to a rounding account, listed monthly for the accountant
Tax codesOne mapping table from job system tax to Xero code, with tax-free lines kept separate
Voided invoicesPayments are re-applied or refunded before the void is posted
ApprovalRefunds and write-offs above 100.00 need the bookkeeper and the owner
EvidenceEvery adjustment keeps the job number and the reason

Flow and data mapping

The first table shows what happens to the balance when each event arrives. The second shows how tax is mapped between the two systems.

Event, action and where it is recorded
EventIn the job systemIn XeroCheck
Part paymentPayment on the invoicePayment applied to the invoiceBalances equal
Credit after a paymentAdjustment on the jobCredit note allocated to the invoiceBalances equal after the credit
OverpaymentPayment above balanceOverpayment on the customerListed and tracked
RefundRefund entryRefund from the credit or overpaymentCustomer balance zero
Void after paymentPayment moved or refunded firstPayment re-applied, then voidNo orphan payment
Write-off of a small balanceAdjustment with reasonCredit note to a write-off accountUnder the approval limit
Tax mapping (example settings)
Job system taxXero tax codeRateNote
Standard ratedTax on income10%Most labour and materials
Tax-freeTax-free income0%Named lines only, such as certain supplies
Out of scopeNo tax0%Reimbursed costs
Standard rated purchaseTax on expenses10%Supplier bills
Tax-free purchaseTax-free expenses0%Named suppliers only

Edge cases handled

Agreed in advance with the finance lead and the operations manager, and tested before go-live.

Edge cases and how each is handled
SituationHow it is handled
Two part payments and then a credit noteCredit allocated before the second payment so the final balance cannot go negative
Credit larger than the open balanceOpen balance cleared, the rest held as a customer credit and listed
Payment received for the wrong invoiceMoved by the bookkeeper with a note, not deleted
Customer pays the invoice and then asks for a creditRefund from the credit with the customer’s bank details checked
Overpayment of exactly one centWritten to rounding by rule, not chased
Line-level tax differs by one centRounding rule applies and the cent is listed
Tax code deleted or changed in XeroMapping table fails safe: invoice held, not posted
Credit note on a month already closedPosted in the open month with the original date in the reference

Worked example

The tables below follow one invoice through every event. They show the shape of the checks, not a client result.

One invoice through four events (example figures, US$)
EventAmountBalance after
Invoice INV-5120: 2,000.00 plus 10% tax2,200.002,200.00
Payment 1(1,000.00)1,200.00
Credit note: 300.00 plus 10% tax(330.00)870.00
Payment 2(900.00)(30.00)
Overpayment of 30.00 held, then refunded after approval30.000.00
Tax rounding on three lines (example figures, US$)
LineNetTax at 10%, rounded per line
Line 133.333.33
Line 233.333.33
Line 333.343.33
Total of lines100.009.99
Tax at invoice level100.0010.00
Difference 0.01
Weekly balance comparison (example figures)
GroupInvoices comparedEqualOn the exceptions list
Paid in full4124120
Part paid37352
Credited19172
Overpaid660
Total4744704
Exceptions list with owners (example settings)
ReasonOwnerDue
Balance differsBookkeeper3 business days
Overpayment over 14 daysBookkeeper and ownerOn the list until closed
Rounding over 0.05AccountantMonthly

Monitoring and alerting

Differences are caught weekly, not at month end, and each one is classified so the same cause can be fixed once.

What is watched, and who hears about it
SignalThresholdAlert goes toFirst action
Balance differsAny invoiceBookkeeperCause found, entry corrected, rule added if new
Unallocated credit noteOlder than 7 daysBookkeeperAllocated or refunded
Overpayment ageOlder than 14 daysBookkeeper and ownerRefund approved or credit applied
Rounding accountMonthly total above 25.00AccountantReview for a systematic cause
Tax code errorAny invoice held for a missing codeBookkeeperMapping fixed, invoice released
Sync failureAny failed pushManaz Afzal and bookkeeperReplayed once the cause is fixed

Test plan

Every check has a written pass condition and a written fail condition before it is run. A FAIL stops the next step until it is cleared and re-run.

Test plan with PASS and FAIL conditions
IDCheckMethodPASS whenFAIL when
T1Part paymentTwo payments on a test invoiceBoth systems show the same balanceAny difference
T2Credit after paymentCredit note on a part-paid invoiceCredit allocated; balance correctCredit unallocated
T3Credit above balanceCredit larger than the open balanceBalance zero, remainder held and listedNegative invoice
T4OverpaymentPayment above balanceHeld and on the list; no auto refundApplied elsewhere
T5RoundingThree-line invoiceDifference of 0.01 listed, rule appliedSilent plug
T6Tax mappingOne invoice with tax-free and taxed linesCodes correct on each lineAny wrong code
T7Void after paymentVoid a paid test invoicePayment re-applied firstOrphan payment
T8Twelve-month backtestRules applied to past exceptionsEvery exception has a rule and an ownerAny exception with no rule

Go-live and rollback

The rules are applied to history first on a copy, then to open items with approval, then to new items from a start date.

Go-live steps and rollback triggers
StepOwnerGate to continueRollback trigger
Open exceptions cleaned on a copyManaz AfzalT8 passesRules do not cover an exception
Cleaned items posted with approvalBookkeeperBalances equal after postingAny item that moves a closed period
Rules live for new itemsBookkeeperT1 to T7 passAny balance difference in week one
Weekly comparison liveBookkeeperTwo clean weeksThree weeks with new causes
RollbackOwnerRules paused, entries from the new rules reversed from the logDecision recorded with the reason

Scope and milestones

A fixed scope agreed in writing before anything starts. Each milestone is paid when you sign off its deliverable.

Scope: what a project like this covers
AreaIncluded
Systems AuditRead-only comparison of 12 months of invoice balances between ServiceM8 and Xero, a 45-minute call, written findings and a fixed quote
Comparison12 months of balances, every difference with its cause
Rules sheetOne page per situation, signed by the bookkeeper and accountant
Tax mappingA table from job system tax to Xero codes
Clean-up of open itemsCredits, part payments and overpayments posted with approval
Weekly comparisonA scheduled balance comparison and exceptions list
Rounding ruleA rounding account and monthly list
HandoverWritten SOPs, a recorded handover video and files you own, plus 14 days of fixes after go-live
Not includedTax filing and statutory returns.
Also outside the scopeCollections and chasing. Changing the chart of accounts. Customer contracts. Software subscriptions (billed to you by the vendors).
Fixed milestones
MilestoneDeliverableTimingShare
M1 Audit and rulesComparison, fixed quote, rules in writingWeek 125%
M2 Clean-upOpen items cleaned on a copy, then posted with approvalWeeks 2 to 335%
M3 Live rulesRules live for new items, weekly comparison runningWeek 425%
M4 HandoverRounding list, SOPs, handover video, 14 days of fixesWeek 515%

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

About 5 weeks across 4 fixed milestones. The Systems Audit (US$300, fixed) comes first and confirms the scope.

Describe what is going wrong between your job system and your books, and I will say where I would look first.

Send a short note through the form on the home page. I will reply with where I would start, and whether the US$300 Systems Audit is the right first step.

Hire me on Upwork (opens in a new tab)Hire me on Freelancer (opens in a new tab)