---
date: "2021-04-17T14:00:00Z"
title: "Reporting business accounts using Ledger"
description: "Why I switched from Xero to Ledger, and how I could still report business accounts."
tags: [100daystooffload, finance, technology]
---

As is the case with many countries, all businesses in the UK must report the state of their financial accounts to the relevant inland revenue service at their year-end (in the UK, this is [HMRC](https://www.gov.uk/government/organisations/hm-revenue-customs)).

This is also the case if you are a freelancer or sole-trader (or if you've made other untaxed income - e.g. from investments). In these cases, this is called your [Self Assessment](https://www.gov.uk/self-assessment-tax-returns). Self Assessments are pretty straight forward, and can usually be completed online by the indiviual themself - as long as they have kept good accounts and know their numbers.

However, the required year-end _business_ accounts are different and are more complex in order to account for all the different types of operating models and variety of business types. There are also various rules for businesses of different sizes and if you don't know what you're doing you may end up paying too much or too little tax.

As such, it is generally advisable to appoint an accountant to help you at your year-end (even if you're making a loss!). It gives you peace of mind and also saves you time.

My business year-end passed recently. Historically I've used [Xero](https://xero.com) to track business finances - since it is a good one-stop shop for issuing invoices, getting paid, tracking bills and finances, and automatically reconciling against your bank. It's a great tool for small businesses as it helps you make sure everything is correctly accounted for, and it allows your accountant to easily get the information they need in order to make their reports for your business to HMRC.

However, it is a paid-for service, and if you've paused trading at least temporarily - like me - or if you're going through a financial dry patch, it feels a waste to pay for something that you're not using.

About a year ago I got quite heavily into [plain-text accounting](/notes/plain-text-accounting) - it feels logical and in-control. I was using it for some of my personal finances and so I thought I'd also switch business bookkeeping to the [Ledger](https://www.ledger-cli.org) approach too.

I exported my Xero accounts into a new Ledger file and paused my Xero subscription. Every month I would run through my bank statement/invoices/bills, and update the ledger and reconcile against the business bank account. As such, when it came round to year-end, I had a full set of books for the relevant tax period.

This is where I worried a little. The lady who normally files my accounts had access to my Xero and can run everything from there (many small business accountants in the UK recommend and sometimes only work with Xero). I didn't want to have to look for and begin working with a new accountant, and so I looked to see if I could get Ledger to output balance sheets and P&Ls in a similar way to Xero.

The Ledger tool offers a number of reporting mechanisms. The most useful are perhaps the `balance` and `register` commands, which respectively show the balance across your accounts and a transaction log.

After running a few of these simple Ledger commands, I had the files I needed: a balance sheet (covering all accounts), a profit & loss account (essentially a balance sheet covering income and expense accounts), and a transaction register. Examples describing how I generated these are shown below (in this case assuming a year-end of 31st December).

**Balance sheet:** To generate the balance sheet I used `ledger balance -b 2020/01/01 -e 2021/01/01`, which outputs something along the lines of:

```
          £-XXXX.XX   Assets
           £XXXX.XX    Bank 1
          £-XXXX.XX    Bank 2
           £XXXX.XX   Equity:Shareholder:Dividends
           £XXXX.XX   Expenses
             £XXX.XX    Advertising
              £XX.XX    Compliance
              £XX.XX    Domains
             £XXX.XX    Hosting
             £XXX.XX    Services
             £XXX.XX      Accounting
               £X.XX      Banking
              £XX.XX      Legal
             £XXX.XX    Software
            £XXXX.XX    Tax:Corporation
            £-XXX.XX  Income:Sales:Product
--------------------
                   0
```

**Profit & loss account:** The rough "P&L" was generated with `ledger balance -b 2020/01/01 -e 2021/01/01 income expenses`:

```
           £XXXX.XX   Expenses
             £XXX.XX    Advertising
              £XX.XX    Compliance
              £XX.XX    Domains
             £XXX.XX    Hosting
             £XXX.XX    Services
             £XXX.XX      Accounting
               £X.XX      Banking
              £XX.XX      Legal
             £XXX.XX    Software
            £XXXX.XX    Tax:Corporation
            £-XXX.XX  Income:Sales:Product
--------------------
            £XXXX.XX
```

(Where the final line indicates the overall balance between income and expenses).

**Transaction log:** The register was generated using `ledger register -b 2020/01/01 -e 2021/01/01`. I won't include a sample below, as a transaction log is mostly obvious. I also generated it in CSV format in case this made it easier for the accountant at all: `ledger csv -b 2020/01/01 -e 2021/01/01`.

I placed the outputs from these commands into separate files and sent them to the accountant, who was then able to submit the company accounts without needing Xero. This was a great experience, as it gives me confidence in the end-to-end functionality of Ledger (and other similar command-line accounting tools). Writing and keeping books using plain-text files is quicker than Xero (which can be quite clunky), and now I can also easily get the information out the other end too. And it's free!
