Financial Management
- Overview
- Preface
- Budgeting, Taxes, and Financial Responsibilities
- Setting Up Declarations
- Sending Invoices
- Accounting and Logging of Finances
- GnuCash
Overview
Overview
Financial work within the team splits into three main roles:
- Budgeting, taxes, and final responsibility on purchases and investments made
- Board / Management responsibilities (RvA, management meetings, etc.)
- 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
As financial manager, your primary tools are: a Binder, Google Drive, the printer, and GnuCash.
Tool | Purpose |
|---|---|
Binder | Physical storage of every transaction (see Book Keeping) |
Google Drive | Digital storage of every transaction (see Book Keeping) |
Printer | Printing all transactions, scanning declarations and receipts |
GnuCash | The team's main accounting software |
This documentation does not cover GnuCash usage in depth, for that please go to section TODO
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
Note: This section applies (mostly) to Dutch (NL) tax rules specifically.
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
Before you can file anything, you need to authenticate yourself. Individuals have DigiD; companies have an equivalent system called eHerkenning. It's offered by several providers, and RoboTeam uses Digidentity. When setting up your account, you'll see multiple levels of eHerkenning on offer — make sure to pick level 3, tax edition.
Once the new management has taken over and is successfully registered at the KvK, request an account on the Digidentity website. Preferably do this after 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.
You can also claim back part of the cost of your Digidentity subscription — request this through the RVO.
Doing taxes
Taxes are straightforward: group sales and purchase tax into either the 9% or 21% pool. When filling in the form, always round in the team's favor:
- Round up anything that results in a return to us (e.g. purchase tax)
- Round down anything we pay (e.g. sales tax)
In practice, RoboTeam Twente usually has to fill in values in categories 1a, 3b, 4a, 4b, and 5b on the Belastingdienst form:
- 1a — 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 Sales TAX 21% account.
- 3b — 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.
- 4a — 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.
- 4b — Same as 4a, but for purchases made within the EU.
- 5b — 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 Purchase TAX 9% and Purchase TAX 21% GnuCash accounts here.
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.
Important: Tax rules change and get updated regularly. While the process is broadly similar year to year, always check the Belastingdienst website when filing, and update this documentation if anything has changed.
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.
Another key responsibility is paying team members back for declarations — contributions made by teammates using their own money on behalf of the team. Examples include:
- 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
These are money spent by teammates for the team, 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 Accounting and Logging of Finances section.
Setting Up Declarations
Before your team can start getting reimbursed, there are three things you need to set up:
- The declaration form. Take the old declaration form, adjust it however you see fit, save it into your own year's folder, and generate a PDF of it.
- The "how to get reimbursed" document. Take the old version and adjust it to match your year's declaration form. Make sure to update the Google Form link in section 0.1.
- A bank details form. 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: Email, Full name on the bank account, and 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:
- Fill out the from the treasurer account in overleaf (fill free to change the template as well if you wish)
- Send the invoice digitally, preferably from the treasurer email.
- Put the invoice in GnuCash under Accounts Receivable.
- 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.
- Print the invoice and place it under Out in the finance folder.
Sending Invoices Abroad
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 "btw verlegd". More information can be found on the Belastingdienst website.
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:
- Aggregating — transactions and incoming pending invoices
- Logging, Paying, and Accounting
- 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.
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.
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 — straightforward, done through the online banking app.
- Logging every transaction 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.
- Book keeping — covered in detail below.
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 - four main sections:
- Declarations
- Incoming invoices
- Outgoing invoices
- Tax documents (received when filing taxes)
Google Drive - mirrors the Binder structure, with everything named by invoice number (the same number used in GnuCash):
{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:
- Every purchase is accounted for in both the Drive and the Binder
- The GnuCash balance of the bank account matches its actual real-world value.
GnuCash
RoboTeam Twente uses GnuCash — 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.
Starting Up
When initializing a new GnuCash document, click Next until you reach the New Book Options section. Under Business, fill in the RTT company details. The Company ID field is a convenient place to store the team's VAT number, in case you ever need to look it up.
Any account with sub-accounts is a placeholder account — 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.
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
Equity is defined as assets minus liabilities, 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: 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:
Account | Type | Purpose |
|---|---|---|
Liabilities | Liability | Tracks VAT on expenses and income |
Receivable | A/Receivable | Tracks unpaid invoices sent out by RTT |
Payable | A/Payable | Tracks unpaid bills owed by RTT |
To set up tax tables, go to Business → Sales Tax Table. You'll want four tax tables in total:
- 21% — Purchases
- 9% — Purchases
- 21% — Sales
- 9% — Sales
Using GnuCash
Transaction Fields
Every transaction has the same set of fields to fill in:
- Date — the date the invoice was received, or the date the declaration item was purchased
- Number — the invoice or declaration number
- Description — a description of the item(s) purchased
- Transfer — which account the money is moving to/from
- Increase/Decrease — labeled differently depending on the account, but always represents an increase or decrease in that account's value
- Balance — the running cumulative total
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:
- Go to Business → Vendor → New Vendor…
- Fill in the vendor's details.
- Under Payment Information, assign the appropriate tax table.
Once the vendor exists (or if you're using an existing one), create a new bill:
- Go to Business → Vendor → New Bill…
- The Bill ID field should contain the invoice number.
- Fill in the transaction table the same way you would for a 0% taxable purchase.
- Post the bill, making sure the transaction description is filled in.
Once the bill has been paid, mark it as paid in GnuCash as well. Make sure Num 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.
Sending an Invoice
When RTT sends out an invoice, it also needs to be logged in GnuCash.
- Create a new customer: Business → Customer → New Customer… — this works the same as creating a vendor, but uses the sales tax tables instead of the purchase tax tables.
- Create the invoice: Business → Customer → New Invoice…
- Fill in the transaction table the same way you would for a bill (discount columns can be left empty).
- When posting the invoice, set the due date to 30 days out, and make sure the description is filled in.
Once payment is received, log it via Business → Customer → Process Payment, making sure to include the invoice number in the Num field. Once done, the Receivable account balance for that invoice should return to 0.
Making a Budget
To start a new budget: Actions → Budget → New Budget.
Budgets can be tracked by month, semester, or quarter — previous years have used a quarterly split. This is configured under Options: for a quarterly budget, set "Every 3 months" with "Number of periods: 4."
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: View → Filter By… → Other, then enable "Show hidden accounts" and "Show unused accounts."
Once all accounts are visible, you can fill in the budgeted amount per account, per quarter.