# Financial Management

# Overview

## Overview

Financial work within the team splits into three main roles:

1. **Budgeting, taxes, and final responsibility**<span style="white-space:pre-wrap;"> on purchases and investments made</span>
2. **Board / Management responsibilities**<span style="white-space:pre-wrap;"> (RvA, management meetings, etc.)</span>
3. **Accounting and logging of finances**

Of these, the last two points take up the most time. However, this documentation focuses mainly on points 1 and 3. Point 2 is covered separately during general management onboarding, as it is not finance-specific.

# Preface

## Tools

<span style="white-space:pre-wrap;">As financial manager, your primary tools are: a </span>**Binder**<span style="white-space:pre-wrap;">, </span>**Google Drive**<span style="white-space:pre-wrap;">, the </span>**printer**<span style="white-space:pre-wrap;">, and </span>[**GnuCash**](https://wiki.roboteamtwente.nl/management/function/financial_manager/gnucash).

<table class="align-center" id="bkmrk-toolpurposebinderphy"><colgroup><col></col><col style="width:475px;"></col></colgroup><tbody><tr><th class="align-center">**Tool**

</th><th class="align-center">**Purpose**

</th></tr><tr><td class="align-center">Binder

</td><td class="align-center"><span style="white-space:pre-wrap;">Physical storage of every transaction (see </span>[Book Keeping](#book-keeping))

</td></tr><tr><td class="align-center">Google Drive

</td><td class="align-center"><span style="white-space:pre-wrap;">Digital storage of every transaction (see </span>[Book Keeping](#book-keeping))

</td></tr><tr><td class="align-center">Printer

</td><td class="align-center">Printing all transactions, scanning declarations and receipts

</td></tr><tr><td class="align-center">GnuCash

</td><td class="align-center">The team's main accounting software

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

<span style="white-space:pre-wrap;">This documentation does not cover GnuCash usage in depth, for that please go to section </span><span style="background-color:rgb(241,196,15);">TODO</span>

# Budgeting, Taxes, and Financial Responsibilities

## Budgeting, Taxes, and Financial Responsibilities

Starting with the easiest but most important part: budgeting, taxes, and financial responsibility.

### Budgeting

Budgeting is done at the beginning of the year and forms the guidelines for where money will be spent over the following year. This is done through GnuCash's budgeting system and is guided during onboarding by last year's financial manager, since they have a much more accurate picture of the team's needs going into the year.

Budgeting is split into many subcategories, for example:

- PR
- Administration
- Technical
- Office supplies
- Team building

### Taxes

<p class="callout info">**Note:**<span style="white-space:pre-wrap;"> This section applies (mostly) to Dutch (NL) tax rules specifically.</span></p>

This is a daunting part of the role. It's straightforward if your accounting is under control, but it's incredibly important to get right — mistakes here can result in fines. Taxes are also a place where the team mostly gets money back, since tax returns can be claimed on taxable purchases. It is also where income tax is paid on all sponsorship income.

#### Before you file any taxes

<p class="callout success"><span style="white-space:pre-wrap;">Before you can file anything, you need to authenticate yourself. Individuals have DigiD; companies have an equivalent system called </span>**eHerkenning**<span style="white-space:pre-wrap;">. It's offered by several providers, and RoboTeam uses </span>[Digidentity](https://www.digidentity.eu/en/)<span style="white-space:pre-wrap;">. When setting up your account, you'll see multiple levels of eHerkenning on offer — make sure to pick </span>**level 3, tax edition**.</p>

<span style="white-space:pre-wrap;">Once the new management has taken over and is successfully registered at the KvK, request an account on the Digidentity website. Preferably do this </span>**after**<span style="white-space:pre-wrap;"> the old management has been de-registered from the KvK, since the request needs everyone's signature. Once registration is complete, you can sign in at the Belastingdienst and proceed with your tax declaration.</span>

<span style="white-space:pre-wrap;">You can also claim back part of the cost of your Digidentity subscription — request this through the </span>[RVO](https://www.rvo.nl/subsidies-financiering/compensatie-eherkenning).

#### Doing taxes

<span style="white-space:pre-wrap;">Taxes are straightforward: group sales and purchase tax into either the 9% or 21% pool. When filling in the form, always round </span>**in the team's favor**:

- <span style="white-space:pre-wrap;">Round </span>**up**<span style="white-space:pre-wrap;"> anything that results in a return to us (e.g. purchase tax)</span>
- <span style="white-space:pre-wrap;">Round </span>**down**<span style="white-space:pre-wrap;"> anything we pay (e.g. sales tax)</span>

<span style="white-space:pre-wrap;">In practice, RoboTeam Twente usually has to fill in values in categories </span>**1a, 3b, 4a, 4b, and 5b**<span style="white-space:pre-wrap;"> on the Belastingdienst form:</span>

- **1a**<span style="white-space:pre-wrap;"> — For every invoice RoboTeam Twente sends out, 21% BTW ("hoog tarief") has to be calculated over it. Determine the tax collected over the given period — GnuCash tracks this in the </span>**Sales TAX 21%**<span style="white-space:pre-wrap;"> account.</span>
- **3b**<span style="white-space:pre-wrap;"> — Some RoboTeam Twente partners are located outside the Netherlands (e.g. EuroCircuits). Invoices to these partners should carry 0% tax rather than 21%. Fill in the total amount received from these invoices here.</span>
- **4a**<span style="white-space:pre-wrap;"> — RoboTeam Twente sometimes buys goods from outside the EU. The seller can choose to "transfer" ("verleggen") the tax liability to RoboTeam Twente. Fill this in here — the same amount is also entered in section 5, which cancels it back out.</span>
- **4b**<span style="white-space:pre-wrap;"> — Same as 4a, but for purchases made within the EU.</span>
- **5b**<span style="white-space:pre-wrap;"> — The fun part. Whenever RoboTeam Twente buys goods or services, we pay tax on them — and that tax can be refunded. Fill in the combined total of the </span>**Purchase TAX 9%**<span style="white-space:pre-wrap;"> and </span>**Purchase TAX 21%**<span style="white-space:pre-wrap;"> GnuCash accounts here.</span>

There currently isn't a good way to track invoices sent or received from abroad — as far as we know, GnuCash doesn't support this. A spreadsheet or a simple log of invoice numbers works fine as a workaround.

<p class="callout danger">**Important:**<span style="white-space:pre-wrap;"> Tax rules change and get updated regularly. While the process is broadly similar year to year, always check the </span>[Belastingdienst](https://www.belastingdienst.nl/)<span style="white-space:pre-wrap;"> website when filing, and update this documentation if anything has changed.</span></p>

### Financial Responsibilities

Your main responsibility is to green-light any and all purchases. Most budget pools don't need to be micromanaged, as they're managed by the relevant team — for example, the PR budget is mostly managed by the PR team, and the team-building budget is handled by the activity committee. That said, you remain heavily involved in the decision-making for these pools — you should never micromanage, but you should always catch anything wrong or problematic, such as mismanagement of funds.

<span style="white-space:pre-wrap;">Another key responsibility is paying team members back for </span>**declarations**<span style="white-space:pre-wrap;"> — contributions made by teammates using their own money on behalf of the team. Examples include:</span>

- Buying equipment at a local store with personal money
- Covering dinner during a team-building activity
- Paying a last-minute import tax when picking up an order

<span style="white-space:pre-wrap;">These are money spent by teammates </span>**for the team**<span style="white-space:pre-wrap;">, so paying them out is important. All declarations should be realistic, and each one needs formal approval from you (or the person managing the budget pool of the relevant expense stream). Logging and paying declarations is covered in the </span>[Accounting and Logging of Finances](https://bookstack.roboteamtwente.nl/books/financial-management/page/accounting-and-logging-of-finances "Accounting and Logging of Finances")<span style="white-space:pre-wrap;"> section.</span>

# Setting Up Declarations

Before your team can start getting reimbursed, there are three things you need to set up:

1. **The declaration form.**<span style="white-space:pre-wrap;"> Take the </span>[old declaration form](https://docs.google.com/document/d/1qnJooMAh6CkuRE-V7enf_OHsMzyQptkgulgu0ybjEV0/edit?usp=drive_link), adjust it however you see fit, save it into your own year's folder, and generate a PDF of it.
2. **The "how to get reimbursed" document.**<span style="white-space:pre-wrap;"> Take the </span>[old version](https://docs.google.com/document/d/1ssxbqGkfLje8aJJXgREZMllu9mP22cafHFt6pUyufBM/edit?usp=drive_link)<span style="white-space:pre-wrap;"> and adjust it to match your year's declaration form. Make sure to update the Google Form link in section 0.1.</span>
3. **A bank details form.**<span style="white-space:pre-wrap;"> You need a way to collect everyone's banking information without making it public. Create a Google Form, link it in section 0.1 of the "how to get reimbursed" document, and have everyone who wants to declare expenses fill it in. It should ask for: </span>**Email**<span style="white-space:pre-wrap;">, </span>**Full name on the bank account**<span style="white-space:pre-wrap;">, and </span>**IBAN**.

Once these are in place, print 20–30 declaration forms — this should last a few months, especially early in the year — along with the "how to get reimbursed" document. Keep both in the binder, and make sure the binder never runs out of declaration forms. Also make sure the Google Form and the "how to get reimbursed" document are easily accessible to all members.

# Sending Invoices

Perform the following steps each time you send an invoice:

1. <span style="white-space:pre-wrap;">Fill out the from the </span>**treasurer**<span style="white-space:pre-wrap;"> account in </span>[overleaf](https://www.overleaf.com/)<span style="white-space:pre-wrap;"> (fill free to change the template as well if you wish)</span>
2. Send the invoice digitally, preferably from the treasurer email.
3. <span style="white-space:pre-wrap;">Put the invoice in GnuCash under </span>**Accounts Receivable**.
4. Fill in the correct due date, so GnuCash can remind you. It's also worth setting a reminder in your own calendar for the payment deadline.
5. <span style="white-space:pre-wrap;">Print the invoice and place it under </span>**Out**<span style="white-space:pre-wrap;"> in the finance folder.</span>

### Sending Invoices Abroad

<span style="white-space:pre-wrap;">When sending an invoice to someone located outside the Netherlands, you usually don't charge tax on the invoice itself — the receiving party handles their own taxes. Make sure to add a remark on the invoice stating </span>**"btw verlegd"**<span style="white-space:pre-wrap;">. More information can be found on the </span>[Belastingdienst website](https://www.belastingdienst.nl/wps/wcm/connect/bldcontentnl/belastingdienst/zakelijk/btw/zakendoen_met_het_buitenland/goederen_en_diensten_naar_andere_eu_landen/factureren/extra_factuureisen_bij_diensten).

You will also need the tax identification number of the company you're invoicing — this must be included on the invoice.

# Accounting and Logging of Finances

This process is split into three parts:

1. [Aggregating](#bkmrk-aggregating "Aggregating")<span style="white-space:pre-wrap;"> — transactions and incoming pending invoices</span>
2. [Logging, Paying, and Accounting](#bkmrk-logging%2C-paying%2C-and "Logging, Paying, and Accounting")
3. [Book Keeping](#bkmrk-book-keeping "Book Keeping")

### Aggregating

This is one of the easiest steps to get wrong, but when done right, it's effortless and speeds up your workflow tenfold.

<p class="callout info">**The core idea**: by the time you sit down to log and account for finances, you need to already have everything that needs to be logged, accounted for, and paid, readily available.</p>

In practice, this means printing all invoices and receipts the moment they arrive and putting them into an "open" section of the binder. This way, you can see everything that still needs to happen just by opening the binder. This isn't perfect on its own though — a digital version is just as important to keep, since checking your email twice for the same thing is inefficient.

### Logging, Paying, and Accounting

This is where you'll spend most of your financial man-hours.

A good cadence is once a week — feel free to go more often if needed, but avoid going longer than a week (with exceptions), as this lets work pile up and can delay things like declaration payments or invoices with tight deadlines (some have a two-week deadline). Going more frequent than necessary (e.g. 20–30 minutes every morning) also works but usually isn't needed.

There are three main things you'll be doing here:

- **Paying invoices, including declarations**<span style="white-space:pre-wrap;"> — straightforward, done through the online banking app.</span>
- **Logging every transaction**<span style="white-space:pre-wrap;"> on the RoboTeam bank account — this is the primary time sink. Every single transaction needs a corresponding GnuCash entry mapping it to what it actually is, including its invoice number, a description, and the budgeting pool it belongs to. For most recurring incoming/outgoing invoice companies, set up GnuCash vendors — this makes it much easier to calculate taxes and keep track of everything.</span>
- **Book keeping**<span style="white-space:pre-wrap;"> — covered in detail below.</span>

### Book Keeping

This is where all invoices, receipts, and declarations are filed in their correct place, both in the Binder and in Google Drive.

**Binder**<span style="white-space:pre-wrap;"> - four main sections:</span>

- Declarations
- Incoming invoices
- Outgoing invoices
- Tax documents (received when filing taxes)

**Google Drive**<span style="white-space:pre-wrap;"> - mirrors the Binder structure, with everything named by invoice number (the same number used in GnuCash):</span>

```
{team_year}/Declarations/{invoice_number}
{team_year}/Outgoing/{invoice_number}
{team_year}/Tax/{invoice_number}
{team_year}/Incoming/{vendor}/{invoice_number}
```

Declarations, outgoing invoices, and tax documents are filed directly into their respective folder. Incoming invoices are additionally split by vendor, since there are too many to keep flat.

**At the end of every logging/accounting session, always confirm two things:**

1. Every purchase is accounted for in both the Drive and the Binder
2. The GnuCash balance of the bank account matches its actual real-world value.

# 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.