I often get questions from clients who hold retainers on account in Xero and then need to refund part or all of that retainer. The worry I hear most is: “If I refund this, will Xero create a ghost liability or leave my contact with a strange credit balance?” I’ll walk you through practical, step‑by‑step ways to record retainer refunds in Xero so your ledgers stay tidy, VAT is handled correctly and you don’t leave behind phantom liabilities that confuse your reports.

Common setups for retainers in Xero (and why they matter)

Before we process a refund, it helps to know how the retainer was recorded in the first place. In my work I see three common approaches:

  • Retainer recorded as a customer invoice coded to a Customer prepayments / Unearned revenue liability account (recommended if you treat retainers as deferred income).
  • Retainer taken as a bank receipt and left as a contact credit (using the Receive Money or a direct bank reconciliation into a liability account or “Carry forward” credit).
  • Retainer collected via a payment processor (Stripe, GoCardless) and recorded to the bank account with an overpayment left on the contact.
  • Each method changes the steps you’ll take when refunding. The goal is the same across all: reduce the liability (or clear the contact credit) and match that to the money out of the bank so the contact balance and your liability account both reconcile to zero.

    Principles I follow when refunding retainers in Xero

  • Always clear both sides — the bank movement and the liability/credit on the contact.
  • Use a credit note or spend money that targets the same liability account used originally — this prevents orphaned balances.
  • Handle VAT consistently — if VAT was recorded on the retainer, the refund must adjust output VAT accordingly.
  • Match bank feed transactions to the credit note/spend money to keep the feed reconciliation clean and avoid ghost liabilities.
  • Step‑by‑step: refunding a retainer recorded as a liability invoice

    Scenario: you raised an invoice for a retainer to a client and coded it to a liability account called “Customer Retainers (Liability)”. The client now asks for a £500 refund and you pay them back from your bank.

  • Step 1 — Create a credit note (or credit invoice) for £500 against that contact, coded to the same liability account (Customer Retainers). In Xero: Business → Invoices → New Credit Note.
  • Step 2 — If the original invoice and the credit note are visible on the contact, apply the credit note to the retainer invoice so the contact balance shows correctly.
  • Step 3 — Record the bank payment (Spend Money) for £500 and code it to the same liability account (Customer Retainers). This reduces the liability on the balance sheet.
  • Step 4 — Reconcile the bank feed: match the bank outflow to the Spend Money entry. If your bank feed shows the refund automatically (for example, you refunded a card and the card provider shows the outflow), reconcile the feed directly to the Spend Money.
  • Result: The liability account is debited by £500 (reduced) and the bank is credited by £500 (cash out). The contact’s balance is cleared and no ghost liability remains.

    Recording the entries — quick journal view

    ActionDebitCredit
    Create credit note or apply creditCustomer Retainers (Liability) £500Accounts receivable / Contact balance £500
    Pay refund (Spend Money)Customer Retainers (Liability) £500Bank £500

    Refunding retainers when you used contact credits / overpayments

    If the retainer ended up as a contact credit (overpayment) rather than coded to a named liability account, the safest route is:

  • Create a credit note or record the overpayment against the original invoice so the credit appears on the contact record.
  • Record a Spend Money against the contact and allocate it to an appropriate liability or “Customer overpayments” account to reduce the contact credit.
  • Match the bank feed item to the Spend Money transaction so your bank reconciliation agrees.
  • This ensures the credit on the contact is extinguished by the actual bank refund and avoids leaving a residual balance that looks like a liability.

    When the retainer was collected via Stripe, PayPal or GoCardless

    Payment processors complicate things because of fees and timing. My approach:

  • Process the refund in the processor first (Stripe / PayPal). Make sure the processor shows the refund and any fees it charged.
  • When the refund hits your bank feed, reconcile it to a Spend Money transaction in Xero coded to the same retainer liability account.
  • Record the processing fee as an expense (e.g., Bank Charges or Payment Processing Fees) if the refund results in a net movement different from the gross refunded amount.
  • Tip: If Stripe refunds gross and then later posts fees separately, you might need to split the bank statement line in the reconciliation to allocate the fee to an expense account and the refund to the liability.

    VAT considerations

    If the retainer included VAT, the VAT treatment on refund depends on whether the original retainer was included in a VAT return you’ve already filed.

  • If you haven’t accounted for VAT yet: reduce output VAT in the same return period (refund reduces both net and VAT amounts).
  • If you already accounted for VAT: you must correct the return or adjust in the next return depending on materiality and timing. Typically you adjust output VAT down when the refund is processed.
  • Always keep the supporting documents (credit note, refund receipt from bank or processor) to back up any VAT adjustments in case of an HMRC query.

    Common mistakes and how to avoid ghost liabilities

  • Don’t simply write off the retainer with a journal without touching the bank: the bank must show the cash refund to avoid a phantom liability.
  • Don’t create a credit note but forget to apply it — an unapplied credit can look like an outstanding warranty or future liability on the contact.
  • Don’t leave the refund coded to a revenue account — refunds should hit the liability (or an expense if you treat it differently), not sales.
  • Ensure fees are recorded separately so your income and expense accounts stay accurate.
  • Practical checklist I use with clients

  • Identify how the retainer was initially recorded (liability account, contact credit, or invoice to sales).
  • Create and apply a credit note if applicable.
  • Record the Spend Money and code to the same liability account used originally.
  • Match the bank feed to the Spend Money / credit note so the reconciliation clears cleanly.
  • Adjust VAT if the original retainer included VAT and documentation is required.
  • Keep supporting documents for audit trail: original invoice, credit note, refund confirmation from bank/processor.
  • If you’d like, I can draft the exact Xero steps tailored to the way you currently record retainers — show me a screenshot of the contact ledger and I’ll outline the precise entries to run so you avoid messy balances. I find a quick review avoids a lot of reconciling headaches later on.