I’ve seen too many small businesses treat client retainers as if they were regular sales—posting them straight to income and then wondering why their profit looks inflated until the retainer is consumed. Xero can make retainer tracking straightforward, but only if you set it up with the right accounts, invoice workflows and bank rules. Below I walk through a practical, step-by-step approach I use with clients so retainers are kept off income until services are delivered, reconciliations are simple, and you avoid the common trap of misallocated income.

Why treat retainers differently?

Retainers are prepaid fees. Until you deliver the service (or use contractual rules to recognise revenue), that money is a liability, not income. Treating it as income upfront distorts profit, VAT (if applicable) and tax. In client conversations I often explain it like this: prepaid funds are customer money you owe services for — they should live on the balance sheet until earned.

Core elements to set up in Xero

Before creating invoices, make sure these pieces exist in Xero:

  • Liability account for retainers — a non-current or current liability called something like “Client Retainers” or “Unearned Income”.
  • Tracking or tracking categories (optional) — if you want to report retainers by client, service line or location.
  • Prepayment/Retainer invoice template — invoice wording that makes clear the payment is a retainer/prepayment and states terms on recognition/refunds.
  • Bank rules and payment services — connect Stripe, GoCardless or your bank feed and create rules to code retainer receipts automatically.
  • Revenue recognition routine — a simple process (manual or spreadsheet) to move money from the liability account into revenue when services are provided.

Step-by-step: create a proper retainer account

In Xero go to Accounts → Chart of accounts and create a new account:

Account TypeCurrent Liability (or Non-current if long term)
Account NameClient Retainers
Codee.g. 2200 (use your numbering scheme)
DescriptionPrepaid client funds – not yet earned

Using a current liability is typical because most retainers are realised within 12 months. The point is to keep them off the income statement until earned.

Step-by-step: create a retainer invoice workflow

Don’t use a standard sales invoice as that tends to default to revenue-led accounting. Instead:

  • Create an invoice item named “Client Retainer / Prepayment”. Set the line account to the Client Retainers liability account. If Xero won’t allow a liability on an invoice line, create the invoice for a sales account and use a manual journal to move the amount to the liability account when payment arrives (I describe that journal below).
  • Add clear terms on the invoice: what the retainer covers, how it will be drawn down, refund conditions and VAT treatment (if applicable).
  • Send the invoice like any other invoice. When the client pays, code the receipt to the Client Retainers account.

Coding payments: bank reconciliation rules

The moment the retainer is deposited is the most important. If you code it to sales, you’ve already misallocated. Use bank rules in Xero to catch common retainer payments:

  • Create a bank rule matching the payment reference or the payment service description (e.g. “Stripe payment from Client X”).
  • Set the rule to code matched payments to the Client Retainers liability account.
  • For recurring retainers, you can set a rule for the amount or amount range to speed up reconciliation.

If payments come through Stripe or GoCardless, I also set up the feed in Xero and add rules that detect the gateway fees so fees are coded to Merchant Fees and the net amount to the retainer liability.

Recognising revenue from the retainer

When you deliver services, you need to move the corresponding amount from the liability account into the correct sales account. You have two main options:

  • Create a sales invoice for the work performed and allocate it to the client. Then raise a credit note or use a manual journal to reduce the retainer liability and mark the invoice as paid using the retainer balance.
  • Use manual journals to transfer amounts from Client Retainers to sales accounts (with VAT if necessary) when services are delivered.

I tend to favour the invoice + credit note method because it leaves a clear audit trail by linking a sales invoice to the original prepayment. Here’s a simple journal example if you go journal route:

DebitClient Retainers (liability)£1,000
CreditSales – Consultancy£833.33
CreditOutput VAT (if applicable)£166.67

Common pitfalls and how to avoid them

  • Posting retainers to income — fix bank rules and invoice templates so they always point to the liability account.
  • Forgetting VAT on retained amounts — if the retainer covers future VATable services, record VAT on recognition or on invoicing depending on your accounting basis. Speak to your accountant if unsure.
  • Mixing client retainer and general deposits — use separate invoice references and bank rules so payments are correctly identified.
  • No audit trail — prefer invoice-credit note workflows so you can link the sale to the prepayment easily during a review or tax check.

Tips to make this even easier

  • Use the Xero contact reference field to tag retainer payments with the client name—this makes reporting straightforward.
  • If you offer subscriptions or regular retainers, integrating Xero with Stripe subscription billing or a CRM (e.g. HubSpot) can automate invoices and refunds.
  • Keep a simple spreadsheet of retainer balances per client as a cross-check to your Xero liability balance. I often maintain this for clients to reassure them and speed up month-end reconciliations.
  • Document your revenue recognition policy: when do you recognise income—on completion, pro rata monthly, or milestone-based? Apply consistently.

Reporting and month-end checks

Each month I run these checks:

  • Compare the Client Retainers ledger in Xero to my client retainer spreadsheet.
  • Check that all sales invoices marked as paid from retainers have a corresponding reduction in the liability account.
  • Make sure VAT on recognised income has been recorded (if you’re on VAT accounting).
  • Review bank rule matches to ensure no retainer receipts were misclassified as income or bank fees.

Getting retainers right in Xero is a small effort that removes a big headache later. Once you’ve got the liability account, invoice wording and bank rules in place, the month-end process becomes predictable and you avoid the unpleasant surprise of overstated profits or VAT errors. If you want, I can share a sample retainer invoice wording and a journal template you can paste into Xero — tell me the typical retainer size and whether you’re VAT registered and I’ll tailor it for your setup.