# GnuCash

<span style="white-space: pre-wrap;">RoboTeam Twente uses </span>**GnuCash**<span style="white-space: pre-wrap;"> — free, open-source accounting software — to keep track of the team's finances. This document walks through setting up the account structure, tax tables, and the day-to-day transactions you'll be entering.</span>

---

## Starting Up

<span style="white-space: pre-wrap;">When initializing a new GnuCash document, click </span>**Next**<span style="white-space: pre-wrap;"> until you reach the </span>**New Book Options**<span style="white-space: pre-wrap;"> section. Under </span>**Business**<span style="white-space: pre-wrap;">, fill in the RTT company details. The </span>**Company ID**<span style="white-space: pre-wrap;"> field is a convenient place to store the team's VAT number, in case you ever need to look it up.</span>

<span style="white-space: pre-wrap;">Any account with sub-accounts is a </span>**placeholder account**<span style="white-space: pre-wrap;"> — placeholder accounts can't be edited directly, only through their sub-accounts. This keeps the overall structure organized and prevents transactions from accidentally being logged at the wrong level.</span>

---

## Account Structure

GnuCash organizes everything into a small number of top-level accounts.

### Assets

The Assets account contains everything RoboTeam Twente owns — equipment, the robots, the bank account balance, and any budget held at partner companies. This can also include store credit held at partners such as RS or Würth.

Store credit is worth tracking carefully even though it can be a hassle — these balances don't always clearly show what's been spent or how much remains, and partners aren't always responsive about it. It's still important to keep tabs on, since RS in particular sends an invoice for any spending that goes beyond the store credit budget.

### Equity

<span style="white-space: pre-wrap;">Equity is defined as </span>**assets minus liabilities**<span style="white-space: pre-wrap;">, and should always be zero or higher. In previous years, the Equity account has only been used to set the opening balances of other accounts, so it typically has a single sub-account: </span>**Opening Balances**.

### Expenses

The Expenses account covers all outgoing costs and is fairly self-explanatory — set up sub-accounts per spending category as needed.

### Income

The Income account covers everything coming in: partner contributions, event income, crowdfunding, and similar sources.

---

## Setting Up Tax Tables

In addition to the four accounts above, create three more top-level accounts:

<table id="bkmrk-accounttypepurposeli"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><th>Account

</th><th>Type

</th><th>Purpose

</th></tr><tr><td>Liabilities

</td><td>Liability

</td><td>Tracks VAT on expenses and income

</td></tr><tr><td>Receivable

</td><td>A/Receivable

</td><td>Tracks unpaid invoices sent out by RTT

</td></tr><tr><td>Payable

</td><td>A/Payable

</td><td>Tracks unpaid bills owed by RTT

</td></tr></tbody></table>

<span style="white-space: pre-wrap;">To set up tax tables, go to </span>**Business → Sales Tax Table**<span style="white-space: pre-wrap;">. You'll want </span>**four tax tables**<span style="white-space: pre-wrap;"> in total:</span>

- 21% — Purchases
- 9% — Purchases
- 21% — Sales
- 9% — Sales

---

## Using GnuCash

### Transaction Fields

Every transaction has the same set of fields to fill in:

- **Date**<span style="white-space: pre-wrap;"> — the date the invoice was received, or the date the declaration item was purchased</span>
- **Number**<span style="white-space: pre-wrap;"> — the invoice or declaration number</span>
- **Description**<span style="white-space: pre-wrap;"> — a description of the item(s) purchased</span>
- **Transfer**<span style="white-space: pre-wrap;"> — which account the money is moving to/from</span>
- **Increase/Decrease**<span style="white-space: pre-wrap;"> — labeled differently depending on the account, but always represents an increase or decrease in that account's value</span>
- **Balance**<span style="white-space: pre-wrap;"> — the running cumulative total</span>

### 0% VAT

Some transactions carry 0% VAT — bank account costs are a typical example. Rather than creating a dedicated 0% tax table, just leave the tax field blank / set to 0% directly on the transaction.

---

## Receiving an Invoice

If the transaction involves a company you haven't logged before, you'll first need to create a new vendor:

1. <span style="white-space: pre-wrap;">Go to </span>**Business → Vendor → New Vendor…**
2. Fill in the vendor's details.
3. <span style="white-space: pre-wrap;">Under </span>**Payment Information**, assign the appropriate tax table.

Once the vendor exists (or if you're using an existing one), create a new bill:

1. <span style="white-space: pre-wrap;">Go to </span>**Business → Vendor → New Bill…**
2. <span style="white-space: pre-wrap;">The </span>**Bill ID**<span style="white-space: pre-wrap;"> field should contain the invoice number.</span>
3. Fill in the transaction table the same way you would for a 0% taxable purchase.
4. Post the bill, making sure the transaction description is filled in.

<span style="white-space: pre-wrap;">Once the bill has been paid, mark it as paid in GnuCash as well. Make sure </span>**Num**<span style="white-space: pre-wrap;"> contains the invoice number and that the transfer account is correct. It's also good practice to update the transaction's description in the Payable account to something more descriptive than the vendor name, since GnuCash sets it to the vendor name by default.</span>

---

## Sending an Invoice

When RTT sends out an invoice, it also needs to be logged in GnuCash.

1. <span style="white-space: pre-wrap;">Create a new customer: </span>**Business → Customer → New Customer…**<span style="white-space: pre-wrap;"> — this works the same as creating a vendor, but uses the </span>**sales**<span style="white-space: pre-wrap;"> tax tables instead of the purchase tax tables.</span>
2. <span style="white-space: pre-wrap;">Create the invoice: </span>**Business → Customer → New Invoice…**
3. Fill in the transaction table the same way you would for a bill (discount columns can be left empty).
4. <span style="white-space: pre-wrap;">When posting the invoice, set the due date to </span>**30 days**<span style="white-space: pre-wrap;"> out, and make sure the description is filled in.</span>

<span style="white-space: pre-wrap;">Once payment is received, log it via </span>**Business → Customer → Process Payment**<span style="white-space: pre-wrap;">, making sure to include the invoice number in the </span>**Num**<span style="white-space: pre-wrap;"> field. Once done, the Receivable account balance for that invoice should return to 0.</span>

---

## Making a Budget

<span style="white-space: pre-wrap;">To start a new budget: </span>**Actions → Budget → New Budget**.

<span style="white-space: pre-wrap;">Budgets can be tracked by month, semester, or quarter — previous years have used a </span>**quarterly**<span style="white-space: pre-wrap;"> split. This is configured under </span>**Options**<span style="white-space: pre-wrap;">: for a quarterly budget, set </span>**"Every 3 months"**<span style="white-space: pre-wrap;"> with </span>**"Number of periods: 4."**

<span style="white-space: pre-wrap;">At the start of the year, most accounts will still be empty and won't show up in the budget view by default. To show them: </span>**View → Filter By… → Other**<span style="white-space: pre-wrap;">, then enable </span>**"Show hidden accounts"**<span style="white-space: pre-wrap;"> and </span>**"Show unused accounts."**

Once all accounts are visible, you can fill in the budgeted amount per account, per quarter.