# Overview (/en-GB/aan-de-slag)
This page takes you through your first day in Tillor, from signing in to your first invoice. The order matters, because each part builds on the previous one. An occupation, for example, needs a customer and a terrain, so you create those first. If you would rather follow a real-life example, see [In practice](/praktijk). If you come across a word you do not know, look it up in [Terms](/begrippen).
## How does it all fit together? [#hoe-hangt-dit-samen]
These are the building blocks and what they need:
```mermaid
flowchart LR
I[Instellingen] --> T[Terreinen]
T --> B[Bezetting]
T --> R[Reservering]
K[Klanten] --> B
K --> R
P[Producten] --> F[Factuur]
K --> F
B --> F
R --> F
F --> Bet[Betaling]
```
An invoice always belongs to a customer. A customer on a terrain for a longer period is called an occupation, and a stay with a check-in and check-out date is a reservation. Products are not mandatory, but they make sure the price, VAT and actions on the invoice line are correct.
- If you have more than one organisation, you choose one after signing in. If one is missing, ask your administrator to invite you.
- Which menu items you see depends on your permissions. If you cannot see something, ask your administrator for the permission.
- Without a terrain you cannot create an occupation. Without a customer you cannot create a reservation, an occupation or an invoice.
- Cash, bank transfer and other manual payments work without a connection. For online or card payments you connect Mollie.
- The quickest way to find something is to search with **Ctrl+K** or **⌘K**.
Before you start:
- You have a Microsoft, Google or Apple account and your administrator has invited you to your organisation. Without an invitation you will not see an organisation.
- You have the permissions for what you want to do. If you lack them, the menu item is missing or the button is greyed out.
## Setting up your park [#je-park-inrichten]
### Sign in and choose your organisation [#log-in-en-kies-je-organisatie]
Sign in with your Microsoft, Google or Apple account. If you have access to more than one organisation, choose one. If you do not have access yet, ask your administrator to invite you. See [Signing in](/inloggen).
### Review the organisation settings [#loop-de-organisatie-instellingen-na]
Open Support > Settings. Under **General**, check the time zone and the default country, and under **Opening hours** enter your opening times. Under **Invoicing** you will find, among other things, the default payment term and the VAT rates. You invite colleagues under **Users**. See [Organisation](/gebruikers/organisaties).
### Create your terrains [#maak-je-terreinen-aan]
Go to Park > Terrains and add your spots, such as pitches, chalets and permanent places. Without a terrain you cannot create an occupation, and you link meters to a terrain. See [Terrains](/terreinen).
### Create your products [#maak-je-producten-aan]
Go to Administration > Products and create the rates and services that appear on invoices, such as overnight stays. An invoice line can also be added without a product, but with a product the price, VAT and any actions are correct straight away. See [Products](/producten).
### Add your customers [#voeg-je-klanten-toe]
Go to Customers > Overview and create a customer. Reservations, occupations and invoices always belong to a customer. See [Customer management](/klantenbeheer).
### Create a reservation or occupation [#maak-een-reservering-of-bezetting-aan]
A reservation is for a stay with a check-in and check-out date, and you can also create one without a fixed terrain. An occupation links a customer to a terrain for a longer period, for example a seasonal pitch. See [Reservations](/reserveringen) and [Occupations](/bezettingen).
### Create your first invoice [#maak-je-eerste-factuur]
Open the customer's profile and create a new invoice there. Add lines, book the invoice and send it. See [Invoices](/facturen).
### Connect payments [#koppel-betalingen]
If you want customers to pay online or by card, connect Mollie via Support > Settings under **Integrations**. Cash, bank transfer and other manual payments work without a connection. See [Payment processing](/betalingsverwerking) and [Mollie](/boekhouden/betalingsrapporten/betaalmethodes/mollie).
If you use meters, barriers or NFC tags, you set those up afterwards. Start with [Park](/park) and [Access control](/toegangscontrole).
## What happens next? [#wat-gebeurt-er-daarna]
- Your customers, terrains and products are ready, so you can create reservations, occupations and invoices every day.
- Your first invoice is saved as a draft on the customer. Only after **Book** does it get a final number, and after that you can send it and have it paid.
- If you have connected Mollie, customers can pay online or by card and the payment comes back to the invoice automatically.
## Finding your way around [#je-weg-vinden]
The main menu is on the left. At the top you switch organisation if you have more than one. Which items you see depends on your permissions.
| Menu | What it is for |
|------|----------------|
| **Dashboard** | Start screen with today's arrivals and departures |
| **Reservations** | Stays and the reservation calendar |
| **Tasks** | Dividing up and following up work |
| **Access Control** | Access points and the access log |
| **Customers** | **Overview** and **Outstanding Consumption** |
| **Park** | **Map**, **Terrains**, **Meters**, **Meter Cabinets** and **Weather** |
| **Communication** | **Phone Calls**, **Notifications** and **Comments** |
| **Administration** | **Documents**, **Signature requests**, **Invoices**, **Payments**, **Bank transactions** (with the permission to view them), **Payment Reports**, **Print queue** and **Products** |
Under the heading **Admin** you will find **Automations** (with the permission to view them) and **Controllers**. At the bottom, under **Support**, you will find your notifications, **Inbox** and **Audit log** (with the corresponding permissions), **Settings** and **More resources** with the documentation. Which items you see depends on your permissions.
You search with **Search** in the header, or with **⌘K** (Mac) or **Ctrl+K** (Windows). This takes you straight to a customer, invoice, reservation or terrain. See [Search](/zoeken).
You find your own account, sessions and API keys via your name at the bottom of the menu.
## Problems? [#problemen]
Your administrator has to invite you first. Sign in with the account they invited. See [Signing in](/inloggen).
You only see the items you have permissions for. Ask your administrator for the permission, or for the role that includes it.
No terrain is available, or the customer does not exist yet. Create a terrain and a customer first. A terrain with an ongoing occupation does not appear in the selection list.
Use **Search** in the header, or search this manual with the search bar at the top.
## Need help? [#hulp-nodig]
- If you are looking for something in this manual, use the search bar at the top or choose **More resources > Documentation** in Tillor.
- Is Tillor not working as expected? First check the [system status](https://status.tillor.eu) for outages and planned maintenance.
- Missing access to an organisation, or want to change company details on invoices? Email support@tillor.eu.
- Want to restore data from a backup? See [Data and backups](/gegevens-backups).
## Terms [#begrippen]
- **Organisation**: your Tillor account, usually your company. See [Terms](/begrippen#organisatie).
- **Park**: the physical place. See [Terms](/begrippen#park).
- **Customer**: a person or company in Tillor. See [Terms](/begrippen#klant).
- **Terrain**: a spot in your park. See [Terms](/begrippen#terrein).
- **Occupation** and **reservation**: a customer on a terrain for a longer period, or a stay with a check-in and check-out date. See [Terms](/begrippen#bezetting).
- **Book**: making an invoice final. See [Terms](/begrippen#boeken).
## See also [#zie-ook]
# Terms (/en-GB/begrippen)
Tillor uses a few words more often than you may be used to, and some of them look alike. This page explains what each term means and where to read more about it. The list is in alphabetical order. If you are looking for something about controllers themselves, such as ACL or firmware, see the [controllers glossary](/controllers/lexicon).
An **occupation** is a customer who stays on a terrain for a longer period, such as a seasonal customer. A **reservation** is a booking for a single stay. In Tillor, **book** always means making an invoice final, never reserving a stay.
### Reminder [#aanmaning]
A reminder to a customer that a booked invoice has not been paid yet. You send it per invoice, with the same link to pay online. See [Sending a reminder](/facturen/versturen#een-aanmaning-versturen).
### Automation [#automatisering]
A rule that Tillor carries out by itself: when this happens, do that. For example, create a follow-up task when an occupation ends. The steps of one automation together form a flow, the drawing on the canvas. See [Automations](/automatiseringen).
### Payment [#betaling]
An amount that a customer pays or that is still on its way, with a method, a status and usually an invoice. You find them under Administration > Payments. See [Finding payments](/betalingsverwerking/betalingen-bekijken).
### Payment group [#betalingsgroep]
A bundle of payments under one name, which you later link to a booked invoice in one go. For example, all card payments of one day. See [Payment groups](/betalingsverwerking/groepen).
### Payment report [#betalingsrapport]
The overview of all payments on one calendar day, intended for your accounting. Today's report is a draft and becomes final when the day is over. See [Payment reports](/boekhouden/betalingsrapporten).
### Evidence page [#bewijspagina]
The pages at the end of a signed PDF, with the title of the document, who signed when and two digital fingerprints. They are called **Signing evidence** and later show that the document has not been changed. See [Evidence and validity](/handtekeningen/bewijs-en-geldigheid).
### Occupation [#bezetting]
A customer who is on a terrain for a longer period. As long as the occupation runs, Tillor charges the consumption of the meters on that terrain to that customer. A terrain has at most one customer at a time. See [Occupations](/bezettingen).
### Book [#boeken]
Making a draft invoice final. The invoice gets an invoice number and you can no longer change it freely afterwards. In Tillor the word has nothing to do with reserving. See [Booking an invoice](/facturen/boeken).
### Draft [#concept]
An invoice that has not been booked yet. You can still change the lines and nothing has gone to the customer or to the accounting yet. See [Invoice statuses](/facturen/statussen).
### Connector [#connector]
A small box in your park's network that connects Tillor to devices on site, such as printers and access controllers. Tillor supplies it preconfigured and updates it itself. See [Connector](/connector).
### Controller [#controller]
A box with a touchscreen in your park, at a shower or a door. It reads an NFC tag or a QR code, and Tillor decides whether the guest may go through. You manage controllers under **Controllers**. See [Controllers](/controllers).
### Credit note [#creditnota]
An invoice with negative amounts that cancels an earlier invoice. The app calls this a **Credit Invoice**. You create it with **Reverse invoice**. See [Reversing an invoice](/facturen/corrigeren#een-factuur-omkeren).
### Custom field [#eigen-veld]
A field that your organisation adds itself to a customer, terrain, occupation, meter or task, on top of the fields Tillor comes with. You manage them under Settings > Custom fields. See [Custom fields](/eigen-velden).
### Invoice [#factuur]
What you charge a customer, with lines per product. A new invoice is always a draft. You create it on the customer profile and manage all invoices under Administration > Invoices. See [Invoices](/facturen).
### Event [#gebeurtenis]
A line in the timeline of a customer, invoice or other record that shows what happened, by whom and what changed. See [Activity log](/activiteitenlog).
### User [#gebruiker]
An account with access to Tillor. In running text we call another user a colleague. You manage users and their permissions under Settings > Users. See [Organisation](/gebruikers/organisaties).
### Group [#groep]
A fixed set of colleagues, for example **Front desk**. You assign tasks to a group, share views with a group and can give or take away permissions for a group. See [Groups](/gebruikers/groepen). A payment group is something different.
### Ledger [#grootboek]
The account number in your accounting to which a product is booked. You enter it on the product, and it is sent along when you pass data on to your accounting. See [The ledger number](/producten/product-aanmaken#grootboeknummer).
### Direct debit [#incasso]
Tillor collects the amount of an invoice from the customer's bank account by itself. This only works with an active mandate. See [Collecting an invoice by direct debit](/betalingsverwerking/incasso).
### Choice list [#keuzelijst]
A fixed list of options that a custom field of the type **Choice** or **Multiple choice** draws on. You create the list once and use it in several fields. See [Choice lists](/eigen-velden/keuzelijsten).
### Kiosk [#kiosk]
An Android tablet that shows the Tillor app and stays there, so guests cannot reach the device's settings. See [Setting up a kiosk](/mobiele-app/kiosk-inrichten).
### Customer [#klant]
The record in Tillor of a person or company: details, invoices, occupations, access methods and more. We only use the word guest in running text for someone who stays at your park. See [Customer management](/klantenbeheer).
### Mandate [#mandaat]
A customer's permission to collect invoices from their bank account (a SEPA mandate). The customer signs it in Tillor itself. See [Having a SEPA mandate signed](/betalingsverwerking/mandaat).
### Meter [#meter]
A device for water, electricity or gas. A meter belongs to a terrain, not to a customer. The consumption goes to the customer who has an occupation on the terrain at that moment. See [Meter management](/meterbeheer).
### Meter cabinet [#meterkast]
A cabinet that holds meters. Under Park > Meter Cabinets you manage the meter cabinets and the meters assigned to them. See [Park](/park#meterkasten).
### NFC tag [#nfc-tag]
A card, wristband or key fob that a guest holds against a controller, for example for the shower or an access point. A tag can have a balance. See [NFC](/nfc).
### Notification [#notificatie]
A message that Tillor sends to a customer or colleague, by email, SMS, post, WhatsApp or push. Under Communication > Notifications you can see whether it arrived. See [Notifications](/notificaties).
### Signature request [#ondertekenverzoek]
A request to have a PDF, such as a rental contract, signed online by one or more people in turn. You manage them under Administration > Signature requests. See [Signatures](/handtekeningen).
### Outstanding consumption [#openstaand-verbruik]
Consumption of meters that is not on an invoice yet. You see it per customer under Customers > Outstanding Consumption and invoice it with **Invoice consumption**. See [Meter management](/meterbeheer/verbruik-factureren).
### Comment [#opmerking]
An internal note on a customer, invoice, reservation or other record. Comments are never visible to the customer. See [Comments](/notities).
### Organisation [#organisatie]
Your Tillor account, so your company with its users, settings and data. The park is the physical place. See [Organisation](/gebruikers/organisaties).
### Park [#park]
The physical place: your campsite or holiday park. Under **Park** you find the map, the terrains, the meters and the meter cabinets. See [Park](/park).
### Peppol [#peppol]
A European network that lets you send invoices electronically straight to the recipient's accounting system, without a PDF. For Belgian invoices to companies with a VAT number it is mandatory. See [Peppol](/boekhouden/peppol).
### Product [#product]
A rate or service that you put on an invoice line, such as a night, a pitch fee or a kWh of electricity. A product can have actions that Tillor carries out when booking or paying. See [Products](/producten).
### Product action [#productactie]
Something Tillor does automatically when an invoice line with this product is booked or paid, such as extending an occupation or topping up an NFC tag. See [Product actions](/producten/productacties).
### Permission [#recht]
What a user may do in Tillor, for example edit products or restore invoices. You give permissions per user or through a group. A denial through a group always wins. See [Editing permissions](/gebruikers/organisaties#rechten-bewerken) and [Group permissions](/gebruikers/groepen#groepsrechten).
### Reservation [#reservering]
A booking for a single stay on a terrain, with arrival and departure. A reservation is not the same as an occupation. See [Reservations](/reserveringen).
### Task [#taak]
A piece of work for yourself or a colleague, with among other things a deadline, subtasks and linked customers or terrains. You look at tasks in views. See [Tasks](/taken).
### Tablet [#tablet]
The device at reception that runs the Tillor app, for example to have a customer sign a contract or mandate. You find tablets, kiosks and phones where someone is signed in under **Settings**. See [Tablets and kiosks](/mobiele-app/tablets-en-kiosken).
### Terrain [#terrein]
A place in your park that you rent out or plan stays on, with a name and possibly meters. You link meters to a terrain, and customers get there through an occupation or reservation. See [Terrains](/terreinen).
### Terrain type [#terreintype]
A classification of your terrains, such as **Spot**, **Chalet** or **Camper pitch**. You use the type to filter the list, colour the map and in automations. See [Terrain types](/terreinen#terreintypes).
### Access method [#toegangsmethode]
The way a customer gets through an access point: licence plate recognition, an NFC tag or a QR code. You manage them on the customer under the **Access Control** tab. See [Access control](/toegangscontrole).
### Access point [#toegangspunt]
A barrier, gate or electronic door where access is checked. You can open and close an access point from Tillor and see in the log who passed. See [Access control](/toegangscontrole).
### Trigger [#trigger]
The start of an automation: the event, the time or the message that makes it start. A trigger can have a filter, so the automation only starts when something is true. See [Triggers](/automatiseringen/triggers).
### Consumption batch [#verbruiksbatch]
A period of meter consumption for one customer and one meter, with a start and end reading. The app calls this a **Consumption period**, and this manual also uses consumption batch. See [Consumption batches](/meterbeheer/consumptie-batches).
### View [#weergave]
A saved way of looking at your tasks, for example **Open tasks** or **Maintenance**. Each view appears as a tab at the top of the Tasks page. See [Views](/taken/weergaven).
### Seal [#zegel]
Your organisation's digital signature with which Tillor closes a signed PDF. If anything in the file changes afterwards, a PDF reader reports it. A timestamp goes with it. See [Seal and timestamp](/handtekeningen/bewijs-en-geldigheid#zegel-en-tijdstempel).
## See also [#zie-ook]
# Data and backups (/en-GB/gegevens-backups)
Tillor automatically makes backups of your organisation's data. You do not need to set anything up and you do not see them in Tillor. If you need data from the past or something has gone wrong, Tillor support restores an earlier state for you. This is how you ask for that, and how far back you can go.
- Backups go back to the first past calendar month, with one archive per month. The details are in the table below.
- You do not restore a backup yourself: this always goes through Tillor support.
- You cannot download or view a backup yourself.
Before you start: know which data you need and from which time or month.
## How long does Tillor keep backups? [#hoe-lang-bewaart-tillor-back-ups]
Tillor keeps three kinds of backups side by side. Together they give you a recent restore point and a longer history.
| Period | What you can find |
|--------|-------------------|
| **Last 48 hours** | A backup every 4 hours, for restoring to a recent point in time |
| **Last 14 days** | One backup per night |
| **Every past calendar month** | One monthly archive per month, with no automatic deletion |
The current calendar month only has the nightly backups of the last 14 days. Once a month is over, one backup of that month is kept as the monthly archive.
These periods apply to all organisations. If Tillor changes the policy, we will update this page.
## Having a backup restored [#een-back-up-laten-terugzetten]
You do not restore a backup yourself in Tillor. Tillor support does it together with you, so your current data is not overwritten by accident.
### Gather what you want to get back [#verzamel-wat-je-wilt-terughalen]
Decide which data you need, such as invoices, customers or reservations. Note the time or period you want to go back to, for example "yesterday around 14:00" or "March 2026".
### Contact Tillor support [#neem-contact-op-met-tillor-support]
Email support@tillor.eu and state your organisation name, which data you want back and the desired time or period.
### Agree on what exactly comes back [#overleg-wat-er-precies-terugkomt]
Tillor support finds the backup that fits your request and discusses with you what will happen before the restore starts.
Restoring can bring data back to an earlier state. Everything you entered after the chosen time may disappear as a result. Always discuss this with Tillor support first.
## What happens next? [#wat-gebeurt-er-daarna]
- Tillor support finds the right backup and discusses with you what comes back before the restore starts.
- During the restore your organisation is in maintenance mode and only Tillor staff can access it. Afterwards everything is available again.
- Data you entered after the chosen time may have disappeared. So always discuss it first.
## Problems? [#problemen]
That is not possible in Tillor. Backups are only available to Tillor support. Ask support to look up the data you need.
For earlier months Tillor keeps one backup per calendar month. So you can go back to a month, but not to a particular day or hour in that month. For the last 14 days it can be done per day, for the last 48 hours per 4 hours.
During a restore your organisation is in maintenance mode and only Tillor staff can access it. Agree a moment with Tillor support that suits you.
Email Tillor support with the name of the data and the time of deletion. First check the [activity log](/activiteitenlog) to see who changed what and when.
## See also [#zie-ook]
# Signing in to Tillor (/en-GB/inloggen)
You sign in to Tillor with an account you already have with Microsoft, Google or Apple. Tillor has no password of its own: that provider takes care of your password. After signing in you choose your organisation and land on the dashboard. If this is your first day, continue to [Getting started](/aan-de-slag).
Before you start:
- You need a Microsoft, Google or Apple account.
- An administrator must first have invited you as a user with the same email address. If that has not happened, you will see **No organisations found**.
## Signing in [#inloggen]
### Open Tillor [#open-tillor]
Go to the Tillor web application in your browser. If you are already signed in, Tillor takes you straight to your organisation.
### Choose your sign-in method [#kies-je-inlogmethode]
Click **Login with Microsoft**, **Login with Google** or **Sign in with Apple**. The method you last signed in with is marked **Last used**.
### Follow the provider's steps [#volg-de-stappen-van-de-provider]
You go to the sign-in screen of Microsoft, Google or Apple. With Microsoft and Google you choose which account to use. Then you return to Tillor.
### Choose your organisation [#kies-je-organisatie]
If you have access to more than one organisation, you see a selection screen. Find your organisation in the list and click **Open**. If you only have one, you go straight to the dashboard.
## What happens next? [#wat-gebeurt-er-daarna]
- You land on your organisation's dashboard. Tillor remembers your last sign-in method and marks it **Last used** next time.
- You only see the parts you have permissions for.
- Your session stays active on this device, for up to 30 days without use or until you sign out yourself.
## How does it all fit together? [#hoe-hangt-dit-samen]
One person has one Tillor account. You can link that account to several sign-in methods. An administrator adds you as a user to an organisation and gives you permissions. What you see afterwards depends on those permissions.
```mermaid
flowchart LR
A[Je Microsoft-, Google- of
Apple-account] --> B[Je Tillor-account]
B --> C[Een of meer organisaties]
C --> D[Jouw rechten
bepalen wat je ziet]
```
- You stay signed in as long as you use Tillor. After 30 days without use you sign in again.
- A verification link for your email address is valid for 15 minutes. You can request a new email at most once every two minutes.
- Microsoft is always available as a sign-in method. Google and Apple may be missing, depending on your Tillor environment.
- You cannot unlink your last sign-in method.
## Giving a colleague access [#een-collega-toegang-geven]
An administrator with the right permissions invites colleagues.
### Open the users [#open-de-gebruikers]
Go to Support > Settings and choose **Users**.
### Invite the colleague [#nodig-de-collega-uit]
Click **Invite user**, enter the email address and click **Invite**.
If a Tillor account with that email address already exists, the colleague is added straight away. Otherwise the colleague receives an invitation by email and becomes a member on their first sign-in. After that you set the permissions, see [Organisation](/gebruikers/organisaties). The colleague will not see anything useful until those permissions are set.
## Managing your own account [#je-eigen-account-beheren]
Click your name at the bottom of the menu and choose **Account**. There you find:
- **Email**: whether your email address is **Verified** or **Not verified**. If it says **Not verified**, you see the button **Verify email address**, see [Verifying your email address](#je-e-mailadres-verifiëren).
- **Linked platforms**: link Microsoft, Google or Apple to the same account with **Connect**, or remove a link with **Disconnect**. You cannot unlink your last sign-in method.
- **Active sessions**: see which devices you are signed in on. With **Sign out** you end one session, with **Sign out all other devices** all the others.
- Your phone number and the language of your account.
You stay signed in as long as you use Tillor. After 30 days without use you sign in again. To sign out, choose **Sign out** in the menu under your name.
## Verifying your email address [#je-e-mailadres-verifiëren]
Tillor takes your email address from the provider you first signed in with. Google and Apple pass on that the address is yours. Microsoft usually does not, and then your address shows as **Not verified** on the **Account** page.
As long as your address is not verified, Tillor does not link a second sign-in method to your account when you sign in. If, for example, you sign in with Google for the first time while your account was created with Microsoft, you see the message that the address already belongs to an account that has not been verified yet. Verify your address once, and after that it works.
### Request the verification email [#vraag-de-verificatiemail-aan]
If you are signed in, click **Verify email address** on the **Account** page. If you are not signed in and got the message on the sign-in page, enter your email address there and click **Send verification email**. That page always gives the same confirmation, even if no account with that address exists.
### Open the email [#open-de-e-mail]
You receive an email with the subject **Verify your email address for Tillor**. Click **Verify email address**. The link is valid for 15 minutes; if it has expired, simply request a new one.
### Sign in [#log-in]
After clicking you come back to the sign-in page or your account page. Sign in with the method of your choice. From now on Tillor links a new sign-in method with the same email address to your account.
You can request a new verification email at most once every two minutes. If you do not want to wait for the email, a signed-in user can also link a second method straight away under **Account > Linked platforms**.
## API keys for integrations [#api-sleutels-voor-koppelingen]
For technical integrations you manage API keys on the **Account** page. Open **Developers** in your profile menu and click **Go to API Keys**, or go to **Account** > **API Keys**. See [Developers](/ontwikkelaars) for the integration documentation.
## Problems? [#problemen]
Your account exists, but is not linked to an organisation yet. Ask an administrator of your organisation to invite you with the same email address as that of your Microsoft, Google or Apple account.
A Tillor account with this address already exists, created with a different sign-in method, and that address has not been verified yet. Under the message, enter your email address and click **Send verification email**, or sign in with the method you used before and click **Verify email address** on the **Account** page. See [Verifying your email address](#je-e-mailadres-verifiëren).
A verification link works for 15 minutes. Request a new one on the sign-in page or the **Account** page and use the most recent email.
This account is already linked to another user, or the email address does not match your current account. Use the same email address, or sign in with the account that is already linked and unlink it there first.
Signing in took too long or the page was open too long. Click your sign-in method again and complete the steps more quickly.
What you see depends on your permissions. Ask an administrator to adjust your permissions, see [Organisation](/gebruikers/organisaties).
Try again. If it fails again, email support@tillor.eu and pass on the message.
## See also [#zie-ook]
# Vraag het Tillie (/en-GB/vraag-het-tillie)
Tillie is de assistent van deze handleiding. Je stelt een vraag zoals je ze aan een collega zou stellen, bijvoorbeeld "Hoe maak ik een creditnota?". Tillie zoekt de pagina's op die erover gaan, leest ze en antwoordt in een paar zinnen of stappen, met een link naar elke pagina die ze gebruikte. Zoek je een pagina waarvan je de naam al kent, dan is de [zoekfunctie](#zoeken-of-tillie) bovenaan sneller.
- Tillie antwoordt uit deze handleiding. Over je eigen klanten, facturen of meters weet ze alleen iets als je haar [toegang tot je account](#tillie-in-je-account-laten-kijken) geeft.
- Ze antwoordt met AI en kan zich vergissen. Controleer een belangrijke stap op de pagina waar ze naar linkt.
- Ze antwoordt in de taal waarin je de handleiding leest.
- Zet geen persoonlijke gegevens van klanten in je vraag. Die heeft Tillie niet nodig.
## Een vraag stellen [#een-vraag-stellen]
### Open Tillie [#open-tillie]
Klik rechtsonder op **Vraag het Tillie**, of druk op **⌘I** (Mac) of **Ctrl+I** (Windows). Tillie opent aan de rechterkant; op een telefoon vult ze het scherm. Met **Groter** maak je het venster breder.
### Stel je vraag [#stel-je-vraag]
Typ je vraag onderaan en druk op **Enter**. Met **Shift+Enter** begin je een nieuwe regel. Weet je niet goed hoe te beginnen, kies dan een van de voorbeeldvragen. Een vraag is maximaal 1.000 tekens lang.
Ben je niet aangemeld bij Tillor, dan controleert Tillie bij je eerste vraag dat je geen robot bent. Meestal merk je daar niets van; soms vraagt een vakje om een klik.
### Volg wat Tillie opzoekt [#volg-wat-tillie-opzoekt]
Boven het antwoord zie je wat Tillie doet: **Zocht naar** met de zoekwoorden en **Las** met de titel van elke pagina die ze opende. Daarna verschijnt het antwoord, woord voor woord. Met de stopknop rechts in het invoerveld breek je een antwoord af.
### Open de bronnen [#open-de-bronnen]
Klik op **bronnen gebruikt** om de pagina's te zien waar het antwoord op steunt, en klik een titel om de pagina te openen. Links in het antwoord zelf werken ook. Tillie blijft open terwijl je leest, behalve op een telefoon.
## Tillie in je account laten kijken [#tillie-in-je-account-laten-kijken]
Ben je aangemeld bij Tillor, dan kan Tillie ook vragen over je eigen gegevens beantwoorden, zoals "Welke facturen van de familie Peeters staan nog open?" of "Wat was de laatste meterstand van plaats 12?". Daarvoor geef je haar eerst toegang.
### Geef Tillie toegang [#geef-tillie-toegang]
Open Tillie. Bovenaan staat **Mag Tillie in je account kijken?**. Ben je lid van meer dan één organisatie, kies dan de organisatie. Klik **Toegang geven**.
### Stel je vraag [#stel-je-vraag-1]
Bovenaan staat nu **Tillie leest mee in** met de naam van je organisatie. Stel je vraag zoals altijd. Wat Tillie in je account opzoekt, zie je boven het antwoord: **Zocht in je account naar** en **Las** met wat ze bekeek.
- Tillie kan alleen **lezen**, en alleen wat jij zelf mag zien in die organisatie. Ze kan niets wijzigen, verwijderen of versturen.
- De toegang geldt 30 dagen. Met **Intrekken** stop je ze meteen.
- Geven en intrekken van de toegang staan in de [activiteitenlog](/activiteitenlog#beveiligingsgebeurtenissen) van je organisatie.
- Wat Tillie leest, gaat naar het taalmodel dat haar antwoord schrijft, net als bij de AI-assistent in de inbox. Het wordt niet bewaard om modellen te trainen.
## Een wijziging bevestigen [#een-wijziging-bevestigen]
Vraag je Tillie iets te veranderen, bijvoorbeeld "Zet factuur 2026-0142 terug naar concept", dan doet ze dat niet zelf. Ze stelt het voor in een kaart **Voorgestelde wijziging** met wat er zal gebeuren en welke velden veranderen, met hun nieuwe waarde.
- Klik **Bevestigen** om de wijziging uit te voeren. Tillor voert ze uit met jouw rechten, alsof je ze zelf deed, en toont daarna **Uitgevoerd.** of waarom het niet lukte.
- Klik **Annuleren** als je de wijziging niet wil. Er gebeurt dan niets.
- Een voorstel verloopt na 10 minuten. Vraag het dan opnieuw.
Elke bevestigde wijziging staat in de [activiteitenlog](/activiteitenlog#beveiligingsgebeurtenissen) van je organisatie, en de wijziging zelf staat in de **Gebeurtenissen** van het record, op jouw naam met het label **Via Tillie** eronder ([meer](/activiteitenlog#wie-heeft-het-gedaan)).
## Wat gebeurt er daarna? [#wat-gebeurt-er-daarna]
- Je gesprek blijft bewaard zolang het tabblad open is, ook als je naar een andere pagina gaat. Een vervolgvraag mag dus naar het vorige antwoord verwijzen ("En als de factuur al betaald is?"). Tillie onthoudt de laatste drie vragen met hun antwoord.
- Met **Nieuw gesprek** (het ronde pijltje bovenaan) begin je opnieuw. Sluit je het tabblad, dan is het gesprek weg.
- Onder elk antwoord laat je met een duim weten of het hielp. Zo zien we welke vragen de handleiding nog slecht beantwoordt.
## Hoeveel vragen kan je stellen? [#hoeveel-vragen-kan-je-stellen]
Tillie beantwoordt één vraag tegelijk. Daarnaast gelden grenzen, zodat de assistent beschikbaar blijft voor iedereen:
| Wie | Per minuut | Per dag |
|-----|------------|---------|
| Niet aangemeld | 5 vragen | 30 vragen |
| Aangemeld bij Tillor | 10 vragen | 100 vragen |
Op een netwerk dat je deelt met anderen, zoals de wifi van een kantoor of camping, geldt ook een grens voor iedereen samen. Heeft Tillie op een dag veel bezoekers geholpen, dan vraagt ze wie niet aangemeld is om zich aan te melden.
## Zoeken of Tillie? [#zoeken-of-tillie]
| Je wil | Gebruik |
|--------|---------|
| Een pagina openen waarvan je de naam kent, zoals "Mandaat" | De zoekfunctie bovenaan (**⌘K** of **Ctrl+K**) |
| Weten hoe je iets doet, in je eigen woorden | Tillie |
| Een antwoord dat meerdere pagina's combineert | Tillie |
## Problemen? [#problemen]
Tillie is nog niet voor iedereen beschikbaar. Staat de knop niet rechtsonder, gebruik dan de zoekfunctie bovenaan.
Je zit aan de grens per minuut of per dag. De melding zegt hoe lang je moet wachten. Ben je niet aangemeld, meld je dan aan bij Tillor: dan krijg je meer vragen per dag.
De vragen voor bezoekers die niet aangemeld zijn, zijn voor vandaag op. Klik **Aanmelden bij Tillor** en stel je vraag opnieuw, of gebruik de zoekfunctie.
Tillie neemt even geen vragen aan. Gebruik de zoekfunctie bovenaan en probeer het later opnieuw.
Herlaad de pagina en stel je vraag opnieuw. Blokkeert een extensie in je browser scripts of cookies, zet ze dan uit voor deze site.
Dat staat er alleen als je aangemeld bent bij Tillor in dezelfde browser. Meld je aan en open Tillie opnieuw. Heb je al toegang gegeven, dan staat er **Tillie leest mee in**.
Tillor weigerde de wijziging, meestal omdat je er de rechten niet voor hebt of omdat het record intussen veranderde. De melding zegt waarom. Doe de wijziging dan in Tillor zelf.
Je bevestigde niet binnen 10 minuten. Vraag Tillie de wijziging opnieuw voor te stellen.
Open de bronnen onder het antwoord en controleer de stap op die pagina. Geef het antwoord een duim omlaag, zodat we het kunnen verbeteren.
## Zie ook [#zie-ook]
# What's new (/en-GB/wat-is-nieuw)
Tillor gets an update almost every day. This page lists the changes you notice as an administrator. We leave out small improvements and bug fixes.
## November 2026 [#november-2026]
### Payments [#betalingen-november-2026]
- A refund that has been created at Mollie but not carried out yet now shows the payment as **Refund Pending** or **Partial Refund Pending**. The amount already counts in the invoice balance. See [Status labels](/betalingsverwerking/betalingen-bekijken#statuslabels).
### Tasks [#taken]
- Filter tasks by **Text**: show only tasks whose name or description does or does not contain a text, and add as many texts as you like (for example **Does not contain** `Verzekering vervallen:`). See [Filtering by text](/taken/filteren#filteren-op-tekst).
- Filters and view settings on the built-in view **All** can now be saved for the whole organisation, with the permission **Manage labels and shared views**. See [Saving or discarding changes](/taken/weergaven#wijzigingen-opslaan-of-verwerpen).
### Search [#zoeken]
- The search window shows the results by category, with the category of the best hit at the top and the three best hits per category. With the **Everything** button at the start of the search field, or with **⌥1** to **⌥9** (**Alt** on Windows), you search in one category, even before you type. At the bottom you find the shortcuts and the categories without results. See [Search](/zoeken).
### Manual [#handleiding]
- Tillie can now also look in your account: give her read access to your organization and ask about your own customers, invoices or meters. She proposes a change; it only happens when you confirm it. See [Let Tillie look in your account](/vraag-het-tillie#tillie-in-je-account-laten-kijken). In the activity log, such a change is in your name with the label **Via Tillie**.
- You now choose light or dark once: the manual follows the theme you chose in Tillor, and the other way round.
- New: [Ask Tillie](/vraag-het-tillie). Ask a question in your own words at the bottom right and Tillie answers from the manual, with the pages she used.
- The manual now also exists in other languages: choose your language at the top right. It opens automatically in the language you use in Tillor. A page that has not been translated yet shows the Dutch text.
### Website chat [#website-chat]
- A visitor can now send 10 messages per minute and 200 per day through the chat, and all visitors on one network together 30 per minute. Above that, the visitor is asked to wait a moment. This way a script cannot flood your inbox and Tillie's replies. See [Troubleshooting](/inbox/website-chat#problemen).
### Meters (ICY) [#meters-icy]
- Tillor now reads ICY through the new API v2. Under Settings > Integrations > ICY, enter the login for API v2 and choose your park's number in the list; without those details ICY meters are no longer updated.
- An ICY meter shows which **Module** is fitted at the spot (Campère or PRM) and, if ICY knows it, the **Module serial number**. If that serial number changes at ICY, it appears in the meter's **Activity**.
- The **ICY controllers** card in Park > Meters shows for each controller when ICY last saw it, and how many meters hang behind it. Alarms that ICY reports on a controller are now shown there too, and you get the same push notification for them as for a meter alarm. A controller with an alarm, or one that has been silent for more than an hour, is listed first. A controller carries the name of your meter cabinet (for example **MK6**) instead of ICY's number. See [ICY controllers](/meterbeheer/alarmen-en-status#icy-controllers).
- An ICY meter now also shows its **Controller** and the **Off time**. A different off time of the module appears in the meter's **Activity**.
- The list in Park > Meters has a **Module** column (Campère or PRM), and the Excel file from **Export all meters** has the column `module` on the ICY sheet.
- **Amperage** now only offers the values up to the maximum set at ICY for the module at that spot. Before, Tillor offered the park's whole list on every meter.
- Alarms from ICY get a fixed name in your own language, such as **Overcurrent** or **Voltage interrupted**, and the **Warnings** now show how many times the switching limit has already been used.
### Developers [#ontwikkelaars]
- **Not backwards compatible:** alarms are now called `integration-alarm` in the API and in events, because they can now also belong to an ICY controller. The events `meter-alarm:created` and `meter-alarm:resolved` have been replaced by [`integration-alarm:created`](/ontwikkelaars/events#integration-alarm-created) and [`integration-alarm:resolved`](/ontwikkelaars/events#integration-alarm-resolved), and the REST paths `/meter-alarms` by `/integration-alarms`. The old names no longer exist. Existing webhooks and automations have been converted to the new events automatically; adjust the event name and the path in your own code. The `meterId` field of an alarm can be empty; `icyControllerId` is then filled in.
- An OAuth client can now be limited to people of your organization, and further to groups and permissions: tick **Only people of (your organization) can sign in** in the client's dialog under Account > OAuth Clients. Meant for single sign-on into an external service. See [OAuth clients](/ontwikkelaars/oauth-clients).
- Every endpoint in the [API reference](/api-referentie) now shows under **Access** who may call it and which permission a member needs for it. An API key with scopes also needs that permission among its scopes. The [Event index](/ontwikkelaars/events) shows the same per event.
### API keys [#api-sleutels]
- An API key can now be limited to the permissions an integration needs: switch on **Limit to selected permissions** in the key dialog under Account > API Keys. A limited key can never do more than you can. See [Limiting permissions](/ontwikkelaars/http#rechten-beperken).
### Custom fields [#eigen-velden]
- A link field to meters can be limited to the meters of the occupation's terrain, and every link field to a listable record can filter its options with your own TypeScript. Tillor refuses a record outside that restriction when saving. Short lists (fewer than 50 records) are shown by the choice list straight away, without first typing 2 characters. See [Filtering options](/eigen-velden/veldtypes#opties-filteren).
- The same filter can also give an option its own label and a heading in the choice list, by returning a text or `{ label, group }` instead of `true`. See [Custom labels](/eigen-velden/veldtypes#eigen-labels).
### Manual [#handleiding-1]
- New in the manual: [Terms](/begrippen), a glossary of all terms in Tillor, and [In practice](/praktijk), four worked examples that follow a whole way of working across the modules, such as taking on a seasonal customer or charging consumption.
- Every module now starts with what it is, what you need for it and what happens next, with a **Good to know** block and a **Problems?** list per task. New too are [Inviting users and giving permissions](/gebruikers/gebruikers-en-rechten), an overview of all [notification types](/communicatie/notificatietypes) and separate pages per task for [meters](/meterbeheer), [controllers](/controllers) and [printers](/printer).
### Signatures [#handtekeningen]
- Customers, contacts and external parties can now also sign a document on the tablet at the front desk. At their turn, click **Sign on tablet**, with a code or without a code if you have checked their identity yourself; the tablet shows their name in large letters, also for a SEPA mandate. See [On the tablet at the front desk](/handtekeningen/ondertekenen#op-de-tablet-aan-de-receptie).
- With **Send**, the editor checks everything in one go: a signer without a signature field, or a customer or contact without an email address and mobile number, is flagged straight away. See [I cannot send](/handtekeningen/handtekening-vragen#problemen).
### Bank transactions [#banktransacties]
- Click the (i) icon on a bank transaction to open its detail panel. From the action menu you create a task about it or copy a link that opens the panel straight away. See [Viewing bank transactions](/boekhouden/betalingsrapporten/betaalmethodes/ponto#banktransacties-bekijken).
### Products and invoices [#producten-en-facturen]
- Reverse-charge VAT is now a choice in **VAT %**, next to the rates: for EU services and subcontractors, and also intra-Community supply, export and exempt. The invoice gets the legal statement, booking asks for a VAT number where required, and the line goes into the right grid in Admisol. For Odoo, enter the name of the Odoo VAT per regime in the [export settings](/boekhouden/betalingsrapporten/boekhoudsystemen/odoo#btw-regimes); a scheduled price can also switch a product to a regime. See [Reverse-charge VAT and other regimes without VAT](/boekhouden/belasting#btw-verlegd-en-andere-regimes-zonder-btw).
- Enter amounts from before Tillor, such as old deposits, as an opening balance on a customer's account: by hand or with an import for all customers at once. They count towards the balance and the monitoring, but are not an invoice and do not go to the accounting. See [Opening balances from before Tillor](/producten/product-aanmaken#beginsaldi-van-voor-tillor).
- A product bundle is now code: every step has a product, a quantity and an optional **Formula** in TypeScript that, when the invoice is saved, decides whether the step is added, with which quantity, or exactly which lines (own description, price, access method). The formula reads the customer, occupation, terrain and main line, custom fields included, plus the lists of meters and access methods. The fixed choices per meter, NFC tag and dog are gone; what they did is in the manual as an example formula. See [Formula per step](/producten/bundel-velden#formule-per-stap).
- Monitor a customer's balance on a ledger, for example for deposits. Tillor shows the balance on the invoice and refuses an invoice that takes it below zero. With a separate permission you can book anyway, with a justification in the timeline. See [Monitoring the customer's balance](/producten/product-aanmaken#het-saldo-van-de-klant-bewaken).
- On a customer's **Invoicing** tab there is the new **Accounts** table: the balance per ledger on which something has been booked, with below it the booked invoices and the running account. If you have monitored ledgers, you only see those by default; with a filter you see them all. See [Monitoring the customer's balance](/producten/product-aanmaken#het-saldo-van-de-klant-bewaken).
### Invoices and payments [#facturen-en-betalingen]
- With **Part-payment link** in the menu of a booked invoice you create a payment link for part of the outstanding amount. See [Creating a link for a part payment](/facturen/betalingen-registreren#een-link-voor-een-deelbetaling-maken).
- A signed SEPA mandate is sealed, so a PDF reader shows any later change. See [SEPA mandate](/betalingsverwerking/mandaat).
### Users and permissions [#gebruikers-en-rechten]
- A group can allow or deny permissions for all its members; a denial always wins. In **Edit permissions** you see per permission whether it comes directly or through a group. See [Group permissions](/gebruikers/groepen#groepsrechten).
### Park and technology [#park-en-techniek]
- A controller can know several Wi-Fi networks, in an order you decide yourself. See [Controller settings](/controllers/settings).
- On a meter, **Consumption and trends** shows the consumption per hour for one day, with a new period picker. See [Meter management](/meterbeheer/meterstanden-en-trends#verbruik-en-trends-lezen).
### Tasks [#taken-1]
- Print a task on A4 or on a receipt printer from the task's menu; the printout also shows the linked items and blockers. The same menu has **Delete**, except for tasks that only an automation may complete. See [Task details](/taken/taakdetails#het-menu-van-de-taak).
- Add subtasks while you create a task. See [Creating a task](/taken/taakdetails#een-taak-aanmaken).
- A view can hide completed tasks after a day, week or month. See [Hiding completed tasks](/taken/indelingen#voltooide-taken-verbergen).
## October 2026 [#oktober-2026]
### Terrains [#terreinen]
- The **Calculated tariff** of a terrain now follows a formula that you write yourself per organisation under Settings > Terrain tariff, with the same `{terrain.…}` variables as in automations. You try the formula out on a terrain straight away, and every named part gets a column in the terrain export. The result is stored with the terrain and follows every change to the terrain or the formula. See [Tariff formula](/terreinen#tariefformule).
### Signatures [#handtekeningen-1]
- Have a PDF such as a rental contract signed online by customers, contacts, colleagues and external parties in turn. The signed PDF with evidence page goes to the customer's documents. See [Signatures](/handtekeningen).
- A signer can also type their signature or initials instead of drawing them. See [How someone signs](/handtekeningen/ondertekenen).
- In the editor you choose with **Fields for** who you place fields for, and you put a placed field on someone else's name with **Signer**. You place fields by tapping or dragging. See [Placing the fields](/handtekeningen/handtekening-vragen).
### Signing in [#inloggen]
- If your email address is still **Not verified**, you verify it with one click from the **Account** page or from the sign-in page. Only after that does Tillor link a second sign-in method to your account. See [Verifying your email address](/inloggen#je-e-mailadres-verifiëren).
### Automations [#automatiseringen]
- With the **Run code** step you write a piece of TypeScript on the variables of the flow, for example to decide which subtasks a task gets. You read the result in later steps as `{result}`. See [Run code](/automatiseringen/logica#code-uitvoeren).
- A flow can first **Sync bank transactions** and then send a payment reminder, so an invoice that has just been paid does not get a reminder. Save that automation from the office network, and Tillor remembers the IP for the bank connection. See [Sync bank transactions](/automatiseringen/acties/facturen-en-betalingen#banktransacties-synchroniseren).
- Switch off automatic reminders for a customer or for a single invoice. A reminder flow skips customers who already have that switched on. See [Disable automated reminders for customer](/automatiseringen/acties/facturen-en-betalingen#automatische-herinneringen-uitschakelen-voor-klant).
- With **Create task** you can set that only the flow completes the task. With **Delete task** you remove that task later. See [Tasks](/automatiseringen/acties/taken).
- On a task action you can switch on **Ask for confirmation**. The colleague then confirms the choice first, and after that the flow continues.
- Build automations yourself on a canvas: choose a trigger, add steps, conditions and waiting times and see per run what happened. See [Automations](/automatiseringen).
- An automation can have several triggers. Tillor blocks loops in which an automation keeps starting itself.
- Waiting can now be until a fixed time, a number of hours or minutes, or until your organisation closes.
- Start an automation on a date from a record, with a scheduled trigger or from your own system via an [incoming webhook](/ontwikkelaars/automatiseringen).
- With the **Ask for a decision** step you make the buttons on the task yourself, with your own colour and icon, optionally with a mandatory note or confirmation. Each button is an exit of the step. See [Ask for a decision](/automatiseringen/logica#vraag-om-een-beslissing).
- The trigger **A task action is chosen** starts an automation when someone chooses a linked button on a task. With an incoming webhook, **Ignore repeats** prevents the same call from starting the flow twice. See [Triggers](/automatiseringen/triggers).
- **Wait for an event** has an exit **Deleted** for when the flow's record disappears. See [Logic](/automatiseringen/logica#wachten-op-een-gebeurtenis).
- In the editor you test with a real record, put **Containers** around steps and restore an earlier version via **History**. See [Getting started](/automatiseringen/aan-de-slag#de-editor).
### Tasks [#taken-2]
- In the task list you see all linked records, and you filter by kind with **Linked to**. See [Filtering](/taken/filteren).
- Task emails show a preview of the task. You also find tasks via [Search](/zoeken).
- Before a private task becomes visible to the whole organisation, Tillor asks whether you want to make it public. See [Private tasks](/taken/prive-taken).
- Private tasks, a calendar view and a timer that keeps running while you carry on working. See [Tasks](/taken).
- Share a view as a read-only page or as a calendar link. See [Sharing tasks](/taken/delen).
- The waiting statuses have been merged into a single status **Waiting for reply**.
- Assign a task to a group, and share a view with groups of colleagues. See [Who sees a view](/taken/weergaven#wie-ziet-een-weergave).
- A task can have choice buttons, optionally with a mandatory note or confirmation. See [Tasks with choice buttons](/taken/taakdetails#taken-met-keuzeknoppen).
- Paste a file into the task window to add it as an attachment. Custom fields of tasks are also in that window.
### Inbox [#inbox]
- The reminder email from the website chat now also opens the conversation on another device or in another browser. See [Reminder by email](/inbox/website-chat-instellingen#herinnering-per-e-mail).
### Notifications [#meldingen]
- Choose per notification whether Tillor reaches you by email or push. You set this under **Account** at **Notifications**, or for a colleague via **Notification settings** among the organisation members. See [Users](/gebruikers).
### Tablets and kiosks [#tablets-en-kiosken]
- Every tablet or kiosk has its own device page with remote actions, diagnostics, history and settings. See [Tablets and kiosks](/mobiele-app/tablets-en-kiosken).
- Kiosk lock, night mode and notifications per device for Android tablets.
### Invoices and payments [#facturen-en-betalingen-1]
- On an invoice line with a period, choose the terrain on the map. When booking, Tillor creates the reservation and checks the guest in, depending on the product. See [Invoices](/facturen/aanmaken-en-bewerken#periode-en-terrein-kiezen).
- Draft payment reports for the current day. See [Payment reports](/boekhouden/betalingsrapporten).
- If Mollie holds a balance reserve on a payout, Tillor books it as *Balance reserve* on the supplier Mollie instead of on the suspense account, and on release it drops off there again. See [Admisol](/boekhouden/betalingsrapporten/boekhoudsystemen/admisol#balansreserve).
- Customers get a reminder to sign their SEPA mandate before it expires.
### Customers and files [#klanten-en-bestanden]
- You view attachments, documents and Outlook emails in a single file viewer, without downloading. You can play videos; uploads may be up to 250 MB.
- The customer overview shows active and overdue stays. Automatic invoicing pauses at unusually high water consumption.
- On a terrain you see the history of occupations, with a link to the customer.
### Custom fields [#eigen-velden-1]
- Add fields yourself to customers, terrains, occupations, meters, tasks, products, documents, reservations and access methods, under Settings > Custom fields. You place them between the standard fields, make them appear under a condition and decide who sees or edits them. See [Custom fields](/eigen-velden).
### Products [#producten]
- Schedule a new price from a date with **Scheduled prices**; Tillor applies it on that day and emails you. The **VAT calculator** converts a price or adjusts it with a percentage. See [Scheduling a price change](/producten/prijzen-plannen).
### Customers [#klanten]
- At the top of a customer is the card with the most important details, with pinned comments. Birthdays of customers and partners are marked. See [Customer management](/klantenbeheer).
- You enter an address with **Street**, **No.** and **Box**, with address suggestions as you type. See [Customer management](/klantenbeheer#adres-invullen).
### Access Control [#toegangscontrole]
- For a QR pass you see which wallet it is in, and with **Sync wallet pass** you prepare the pass again. See [Access control](/toegangscontrole).
### Integrations [#integraties]
- Connect Partoo to pass your opening hours, seasons and exceptions on to your location automatically. See [Partoo](/integraties/partoo).
## September 2026 [#september-2026]
### Payments [#betalingen]
- You sign SEPA mandates in Tillor itself, remotely or on the tablet at the front desk. See [SEPA Mandate](/betalingsverwerking/mandaat).
- A new payment page with your own choice of payment method, QR code and forwarding to the Bancontact app. Tillor warns when a payment method has a disruption.
### Access Control [#toegangscontrole-1]
- New access method: PIN code. A PIN code can be converted automatically into a licence plate. See [Access control](/toegangscontrole#toegangsmethoden-beheren-via-het-klantprofiel).
### Tasks [#taken-3]
- Saved views with a filter builder, sharing with colleagues and a calendar feed per view. See [Views](/taken/weergaven).
- Dependencies between tasks, the priority **Urgent** and labels that you create inline.
- Link a task to several customers, or to terrains, meters, invoices and reservations.
### Park and communication [#park-en-communicatie]
- Colour terrains on the map by type and export the map as an A4 PDF. See [Map](/kaart).
- For Voys telephony: routing per customer and automatic voicemail. See [Voys Telephony](/communicatie/providers/voys).
- Export a customer's invoice overview to Excel.
# Searching in Tillor (/en-GB/zoeken)
With search you can find a customer, invoice, occupation, reservation, phone call, terrain, meter, task or payment report in one go, from any page. You do not have to go to the right section first. The result opens the right page directly.
- Under **All results**, Tillor fetches at most ten hits per category and shows the best three. Pick a category to see up to a hundred.
- For customers, Tillor also finds hits with a small typo, so "Jansen" also returns "Janssen".
- Notes on phone calls are encrypted and are not searched. Search by phone number.
- NFC tags and licence plates have no category of their own. You find them under **Customers**.
## Searching and opening a result [#zoeken-en-een-resultaat-openen]
### Open the search window [#open-het-zoekvenster]
Click **Search** in the header (on a narrow screen, the magnifying glass), or press **⌘K** (Mac) or **Ctrl+K** (Windows). The same shortcut closes the window again.
### Type your search term [#typ-je-zoekterm]
The results appear as soon as you pause typing. They are grouped by category, and the category with the best hit is at the top: the top line is always the best hit. A good match in the title counts for more than a match in the description. Each category shows its three best hits, and **Show … more** opens the whole category. At the bottom you see which categories found nothing.
### Limit to one category (optional) [#beperk-tot-één-categorie-optioneel]
To search only one kind of data, choose it with the **Everything** button at the start of the search field, for example **Customers**. You can do this before or after typing; the search field then shows **Search in Customers…**. Clicking the name of a category in the results works too.
With the keyboard:
- **Shift+Tab** opens the list of categories.
- **⌥1** to **⌥9** (**Alt+1** to **Alt+9** on Windows) picks a category straight away, in the order of that list. The number is also shown next to the name of each category in the results.
- **Tab** steps through the categories that have results.
Back to everything: choose **Everything** in the list, or press **Backspace** in an empty search field.
### Open the result [#open-het-resultaat]
Use the arrow keys to choose and press **Enter**. With **Ctrl+Enter** (**⌘+Enter** on Mac) the result opens in a new tab. Clicking with the mouse works too. **Escape** closes the window.
## What happens next? [#wat-gebeurt-er-daarna]
- The chosen result opens the customer, invoice or other page in the same tab. With **Ctrl+Enter** (**⌘+Enter** on Mac) it opens in a new tab.
- Nothing changes in your data: searching only reads.
- Each result shows what it was found on, for example **Phone:** or **Invoice:** with the value that matches.
## What Tillor searches [#wat-tillor-doorzoekt]
| Category | What you can search on |
|-----------|-----------------------|
| **Customers** | Name, customer number, email, phone, address and town, VAT number, remarks, contact persons (name, email, phone) and access methods such as an NFC card or licence plate |
| **Invoices** | Invoice number (with or without prefix, year and separators), total amount, the ID from the invoice link and the notes (public and internal) |
| **Occupations** | Terrain name, the customer's first and last name and the occupation ID |
| **Reservations** | Reservation number (for example `RES/2026/0001`, with or without prefix and year, or compact `20260001`), note, customer name and the ID from the link |
| **Phone calls** | Incoming and outgoing number, call ID and external reference |
| **Terrains** | Name, description, ID and the gas meter number of the terrain |
| **Meters** | Name, serial number and ID of the meter |
| **Tasks** | Title, description and ID. A hit also shows the linked customer or terrain |
| **Payment reports** | Report number |
There is no separate category for NFC tags. NFC cards and other access values belong to **Customers** and show up there as soon as they match your search term.
## How many results do you see? [#hoeveel-resultaten-zie-je]
If a category has ten or more hits, **10+** appears next to the name of that category. In the overview you see the three best hits per category. Pick the category, or click **Show … more**, to see up to a hundred hits. For reservations and invoices, the tolerance for typos works mainly on numbers and notes.
## Search tips [#zoektips]
- **Licence plate, NFC or QR code**: search for the value stored on the customer. You find the customer under **Customers**.
- **Invoice or reservation number**: type the number as it appears on the document, or part of it. For `RES/2026/0042`, `2026/0042` and `20260042` work too.
- **Amount**: you can also find an invoice by its total amount, for example `120,50`.
- **Who is where**: under **Occupations**, search by the name of the terrain or of the customer.
- **Partial names**: for customers, part of the name is usually enough. For reservations, a word from the note helps.
## Problems? [#problemen]
Check the spelling and try a shorter part of the term. If you picked a category, Tillor only searches in that one. If there are results in another category, the window says so. Choose **Everything** with the button at the start of the search field, or click **Remove filter**.
Something went wrong during the search. Click **Retry**. If it keeps going wrong, check the [system status](https://status.tillor.eu).
Search for the exact value as it is stored on the customer. You find the customer under **Customers**, not in a separate category.
Type the number as it appears on the document, or part of it: for `RES/2026/0042`, `2026/0042` and `20260042` work too. Otherwise, search by the customer's name.
Notes on phone calls are stored encrypted and therefore cannot be searched. Search by phone number.
Some browsers or extensions use Ctrl+K or ⌘K themselves. Then click **Search** in the header.
## See also [#zie-ook]
# Activity log (/en-GB/activiteitenlog)
In the activity log you see what has changed in Tillor, when, and by whom. You open it on a customer, invoice, task or other record, and centrally via **Audit log** if you have the permission for it. It is a read-only trail that you use to check or prove something.
- An entry cannot be edited or deleted
- An export covers the last 30 days by default, and at most one year
- Opening the same document repeatedly within ten minutes is recorded once
- Times are shown in your time zone
- Actions by an automation, an API key or the system are in there too, with the kind of actor next to them
## Viewing the activity log [#activiteitenlog-bekijken]
In the app this is usually called **Events** or **Activity**, depending on where you are. Anyone with the *View audit log* permission can also open a central overview via *Audit log* in the sidebar (above Settings), with filters on user, event type and date.
| Where | Navigation | Label in the app |
|------|-----------|-----------------|
| Customer (all related activity) | *Customers > customer > Events* | Events |
| Invoice | *Administration > Invoices > invoice* | Events |
| Reservation | *Customers > customer > Reservations > reservation* | Activity |
| Terrain | *Park > Terrains > terrain* | Events |
| Meter | *Park > Meters > meter* | Activity |
| Product | *Administration > Products > product* | Events |
| Task | *Tasks > task* or *Customers > customer > Tasks > task* | Activity |
| NFC tag | *Controllers > NFC tags > tag* | Activity |
| Tablet, kiosk or phone | *Settings > Tablets & kiosks > device* | History |
| Organisation (central) | *Audit log* (above Settings, *View audit log* permission) | Audit log |
| Payment report | *Administration > Payment reports > report* | Event Log |
For each activity you see in the timeline:
- **Title** - kind of event (e.g. "Invoice booked", "Customer updated")
- **User** - the colleague who performed the action (or Tillor for automatic actions)
- **Time** - date and relative time
- **Description** - additional details; sometimes with links to related invoices or other records
- **Before / after** (sometimes) - when creating, changing or deleting customer, contact, invoice, payment, payment mandate, payment group, document, access method, access point, controller, terrain, meter, meter reading, product, occupation, task or comment data, plus scanning, assigning or unlinking an identity document and changes to settings, membership rights, invoicing or NFC: which fields were changed. PIN codes of access points and personal data of an identity document are not kept in the log
- **Attachments** (sometimes) - downloadable files, for example for failed integrations
- **Login / logout** - when a colleague logs in or out, visible in the central audit log overview
- **OAuth apps and consent** - creating, changing, deleting or rotating the secret of OAuth apps, plus consent given, refused or revoked; visible in the central audit log overview. Client secrets are not kept in the log
- **Management and security** - changes to the organisation profile (name, legal details, VAT, IBAN, logo, maintenance mode), invitations and new members, personal API keys (create, change, renew, delete), ended sessions, webhooks, automations, colleague groups, terrain types, meter cabinets, controller groups, installed or removed integrations and the acceptance of the data processing agreement; visible in the central audit log overview. Keys, webhook secrets and integration settings are not kept; for an integration you only see which settings were changed
- **Access to personal data** - who opened or downloaded a document, viewed or downloaded the images or files of an identity document, or opened the PDF of an invoice or sent it to the tablet. Opening repeatedly within ten minutes is recorded once; every download of an identity document is recorded separately
## Activity per record [#activiteiten-per-record]
On detail pages you see a timeline with the activity for that record. On the **Events** tab of a customer you find all activities linked to that customer (invoices, payments, occupations, etc.).
For **reservations** this includes creating, checking in and checking out, cancellations and related reversals, and updating reservation details.
For **payment groups** you also see which payments were added to or removed from a group, and for **controllers** which adoption requests were approved or rejected.
For **payment reports** this includes creating the report, finalising a draft report and sending it to the accounting system.
For **signing requests** you see every step: created and changed, sent, link (re)sent, reminded, signing page opened, code sent or entered incorrectly, signed, refused, reset to draft, cancelled, expired and completed. See [Evidence and validity](/handtekeningen/bewijs-en-geldigheid).
For **external notifications** you see when a linked system updated or deleted a notification it had registered.
The activity log is read-only. Entries cannot be edited or deleted.
## Who did it? [#wie-heeft-het-gedaan]
Next to the user, every line also shows **what kind of actor** performed the action: a logged-in user, an API key, an OAuth connection, an automation, the Tillor connector or the system itself. For an API key or OAuth connection, the id of that key or connection is in the details, so that with a leaked key you can see exactly what was done with it. If it says **Unknown**, Tillor could not determine the actor; that is deliberately something different from "System".
A change you confirm through [Tillie](/vraag-het-tillie#tillie-in-je-account-laten-kijken) is in your name, with the label **Via Tillie** below it. That way you always see which changes the assistant carried out for someone, just as an impersonated action shows who was really behind it.
## Security events [#beveiligingsgebeurtenissen]
Failed sign-ins, rejected API keys and OAuth tokens, refused access (missing permissions), exceeded request limits and a Tillor administrator opening your organisation are also shown in the activity log, with IP address and browser. Members with the **Security alerts** permission receive a notification every hour when webhooks, API keys or automations have been changed or when access has been repeatedly refused.
The access you give [Tillie](/vraag-het-tillie#tillie-in-je-account-laten-kijken) to your account or revoke, and every change you confirm through Tillie, are listed here too.
## Exporting for an audit [#exporteren-voor-een-audit]
With **Export** in the activity log you download all lines of the chosen period (by default the last 30 days, at most one year) as a ZIP with the data file (CSV or JSON Lines), a `manifest.json` with the number of lines, the period, who exported and the SHA-256 checksum of the data file, and a `CHECKSUMS.sha256` file that you can verify with `sha256sum -c`. The export itself is also recorded in the log, with the same checksum. Opening the full activity log and bulk exports of customer data (customer list, access log, terrains, meters) are logged as well.
All times are stored in **UTC** on servers with NTP time synchronisation and shown in your time zone; the export contains ISO 8601 times in UTC.
## What do you use the log for? [#waarvoor-gebruik-je-de-log]
- **Checking** - finding out which colleague booked an invoice or changed a customer
- **Troubleshooting** - finding out when an error occurred
- **Audits** - keeping a complete trail for internal or external checks
## See also [#zie-ook]
# Getting started (/en-GB/automatiseringen/aan-de-slag)
On this page you build your first automation and get to know the editor, the screen where you draw flows. You need the **Manage automations** permission, or **All permissions**. See the [Overview](/automatiseringen) for the background.
## The overview [#het-overzicht]
Go to **Admin > Automations**. You see a list with one row per automation:
- the name and a label such as **2 issues** if something is still wrong with the flow (see [Problems and enabling](/automatiseringen/problemen))
- the description
- the chosen trigger, the number of steps and who made the automation (**by**)
- a series of small bars with the latest runs, with next to it the time of the last run or **Has not run yet**. A red bar is a failed run
- a switch to turn the automation on or off, and a menu with three dots
At the top of the list you filter with **All**, **Enabled** and **Paused**. If an automation has issues, an **Issues** filter is added as well. With **Search automations** you search by name or description.
Click the name to open the editor. With the switch you turn an automation on or off. You cannot turn it on while there are issues. The **Automation actions** menu has two choices:
| Choice | What it does |
|---|---|
| **Duplicate** | Makes a copy named *[name] (copy)*. The copy is paused |
| **Delete** | Deletes the automation and its run history. Tillor asks for confirmation first |
Runs that are waiting in a delay at that moment stop when you delete the automation.
## Creating a new automation [#een-nieuwe-automatisering-maken]
Click **New automation**. A gallery with six starting points opens. You can adjust every step afterwards.
| Starting point | What it does |
|---|---|
| **Start from scratch** | An empty flow with only a trigger |
| **Check terrain after departure** | Creates a check task for the terrain when an occupation ends, with high priority and assigned to whoever ended the occupation |
| **Follow up unpaid invoices** | Waits until after the due date, sends a payment reminder and, a week later, creates a task to phone the customer if the invoice is still open |
| **Push reservations to another system** | For every new reservation, sends a payload of its own to your webhook endpoint and creates a task if delivery fails |
| **Check a meter that stopped counting** | Creates a task for reception when a meter stays still while the terrain was in use, with subtasks for checking on site |
| **Call the Tillor API** | Adds a comment to every new task through the Tillor API |
As soon as you choose, Tillor creates the automation and opens the editor. The automation is paused until you enable it.
## The editor [#de-editor]
The editor fills the whole screen and has three parts: the step list on the left, the canvas in the middle and the panel on the right. The name of the automation is at the top in the breadcrumb and you can change it there directly.
Hover over the ℹ markers for a short explanation of each part.
**Step list (left).** Find a step with **Search steps**. At the top is the **Tools** group with **Note** and **Container** (see [Notes and containers](#opmerkingen-en-kaders)). Below that are the steps in six groups, with **Documents** in between:
- **Logic**: the trigger **When this happens** and conditions, waiting, looking up and looping, such as **If / else**, **Switch**, **Delay**, **Open now?**, **Look up a record**, **For each** and **Ask for a decision**. See [Conditions, switches and delays](/automatiseringen/logica)
- **Tasks**: creating, finding and updating tasks
- **Documents**: finding and updating documents
- **Guests and messages**: messages to guests and colleagues, comments, the inbox, customers and reservations
- **Invoices and payments**: invoices, payment links, mandates and consumption
- **Access and devices**: access methods, barriers, power, NFC tags and tablets
- **Integrations**: **Send webhook** and **API request**
What each action does is described under [Actions](/automatiseringen/acties). At the bottom is **Request a step** for when you are missing one.
**Canvas (middle).** Here you see the flow. At the top is the trigger, below it the steps with lines between them. At the bottom left you zoom in and out.
**Panel (right).** At the top are the **Active** switch, a button such as **1 issue** when there are issues, a **Tidy up** button that lines the steps up neatly under each other (notes stay where they are) and a **Hide panel** button. If you hide the panel, **Show panel** brings it back. Below that you pick a tab:
| Tab | What you do there |
|---|---|
| **Configure** | Adjust the selected step. If nothing is selected, you can fill in a **Description** for the automation |
| **Test run** | Try out the flow, see [Testing and runs](/automatiseringen/testen-en-uitvoeringen) |
| **Runs** | Look back at what real runs did |
| **History** | View and restore earlier saved versions, see [Earlier versions](#eerdere-versies) |
If you have made changes, **Unsaved changes** appears at the bottom of the panel with the buttons **Revert** and **Save**. **Revert** puts the flow back to the last saved version. If the panel is hidden, those buttons are at the top right of the canvas.
As long as you have no step selected, the description is followed by who made the automation. Failed runs are emailed to that person, at most once an hour per automation.
On a phone the panel is hidden at first, so the canvas gets the whole screen. Tap a step or **Show panel** to open it.
### Adding and connecting steps [#stappen-toevoegen-en-verbinden]
There are four ways to add a step:
- Click a step in the list on the left. It appears in the middle of the canvas
- Drag a step from the list onto the canvas
- Click the plus under an exit that does not lead anywhere yet (**Add a step after "[exit]"**) and choose a step. The new step is connected straight away
- Drag a step onto a line. It then ends up between the two steps (**Insert a step here**)
To connect steps to each other, drag from the exit under a step to another step. The following applies:
- Each exit leads to one step. If you connect an exit again, the new line replaces the old one
- A line that would make a loop is refused. If there is a loop after all, you cannot enable the automation. A run stops as soon as it would repeat a step
- A step without an incoming line is never executed. Tillor reports that as an issue (**Not connected, so this step never runs.**)
- You can adjust, duplicate and add extra triggers from the list on the left. You cannot delete the last trigger. A trigger does not belong on a line: it starts a run of its own
Give a step a name of its own in the **Step name** field. That helps as your flow grows. With the **Duplicate step** and **Delete step** buttons at the top of the panel you copy or delete the selected step.
### Notes and containers [#opmerkingen-en-kaders]
With a note you explain on the canvas what part of the flow does, for example why a condition is there. A **Container** is a dotted line with a name that you put around a group of steps.
- In the **Tools** group, click **Note** or **Container** and type your text
- Drag the note or container to the steps they explain. Select them to make them larger or smaller with the corner handles
- Delete a note with **Delete note** or a container with **Delete container**, or select them and press Delete
- Notes and containers are never executed and do not count towards issues. You can place at most 50 of them together. They are kept with **Save**, just like the steps, and Ctrl/Cmd + Z undoes a change
### Earlier versions [#eerdere-versies]
Every time you save a change, Tillor keeps the previous version. On the **History** tab you see the versions with what changed, for example **1 step added** or **Layout or connections changed**, and by whom or what the change came (for example **Via the API**). With **Restore** you put a version on the canvas. That counts as an unsaved change: save to keep the version, or undo.
### Keyboard shortcuts [#sneltoetsen]
| Key | What it does |
|---|---|
| Ctrl/Cmd + S | Save |
| Ctrl/Cmd + Z | Undo |
| Ctrl/Cmd + Shift + Z or Ctrl/Cmd + Y | Redo |
| Ctrl/Cmd + C, Ctrl/Cmd + V | Copy and paste selected steps |
| Ctrl/Cmd + D | Duplicate selected steps |
| Ctrl/Cmd + A | Select all |
| Delete or Backspace | Delete selected steps or lines |
| Esc | Clear the selection |
## Saving and enabling [#opslaan-en-inschakelen]
Tillor does not save automatically. Click **Save** (or press Ctrl/Cmd + S) to keep your changes. The button is active as soon as something has changed and the name is not empty.
If the automation is on, you can only save when there are no issues left. A running flow must always stay valid. Fix the issues, or pause the automation first.
With the **Active** switch you turn the automation on. That also saves the flow straight away. The switch does not work while there are issues, with the explanation **Fix the open issues first**. After that, the automation starts on every matching event. It can take half a minute before a change takes effect everywhere.
If you later change an enabled flow, those changes only apply to new runs. Runs that are already in progress or waiting in a delay finish with the flow as it was when they started.
## Your first automation: a task after departure [#je-eerste-automatisering-een-taak-na-vertrek]
This example creates a task when an occupation ends.
1. Click **New automation** and choose **Check terrain after departure**
2. Click the trigger. Under **Event** it says `occupation:ended`
3. Click the **Create task** step. Adjust the **Title**, the **Description** and the **Priority**, or choose a board and a **Column** under **Add to board**
4. Open the **Test run** tab and click **Run test**. You see which steps the flow would go through
5. Click **Save** and turn **Active** on
6. End an occupation and look at the **Runs** tab to see what happened
## Requesting a step or event [#een-stap-of-gebeurtenis-aanvragen]
Missing a trigger, condition or action? Click **Request a step** under the step list. In the trigger's list of events there is also a link **Missing an event? Request it**.
1. Under **What do you need?** choose one of **A trigger or event**, **A condition or filter**, **An action** or **Something else**
2. Under **What should it do?** describe what you want to automate. Write at least 10 characters, at most 1000
3. Click **Send request**
Your request goes to the Tillor team, together with your name and the name of your organisation. You get a notification that the request has been sent.
## What happens next? [#wat-gebeurt-er-daarna]
- A new automation is paused. Nothing happens until you turn **Active** on.
- After enabling, the automation starts on every matching event. It can take half a minute before a change takes effect everywhere.
- Every start is a run. You see them on the **Runs** tab, with the status **Completed**, **Waiting**, **Failed** or **Canceled**.
- If a run fails, whoever made the automation gets an email, at most one per hour per automation.
- If you change a running flow, the changes only apply to new runs. What is already in progress or waiting finishes with the old flow.
- Tasks and comments that the automation creates are in the name of **Workflow**. See [Who runs an automation?](/automatiseringen/workflow-gebruiker).
## Problems? [#problemen]
Tillor shows **Fix the open issues first**. At the top of the panel, click the button with the number of issues and fix them. See [Problems and enabling](/automatiseringen/problemen).
The **Save** button is only active when something has changed and the name is not empty. If the automation is on, you can only save without issues. Fix them or pause first.
Tillor reports **Not connected, so this step never runs.** Drag from the exit of an earlier step to this step.
A line that would make a loop is refused. A flow can only go forwards.
The menu only appears if you have the **View automations** permission. Building and changing requires **Manage automations**. Ask an administrator to adjust your permissions.
Go through the points under [Why does my automation not start?](/automatiseringen/veelgestelde-vragen#waarom-start-mijn-automatisering-niet).
## Next steps [#volgende-stappen]
# Documents (/en-GB/automatiseringen/acties/documenten)
With these actions you work with a customer's documents, such as an insurance proof of payment. The type and the expiry date of a document are in the document details. In a flow you read them as `{document.userMetadata.documentType}` and `{document.userMetadata.insuranceExpiryDate}`.
## Find document [#document-zoeken]
Finds a customer's newest document. The step has two exits: **Found** and **Not found**.
| Field | What you fill in |
|---|---|
| **Customer** | The id of the customer, for example `{document.customerId}` or `{customer.id}`. Required |
| **Type** | For example **Insurance payment proof**. Leave empty for any type |
| **Skip archived documents** | On by default |
| **Only documents that have not expired** | The expiry date must be after now. Documents without an expiry date then do not count. Off by default |
If several documents match, the step takes the newest. Via **Found**, later steps can use `{foundDocument.id}`, `{foundDocument.name}`, `{foundDocument.status}`, `{foundDocument.userMetadata.documentType}` and `{foundDocument.userMetadata.insuranceExpiryDate}`.
This way you can check, for example, when an insurance has expired, whether the customer already has a new, valid proof of payment: search with **Type** *Insurance payment proof* and **Only documents that have not expired** on, and only continue via **Not found**.
## Update document [#document-bijwerken]
Changes the type of a document, or archives or restores it. Empty fields stay as they are.
| Field | What you fill in |
|---|---|
| **Document** | The id of the document. `{document.id}` by default. Required |
| **New type** | Leave empty to keep the type |
| **Status** | **Active** or **Archived**. Leave empty to keep the status |
A type that requires an expiry date, such as **Insurance payment proof**, fails if the document has no expiry date. The action returns `{updatedDocument.id}`.
# Invoices and payments (/en-GB/automatiseringen/acties/facturen-en-betalingen)
These steps are in the **Invoices and payments** group. How the exits work is explained under [Exits of an action](/automatiseringen/acties#uitgangen-van-een-actie).
## Send payment reminder [#betalingsherinnering-versturen]
Sends the payment reminder of an invoice to the customer, just like the reminder button on the invoice does.
| Field | What you fill in |
|---|---|
| **Invoice** | The id of the invoice. `{invoice.id}` by default. Required |
Note that the field expects the internal id of the invoice (`{invoice.id}`) and not the invoice number (`{invoice.displayId}`).
The step fails if:
- the invoice is not booked
- nothing is outstanding any more, so the invoice has already been paid
- the customer has no email address, phone number and complete postal address
The run then gets the status **Failed** and the rest of the flow is not executed. So put an **If / else** before the reminder that checks whether the invoice is still outstanding, as in the **Follow up unpaid invoices** template.
The step also skips an invoice if it has been taken out of automated reminders, or if the customer has **Exclude from automated reminders** turned on.
## Sync bank transactions [#banktransacties-synchroniseren]
Fetches new bank transactions and waits until the import has finished. Put this step before **Send payment reminder**, so that an invoice that has just been paid does not get a reminder. If Ponto is not connected, the step is skipped.
Save the automation from the office network. Tillor then remembers the IP that the bank connection needs. Without that IP the sync cannot start.
## Disable automated reminders for customer [#automatische-herinneringen-uitschakelen-voor-klant]
Turns on **Exclude from automated reminders** in the customer's invoicing settings. Reminder flows then skip all of that customer's invoices. A manual reminder remains possible.
| Field | What you fill in |
|---|---|
| **Customer** | The id of the customer. Required |
## Disable automated reminders for invoice [#automatische-herinneringen-uitschakelen-voor-factuur]
Takes one invoice out of overdue reminder flows and automated reminders. Staff can still send a reminder manually.
| Field | What you fill in |
|---|---|
| **Invoice** | The id of the invoice. Required |
## Send invoice [#factuur-versturen]
Sends an invoice to the customer, in the same way as the send button on the invoice.
| Field | What you fill in |
|---|---|
| **Invoice** | The id of the invoice. `{invoice.id}` by default. Required |
The step fails if the invoice is not booked or if the customer has no email address, phone number and complete postal address.
## Book invoice [#factuur-boeken]
Books a draft invoice, so that it gets its invoice number.
| Field | What you fill in |
|---|---|
| **Invoice** | The id of the invoice. `{invoice.id}` by default. Required |
If the invoice is already booked, nothing happens and the flow continues via **Skipped**. After booking, the action returns `{bookedInvoice.displayId}`, the invoice number. You can use it in a message or task. Combine the step with **Send invoice** to book and send a draft invoice in one go.
## Print invoice [#factuur-afdrukken]
Prints an invoice, or shows it on the tablet at reception.
| Field | What you fill in |
|---|---|
| **Invoice** | The id of the invoice. `{invoice.id}` by default. Required |
| **Where** | **A4 printer** (default), **Receipt printer** or **Tablet** |
You set up the printers under [Print settings](/printer/afdrukinstellingen). An invoice that you print a second time with this step is simply printed again.
## Create payment link [#betaallink-aanmaken]
Creates an online payment link for the amount that is still outstanding on an invoice.
| Field | What you fill in |
|---|---|
| **Invoice** | The id of the invoice. `{invoice.id}` by default. Required |
| **Payment method** | **Let the customer choose** (default), **Bancontact**, **iDEAL**, **Credit card** or **Payconiq** |
The link only exists for a booked invoice with something still outstanding. If the invoice is not booked or already paid, the flow continues via **Skipped**. After that, the action returns `{paymentLink.url}`. Put it in a text, for example in a message via [Message a guest](/automatiseringen/acties/gasten-en-berichten#gast-een-bericht-sturen).
## Request SEPA mandate [#sepa-mandaat-aanvragen]
Sends a customer an email asking them to sign a SEPA mandate, or a reminder for a request that is still open. See [Mandate](/betalingsverwerking/mandaat) for the mandate itself.
| Field | What you fill in |
|---|---|
| **Customer** | The id of the customer. `{customer.id}` by default. Required |
| **Send** | **A new request** (default) or **A reminder** |
A new request is skipped if one is already open. A reminder is skipped if there is no open request, or if the request has expired. In both cases the flow continues via **Skipped**.
## Collect by direct debit [#innen-via-domiciliëring]
Collects what is still outstanding on an invoice using the customer's active SEPA mandate.
| Field | What you fill in |
|---|---|
| **Invoice** | The id of the invoice. `{invoice.id}` by default. Required |
| **After days** | How many days Tillor waits before collecting. At 0 it is collected straight away. The maximum is 7 days, a higher number becomes 7. 0 by default |
The step collects the whole outstanding amount. If the invoice is not booked or already paid, or the customer has no active mandate, nothing happens and the flow continues via **Skipped**. If the customer has more than one active mandate, the step uses the newest.
## Invoice consumption [#verbruik-factureren]
Invoices a customer's outstanding meter consumption, books the invoice and sends it.
| Field | What you fill in |
|---|---|
| **Customer** | The id of the customer. `{occupation.customerId}` by default. Required |
| **Send by e-mail** | On by default |
| **Send by text message** | Off by default |
If there is nothing outstanding to invoice, no invoice is made and the flow continues via **Skipped**. Otherwise the action returns `{consumptionInvoice.id}`. See [Meter management](/meterbeheer) for how consumption is tracked.
## Draft extension invoice [#conceptfactuur-voor-verlenging]
Creates a draft invoice that extends an occupation, ready to be checked. The invoice is not booked yet. It is the same kind of invoice you get with **Extend occupation (invoice)** on the customer profile.
| Field | What you fill in |
|---|---|
| **Occupation** | The id of the occupation. `{occupation.id}` by default. Required |
| **Add open consumption** | Puts the customer's outstanding meter consumption on the same invoice. Off by default |
The action returns `{extendInvoice.id}`. If you want to book and send the invoice straight away, then use **Book invoice** and **Send invoice** with `{extendInvoice.id}` as the invoice.
# Guests and messages (/en-GB/automatiseringen/acties/gasten-en-berichten)
These steps are in the **Guests and messages** group. How the exits work is explained under [Exits of an action](/automatiseringen/acties#uitgangen-van-een-actie).
## Message a guest [#gast-een-bericht-sturen]
Sends your own text to a customer by email, text message or WhatsApp. Use it for messages that have no fixed Tillor template, such as a welcome message on the day of arrival.
| Field | What you fill in |
|---|---|
| **Customer** | The id of the customer, for example `{reservation.customerId}`. Required |
| **Subject** | Email only. Empty uses the name of your organisation |
| **Message** | The text, without formatting. Variables are filled in. Required |
| **Send by e-mail** | On by default |
| **Send by text message** | Off by default |
| **Send by WhatsApp** | Off by default |
Note the following:
- Customers who do not accept communication get nothing. The flow then continues via **Skipped**
- Outside the 24-hour window of WhatsApp, Tillor sends your text as an approved template. Inside that window it goes as a normal message
- If the customer does not exist, the step fails
## Notify colleagues [#collegas-verwittigen]
Sends colleagues a push notification, an email or both.
| Field | What you fill in |
|---|---|
| **Colleagues** | Choose one or more colleagues |
| **Also notify whoever caused the event** | Also notifies the colleague who caused the event. If the system caused the event, nobody is added |
| **Title** | The heading of the notification. Required |
| **Text** | The content of the notification |
| **Send as push notification** | On by default |
| **Send by e-mail** | Off by default |
The **Workflow** user never receives a notification itself. If there are no colleagues to notify, the step does nothing and the flow simply continues.
## Add a comment [#opmerking-toevoegen]
Places a [comment](/notities), in the name of **Workflow**.
| Field | What you fill in |
|---|---|
| **Comment** | The text of the comment. Required |
| **On** | **The event's records** (default) or **A task** |
| **Task** | Only with **A task**: the id of the task, for example `{createdTask.id}`. Required |
Note the following:
- Mention a colleague with `@{triggeredBy.name}({triggeredBy.id})`. That colleague then gets a notification, just as with a comment you type yourself. This only works if a colleague caused the event
- With **The event's records**, the comment goes on the customer, the invoice, the reservation, the payment, the terrain, the meter and the task that the event is about. If the event has none of those records, the step fails
- The action returns `{createdComment.id}`
## Reply in the inbox [#antwoorden-in-de-inbox]
Sends a reply in an inbox conversation, through the same channel the guest wrote with.
| Field | What you fill in |
|---|---|
| **Conversation** | The id of the conversation. `{threadId}` by default. Required |
| **Reply** | The text, without formatting. Variables are filled in. Anything longer than 4096 characters is cut off. Required |
| **Keep the AI assistant active** | Off by default |
Note the following:
- `{threadId}` exists for events about inbox messages, such as `inbox:message-created`
- That event applies to every new message, including your own reply. So first check that the message came from the guest, otherwise your reply starts the flow again. Put a [Look up a record](/automatiseringen/logica#record-opzoeken) on **Inbox message** with `{messageId}` before this step, and an **If / else** that checks whether `foundInboxMessage.direction` equals `INBOUND`
- By default your reply silences the [AI assistant](/inbox/inbox-ai-assistant) in that conversation, just as when a colleague replies themselves. With **Keep the AI assistant active** the assistant keeps talking. If the conversation is then archived, the step fails
## Tag or archive conversation [#gesprek-taggen-of-archiveren]
Gives an inbox conversation tags, archives it, or both.
| Field | What you fill in |
|---|---|
| **Conversation** | The id of the conversation. `{threadId}` by default. Required |
| **Add tags** | Choose one or more tags. They are added, existing tags stay |
| **Archive the conversation** | Off by default |
## Update customer [#klant-bijwerken]
Changes the status of a customer or adds a note. Other data of the customer stays unchanged.
| Field | What you fill in |
|---|---|
| **Customer** | The id of the customer, for example `{invoice.customerId}`. Required |
| **Status** | **Leave as it is** (default), **Default**, **Preferred**, **VIP**, **Warning** or **Blacklisted** |
| **Add to notes** | Text that goes on a new line under the existing notes. Empty adds nothing |
## Check in, check out or cancel [#inchecken-uitchecken-of-annuleren]
Puts a reservation into its next status.
| Field | What you fill in |
|---|---|
| **Reservation** | The id of the reservation. `{reservation.id}` by default. Required |
| **Action** | **Check in** (default), **Check out** or **Cancel** |
The reservation must be in the right status for that. **Check in** and **Cancel** work on a reservation with status **Booked**, **Check out** on a reservation with status **Checked in**. If it is in another status, nothing happens and the flow continues via **Skipped**.
# Overview (/en-GB/automatiseringen/acties)
Actions are the steps that really do something. You find them in the step list in the groups **Tasks**, **Documents**, **Guests and messages**, **Invoices and payments**, **Access and devices** and **Integrations**. The steps in the **Logic** group steer the flow itself. Those are described under [Conditions, switches and delays](/automatiseringen/logica). All actions are executed by your organisation's [**Workflow** user](/automatiseringen/workflow-gebruiker).
| Group | Action | What it does |
|---|---|---|
| Tasks | [Create task](/automatiseringen/acties/taken#taak-aanmaken) | Creates a task, optionally with subtasks, on a board and linked to a customer, terrain or invoice |
| Tasks | [Set task status](/automatiseringen/acties/taken#taakstatus-zetten) | Changes the status of an existing task |
| Tasks | [Find task](/automatiseringen/acties/taken#taak-zoeken) | Finds a task by title and continues via **Found** or **Not found** |
| Tasks | [Set task priority](/automatiseringen/acties/taken#taakprioriteit-zetten) | Raises, lowers or chooses the priority of an existing task |
| Tasks | [Update task](/automatiseringen/acties/taken#taak-bijwerken) | Renames a task, adds people or labels or moves the deadline |
| Tasks | [Delete task](/automatiseringen/acties/taken#taak-verwijderen) | Deletes a task, for example the task this flow created |
| Documents | [Find document](/automatiseringen/acties/documenten#document-zoeken) | Finds a customer's newest document and continues via **Found** or **Not found** |
| Documents | [Update document](/automatiseringen/acties/documenten#document-bijwerken) | Changes the type of a document, or archives or restores it |
| Guests and messages | [Message a guest](/automatiseringen/acties/gasten-en-berichten#gast-een-bericht-sturen) | Sends your own text to a customer by email, text message or WhatsApp |
| Guests and messages | [Notify colleagues](/automatiseringen/acties/gasten-en-berichten#collegas-verwittigen) | Sends colleagues a push notification or email |
| Guests and messages | [Add a comment](/automatiseringen/acties/gasten-en-berichten#opmerking-toevoegen) | Places a comment on the event's records or on a task |
| Guests and messages | [Reply in the inbox](/automatiseringen/acties/gasten-en-berichten#antwoorden-in-de-inbox) | Sends a reply in an inbox conversation |
| Guests and messages | [Tag or archive conversation](/automatiseringen/acties/gasten-en-berichten#gesprek-taggen-of-archiveren) | Adds tags to an inbox conversation or archives it |
| Guests and messages | [Update customer](/automatiseringen/acties/gasten-en-berichten#klant-bijwerken) | Changes the status of a customer or adds a note |
| Guests and messages | [Check in, check out or cancel](/automatiseringen/acties/gasten-en-berichten#inchecken-uitchecken-of-annuleren) | Puts a reservation into its next status |
| Invoices and payments | [Send payment reminder](/automatiseringen/acties/facturen-en-betalingen#betalingsherinnering-versturen) | Sends the payment reminder of an invoice to the customer |
| Invoices and payments | [Sync bank transactions](/automatiseringen/acties/facturen-en-betalingen#banktransacties-synchroniseren) | Fetches new bank transactions before the flow continues |
| Invoices and payments | [Disable automated reminders for customer](/automatiseringen/acties/facturen-en-betalingen#automatische-herinneringen-uitschakelen-voor-klant) | Skips all of a customer's invoices in automated reminders |
| Invoices and payments | [Disable automated reminders for invoice](/automatiseringen/acties/facturen-en-betalingen#automatische-herinneringen-uitschakelen-voor-factuur) | Takes one invoice out of automated reminder flows |
| Invoices and payments | [Send invoice](/automatiseringen/acties/facturen-en-betalingen#factuur-versturen) | Sends an invoice to the customer |
| Invoices and payments | [Book invoice](/automatiseringen/acties/facturen-en-betalingen#factuur-boeken) | Books a draft invoice |
| Invoices and payments | [Print invoice](/automatiseringen/acties/facturen-en-betalingen#factuur-afdrukken) | Prints an invoice or shows it on a tablet |
| Invoices and payments | [Create payment link](/automatiseringen/acties/facturen-en-betalingen#betaallink-aanmaken) | Creates an online payment link for what is still outstanding |
| Invoices and payments | [Request SEPA mandate](/automatiseringen/acties/facturen-en-betalingen#sepa-mandaat-aanvragen) | Asks a customer to sign a mandate, or sends a reminder |
| Invoices and payments | [Collect by direct debit](/automatiseringen/acties/facturen-en-betalingen#innen-via-domiciliëring) | Collects what is outstanding with the customer's active mandate |
| Invoices and payments | [Invoice consumption](/automatiseringen/acties/facturen-en-betalingen#verbruik-factureren) | Invoices a customer's outstanding meter consumption |
| Invoices and payments | [Draft extension invoice](/automatiseringen/acties/facturen-en-betalingen#conceptfactuur-voor-verlenging) | Creates a draft invoice that extends an occupation |
| Access and devices | [Create access method](/automatiseringen/acties/toegang-en-toestellen#toegangsmiddel-aanmaken) | Gives a customer access via QR code, licence plate, PIN code or NFC |
| Access and devices | [Update access](/automatiseringen/acties/toegang-en-toestellen#toegang-bijwerken) | Blocks, unblocks or extends access methods |
| Access and devices | [Send or print QR code](/automatiseringen/acties/toegang-en-toestellen#qr-code-versturen-of-afdrukken) | Sends a QR access code to the customer or prints it |
| Access and devices | [Open or close barrier](/automatiseringen/acties/toegang-en-toestellen#slagboom-openen-of-sluiten) | Opens or closes a barrier or gate |
| Access and devices | [Switch power](/automatiseringen/acties/toegang-en-toestellen#stroom-schakelen) | Turns the power of a smart meter on or off |
| Access and devices | [Update NFC tags](/automatiseringen/acties/toegang-en-toestellen#nfc-tags-bijwerken) | Blocks, unblocks or tops up a customer's NFC tags |
| Access and devices | [Control tablet or kiosk](/automatiseringen/acties/toegang-en-toestellen#tablet-of-kiosk-bedienen) | Wakes a tablet or kiosk, puts it to sleep or reloads it |
| Access and devices | [Set slideshow](/automatiseringen/acties/toegang-en-toestellen#diavoorstelling-instellen) | Puts photos on tablets and kiosks, from a list or an earlier request |
| Integrations | [Send webhook](/automatiseringen/acties/integraties#webhook-versturen) | Delivers a message of your own to one of your webhook endpoints |
| Integrations | [API request](/automatiseringen/acties/integraties#api-verzoek) | Calls the Tillor API or another website |
In all text fields you can use [variables](/automatiseringen/variabelen), such as `{invoice.displayId}`. At the top right of each field is a **Variable** button to insert one. Fields that ask for a customer, invoice or other record expect the internal id of that record, such as `{invoice.id}`. An invoice number or name therefore does not work.
## Exits of an action [#uitgangen-van-een-actie]
Under a step there are one or more exits. You connect each exit to a next step. If you leave an exit unconnected, the run ends there.
| Exit | On which actions | When |
|---|---|---|
| **Next** | Most actions | The step succeeded |
| **Done** and **Skipped** | Actions that sometimes have nothing to do | **Done** if the step did its work. **Skipped** if there was nothing to do, for example because the invoice was already booked. That is not an error |
| **Found** and **Not found** | **Find task** | Whether the task exists |
| **Found** and **Not found** | **Find document** | Whether the customer has such a document |
| **Succeeded** and **Failed** | **Send webhook** and **API request** | Whether the other side accepted the message |
**Done** and **Skipped** are on **Message a guest**, **Check in, check out or cancel**, **Book invoice**, **Create payment link**, **Request SEPA mandate**, **Collect by direct debit** and **Invoice consumption**. For each of them, it says under the action when a step is skipped.
### Continue when this step fails [#doorgaan-als-deze-stap-mislukt]
If an action goes wrong, the run normally stops with the status **Failed**. If you want to decide yourself what happens then, turn on **Continue when this step fails** at the bottom of the step's settings. That is possible for every action except **Send webhook** and **API request**, which already have an exit of their own, **Failed**.
The step then gets an extra exit **Error**. If the action fails, the flow continues via **Error** instead of stopping. Later steps can use these variables:
| Variable | Content |
|---|---|
| `{error.message}` | The error message. It may be in English |
| `{error.step}` | The name of the step that failed, as you filled it in under **Step name** |
A few things to know:
- If the action succeeded or was skipped, nothing changes and **Error** is not used
- If you leave **Error** unconnected, the run ends there without further steps. The run then gets the status **Completed**, but the step itself shows its error message on the **Runs** tab
- A second failed step in the same flow replaces `{error.message}` and `{error.step}` of the first
An example: let **Message a guest** continue if it fails and create a task via **Error** with `{error.message}` in the description. That way a colleague picks up the conversation with the guest themselves.
## When a step fails [#als-een-stap-mislukt]
There are three ways a failure can go.
- **A Failed exit.** This happens with **Send webhook** and **API request** if the other side returns an error. The flow continues via the **Failed** exit. Connect it to a follow-up, such as a task for a colleague. If you leave the exit unconnected, the run simply ends there
- **An Error exit.** If you turn on **Continue when this step fails** on another action, the step gets an **Error** exit and you can use the reason with `{error.message}`. See [Continue when this step fails](#doorgaan-als-deze-stap-mislukt)
- **The step stops the run.** If a value is missing after the variables have been filled in, an invoice cannot be sent, an endpoint no longer exists or the JSON is invalid, the run gets the status **Failed**. The steps after it are not executed and Tillor does not retry the step. This only happens if you have not turned on **Continue when this step fails**
The error message is on the step on the **Runs** tab. Those messages may be in English.
Want to make sure a failure never goes unnoticed? Connect the **Failed** exit of an **API request** or **Send webhook**, or the **Error** exit of another action, to a [Create task](/automatiseringen/acties/taken#taak-aanmaken) step. That way a colleague can pick it up.
## Groups [#groepen]
# Integrations (/en-GB/automatiseringen/acties/integraties)
These steps are in the **Integrations** group. A failed delivery continues via **Failed**. For other actions, read [When a step fails](/automatiseringen/acties#als-een-stap-mislukt).
## Send webhook [#webhook-versturen]
Delivers a message of your own to one of your organisation's webhook endpoints. That is useful for informing another system, for example your till system or your website.
| Field | What you enter |
|---|---|
| **Endpoint** | Choose one of your webhook endpoints. You recognise them by their address. Required |
| **Event name** | The name sent along in the message so the recipient can recognise it, for example `automation.invoice_unpaid`. Required |
| **Payload** | The content of the message, as JSON. Variables are filled in before the message is sent. Required |
You create and manage endpoints via the profile menu under **Developers**. The endpoint must exist and be enabled. If it is not, the step fails and the run stops.
The message is signed with the endpoint's own key, exactly like the other webhooks the endpoint receives. Tillor tries again a few times if your server does not answer properly. The endpoint does not have to follow the name of your event: the message arrives either way.
The step has two outputs:
| Output | When |
|---|---|
| **Succeeded** | Your server answered with a successful status |
| **Failed** | The delivery failed after all attempts. The message is then retried in the background, just like an ordinary webhook |
The template **Push reservations to another system** uses **Failed** to create a task so that someone picks it up.
A payload looks like this, for example:
```json
{
"reservation": "{reservation.displayId}",
"checkIn": "{reservation.checkIn}",
"adults": {reservation.numberOfAdults},
"customer": {
"firstName": "{reservation.customer.firstName}",
"email": "{reservation.customer.email}"
}
}
```
Put text between quotation marks and numbers without. Dates are passed in JSON as an international date and time, such as `2026-10-05T08:00:00.000Z`. Read [Variables and templates](/automatiseringen/variabelen#hoe-waarden-worden-ingevuld) for the details. The technical side, such as the structure of the message, is at [Developers > Automations](/ontwikkelaars/automatiseringen).
## API request [#api-verzoek]
Calls the Tillor API of your own organisation, or another address on the internet. With this you can do almost anything Tillor can do, and look up data to then do something with it.
Under **Send to** you choose between **Tillor API** and **Custom URL**. Under **Method** you choose **GET** (retrieve), **POST** (create), **PUT** or **PATCH** (change) or **DELETE** (remove).
### Tillor API [#tillor-api]
| Field | What you enter |
|---|---|
| **Path** | The part of the address after your organisation's API, for example `/tasks` or `/tasks/{task.id}`. It must start with `/`. Required |
| **Body** | The data you send along, as JSON. Leave empty if you send nothing |
At the top of the field is **Pick an API endpoint**. Click it and search the list, for example *tasks*. When you pick an endpoint, Tillor fills in the method and the path. If the **Body** is still empty, you also get an example of what the endpoint expects. Replace the names between braces in the path with variables from earlier steps. If there are query parameters, you see that under the field.
The call is made as the **Workflow** user and can never reach outside your own organisation. An automation cannot manage automations, so calls that touch automations or their runs are refused.
### Custom URL [#eigen-url]
| Field | What you enter |
|---|---|
| **URL** | The address. It must start with `https://`. Required |
| **Headers** | Extra data for the recipient, for example a key. Click **Add header** and fill in the **Name** and the **Value** |
| **Body** | The data you send along, as JSON. Leave empty if you send nothing |
These rules apply:
- Addresses without `https://` are refused
- Private and internal addresses are refused, even if an ordinary name points to them
- Redirects are not followed. If the server answers with a redirect, that counts as **Failed**
- Headers are stored encrypted. So you can put a key or token in them
- With **GET** and **DELETE** no body is sent
### Outputs and response [#uitgangen-en-antwoord]
The request has two outputs: **Succeeded** (the server answered with a successful status) and **Failed** (the server answered with an error status). If Tillor does not reach the server at all, for example because of a timeout after 15 seconds or a refused address, the run stops with the status **Failed**.
There are three variables for later steps:
| Variable | Content |
|---|---|
| `{response.status}` | The status code, for example 200 |
| `{response.body}` | The response as text, shortened to the first 4000 characters |
| `{response.data}` | The response as data, so you can pick fields from it with `{response.data.items.0.id}` |
How to use that is at [Using an API response](/automatiseringen/variabelen#een-api-antwoord-gebruiken). A complete example with a search request is at [Holiday caravan check](/automatiseringen/voorbeeld-nalopen).
# Tasks (/en-GB/automatiseringen/acties/taken)
With these steps an automation creates and updates tasks, so that a colleague picks something up. They are in the **Tasks** group. For how the outputs work, read [Outputs of an action](/automatiseringen/acties#uitgangen-van-een-actie).
## How does this fit together? [#hoe-hangt-dit-samen]
A task created by an automation is an ordinary task: you find it on the tasks page, in the views it fits and on the customer or record it is linked to.
```mermaid
flowchart LR
A["Create task step"] --> T["Task on the tasks page
in the name of Workflow"]
T --> V["Views show it
if it fits or is in the list"]
T --> C["A colleague picks it up"]
C -- "Status or assignment changes" --> E["Another automation can start on that"]
D["Ask for a decision step"] --> T2["Task with choice buttons"]
T2 -- "A colleague chooses a button" --> F["The automation continues via that option"]
```
More about what colleagues see and do is in [Tasks](/taken) and [Tasks with choice buttons](/taken/taakdetails#taken-met-keuzeknoppen).
## Create task [#taak-aanmaken]
Creates a task in the task system. The task is created in the name of **Workflow**.
| Field | What you enter |
|---|---|
| **Title** | The name of the task. Required |
| **Description** | An explanation for the task |
| **Assign to** | Choose one or more colleagues. Click a name to switch it on or off |
| **Assign to groups** | Choose one or more [groups](/gebruikers/groepen). The task then applies to everyone who is in the group at that moment |
| **Labels** | Choose one or more [labels](/taken/labels) |
| **Also assign whoever caused the event** | Also assigns the task to the colleague who caused the event, for example whoever ended the occupancy. If the system caused the event, nobody is added |
| **Priority** | **Low**, **Medium**, **High** or **Urgent**. **Medium** by default |
| **Add to board** | Choose a board the task is placed on, or leave it empty |
| **Column** | Choose a column of the board above. The list shows the columns as *[board] · [column]* |
| **Subtasks** | One subtask per line, or exactly one variable containing a list, such as `{result}` from [Run code](/automatiseringen/logica#code-uitvoeren) |
| **Due after** | How many minutes, hours, days or weeks after the step runs the deadline falls. At 0 the task gets no deadline. 1 day by default |
| **Link to records** | Links the task to the records below and to their customer, terrain, invoice, reservation or meter. On by default |
| **Link to** | Appears when **Link to records** is on. Choose which records the task appears on. Everything the step knows is ticked beforehand: the records of the trigger and whatever an earlier lookup step found |
| **Only the flow can finish it** | Colleagues cannot complete or delete the task. Add a **Delete task** or **Set task status** step later in the flow to finish it |
Keep in mind:
- If you choose nobody under **Assign to** or **Assign to groups** and leave **Also assign whoever caused the event** off, the task has no assignee. **Workflow** is never assigned itself
- Subtasks get the title you enter, no assignee and no deadline. Empty lines are skipped. You may use variables in the lines
- **Link to** concerns customers, terrains, invoices, reservations and meters. For an occupancy that ends, the task is therefore linked to the terrain, the customer and the reservation by default. If you remove a record from the list, the task stays away from it. Records that join the flow later are not added automatically by Tillor once you have edited the list yourself. Choose everything again and the step follows all available records once more
- If a task is only on a personal board, only the people involved see it. See [Private tasks](/taken/prive-taken)
For later steps the action provides `{createdTask.id}` and `{createdTask.name}`. With those you can, for example, set the status afterwards.
If you do not want a second task when an open task already exists for the same terrain or customer, first add a [Find task](#taak-zoeken) step and create the task only via **Not found**. The [Holiday caravan check example](/automatiseringen/voorbeeld-nalopen) does that.
If you switch on **Only the flow can finish it**, the task shows **Finished by its automation**. Colleagues cannot complete or delete it.
## Delete task [#taak-verwijderen]
Deletes a task, for example the task this flow created once it is no longer needed.
| Field | What you enter |
|---|---|
| **Task** | The id of the task. `{createdTask.id}` by default. Required |
A task that is already gone is skipped. The flow then simply continues.
## Set task status [#taakstatus-zetten]
Changes the status of an existing task, for example to complete it.
| Field | What you enter |
|---|---|
| **Task** | The id of the task. `{task.id}` by default. Required |
| **Status** | **Pending**, **In Progress**, **Waiting for reply** or **Completed**. **Completed** by default |
`{task.id}` works when the automation starts on a task event, such as `task:created`. After a **Create task** step, use `{createdTask.id}`. The action provides `{updatedTask.id}` and `{updatedTask.status}`.
## Find task [#taak-zoeken]
Looks for an existing task by title. The step has two outputs: **Found** and **Not found**. That way you can update a task if it already exists, and otherwise create a new one.
| Field | What you enter |
|---|---|
| **Title** | The title the task must have exactly, for example `Nalopen {occupation.terrain.name}`. Variables are filled in first. Required |
| **Linked to the records of the event** | Only tasks linked to at least one of the same records, such as the terrain or the customer. On by default |
| **Only tasks that are not completed** | Skips completed tasks. On by default |
| **Skip subtasks** | Looks only for main tasks. On by default |
If several tasks match, the step takes the newest. If **Linked to the records of the event** is on but the event has no customer, terrain, invoice, reservation or meter, the flow goes via **Not found**.
Via **Found**, later steps can use `{foundTask.id}`, `{foundTask.name}`, `{foundTask.priority}` and `{foundTask.status}`.
## Set task priority [#taakprioriteit-zetten]
Changes the priority of an existing task.
| Field | What you enter |
|---|---|
| **Task** | The id of the task. `{foundTask.id}` by default. Required |
| **Change** | **One step higher** (default), **One step lower** or **To a fixed priority** |
| **Priority** | Only with **To a fixed priority**: **Low**, **Medium**, **High** or **Urgent** |
| **Raise up to** | Only with **One step higher**: the highest priority the step may give. **High** by default. A task that is already that high or higher stays as it is |
The order is **Low**, **Medium**, **High**, **Urgent**. One step lower stops at **Low**. If nothing changes, the step simply succeeds without changing the task. The action provides `{updatedTask.id}` and `{updatedTask.priority}`.
## Update task [#taak-bijwerken]
Changes an existing task. Fields you leave empty stay as they are.
| Field | What you enter |
|---|---|
| **Task** | The id of the task. `{foundTask.id}` by default. Required |
| **New title** | The new name of the task. Empty leaves the title as it is |
| **Assignees** | Choose one or more colleagues |
| **Groups** | Choose one or more [groups](/gebruikers/groepen) |
| **Also assign whoever caused the event** | Also adds the colleague who caused the event. If the system caused the event, nobody is added |
| **Assignees** | **Add to the current ones** (default) or **Replace the current ones** |
| **Add labels** | Choose one or more [labels](/taken/labels). They are added, existing labels stay |
| **Due after** | Sets the deadline to this many minutes, hours, days or weeks after the step runs. At 0 the deadline stays as it is |
Keep in mind:
- If you choose **Replace the current ones** and specify nobody, the task has no assignee afterwards
- If the task no longer exists, the step fails
- The action provides `{updatedTask.id}`
# Access and devices (/en-GB/automatiseringen/acties/toegang-en-toestellen)
These actions affect the park itself: who gets in, which meters have power and what tablets do. See [Access control](/toegangscontrole) for the background on access methods. For how the outputs work, read [Outputs of an action](/automatiseringen/acties#uitgangen-van-een-actie).
## Create access method [#toegangsmiddel-aanmaken]
Gives a customer access via a QR code, licence plate, PIN code or NFC.
| Field | What you enter |
|---|---|
| **Customer** | The id of the customer, for example `{reservation.customerId}`. Required |
| **Type** | **QR code** (default), **License plate**, **PIN code** or **NFC** |
| **Value** | The licence plate or the NFC number. Leave empty for a QR code or PIN code, because Tillor creates those itself |
| **Valid from** | A date variable, for example `{reservation.checkIn}`. Empty means no limit |
| **Valid until** | A date variable, for example `{reservation.checkOut}`. Empty means no limit |
For **License plate** and **NFC**, **Value** is required. The action provides `{createdAccessMethod.id}` and `{createdAccessMethod.value}`. The value is the code of the QR code or the PIN code. With the id you can then send the code via **Send or print QR code**.
## Update access [#toegang-bijwerken]
Blocks, unblocks or extends an access method, or all access methods of a customer.
| Field | What you enter |
|---|---|
| **Which** | **One access method** (default) or **All of a customer** |
| **Access method** | Only with **One access method**: the id, for example `{createdAccessMethod.id}`. Required |
| **Customer** | Only with **All of a customer**: the id of the customer, for example `{occupation.customerId}`. Required |
| **Status** | **Leave as it is** (default), **Active**, **Soft blocked**, **Blocked** or **Inactive** |
| **Valid until** | A date variable. Empty keeps the current end date |
Keep in mind:
- If you leave **Status** on **Leave as it is** and **Valid until** empty, the step does nothing
- With **All of a customer**, access methods set to **Do not extend automatically** keep their end date, just as happens when a customer pays an invoice. Their status does change. With **One access method** the step does change the end date, even if that access method is set to **Do not extend automatically**
## Send or print QR code [#qr-code-versturen-of-afdrukken]
Sends a QR access code to the customer, prints it, or both.
| Field | What you enter |
|---|---|
| **Access method** | The id of the access method. `{createdAccessMethod.id}` by default. Required |
| **Send by e-mail** | On by default |
| **Send by text message** | Off by default |
| **Send by WhatsApp** | Off by default |
| **Print** | **Do not print** (default), **Label printer** or **Receipt printer** |
If you switch off all three channels and choose **Do not print**, the step does nothing.
## Open or close barrier [#slagboom-openen-of-sluiten]
Opens or closes a barrier or gate.
| Field | What you enter |
|---|---|
| **Access point** | Choose one of your access points. Required |
| **Action** | **Open** (default) or **Close** |
## Switch power [#stroom-schakelen]
Switches the power of a smart meter on or off. For example, to switch the power off when an occupancy ends.
| Field | What you enter |
|---|---|
| **Which meters** | **Every switchable meter of a terrain** (default) or **One meter** |
| **Terrain** | Only with **Every switchable meter of a terrain**: the id of the terrain. `{occupation.terrainId}` by default. Required |
| **Meter** | Only with **One meter**: choose the meter. Required |
| **Power** | **On** or **Off**. **Off** by default |
Keep in mind:
- With **Every switchable meter of a terrain** the step only switches the meters that can switch. If the terrain has none, nothing happens
- If switching a meter fails, the step fails. With **One meter** that also happens if the meter cannot switch. Meters that were already switched before stay switched
## Update NFC tags [#nfc-tags-bijwerken]
Updates all [NFC tags](/nfc/nfc-tags) of a customer.
| Field | What you enter |
|---|---|
| **Customer** | The id of the customer, for example `{occupation.customerId}`. The action applies to every NFC tag of this customer. Required |
| **Action** | **Block** (default), **Unblock**, **Top up** or **Send low balance message** |
| **Amount** | Only with **Top up**: the amount in euros, per tag. Must be greater than 0. Required |
If the customer has two tags and you enter 20, each tag gets 20 euros added. Without tags the step does nothing. If the amount is not a number above 0, the step fails.
## Control tablet or kiosk [#tablet-of-kiosk-bedienen]
Sends a command to a [tablet or kiosk](/mobiele-app/tablets-en-kiosken).
| Field | What you enter |
|---|---|
| **Device** | Choose the device. Required |
| **Command** | **Wake** (default), **Sleep**, **Reload**, **Identify** or **Play test sound** |
## Set slideshow [#diavoorstelling-instellen]
Sets the slideshow on every tablet and kiosk, or on one device. The rest of the device settings stay as they are. If the same slideshow is already on a device, that device is skipped.
An hourly trigger, then an [API request](/automatiseringen/acties/integraties#api-verzoek) to an activities feed, and then this step: that is how you replace a separate synchronisation. Connect the step to the **Succeeded** output of the request.
| Field | What you enter |
|---|---|
| **Devices** | **Every tablet and kiosk** (default) or **One device** |
| **Device** | Only with **One device**. Required |
| **Mode** | **Screensaver** (default, after a period without touch) or **Background** |
| **Seconds per photo** | How long one photo stays. 10 by default. From 3 to 600 |
| **Idle before it starts** | Only with **Screensaver**: seconds without touch. 15 by default |
| **Fit** | **Fill** or **Fit inside** |
| **Photos** | **From a previous request** (default) or **Addresses** |
| **Image addresses** | Only with **Addresses**: one https address per line. Required |
| **List** | Path of the JSON list, without braces. After an API request that is `response.data`. Required |
| **Image field** | Name of the field with the https address, for example `signage_image`. Required |
| **Id field** | Keeps the same id for the same photo, so an unchanged list does not send a new message to the device |
| **Status field** and **Status** | Only rows where that field has this value, for example `CONFIRMED` |
| **Skip when set** | Rows where this field has a value are dropped, for example `deleted_at` |
| **Date field** and **End date field** | A row stays until that moment has passed. If the end date is empty, the date counts |
| **Sort field** | Sorts the list ascending, for example by `date` |
| **Maximum photos** | 5 by default, at most 20 |
An address that does not start with `https://` is not counted. If the list is not a JSON array, the step fails and the current slideshow stays in place.
# Overview (/en-GB/automatiseringen)
With automations you let Tillor do something without a colleague having to remember it. You set a rule: *when this happens, do that*. A few examples:
- An occupancy on a static caravan ends, so Tillor creates a check task with subtasks and assigns it to the colleague who stopped the occupancy
- An invoice is overdue, so Tillor sends a payment reminder and, a week later, creates a task to call the customer if the invoice is still open
- A new reservation comes in, so Tillor sends the details to your own system
- Every Monday at 08:00 Tillor creates a task for the weekly check
- A new reservation comes in, so Tillor creates a QR code for the guest and sends it by e-mail
You build an automation yourself on a canvas, without code. You choose a starting moment, add steps and connect them with lines.
## In plain words [#in-gewone-woorden]
An automation has three kinds of building blocks. You only need the technical details when you need them.
- **The starting moment (trigger)** is the "when". Something happens in Tillor, such as an occupancy ending, or it is a certain hour or a certain date. See [Triggers](/automatiseringen/triggers)
- **The logic** is the "if". Here the flow looks at the data and picks a route, or waits until something happens. An example: *is the invoice still unpaid after a week?* See [Conditions, switches and delays](/automatiseringen/logica)
- **The actions** are the "then do". Create a task, send a message, book an invoice. See [Actions](/automatiseringen/acties)
In addition, **variables** are the data of the moment itself, such as the name of the terrain or the customer. You put them between braces in a text, and Tillor fills in the real value. See [Variables and templates](/automatiseringen/variabelen).
## Who can use it [#wie-kan-het-gebruiken]
Automations work with full permissions in your organisation. Viewing requires the permission **View automations**, building and changing requires **Manage automations**. Administrators with **All permissions** can do both. See [Who can use automations?](/automatiseringen/veelgestelde-vragen#wie-kan-automatiseringen-gebruiken).
You find the page in the side menu under Admin > Automations.
## How does this fit together? [#hoe-hangt-dit-samen]
Every automation consists of steps that you connect into a flow. An automation works together with tasks: it creates tasks, waits for a colleague to choose a button, or starts as soon as a task changes. See [Tasks](/taken#hoe-hangt-dit-samen). Each time an automation starts, we call that a run. A run begins at the starting moment and follows the lines downwards.
| Part | What it does |
|---|---|
| **When this happens** (trigger) | The starting moment. An event in Tillor, a webhook, a chosen task action, an overdue invoice, a date such as a guest's arrival, a fixed hour or a schedule of your own. A flow can have several triggers. Each trigger starts a run of its own |
| **Only when** | A filter on the trigger. The automation only starts if the data matches, for example only for static caravans |
| **If / else** | Splits the flow into **Yes** and **No** based on one or more conditions |
| **Switch** | Splits the flow into several branches, depending on the value of a field |
| **Delay** and other wait steps | Make the flow wait for a time, a date, the opening hours, a condition, an event or a colleague's decision |
| **Open now?**, **Look up a record**, **For each** | Check whether you are open, fetch a record or run the steps after it for each item in a list |
| **Actions** | Really do something: tasks, messages to guests and colleagues, invoices, payments and mandates, access, meters and devices, webhooks and API requests |
Steps with several outputs, such as **Yes** and **No**, **Done** and **Skipped** or **Succeeded** and **Failed**, let you choose a different continuation per outcome. For every action you can also switch on an **Error** output, so the flow continues if the step fails.
```mermaid
flowchart TD
A["When this happens
Invoice is overdue"] --> B["Send payment reminder"]
B --> C["Delay
7 days"]
C --> D{"If / else
still unpaid?"}
D -- Yes --> E["Create task
call customer"]
D -- No --> F["End"]
```
## Variables [#variabelen]
Text fields in a step accept variables between braces, such as `{occupation.terrain.name}`. Tillor fills in the name of the terrain that belongs to the event. That way you make messages and tasks that differ per case. Read more at [Variables and templates](/automatiseringen/variabelen).
## Getting started quickly [#snel-aan-de-slag]
1. Go to **Admin > Automations** and click **New automation**
2. Choose a template or **Start from scratch**
3. Set the trigger and the steps and click **Save**
4. Try the flow on the **Test run** tab. Nothing is really sent or created then
5. Switch on **Active** when you are happy
The new automation is paused until you switch it on yourself. A step-by-step explanation is at [Getting started](/automatiseringen/aan-de-slag).
- A new automation is paused until you switch it on yourself
- An automation has at most 100 steps. Notes and frames on the canvas count separately, at most 50
- A **Switch** has at most 8 branches, and **Ask for a decision** at most 8 options
- Schedules and dates are checked every minute. An event starts immediately
- Changes can take half a minute before they apply everywhere
- A failed run is e-mailed to whoever made the automation, at most once an hour
- The **Runs** tab shows the last 20 runs
- A flow cannot start itself or another flow through what it creates itself
An automation that is switched on sends real reminders and creates real tasks. Use the **Test run** tab and check the first runs on the **Runs** tab before you are sure everything is right.
## Parts [#onderdelen]
## Terms [#begrippen]
- **Automation**: a rule of "when this happens, do that", built as a flow
- **Flow**: the canvas of one automation, with steps and lines
- **Trigger**: the starting moment of a flow
- **Run**: one time an automation starts and goes through the flow
- **Action**: a step that really does something, such as creating a task
- **Variable**: a piece of data of the moment, between braces in a text
- **Test run**: a trial in which nothing is really sent or created
- **Workflow**: the user in whose name an automation works
More terms are in the [glossary](/begrippen).
# Conditions, switches and delays (/en-GB/automatiseringen/logica)
With the steps in the **Logic** group you decide which way a flow goes and when: the "if" and the "wait a moment". An example: *if the invoice is still open after a week, create a task*. They steer the actions that follow. Only [Ask for a decision](#vraag-om-een-beslissing) creates something itself, a task.
| Step | What it does | Outputs |
|---|---|---|
| [If / else](#als--anders) | Splits on conditions | **Yes**, **No** |
| [Switch](#schakel) | Picks a branch based on the value of a field | One per branch and **Default** |
| [Delay](#vertraging) | Waits a fixed time or until a date | **Next** |
| [Open now?](#nu-open) | Checks whether you are open now | **Open**, **Closed** |
| [Wait until open](#wachten-tot-open) | Waits until the next opening time | **Next** |
| [Wait until closed](#wachten-tot-gesloten) | Waits until the next closing time | **Next** |
| [At most once per period](#hoogstens-één-keer-per-periode) | Stops repeats | **Continue**, **Already ran** |
| [Look up a record](#record-opzoeken) | Fetches a record by its id | **Found**, **Not found** |
| [For each](#voor-elk) | Runs the steps after it for each item in a list | **For each**, **Done** |
| [Wait until](#wachten-tot) | Waits until conditions are met | **Met**, **Timed out** |
| [Wait for an event](#wachten-op-een-gebeurtenis) | Waits until something happens in Tillor | **Received**, **Timed out**, sometimes **Deleted** |
| [Ask for a decision](#vraag-om-een-beslissing) | Lets a colleague choose between your options | One per option and **Timed out** |
## If / else [#als--anders]
Splits the flow into two paths based on the data. It is the same principle as the filter under **Only when** of the trigger, but in the middle of the flow.
The step has two outputs: **Yes** (the conditions are met) and **No** (they are not).
1. Add an **If / else** step
2. Under **Conditions**, click **Add condition**
3. Pick the field with the **Variable** button, or type the path yourself, for example `invoice.paymentStatus`
4. Pick the comparison (**is**, **is not**, **contains**, **is greater than**, **is less than**, **is one of**, **is empty** or **is not empty**) and enter the value
5. Connect the **Yes** output and optionally **No** to a next step
An **If / else** step needs at least one condition. Otherwise Tillor says **Add a condition.** With several conditions you choose between **All must match** and **Any may match**. The comparisons work as described under [Only when](/automatiseringen/triggers#alleen-wanneer).
You do not have to connect both outputs. If an output leads nowhere, the run ends there. A flow that only does something on **Yes** is therefore fine.
You can also use fields from earlier steps. After an [API request](/automatiseringen/acties/integraties#api-verzoek), for example, you can look at `response.status` or `response.data.paymentStatus`.
## Switch [#schakel]
Choose **Switch** when you need more than two paths. The step looks at the value of one field and picks the branch that goes with it.
1. Under **Field**, pick the field you want to look at, for example `occupation.occupationType`
2. Under **Branches**, click **Add branch**. Enter the **Branch** (the name that appears on the output) and **Equals** (the value the field must have)
3. Repeat this for each branch
4. Connect each output to a next step
Each branch gets its own output below the step. There is also always a **Default** output. It is used when no branch fits.
- The field must match the value exactly, including capitals
- If more than one branch fits, the first in the list wins
- A branch without a value under **Equals** does not count
- You can set up to 8 branches, plus **Default**
- If the field is empty or does not exist, the flow goes via **Default**
Values of choice fields use Tillor's notation. An occupancy of the rental caravan type, for example, has the value `RENTAL_CARAVAN`, and a paid invoice has `PAID`.
The list under **Field** shows the fields of the event and of earlier steps. Fields from the response of an API request only appear in the list once Tillor knows a sample of that response. See [Using an API response](/automatiseringen/variabelen#een-api-antwoord-gebruiken).
## Delay [#vertraging]
With **Delay** you make the flow wait before it carries on. You use it for things like *look again a week later*.
Under **Wait**, choose one of two ways.
### For a fixed time [#een-vaste-tijd]
Choose **For a fixed time** and enter a number and a unit under **Duration**: **seconds**, **minutes**, **hours**, **days** or **weeks**. Seconds are not exact. The flow may carry on a few seconds later.
A delay of 0 does nothing, which is why Tillor says **A delay of 0 does nothing.**
### Until a date [#tot-een-datum]
Choose **Until a date** when the wait depends on a date from the data, such as the due date of an invoice or the end date of a reservation.
| Field | What you enter |
|---|---|
| **Date** | A field that holds a date, for example `invoice.dueDate`. The list only shows fields that are dates |
| **Relative to that date** | **Before** or **After** |
| **Offset** | How much time before or after that date, in minutes, hours, days or weeks. At 0 the flow carries on exactly on that date |
Examples:
- **Date** `invoice.dueDate`, **After**, **Offset** 1 day: the flow carries on a day after the due date
- **Date** `reservation.checkIn`, **Before**, **Offset** 2 days: the flow carries on two days before arrival
If that moment is already in the past, or the date is empty, the flow carries on straight away.
### What happens while it waits [#wat-er-tijdens-het-wachten-gebeurt]
- The run gets the status **Waiting**. On the **Runs** tab you can see when it carries on (**Continues …**). Long waits, such as weeks, are no problem
- After the delay Tillor reads the data again, so the steps after it see the current situation. See below
- If you pause the automation while it waits, the run stops as soon as the wait is over. It does not carry on and gets the status **Canceled**. If you switch the automation on before the wait is over, the run simply carries on
- If you delete the automation, the waiting runs stop
- If you change the flow while a run is waiting, that run finishes with the flow as it was when it started
### Data is read again [#gegevens-worden-opnieuw-gelezen]
A run remembers the data from the moment of the event, but reads the records that belong to it again before it carries on. These are the record of the event (for example the invoice) and the records it refers to (for example the customer).
An example: an automation sends a reminder for an invoice, waits 7 days and then checks with **If / else** whether `invoice.paymentStatus` is not `PAID`. If the invoice was paid during that week, the condition sees the paid invoice and the flow goes via **No**.
There are two exceptions:
- If the record no longer exists, for example because an occupancy was deleted, the run keeps the copy from the moment of the event
- Data that an earlier step produced, such as the response of an API request, is not fetched again. If you want such data refreshed after a delay, make a new API request
A [test run](/automatiseringen/testen-en-uitvoeringen) skips delays and works with the sample data you enter yourself. What happens after a real delay only shows in a real run.
## Open now? [#nu-open]
Checks whether your organisation is open at this moment and splits the flow into **Open** and **Closed**. There is nothing to set up. Tillor uses the hours under **Settings > Opening hours**, with seasonal periods, public holidays and exceptions. See [Organisation settings](/gebruikers/organisaties#openingsuren).
Use it, for example, to send a different text outside opening hours or to create a task. If you would rather wait until you are open again, use [Wait until open](#wachten-tot-open). If you want to wait until you close, use [Wait until closed](#wachten-tot-gesloten).
## Wait until open [#wachten-tot-open]
Pauses the flow until the next opening time and then carries on. Is your organisation already open? Then the flow carries on straight away. There is nothing to set up.
- The opening time comes from **Settings > Opening hours**, in your organisation's time zone
- If there is no opening time at all in the coming month, the flow carries on straight away instead of waiting forever
- While it waits, the run gets the status **Waiting**. What happens then is described under [Delay](#wat-er-tijdens-het-wachten-gebeurt)
## Wait until closed [#wachten-tot-gesloten]
Pauses the flow until the next closing time and then carries on. Is your organisation already closed? Then the flow carries on straight away. There is nothing to set up.
- The closing time comes from **Settings > Opening hours**, in your organisation's time zone
- Blocks that join up, such as 9:00-12:00 and 12:00-17:00, count as one stretch. The flow waits until the end of that stretch
- While it waits, the run gets the status **Waiting**. What happens then is described under [Delay](#wat-er-tijdens-het-wachten-gebeurt)
## At most once per period [#hoogstens-één-keer-per-periode]
Only lets the flow through if it has not passed this step for the same record within the period. That way you do not send a customer the same reminder every day.
| Field | What you enter |
|---|---|
| **Period** | How long earlier runs count, in minutes, hours, days or weeks. 1 day by default |
| **Per** | What you count by. Empty means per record the flow started on, such as the invoice or the reservation. Enter a variable, for example `{customer.id}`, to count per customer or per terrain |
The step has two outputs: **Continue** if the flow has not passed through it within the period, and **Already ran** if it has. Connect **Already ran** to another step, or leave it empty so the run ends there.
Note the following:
- Only runs of the same automation count, and only if they passed this step via **Continue**
- The run that is going now does not count itself
- If the flow starts without a record, for example with **Every day at a time**, enter a variable yourself under **Per**. Without that value every run is new and the step stops nothing
An example: **Period** 7 days and **Per** `{invoice.customerId}` lets through at most one reminder per customer per week, even if that customer has several overdue invoices.
## Look up a record [#record-opzoeken]
Loads a record based on its id, so the steps after it can use its fields. This is handy when the event only passes on an id, such as the message in an inbox conversation.
| Field | What you enter |
|---|---|
| **Record type** | **Customer**, **Reservation**, **Occupation**, **Invoice**, **Payment**, **Terrain**, **Task**, **Document**, **Access method**, **NFC tag**, **Meter**, **Inbox conversation** or **Inbox message**. **Inbox message** by default |
| **Id** | The id of the record, for example `{messageId}`. Required |
The step has two outputs: **Found** and **Not found**. If the record does not exist or the id is empty, the flow goes via **Not found**.
After **Found**, the fields of the record are in variables that start with `found` followed by the type: `{foundCustomer.firstName}`, `{foundInvoice.displayId}`, `{foundReservation.checkIn}`, `{foundTerrain.name}`, `{foundInboxMessage.direction}`. The other types are called `foundOccupation`, `foundPayment`, `foundTask`, `foundAccessMethod`, `foundNfcTag`, `foundMeter` and `foundInboxThread`. The records it refers to are included too, one level deep, such as `{foundReservation.customer.firstName}`. Everything is in the list behind the **Variable** button.
A second lookup of the same type replaces the first. Watch out with **Task**: it uses the same name `foundTask` as [Find task](/automatiseringen/acties/taken#taak-zoeken), and the last of the two wins. The same goes for **Document** and `foundDocument` of [Find document](/automatiseringen/acties/documenten#document-zoeken).
## Map variables [#variabelen-mappen]
Copies values to new variable names, so later steps can use one shape. This is handy when one flow starts via **Incoming webhook** (`{body.…}`) and via **Invoice is overdue** (`{invoice.…}`).
| Field | What you enter |
|---|---|
| **Mappings** | Rows with **Target variable** (e.g. `invoice`) and **Source** (e.g. `{foundInvoice}` or `{body.invoiceId}`) |
The step has one output: **Next**. If the source is exactly one variable between braces, for example `{foundInvoice}`, Tillor copies the whole record (object). Otherwise Tillor fills in the source as text, such as `Invoice {foundInvoice.displayId}` in `meta.label`.
A typical webhook test: **Incoming webhook** → **Look up a record** (Invoice, id `{body.invoiceId}`) → **Map variables** (`invoice` ← `{foundInvoice}`) → the same conditions and approval as with the schedule trigger.
## Run code [#code-uitvoeren]
Runs a piece of TypeScript on the variables of the flow and keeps what it returns as a new variable. For logic that you cannot fit into fields and conditions: which subtasks are needed, calculating an amount or date, reshaping a webhook body.
| Field | What you enter |
|---|---|
| **Code** | TypeScript. You write variables as in texts, with braces: `{customer.firstName}` is read as a value, not filled in as text. End with `return`. Required |
| **Output variable** | The name under which later steps read the result, such as `result` (then `{result}`) or `result.names`. `result` by default |
The step has one output: **Next**. This is how it works:
- The code only sees the variables it mentions. A variable the flow does not have is `null`; a date arrives as text (`2026-07-01T10:00:00.000Z`)
- Formatting and date shifts (`{amount|currency}`, `{date + 1 day}`) do not work here: calculate them in the code
- Return a list, text, number or object. You then read an object per field: `{result.total}`
- The code cannot fetch or send anything: no internet, no database. It only calculates. Calculating for too long (more than 50 ms) is cut off
- If the code throws an error, the run stops with that error and the line number. You see them on the **Runs** tab
- To the right of the code you immediately see what it returns on the sample; it runs along when you test
An example: after departure you want subtasks that depend on the terrain. Add a **Run code** step with:
```ts
const tasks = ["Plaats vegen", "Sanitair"];
if ({occupation.terrain.metadata.gasMeterNumber}) tasks.push("Gasmeterstand noteren");
return tasks;
```
Then fill the **Subtasks** field of **Create task** with only `{result}`: each text in the list becomes a subtask.
## For each [#voor-elk]
Runs the steps after **For each** once for each item in a list, for example for each open invoice of a customer. The flow itself carries on via **Done**.
| Field | What you enter |
|---|---|
| **List** | **Access methods of a customer**, **NFC tags of a customer**, **Open invoices of a customer**, **Booked reservations of a customer**, **Occupations of a customer**, **Documents of a customer** (active only) or **Meters of a terrain**. **Access methods of a customer** by default |
| **Of** | The customer or terrain whose list you want, for example `{customer.id}` or `{occupation.terrainId}`. Required |
The step has two outputs with a meaning of their own:
- **For each** leads to the steps you want to take per item
- **Done** is how the flow itself carries on
This is how it works:
- Each item gets its own run, which goes through the steps after **For each** to the end of that branch. You see them on the **Runs** tab, which only shows the last 20
- The item is in the variable `item`, for example `{item.id}`. Variables of the event and of earlier steps stay available
- The flow does not wait until the items are finished. Immediately after they have started, it carries on via **Done**. So you cannot use the outcome of an item in the steps after **Done**
- At most 100 items are processed, the oldest first. If the list holds more, the rest are not processed
- If the list is empty or the **Of** field is empty, nothing starts and the flow carries on straight away via **Done**
- **Open invoices of a customer** are booked invoices with something still outstanding. **Booked reservations of a customer** are reservations with the status **Booked**
An example: an invoice becomes overdue and you want to make a payment link for each open invoice of that customer. Choose **Open invoices of a customer**, enter `{invoice.customerId}` under **Of** and put a **Create payment link** step after **For each** with `{item.id}` as the invoice.
## Wait until [#wachten-tot]
Checks conditions again and again until they are met, or stops after a while. Use it when you do not know when something will happen but do know what you are waiting for, for example until an invoice is paid.
| Field | What you enter |
|---|---|
| **Until** | One or more conditions, in the same way as with [If / else](#als--anders) |
| **Check every** | How often Tillor looks again, in minutes, hours, days or weeks. At least 5 minutes. 1 hour by default |
| **Stop waiting after** | How long the step waits at most. 7 days by default |
The step has two outputs: **Met** (the conditions are met) and **Timed out** (the wait is over without them being met).
Note the following:
- The first check happens straight away. If the conditions are already met, the flow carries on immediately via **Met**. If you have not entered a condition, it is always met
- At each check Tillor reads the records of the event again, as with a [delay](#gegevens-worden-opnieuw-gelezen). A condition such as `invoice.paymentStatus` is `PAID` therefore sees the payment as soon as it is there
- An interval under 5 minutes becomes 5 minutes
- While it waits, the run gets the status **Waiting**. Pausing and changing the flow work the same as with [Delay](#wat-er-tijdens-het-wachten-gebeurt)
## Wait for an event [#wachten-op-een-gebeurtenis]
Pauses the flow until something happens in Tillor, for example that the invoice has been paid.
| Field | What you enter |
|---|---|
| **Event** | What you are waiting for. The same list as with the [trigger](/automatiseringen/triggers#als-er-iets-gebeurt). Required |
| **Only for the same record** | Only carries on if the event is about the record that started the flow. On by default |
| **Stop waiting after** | How long the step waits at most. 7 days by default |
The step has two outputs: **Received** (the event came) and **Timed out** (the wait is over without an event). If **Only for the same record** is on, a third output is added, **Deleted**. You use it when the record of the flow was deleted while the flow was waiting.
Note the following:
- With **Only for the same record** on, for example, only the payment of the invoice that started the flow counts. If you turn it off, every event of that type lets the flow carry on
- If you connect **Deleted** to nothing, Tillor stops the waiting flows of that record and deletes the tasks the flow created and only the flow could complete. If you do connect the output, the flow carries on there
- If the flow starts without a record, for example with **Every day at a time**, every event of that type counts
- An event that a step of an automation causes itself counts too. Waiting flows therefore also carry on because of work by **Workflow**
- After **Received**, the data of the event you were waiting for is in the variables, without the colleague who caused it. If you wait for `invoice:paid`, then `{invoice.paymentStatus}` gives the new state afterwards
- While it waits, the run gets the status **Waiting**. Pausing and changing the flow work the same as with [Delay](#wat-er-tijdens-het-wachten-gebeurt)
## Ask for a decision [#vraag-om-een-beslissing]
Creates a task with buttons that you define yourself, and waits until someone chooses a button. That way you build in a moment where a person looks along, for example before the flow blocks a customer or books an invoice. Each option is a button on the task and an output of the step.
| Field | What you enter |
|---|---|
| **Task title** | The title of the task. Required |
| **Description** | Tell your colleague what has to be decided |
| **Options** | The buttons on the task. See below. At least one |
| **Assign to** | Pick one or more colleagues |
| **Assign to groups** | Pick one or more groups |
| **Link to** | The records the task appears on, such as the customer or the invoice. Pre-filled with the records known at this step |
| **Stop waiting after** | How long the step waits at most. 3 days by default |
### Setting up options [#opties-instellen]
1. Under **Options**, click **Add option** and enter the name, for example **Approve**. That name appears on the button and on the output
2. Click the coloured box to the left of the name (**Icon and colour**) to pick a colour and an icon. An icon is optional
3. Turn on **Ask for a note** if the colleague has to give a reason with this choice
4. Turn on **Ask for confirmation** if the colleague has to confirm first. You then enter a **Confirmation title** and **Confirmation message** and pick a **Severity** from **Info**, **Warning** or **Destructive**. You can use variables in these texts
5. Repeat this for each option. You can create up to 8 options
If the list is still empty, the **Approve / Reject** button immediately sets up two options: a green **Approve** and a red **Reject**. Each option needs a name, otherwise Tillor says **Every option needs a name.** Without options Tillor says **Add at least one option.**
### Outputs [#uitgangen]
The step has one output per option, with the name and colour of that option, plus always **Timed out**.
| Output | When |
|---|---|
| The name of an option | Someone chose that button on the task |
| **Timed out** | The wait is over without a choice, or the task was deleted |
Note the following:
- The buttons are on the task card, in the task list and in the task itself. Such a task has no tick: you cannot simply complete it, only choose a button. After the choice the task is **Completed** and it shows which option was chosen. See [Tasks with choice buttons](/taken/taakdetails#taken-met-keuzeknoppen)
- Anyone assigned to the task can choose, also via a group, and so can administrators. If you assign nobody, anyone who can see the task can choose
- The task gets priority **High**. It is in the name of **Workflow**
- If the task is deleted before anyone chose, the flow carries on via **Timed out**. After **Timed out** because of the wait, the task stays
- Later steps can use `{approvalTask.id}`, `{approval.decision}`, `{approval.label}`, `{approval.note}` and `{approval.decidedBy.name}`. `{approval.label}` is the name of the chosen option and `{approval.note}` the note the colleague entered
- While it waits, the run gets the status **Waiting**. Pausing and changing the flow work the same as with [Delay](#wat-er-tijdens-het-wachten-gebeurt)
A [test run](/automatiseringen/testen-en-uitvoeringen) cannot know whether you are open, what a colleague decides and whether a record exists. Under **What happens at these steps?** you therefore pick the output of **Open now?**, **At most once per period**, **Look up a record**, **For each**, **Wait until**, **Wait for an event** and **Ask for a decision** yourself. With **For each** the test goes through the output you pick, **For each** or **Done**, not both.
## What happens next? [#wat-gebeurt-er-daarna]
- An output you do not connect lets the run end there.
- With a wait step the run gets the status Waiting and carries on later. A paused automation stops waiting runs as soon as the wait is over.
- After a wait Tillor reads the data again, so the steps see the current situation.
## Problems? [#problemen]
An **If / else** step needs at least one condition. Click **Add condition**.
Enter a number greater than 0 under **Duration**.
A **Switch** compares the value exactly, including capitals. Choice values use Tillor's notation, such as `RENTAL_CARAVAN`. If the field is empty, the flow also goes via **Default**.
An **Ask for a decision** step needs at least one option with a name. Under **Options**, click **Add option**.
The flow is waiting for a time, condition, event or decision. On the **Runs** tab you can see when it carries on or times out. With **Wait until** that is after 7 days by default, with **Ask for a decision** after 3 days.
If the task is deleted before anyone chose, the flow carries on via **Timed out**. See [Tasks with choice buttons](/taken/taakdetails#taken-met-keuzeknoppen).
# Issues and enabling (/en-GB/automatiseringen/problemen)
Tillor keeps checking your flow while you build it. As long as there are open issues, you cannot enable the automation. That prevents a flow that cannot work from trying to send real reminders or tasks.
## Where you see the issues [#waar-zie-je-de-problemen]
- Every step with an issue shows a small warning number
- In the panel on the right, the issues of the selected step are in an orange block above the settings
- At the top of the panel is a button with the total, for example **3 issues**. Click it for the list and click a message to jump to the step
- In the overview of automations there is a label such as **3 issues** next to the name, and an **Issues** filter
## Why can't I enable it [#waarom-kan-ik-niet-inschakelen]
The **Active** switch does not work as long as there are issues, with the text **Fix the open issues first**. In the overview you cannot turn on the automation's switch either.
If the automation is already on, you cannot save changes that have issues. A flow that is running has to stay valid. Fix the issues, or pause the automation first.
## What the messages mean [#wat-de-meldingen-betekenen]
| Message | What is going on | What you do |
|---|---|---|
| **Add a trigger to start with.** | The flow has no trigger | A flow always needs at least one trigger. Drag **When this happens** from the list on the left onto the canvas |
| **This event no longer exists. Pick another one.** | The event of the trigger no longer exists | Pick another one under **Event** |
| **Not connected, so this step never runs.** | No line leads to the step | Connect the step to an output of another step, or delete it |
| **This step is part of a loop. A flow can only go forward.** | A line comes back to an earlier step | Delete the line that points back. A flow cannot run in a circle |
| **[Field] is required.** | A required field is empty, such as the **Title** of a task | Fill in the field. Required fields have an asterisk |
| **[Field]: [variable] is not available at this step.** | You use a variable that does not exist at this step | Pick a variable from the list behind the **Variable** button. Also check that the step that produces the variable comes earlier in the flow |
| **[Field] is not valid JSON.** | The **Payload** or **Body** is not correct JSON | Check braces, commas and quotation marks. Variables are allowed |
| **Add at least one option.** | An **Ask for a decision** step has no options | Under **Options**, click **Add option** |
| **Every option needs a name.** | An option of **Ask for a decision** has no name | Enter the name or delete the option |
| **Add a condition.** | An **If / else** step has no conditions | Click **Add condition** |
| **A condition has no valid field.** | The field of a condition is empty or unknown | Pick or type a field that is in the list behind **Variable** |
| **Enter a value for [variable].** | A condition has a comparison but no value yet | Enter the value, or pick a comparison such as **is empty** that needs none |
| **[Field]: [variable] is not a known format.** | After the `\|` you use a format that does not exist | Use `currency`, `number`, `date`, `datetime`, `time`, `upper` or `lower`. See [Formatting a value](/automatiseringen/variabelen#een-waarde-opmaken) |
| **[Field]: [variable] is not a unit.** | You write a date shift with a unit that does not exist | Use `minutes`, `hours`, `days`, `weeks` or `months` |
| **[Field]: custom field [variable] does not exist.** | You use a custom field that does not (or no longer) exist | Pick an existing field from the list behind **Variable** |
| **[Field]: [variable] has a format or date shift, which only works in texts.** | You use a format in the code field of **Run code** | Compute it in the code |
| **[Field]: [variable] is not a variable name.** | The name of a result contains characters that are not allowed | Use letters, digits and dots, such as `result` or `result.names` |
| **A delay of 0 does nothing.** | The delay is set to 0 | Enter a duration greater than 0 |
| **The path must start with / and stay inside your organization's API.** | The **Path** of an API request is not allowed | Start the path with a single `/` and do not put `..` or `\` in it |
| **The URL must start with https://.** | The **URL** of an API request is not secure | Use an address that starts with `https://` |
| **The cron expression is not valid. Use five fields, such as 0 8 * * 1.** | The cron expression is not correct | See [On a cron expression](/automatiseringen/triggers#volgens-een-cron-expressie) |
## What Tillor cannot check beforehand [#wat-tillor-niet-vooraf-kan-controleren]
Some errors only come to light when the flow really runs.
- A URL made up of variables can only be checked once it has been filled in
- For events whose data is not described, Tillor does not check the variables
- Whether a record exists, whether an invoice can be sent or whether another server is reachable only turns out during a run
A flow without messages is therefore not necessarily a flow that always succeeds. Test it with [Testing and runs](/automatiseringen/testen-en-uitvoeringen) and check the first real runs.
If an event or a field your flow relies on changes, you see it as a message at the step concerned. Adjust the step before you enable the automation again.
# Testing and runs (/en-GB/automatiseringen/testen-en-uitvoeringen)
In the editor you work with two tabs to check that a flow does what you want: **Test run** for a trial and **Runs** for what really happened. You open them on the right in the panel. The fourth tab, **History**, shows earlier versions of the flow, see [Earlier versions](/automatiseringen/aan-de-slag#eerdere-versies).
## A test run [#een-testuitvoering]
Choose the **Test run** tab. A test goes through the flow with sample data and shows which steps it would take.
A test run sends nothing, creates nothing and changes nothing. Delays are skipped, so you see the end result straight away. Actions only show what they would do, with the text **Not carried out in a test.**
### Sample data [#voorbeeldgegevens]
At the top is **Test with a real record**. For each record of the trigger, such as **Occupation**, choose a record via **Choose a record** (search by name or number). Tillor loads the record as it is now, with the records it refers to, into the sample data. The test still sends, creates and changes nothing.
Under **Sample event data** is the data the test works with, in JSON form. If the automation has already run for real, the test starts with the data of the last real run. Otherwise Tillor fills in a sample that has the shape of the event: a text becomes *example*, a number 1 and a date the current moment.
Change the values to try other cases, for example a different terrain type or an invoice with a different status. If the text is not valid JSON, it says **The sample data is not valid JSON.** and you cannot start the test.
If the flow contains an **API request**, there is also a **Sample API response** field. Paste the response you expect from the request there. With it the test can go through the steps after the request, and Tillor offers the fields of the response as variables. See [Using an API response](/automatiseringen/variabelen#een-api-antwoord-gebruiken).
### What happens at these steps [#wat-gebeurt-er-bij-deze-stappen]
For some steps the outcome depends on the outside world: **Send webhook**, **API request**, actions with a **Skipped** or **Error** output, and logic such as **Open now?**, **Look up a record**, **Wait for an event** and **Ask for a decision**. Under **What happens at these steps?** you choose per step which output the test carries on through. That way you also test the path for when things go wrong.
### The result [#het-resultaat]
Click **Run test**. You get to see the steps in order, with for each step:
- the filled-in values, for example the title of a task as it would be created
- for a condition, per line what was compared and whether it matched. Green is passed, red is not, with the value that was actually there (*was …*)
- which output the flow carried on through (**Continues on: Yes**)
- for a delay, until when it would wait
After running, the button is called **Run again**. The test plays the steps one by one (**Step 2 of 5…**). With **Show all** you skip that playback. On the canvas the path the test took is coloured, and the steps that did not get their turn are dimmed. Click a step name in the result to jump to that step. At the bottom it says **Finished after 5 steps.**
If the filter under **Only when** does not match your sample data, you see **The trigger's filter does not match this data, so the flow would not start.** Then check which condition is red. With **Clear** you remove the result from the canvas again.
### What a test does not show [#wat-een-test-niet-laat-zien]
- Whether an invoice can really be sent, whether an endpoint is reachable, or whether an API path exists
- What records look like after a delay. The test works with your sample data and reads nothing again
- Errors that only occur with real data, such as an empty field
So always take a look at the first real runs on the **Runs** tab.
## Real runs [#echte-uitvoeringen]
The **Runs** tab shows the last 20 real runs of this automation, the newest at the top. The list refreshes itself about every 15 seconds. As long as nothing has started yet, it says **No runs yet. Enable the automation and wait for its event.**
Each run shows the start time, the number of steps or (when waiting) when it carries on, and a status.
| Status | What it means |
|---|---|
| **Running** | The run is going at this moment |
| **Waiting** | The run is in a [delay](/automatiseringen/logica#vertraging), waiting for an event or for an approval, and carries on later |
| **Completed** | The flow has been run through to the end |
| **Failed** | A step could not be carried out. The message is shown as **Failed: …** |
| **Canceled** | The run stopped because the automation was paused or deleted while it was waiting |
Click a run to open it. You then see:
- all the steps that were taken, with the time and what the step did
- the filled-in values, for example the title the task really got
- for a condition, which rules matched
- for a failed step, the error message, which may be in English
On the canvas the path this run took is coloured. Steps that did not get their turn are dimmed. Click a step name to jump to that step.
Below the steps is a button such as **3 payloads**. It shows the data the run started with and what each action produced, such as the created task id or the response of an API request. That way you can check which values a variable had.
At the bottom of an opened run is also a **Trace**: a code of letters and digits. If something is wrong with a run, pass that code on to support. That way we can find exactly this run.
Events that did not pass the filter under **Only when**, or for which the automation already ran with **Run once per record**, do not start a run and are therefore not in the list.
In the overview of automations, each automation shows the time of its last run, with a small bar per recent run next to it.
## What happens next? [#wat-gebeurt-er-daarna]
- After a test run nothing has changed in Tillor. Only when you turn on **Active** does the automation really run.
- Real runs stay on the **Runs** tab. It shows the last 20.
- A failed run results in an email to whoever made the automation, at most one per hour.
## Problems? [#problemen]
Tillor shows **The sample data is not valid JSON.** and does not let the test start. Check braces, commas and quotation marks.
With this sample data the flow would not start. Look at which condition is red and adjust the data or the condition.
Tillor shows **No runs yet. Enable the automation and wait for its event.** Events that did not pass the filter are not in it. See [Frequently asked questions](/automatiseringen/veelgestelde-vragen#waarom-start-mijn-automatisering-niet).
A test sends nothing and does not read records again. Whether an invoice can be sent or an address is reachable only turns out for real. Open the run for the error message and the data per step. Need help from support? Pass on the **Trace** code of the run.
## A run that will not start [#een-uitvoering-die-niet-wil-starten]
See [Frequently asked questions](/automatiseringen/veelgestelde-vragen#waarom-start-mijn-automatisering-niet) for a checklist.
# Triggers (/en-GB/automatiseringen/triggers)
The trigger is the starting moment of an automation: the "when". It sits at the top of every flow, under the name **When this happens**. An example: *start when an occupation ends*. It also determines which data the steps after it can use. A flow can have several triggers. Each trigger starts a run of its own, with its own filter. You add one from the list on the left. You cannot delete the last trigger.
## What the automation starts on [#waar-start-de-automatisering-op]
Under **Starts from** you choose one of seven starting moments.
| Choice | Starts when |
|---|---|
| **When something happens** | An event takes place in Tillor, such as an occupation that ends or an invoice that is paid |
| **Invoice is overdue** | A booked invoice is still open after its due date |
| **Incoming webhook** | Another system sends a message to the automation's own address |
| **A task action is chosen** | Someone picks a choice button on a task that is linked to this automation |
| **A date is reached** | A date of a record is reached, optionally some time before or after it. For example one day before the arrival of a reservation |
| **Every day at a time** | It is the chosen time every day |
| **On a cron expression** | It is the turn of the schedule you give |
So you first choose the kind of starting moment, and then the details. If you choose a different starting moment, the filters under **Only when** are cleared. They were written for the previous choice and no longer fit.
## When something happens [#als-er-iets-gebeurt]
Under **Event** you choose what the automation should start on. Click the field and type to search, for example *occupation* or *invoice*. The events are written in Tillor's notation, such as `occupation:ended`: first what it is about, then what happened.
These are the events you need most often:
| Event | Starts when |
|---|---|
| `occupation:ended` | An occupation ends |
| `reservation:created` | A reservation is created |
| `reservation:updated` | A reservation is changed |
| `customer:created` | A customer is created |
| `customer:updated` | A customer is changed |
| `invoice:created` | An invoice is created |
| `invoice:updated` | An invoice is changed |
| `invoice:paid` | An invoice has been paid |
| `payment:created` | A payment comes in |
| `task:created` | A task is created |
| `task:status-changed` | The status of a task changes |
| `task:assigned` | A task is assigned to someone |
| `task:action-chosen` | Someone picks a choice button on a task |
| `integration-alarm:created` | A meter raises an alarm |
| `comment:created` | A comment is posted |
| `document:created` | A document is added |
| `signatureRequest:updated` | A signature request is updated |
| `signatureRequest:completed` | All signers of a signature request have signed |
| `mandate-agreement:signed` | A customer has signed a SEPA mandate |
| `mandate-agreement:activated` | A SEPA mandate has become active |
| `mandate-agreement:expired` | A request for a SEPA mandate has expired without a signature |
| `mandate-agreement:failed` | The activation of a SEPA mandate was refused or failed |
| `productPriceChange:applied` | A [scheduled product price](/producten/prijzen-plannen) takes effect |
This is the same list as that of the [webhooks](/ontwikkelaars/events). So you can use every event for which Tillor can send a webhook. A few events that occur extremely often, such as the physical state of barriers, typing in the inbox, controller logs and vehicle presence, are not in the list.
Under the **Event** field is the link **Missing an event? Request it**. See [Requesting a step or event](/automatiseringen/aan-de-slag#een-stap-of-gebeurtenis-aanvragen).
### Which data you get [#welke-gegevens-krijg-je-mee]
Most events come with a record, such as an occupation, an invoice or a task. That record, plus the records it refers to, are then available as variables in the steps. With `occupation:ended` you can use, for example:
- `{occupation.terrain.name}` for the name of the terrain
- `{occupation.customer.firstName}` for the customer's first name
- `{occupation.reservation.displayId}` for the number of the reservation. Not every occupation has a reservation: in that case this stays empty
There are also always `{triggeredBy.name}` and `{triggeredBy.id}`: the colleague who caused the event. If the event was caused by the system, for example by a bank synchronisation, those fields are empty.
Under the trigger's settings is **Data this event provides**. There you see exactly which variables you can use. For an event whose data is not described, Tillor says there is nothing to choose. Variables that you type yourself still work then. See [Variables and templates](/automatiseringen/variabelen).
## A task action is chosen [#er-wordt-een-taakactie-gekozen]
Some tasks have choice buttons instead of a tick box, for example from [Ask for a decision](/automatiseringen/logica#vraag-om-een-beslissing). A button can be linked to an automation. With this trigger, that automation starts as soon as someone picks that button. See also [Tasks with choice buttons](/taken/taakdetails#taken-met-keuzeknoppen).
Linking a button to an automation is not done in the flow editor. If you need this, ask your Tillor administrator or support.
The steps receive the data of the task, for example `{task.name}` and `{task.id}`, plus `{action.label}` (the name of the chosen button) and `{note}` (the note the colleague filled in, if the button asked for one). Under **Data this event provides** you see the full list.
## Invoice is overdue [#factuur-is-vervallen]
This trigger starts for every invoice that:
- is booked (drafts and cancelled invoices do not count)
- is not a credit note
- still has an outstanding amount
- has a due date before today
A run of its own starts for each such invoice. The data of the invoice and the customer is available as `{invoice.…}`, for example `{invoice.displayId}`, `{invoice.amountOutstanding}` and `{invoice.customer.firstName}`.
If you turn **Run once per record** off, the automation starts for the same invoice at most once a day for as long as it is overdue. If you leave it on, it starts exactly once for each invoice. That is usually what you want for a reminder.
Under **Due for a reminder** you choose how long the invoice must already have been open, the same rule as in the invoice list. Turn on **Exclude customers who do not receive automatic reminders** to skip customers who have that set in their invoicing settings. An invoice that has itself been taken out of the automatic reminders does not start the flow either.
## Incoming webhook [#inkomende-webhook]
A webhook is a message that another system sends to an address. With this trigger, that system starts the automation, for example your website, a form or a booking platform. Every automation gets a secret address of its own.
1. Under **Starts from** choose **Incoming webhook**
2. Save the automation. The URL appears under **Address**
3. Click **Copy** and set the address in the other system
4. Turn the automation on
The other system sends a `POST` with JSON to that address. The content is then available as `{body.…}`, for example `{body.email}` or `{body.reservering.nummer}`, and parameters in the URL as `{query.…}`. With **Only when** you can filter on those fields too.
This is how it works otherwise:
- The address is the secret. Anyone who knows it can start the automation. So share it only with the system that needs it
- If the address leaks, click **New address** and save. The old address stops working from then on
- A disabled automation or a wrong address gives a `404` error
- The content may be at most 100 KB
- Each call starts one run per webhook trigger in the flow. The address belongs to the first webhook trigger. **New address** on that trigger replaces it
- No record is linked to it, so **Run once per record** has no effect
### Ignoring repeats [#herhalingen-negeren]
If the other system sometimes sends the same call twice, **Ignore repeats** prevents the flow from starting twice. Tillor remembers a key of the call. If the same key comes in again, nothing starts.
| Choice | What the key is |
|---|---|
| **Every call starts the flow** | There is no key. The default |
| **From a header** | The value of a header that you choose under **Header name**, for example `Idempotency-Key` |
| **From the JSON body** | The value of a field in the JSON, which you choose under **Field**, such as `id` or `data.eventId` |
| **Same JSON body** | The whole content. A call with exactly the same content counts as a repeat |
Under **Remember the key for** you choose how long the key applies, in hours, days or weeks. After that time the same key starts the flow again. At 0 the key applies until you delete the automation. A call without the chosen header or without the chosen field is rejected.
## A date is reached [#een-datum-is-bereikt]
This trigger starts on a date of a record. Under **Date** you choose any date field of a record that Tillor also sends along with events, written as record and field. A few examples:
| Date | Record |
|---|---|
| `reservation.checkIn` | The arrival date of a reservation |
| `reservation.checkOut` | The departure date of a reservation |
| `invoice.dueDate` | The due date of an invoice |
| `task.dueDate` | The deadline of a task |
| `occupation.paidUntil` | Until when an occupation is paid |
| `accessMethod.periodTo` | The end of the validity of a QR code, number plate or other access method |
| `nfcTag.activatedUntil` | Until when an NFC tag is activated |
| `mandateAgreement.expiresAt` | When a request to sign a SEPA mandate expires |
| `customer.birthday` | A customer's date of birth |
| `contact.birthday` | A contact person's date of birth |
By default the trigger starts once, on the date itself. Turn on **Repeat every year** to count only the day and month: the flow then starts again every year, such as on the birthday with `contact.birthday`. A 29 February falls on 28 February in other years.
You can also choose data that is stored with a record as extra fields. `document.userMetadata.insuranceExpiryDate` is the expiry date of a document, such as an insurance payment proof. A date without a time like that counts as midnight (UTC, the international standard time). With **Only when** you then limit the trigger to one type, for example `document.userMetadata.documentType` is `INSURANCE_PAYMENT_PROOF`, and to active documents with `document.status` is `ACTIVE`.
With **How long** and **Before or after** you shift the moment. *1 day* and **Before** on `reservation.checkIn` starts the flow a day before the arrival. At 0 it starts on the date itself. A date without a time counts as midnight.
With **Time** you choose when on that day the flow starts. **The time in the date** uses the moment that is in the field, such as the arrival time of a reservation. **Fixed time of day** starts on the day of the date at the hour and minute you choose, in your organisation's time zone. That is how `contact.birthday` with **Repeat every year** starts every year at 09:00 on the birthday. **How long** then counts from that time: *1 day* and **Before** starts the day before at 09:00, even if the clocks change that night.
A run of its own starts for each record, with the data of that record as variables, for example `{reservation.displayId}` and `{reservation.customer.firstName}`. With **Only when** you limit it, for example to reservations with the status booked only.
This is how it works otherwise:
- The flow starts once per record and per moment. If the date moves to later, for example because a guest arrives later, it starts again at the new moment
- If the moment had already passed when you saved or enabled the automation, it no longer starts for it
- Missed moments, for example during maintenance, are still caught up by Tillor for up to an hour afterwards
## Every day at a time [#elke-dag-op-een-uur]
Under **Hour** choose an hour (0 to 23) and under **Minute** a minute from 0 to 59. The time is the time in your organisation's time zone.
The steps receive `{now}`: the moment the run started.
## On a cron expression [#volgens-een-cron-expressie]
Choose a rhythm, such as every day, every Monday at 08:00, or the odd Mondays (the 1st, 3rd and 5th). Under **Custom** you set the interval, the weekdays and the time, down to the minute. Under **Cron expression** you write the schedule yourself.
A cron expression is a short way of writing a repeating time. It has five parts, separated by a space: **minute**, **hour**, **day of the month**, **month** and **weekday**.
| Expression | Meaning |
|---|---|
| `0 8 * * 1` | Every Monday at 08:00 |
| `7 8 * * 1` | Every Monday at 08:07 |
| `30 7 * * 1-5` | Every working day at 07:30 |
| `0 9 1 * *` | On the first of every month at 09:00 |
| `0 8 * * 1#1,1#3,1#5` | Every odd Monday (1st, 3rd and 5th of the month) at 08:00 |
| `0 8 * * 1L` | The last Monday of the month at 08:00 |
| `0 8 * * 1 W2:2026-10-05` | Every two weeks on Monday at 08:00, starting from the week of 5 October 2026 |
| `*/15 * * * *` | Every quarter of an hour |
| `* * * * *` | Every minute |
In each part you can use a number, a list with commas (`8,17`), a range (`1-5`), a step (`*/15`) or an asterisk (`*`, every value). Weekday 0 and 7 are both Sunday. `1#2` is the second Monday, `1L` the last. A sixth field `W2:2026-10-05` repeats every two weeks, counted from that week. Names such as *MON* or *JAN* do not work. If you fill in both a day of the month and a weekday, the automation starts on either of the two.
If the expression is invalid, Tillor reports that at the trigger. The times apply in your organisation's time zone.
## Exactly when does a schedule start [#hoe-laat-start-een-schema-precies]
Tillor checks every minute which schedules are due. An automation that should start at 08:07 starts in that minute. This applies to **Invoice is overdue**, **A date is reached**, **Every day at a time** and **On a cron expression**.
A schedule starts at most once per minute. A check that only runs in the next minute does not catch up on the previous minute.
Events start immediately, without this delay.
## Only when [#alleen-wanneer]
With **Only when** you let the automation start only if the data matches. That way you start, for example, only for static caravans, or only for invoices above a certain amount. Leave it empty to start for every event of this type.
1. Click **Add condition**
2. Choose the field with the **Variable** button (or type the path, for example `invoice.status`)
3. Choose how you compare
4. Fill in the value. For fields with a fixed choice, such as a status, a terrain type or a colleague, you choose from a list
You can use the following comparisons:
| Choice | Matches when |
|---|---|
| **is** | The field equals the value |
| **is not** | The field does not equal the value |
| **contains** | The value occurs somewhere in the field |
| **is greater than** | The field is greater than the value (for numbers and dates) |
| **is less than** | The field is less than the value (for numbers and dates) |
| **is one of** | The field equals one of the chosen values |
| **is empty** | The field is empty |
| **is not empty** | The field is not empty |
Capitals do not matter. Numbers are compared as numbers, so 10 is greater than 9.
If you have more than one condition, you choose how they work together: **All must match** or **Any may match**.
Events that are held back by the filter do not start a run and so leave no trace on the **Runs** tab. If you want to see whether your filter is right, use **Test run**: there you see for each condition whether it matched.
## Run once per record [#eén-keer-per-record-uitvoeren]
With **Run once per record** the automation starts at most once per invoice, reservation or other record, however often the event occurs for it.
That is especially handy for events that come back often, such as `invoice:updated`: an invoice is changed dozens of times, but you only want to send one reminder. Tillor remembers per record that the automation has already started. That memory disappears when you delete the automation.
It only works for events that come with a record, and for **Invoice is overdue** and **A date is reached**. With **A date is reached** it means: even if the date moves later, the flow does not start again. For a schedule such as **Every day at a time** it has no effect.
## What happens next? [#wat-gebeurt-er-daarna]
- Every time the starting moment occurs and the filter matches, a run starts with the data of that moment as variables.
- An event starts immediately. A date, hour or schedule starts in the minute in which it is due.
- If the filter does not match, nothing starts and there is no trace on the **Runs** tab.
## Problems? [#problemen]
Check whether the automation is on, whether you chose the right **Event** and whether the filter under **Only when** is not too strict. Test with the data of a real case on the **Test run** tab. More in [Frequently asked questions](/automatiseringen/veelgestelde-vragen#waarom-start-mijn-automatisering-niet).
Use five fields separated by a space, such as `0 8 * * 1`. Names like *MON* do not work.
The automation is off or the address is not right. Turn the automation on and copy the address again.
With a different starting moment the filters under **Only when** are cleared, because they were written for the previous starting moment. Add them again.
**Run once per record** is on. It then starts at most once per invoice, reservation or other record.
## Read more [#meer-lezen]
# Variables and templates (/en-GB/automatiseringen/variabelen)
With variables you make texts that differ from case to case. You write a variable between curly braces and Tillor fills in the real value as soon as the automation runs.
An example of a task title:
```text
Controleer {occupation.terrain.name}
```
If the occupation ends on terrain 12, the task is called *Controleer 12*.
## Inserting a variable [#een-variabele-invoegen]
Above every text field where variables work, there is the **Variable** button. Click it and you see a list of all available data, grouped by record. Type to search (**Search variables**) and click a row. Tillor puts the variable at the position of your cursor.
You can also just type a variable yourself. Under the field a grey box shows what the text looks like with sample data, so you can see straight away whether it is right.
Variables work in text fields such as titles, descriptions, subtasks, messages, the id of a customer, invoice or other record, the path or URL of an API request, the body, the payload of a webhook, the name of the webhook event and the values of headers. For the last two the **Variable** button is missing, but a variable that you type yourself is still filled in. Tillor does not check those two fields for errors and shows no preview for them.
In fields where you choose a piece of data to compare with, you write the variable without curly braces. That applies to **Only when**, **If / else** and **Until** under **Wait until** (for example `invoice.status`), to the **Field** of a **Switch** and to the **Date** of a **Delay**.
## Which variables are there [#welke-variabelen-zijn-er]
| Variable | Available | Content |
|---|---|---|
| `{occupation.…}`, `{invoice.…}`, `{task.…}`, `{reservation.…}` and others | After an event | The fields of the record the event is about. The name of the record is also the start of the variable |
| `{occupation.terrain.name}` | After an event | Fields of the records the record refers to, such as the customer or the terrain. This works one level deep |
| `{triggeredBy.name}`, `{triggeredBy.id}` | Always | The colleague who caused the event. Empty if the system did |
| `{invoice.…}` | With **Invoice is overdue** | The fields of the overdue invoice and the customer |
| `{reservation.…}`, `{task.…}` and others | With **A date is reached** | The fields of the record whose date was reached, plus the records it refers to |
| `{now}`, `{today}` | Always | The moment the step runs, and midnight of that day in the organisation's time zone. Together with a shift (below), `{today + 1 day}` gives tomorrow |
| `{threadId}`, `{messageId}` | With events about inbox messages, such as `inbox:message-created` | The id of the conversation and of the message |
| The fields of the event | After **Wait for an event**, via **Received** | The data of the event that was waited for. It replaces the data of the same records from the start of the flow |
| `{createdTask.id}`, `{createdTask.name}` | After **Create task** | The task that was just created |
| `{foundTask.id}`, `{foundTask.name}`, `{foundTask.priority}`, `{foundTask.status}` | After **Find task**, via **Found** | The task the step found |
| `{updatedTask.id}`, `{updatedTask.status}` | After **Set task status** | The task whose status was changed |
| `{updatedTask.id}`, `{updatedTask.priority}` | After **Set task priority** | The task whose priority was changed |
| `{updatedTask.id}` | After **Update task** | The task that was changed |
| `{foundDocument.id}`, `{foundDocument.name}`, `{foundDocument.status}`, `{foundDocument.userMetadata.documentType}`, `{foundDocument.userMetadata.insuranceExpiryDate}` | After **Find document**, via **Found** | The document the step found |
| `{updatedDocument.id}` | After **Update document** | The document that was changed |
| `{response.status}`, `{response.body}`, `{response.data.…}` | After **API request** | The response to the request |
| `{foundCustomer.…}`, `{foundInvoice.…}`, `{foundReservation.…}` and others | After **Look up a record**, via **Found** | The fields of the record the step found, plus the records it refers to. The name is `found` plus the record type: `foundCustomer`, `foundReservation`, `foundOccupation`, `foundInvoice`, `foundPayment`, `foundTerrain`, `foundTask`, `foundDocument`, `foundAccessMethod`, `foundNfcTag`, `foundMeter`, `foundInboxThread` or `foundInboxMessage` |
| `{body.…}`, `{query.…}`, `{receivedAt}` | After **Incoming webhook** | The JSON body, query parameters and time of receipt of the webhook call |
| Every target name from **Map variables** | After **Map variables** | What you fill in as the target in that step, for example `{invoice.displayId}` after `invoice` ← `{foundInvoice}` |
| `{item.…}` | In the steps after **For each** | The fields of the item the step is now running for, such as `{item.id}` |
| `{approvalTask.id}`, `{approval.decision}`, `{approval.label}`, `{approval.note}`, `{approval.decidedBy.name}` | After **Ask for a decision**, via an option | The task, the chosen option, the name of that option, the note and the colleague who chose |
| `{task.…}`, `{action.label}`, `{note}` | With **A task action is chosen** | The task, the chosen button and the note filled in with it |
| `{createdComment.id}` | After **Add a comment** | The comment that was just posted |
| `{bookedInvoice.displayId}` | After **Book invoice**, via **Done** | The invoice number of the booked invoice |
| `{paymentLink.url}` | After **Create payment link**, via **Done** | The link the customer can pay online with |
| `{consumptionInvoice.id}` | After **Invoice consumption**, via **Done** | The invoice for the meter consumption |
| `{extendInvoice.id}` | After **Draft extension invoice** | The draft invoice that extends the occupation |
| `{createdAccessMethod.id}`, `{createdAccessMethod.value}` | After **Create access method** | The new access method and its value, such as the code of a QR code or PIN code |
| `{error.message}`, `{error.step}` | After an action with **Continue when this step fails**, via **Error** | The error message and the name of the step that failed |
Exactly which fields a record has, you see in the list behind the **Variable** button. At the trigger there is also the overview **Data this event provides**.
### Only what comes earlier in the flow [#alleen-wat-eerder-in-de-flow-komt]
A step can only use variables from the trigger that reaches it and from steps that come earlier on the same path. If several triggers reach the same step, only the variables that each of those triggers provides are available. A field from an earlier step counts if each of those triggers also passes that step. If you use a variable that does not exist at that point, Tillor reports **[Field]: [variable] is not available at this step.** A flow with such a message cannot be enabled.
Some records keep extra data in one field, such as the document data in `userMetadata`. Every key below it is a variable: `{document.userMetadata.documentType}`, `{document.userMetadata.insuranceExpiryDate}` or another key. The known keys, such as the type and expiry date of a document, are also in the list and you can compare them as a date. A date without a time, such as `2026-10-07`, appears in a message as `07-10-2026`.
Variables of **For each** (`{item.…}`) only exist in the steps after the **For each** exit, not after **Done**. Variables of an exit you did not take do not exist either: `{paymentLink.url}` is only there if the step ran via **Done**, and `{foundTask.id}` only after **Found**.
For events whose data is not described, Tillor cannot check which variables exist. Then you do not get that message. So check such flows extra carefully with a test run.
### A new value replaces the old one [#een-nieuwe-waarde-vervangt-de-oude]
A second **API request** in the same flow replaces the `response` of the first. The same goes for `createdTask` after a second **Create task**, for `foundTask` after a second **Find task** or **Look up a record** on **Task**, and for `error` after a second failed step. So use the data from a response in the step that directly follows it.
## How values are filled in [#hoe-waarden-worden-ingevuld]
Tillor adapts the notation to the kind of field.
**In plain text** (titles, descriptions, subtasks):
- Dates are in your organisation's time zone, for example `05-10-2026`. If the time is not exactly midnight, a time is added too, such as `05-10-2026 14:30`
- An empty field gives an empty text
- A variable that Tillor does not know stays as you wrote it, for example `{occupation.terain.name}`. A typing mistake is then spotted at once in the task or the message
- If a linked record is not there, the variable stays empty. An occupation without a reservation therefore gives nothing for `{occupation.reservation.displayId}`, and an event caused by the system gives nothing for `{triggeredBy.name}`. If you want different text in that case, put an **If / else** with **is empty** in front of it
**In JSON** (the **Payload** of a webhook and the **Body** of an API request):
- Text is filled in safely. Quotation marks, new lines and other special characters in the value cannot break the JSON
- Numbers and yes/no values come without quotation marks, so do not put any around them. Text you do put between quotation marks
- Dates go through as an international date and time, such as `2026-10-05T08:00:00.000Z`, so that the receiving system can handle them properly
```json
{
"reservation": "{reservation.displayId}",
"adults": {reservation.numberOfAdults}
}
```
If the JSON is not valid after filling in, for example because a number is empty, the run stops with an error message.
**In a path or URL** (with an API request):
- Values are converted so that they fit in an address. A name with a space therefore does not give a broken address
- Dates go as an international date and time here too
- What you type yourself stays as you type it. If you want a space in a search term, type `%20` yourself
## Shifting a date [#een-datum-verschuiven]
A shift may follow a date variable: `{reservation.checkOut + 1 day}`, `{today - 2 weeks}`, `{invoice.dueDate + 3 hours|date}`. The units are `minutes`, `hours`, `days`, `weeks` and `months` (the singular is fine too). Days and weeks are fixed lengths, so that a validity period stays equally long across summer and winter time; months follow the calendar, so 31 January plus a month is 28 or 29 February. On a value that is not a date the shift does nothing, and a unit that does not exist is an error on the step. Date fields such as **Valid until** accept the same notation.
## Formatting a value [#een-waarde-opmaken]
Put a `|` and a format after the variable, for example `{invoice.amountOutstanding|currency}`. Without a format an amount appears plain, such as `1295.3`. With `|currency` that becomes `€ 1.295,30`.
| Format | Example | Result |
|--------|-----------|-----------|
| `currency` | `{invoice.amountOutstanding\|currency}` | `€ 1.295,30` |
| `currency:USD` | `{invoice.amountOutstanding\|currency:USD}` | `US$ 1.295,30` |
| `number` | `{invoice.amountOutstanding\|number}` | `1.295,3` |
| `number:2` | `{invoice.amountOutstanding\|number:2}` | `1.295,30` (fixed number of decimals) |
| `date` | `{invoice.dueDate\|date}` | `30-06-2026` |
| `datetime` | `{invoice.createdAt\|datetime}` | `01-06-2026 16:04` |
| `time` | `{invoice.createdAt\|time}` | `16:04` |
| `upper` / `lower` | `{customer.lastName\|upper}` | `VAN DEN BROECKE` |
- Numbers and amounts are always in Belgian notation: a full stop for thousands and a comma for decimals
- Dates and times are in your organisation's time zone
- If the format cannot read the value, for example `|currency` on text, the value simply appears without formatting
- A format that Tillor does not know stays as you wrote it, and the editor shows a message about it
- In JSON and in a URL the formatted value is filled in as text. So put quotation marks around it in JSON
## Using an API response [#een-api-antwoord-gebruiken]
After an [API request](/automatiseringen/acties/integraties#api-verzoek) you can use fields from the response with `{response.data.…}`. The response to a search for tasks looks like this, for example:
```json
{
"items": [
{ "id": "task_1", "priority": "LOW" }
]
}
```
Then `{response.data.items.0.id}` gives the id of the first task (the first in a list is number 0) and `{response.data.items.0.priority}` its priority.
Tillor can only offer the fields of a response as a variable if it knows what the response looks like. That can be done in two ways:
- Let the automation run for real once. Tillor then uses the response of the last run
- Paste a sample into the **Test run** tab, in the **Sample API response** field. That field appears as soon as the flow contains an **API request**. Below it are **Fields in this response**. Click a field to have it copied, including curly braces
After that the fields are in the list behind the **Variable** button and in the list under **Field** of a **Switch**.
If you type a path under `response.data` yourself, it is always accepted, even without a sample. Furthermore:
- `{response.body}` contains the first 4000 characters of the response. If the response is longer, the rest is cut off
- `{response.data}` is empty if the response is not JSON, or if the response is very large (more than 100,000 characters)
- For a search without a result, `{response.data.items.0.id}` does not exist. A **Switch** on such a field then goes via **Default**
In the **Test run** tab you also fill in the sample data of the event. That way you see in the test run which values Tillor would fill in. See [Testing and runs](/automatiseringen/testen-en-uitvoeringen).
## What happens next? [#wat-gebeurt-er-daarna]
- As soon as the automation runs, Tillor replaces every variable with the real value. A variable that Tillor does not know stays as you wrote it.
- If a piece of data is empty, the spot stays empty. If you want different text then, put an **If / else** with **is empty** in front of it.
## Problems? [#problemen]
A variable that Tillor does not know stays literally as it is. Usually there is a typing mistake. Choose the variable via the **Variable** button.
You are using a piece of data that does not exist yet at this point in the flow, for example from a step that comes later or from an exit you did not take. Put the step that provides the data earlier in the flow. As long as the message is there, you cannot enable the automation.
A number that is empty makes the JSON invalid. You put text between quotation marks, numbers not. Check the fields with a test run.
Tillor does not yet know the shape of the response. Let the automation run for real once, or paste a sample into **Sample API response** on the **Test run** tab.
# Frequently asked questions (/en-GB/automatiseringen/veelgestelde-vragen)
## Who can use automations? [#wie-kan-automatiseringen-gebruiken]
Anyone with **View automations** sees the automations and their runs. Anyone with **Manage automations** can also create, change, enable and delete them. Administrators with **All permissions** can do everything. You give these permissions to the members of your organisation.
Be careful with **Manage automations**: an automation works with all the permissions of your organisation. Anyone who may build flows can therefore do anything through a flow. Give it only to people you trust with that. Anyone with neither permission does not see the menu item **Admin > Automations**.
## Why does my automation not start? [#waarom-start-mijn-automatisering-niet]
Go through these points.
1. **Is it on?** An automation whose switch is off (filter **Paused**) does not start. If there are issues, you could not enable it. See [Issues and enabling](/automatiseringen/problemen)
2. **Is it the right event?** A new reservation is `reservation:created`, a change is `reservation:updated`. Also check that the event really occurs with the action you take
3. **Is the filter holding it back?** Events that do not pass the filter under **Only when** leave no run behind. Use the **Test run** tab with the data of a real case to see which condition does not match. Pay attention to the values of choice fields: an invoice status is, for example, `BOOKED`
4. **Is Run once per record on?** Then the automation does not start again for an invoice or reservation for which it has already run. See [Run once per record](/automatiseringen/triggers#eén-keer-per-record-uitvoeren)
5. **Is it a schedule?** Then it starts in the minute in which it is due. A fixed time and a schedule use your organisation's time zone
6. **Did you just enable or change it?** It can take half a minute before everything notices
7. **Are many events coming in at once?** Then the runs are processed one by one and it can take a while before yours is up
If the automation does start but something goes wrong afterwards, look at the **Runs** tab to see what happened and where the run got stuck.
## Why does my schedule start late? [#waarom-start-mijn-schema-te-laat]
Schedules are checked every minute. An automation that starts on a date, an hour or according to a schedule begins in that minute. An event starts immediately.
## Can an automation keep starting itself? [#kan-een-automatisering-zichzelf-blijven-starten]
Not within one flow. If you connect an exit so that the flow would jump back to an earlier step, Tillor refuses that line. You cannot enable a flow with such a loop. If a run does reach a step it already did, it stops, instead of doing that step again.
Not via events either. What a step does happens as the user **Workflow**, and events that **Workflow** causes do not start automations. An automation that starts on `task:created` and does a **Create task** therefore does not start again on the task it made itself. That also applies between automations: one cannot start another.
If many events come in within a short time, for example because of a large mailing, every event starts a run. Tillor handles a few at a time. Nothing is lost, but it can take a while.
## What limits apply? [#welke-grenzen-gelden-er]
| What | Limit |
|---|---|
| Steps in one automation | 100 |
| Branches in a **Switch** | 8, besides **Default** |
| Connections from one exit | 1 step. If you connect again, the new line replaces the old one |
| Length of the name | 120 characters |
| Length of the description | 500 characters |
| Notes and containers on the canvas | 50 together |
| Options with **Ask for a decision** | 8 |
| Wait time of an API request | 15 seconds |
| The response in `{response.body}` | The first 4000 characters |
| The response in `{response.data}` | Up to 100,000 characters, larger is empty |
| Delay in seconds | Not exact, can be a few seconds later |
| Schedules | Checked every minute |
| Items in a **For each** | 100 at a time |
| Check with **Wait until** | At most every 5 minutes |
| Content of an incoming webhook | 100 KB |
| Runs on the **Runs** tab | The last 20 |
## Can several automations start on the same event? [#kunnen-er-meerdere-automatiseringen-op-dezelfde-gebeurtenis-starten]
Yes. Every enabled automation whose trigger and filter match starts its own run. Do not count on a fixed order.
## Can I have two things done at once after one exit? [#kan-ik-na-één-uitgang-twee-dingen-tegelijk-laten-doen]
No, an exit leads to one step. Put the actions one after the other, or make a second automation with the same trigger.
## What happens to running runs if I change something? [#wat-gebeurt-er-met-lopende-uitvoeringen-als-ik-iets-verander]
| What you do | What happens to runs |
|---|---|
| Change the flow and save | New runs use the new flow. Runs that are already busy or waiting finish with the flow as it was |
| Pause the automation | Runs that are waiting in a delay stop as soon as the wait time is over and get the status **Canceled**. What is already busy at that moment finishes. If you turn it back on before the wait time is over, the run simply continues |
| Delete the automation | The runs and the history are deleted. Waiting runs stop |
## What happens if a step fails? [#wat-gebeurt-er-als-een-stap-mislukt]
The run stops with the status **Failed** and the steps after it are not carried out. Whoever made the automation gets an email about the failed run, at most one per hour per automation. Tillor does not retry the step. With **Send webhook** and **API request** you can catch a failure with the **Failed** exit. With other actions you turn on **Continue when this step fails**: the step then gets an **Error** exit and the flow continues there. See [When a step fails](/automatiseringen/acties#als-een-stap-mislukt).
## Is anything really sent during a test? [#wordt-er-echt-iets-verstuurd-tijdens-een-test]
No. A test run sends nothing, creates nothing and changes nothing. See [Testing and runs](/automatiseringen/testen-en-uitvoeringen).
## Is my data stored safely? [#zijn-mijn-gegevens-veilig-opgeslagen]
Your flows and the run history, including headers with keys or tokens, are stored encrypted. For addresses on the internet, only `https` is allowed and internal addresses are refused.
## I am missing an event, condition or action [#ik-mis-een-gebeurtenis-voorwaarde-of-actie]
Use **Request a step** in the editor. See [Requesting a step or event](/automatiseringen/aan-de-slag#een-stap-of-gebeurtenis-aanvragen).
## Can I also manage automations from my own system? [#kan-ik-automatiseringen-ook-vanuit-mijn-eigen-systeem-beheren]
Yes, if your integration has all permissions. See [For developers](/ontwikkelaars/automatiseringen).
Start with one trigger and one action, let it run along for a few days and review the runs. Only then build it out with conditions and delays.
# Example: checking a rental caravan (/en-GB/automatiseringen/voorbeeld-nalopen)
This example builds a flow with a filter, **Find task**, **Set task priority**, an **If / else** and a task with subtasks. You do not need an API request for it.
In Tillor demo environments this flow is already there as a paused example under the name **Rental caravan check**. You can look at it there while you build along.
## What the flow does [#wat-de-flow-doet]
A guest leaves a static caravan. The caravan has to be checked before the next guest.
- If there is no open check task for that terrain yet, the flow creates one, with five subtasks and a deadline after 7 days. The task also goes to the colleague who ended the occupation
- If there is already an open check task, for example because the caravan became free twice shortly after each other, the flow does not create a second task. Instead the priority of the existing task goes up one step
```mermaid
flowchart TD
A["Occupation ended
static caravans only"] --> F{"Open check task?"}
F -- Found --> P["Priority one step higher
up to High"]
F -- Not found --> B{"Ended by a colleague?"}
B -- Yes --> C["Create check task
with name of the colleague"]
B -- No --> D["Create check task"]
```
The two task steps at the bottom are almost the same. Only the description differs: if the system ended the occupation, there is no colleague to mention.
## What you need [#wat-je-nodig-hebt]
- You have the permission **Manage automations**, or **All permissions**
- Your organisation has a terrain type for static caravans, in this example **Static caravan**
- Optional: a board and a column for the check tasks
## Building the flow [#de-flow-bouwen]
### 1. Creating an empty flow [#1-een-lege-flow-maken]
1. Go to **Admin > Automations** and click **New automation**
2. Choose **Start from scratch**
3. In the breadcrumb at the top, fill in the name **Rental caravan check**
4. Click on the canvas, next to the steps, and in the panel fill in under **Description** what the flow is for
### 2. Setting up the trigger [#2-de-trigger-instellen]
1. Click the trigger. Leave **Starts from** on **When something happens**
2. Under **Event** choose `occupation:ended`. Type *occupation* to search
3. Under **Step name** give the step the name *Occupation ended*
Now the flow starts for every occupation that ends. You want it only for static caravans:
1. Under **Only when** click **Add condition**
2. Click **Variable** and choose `occupation.terrain.terrainTypeId`
3. Leave the comparison on **is**
4. For the value, choose the terrain type **Static caravan**
### 3. Finding an open check task [#3-een-open-nalooptaak-zoeken]
1. Add a **Find task** step, connect the trigger to it and name it *Open check task?*
2. Under **Title** fill in `Check {occupation.terrain.name}`
3. Leave **Linked to the records of the event**, **Only tasks that are not completed** and **Skip subtasks** on
The step now looks for a main task that is not yet completed, is called exactly *Check* followed by the name of the terrain, and is linked to the same terrain, the same customer or the same reservation. Then the flow continues via **Found** or **Not found**.
### 4. Raising the priority [#4-de-prioriteit-verhogen]
1. Add a **Set task priority** step, name it *Raise priority* and connect the **Found** exit to it
2. Leave **Task** on `{foundTask.id}`
3. Leave **Change** on **One step higher** and **Raise up to** on **High**
### 5. Checking who ended the occupation [#5-nagaan-wie-de-bezetting-stopzette]
1. Add an **If / else** step, connect the **Not found** exit of *Open check task?* to it and name it *Ended by a colleague?*
2. Click **Add condition** and under **Variable** choose `triggeredBy.id`
3. Choose the comparison **is not empty**
`{triggeredBy.id}` is empty if the system ended the occupation, for example a scheduled task. Then the flow goes via **No**.
### 6. Creating the task [#6-de-taak-aanmaken]
Add a **Create task** step, name it *Create check task* and connect the **Yes** exit to it. Fill in the fields like this:
| Field | Value |
|---|---|
| **Title** | `Check {occupation.terrain.name}` |
| **Description** | `Generated automatically.`, an empty line, and `Occupation ended by @{triggeredBy.name}({triggeredBy.id})` |
| **Priority** | **Low** |
| **Due after** | 7 days |
| **Also assign whoever caused the event** | On |
| **Link to records** | On |
| **Subtasks** | Five lines: *Cleaning*, *Inventory*, *Internet + TV*, *QR code frame*, *Check for odd jobs* |
With `@{triggeredBy.name}({triggeredBy.id})` the colleague is mentioned in the description. If you want the task to go on a board, choose a board under **Add to board** and a column under **Column**. Whoever must always receive the task, you choose under **Assign to**.
Keep the title the same as in *Open check task?*. Otherwise the search step will not find the task the next time.
### 7. The task for the system [#7-de-taak-voor-het-systeem]
1. Click the step *Create check task* and then **Duplicate step**
2. Name the copy *Create check task (system)* and connect the **No** exit to it
3. Set the **Description** to only `Generated automatically.`
### 8. Testing and enabling [#8-testen-en-inschakelen]
1. Check that there is no issues button (such as **1 issue**) at the top of the panel
2. Open the **Test run** tab and click **Run test**. You see which path the flow takes and which title and description the task would get. Nothing is created
3. Turn the **Active** switch on
## Why two steps instead of one [#waarom-twee-stappen-in-plaats-van-één]
You can also use the **Find task** and **Set task priority** steps separately. If, for example, you want to do nothing when the task already exists, simply connect nothing to **Found**. If you want to give the existing task a comment or a different status, put another step after **Found**, such as **Set task status** with `{foundTask.id}`.
## What happens in practice [#wat-er-in-de-praktijk-gebeurt]
| Situation | What the flow does |
|---|---|
| No open check task for this terrain | Creates a new task with five subtasks |
| Open task with priority **Low** | Sets it to **Medium** |
| Open task with priority **Medium** | Sets it to **High** |
| Open task with priority **High** or **Urgent** | Leaves the priority as it is |
| Occupation on a different terrain type | Does not start |
The task is in the name of [**Workflow**](/automatiseringen/workflow-gebruiker) and is linked to the terrain and the customer of the occupation, and to the reservation if there is one. Not every occupation has a reservation. The colleague who ended the occupation is on the task as the assigned person.
# Who runs an automation? (/en-GB/automatiseringen/workflow-gebruiker)
An automation does not work under your name. All steps are run by a fixed user of your organisation called **Workflow**.
## What you will notice [#wat-je-ervan-merkt]
- A task that an automation creates is recorded under the name **Workflow**
- A comment that an automation adds through an [API request](/automatiseringen/acties/integraties#api-verzoek) is also recorded under the name **Workflow**
- In the editor, as long as you have not selected a step, the panel on the right reminds you that steps are run as your organisation's **Workflow** user, never as yourself
This way it is always clear what a colleague did and what an automation did. Your name never appears on something you did not do yourself.
## What **Workflow** is [#wat-workflow-is]
- A system user, not a colleague. You cannot log in with it and it has no mailbox
- There is one per organisation. It exists only within your organisation and cannot do anything anywhere else
- It has all permissions within your organisation, like an administrator. That is also why only administrators can create and change automations
- It is not a member of the organisation, as a colleague is
Because **Workflow** is allowed to do everything, an automation can also do everything the Tillor API allows. An **API request** can, for example, change or delete data. So keep your flows small and test them well.
## What **Workflow** is not allowed to do [#wat-workflow-niet-mag]
An automation cannot create, change, enable or delete automations, and cannot view their runs. An API request for that is refused. This way a flow cannot change itself or another flow.
## Event caused by **Workflow** [#gebeurtenis-veroorzaakt-door-workflow]
What **Workflow** does causes ordinary events, for example a new task. In the timeline and in webhooks, **Workflow** then appears as the cause. Such events do not start automations: a flow cannot start itself or another flow. A run that is waiting with **Wait for an event** does carry on with it: that cannot start a new flow, so it cannot cause a loop either. You can read more about this in [Frequently asked questions](/automatiseringen/veelgestelde-vragen#kan-een-automatisering-zichzelf-blijven-starten).
## Who you assign to [#wie-wijs-je-toe]
**Workflow** is never assigned a task itself and never receives a message from **Notify colleagues**. If you want a colleague to pick up the task, choose a colleague under **Assign to**, or tick **Also assign whoever caused the event**.
# Register a payment (/en-GB/betalingsverwerking/betaling-registreren)
You register a payment on a booked invoice with an outstanding balance. The payment screen is the same for all methods. Only the fields under **Payment method** differ.
### Open the invoice [#open-de-factuur]
Go to Administration > Invoices or open the invoice from Customers > customer > Invoicing. The invoice must be booked and have an outstanding balance.
### Click Make payment [#klik-op-maak-betaling]
The **New payment for** screen for the invoice opens. At the top are the invoice total and the outstanding amount.
### Choose the payment method [#kies-de-betaalmethode]
Under **Payment method**, choose how the payment comes in. Which options you see depends on the invoice and on what your organisation has set up.
- **Terminal** sends the request to a card terminal. See [Terminal](/betalingsverwerking/terminal).
- **Cash**, **Transfer** and possibly **Others** register money that came in outside Tillor. See [Cash and transfer](/betalingsverwerking/contant).
- **Internal Transfer** moves balance to another invoice of the same customer. See [Internal transfer](/betalingsverwerking/interne-overboeking).
- **SEPA Mandate** collects the amount using an active mandate of the customer. See [Collecting an invoice](/betalingsverwerking/incasso).
### Enter the amount [#vul-het-bedrag-in]
**Amount** defaults to the outstanding amount. Use the 25%, 50%, 75% and 100% buttons to quickly fill in a part, or type an amount yourself. The amount cannot be higher than the outstanding amount.
### Submit the payment [#voer-de-betaling-uit]
Click **Submit payment**.
## What happens next? [#wat-gebeurt-er-daarna]
The outstanding amount and the payment status of the invoice are updated. The payment appears on the invoice under **Payments** and in Administration > Payments. How to find them is covered in [Finding payments](/betalingsverwerking/betalingen-bekijken).
Would the customer rather pay themselves? Then send the invoice with **Send notification**. See [Paying online](/betalingsverwerking/online).
## Problems? [#problemen]
The button only appears on a booked invoice with an outstanding balance. A draft invoice has to be booked first. A fully paid invoice no longer has a button.
The customer has no active mandate whose maximum amount is high enough for this amount. For a credit note the method is not in the list. See [Collecting an invoice](/betalingsverwerking/incasso).
Terminal only appears in the list if Mollie is connected and your organisation can receive card payments. See [Terminal](/betalingsverwerking/terminal).
# Finding payments (/en-GB/betalingsverwerking/betalingen-bekijken)
You can see payments in three places: on the invoice itself, in the overview of all payments and in the detail screen of a payment.
## View the payments of an invoice [#betalingen-van-een-factuur-bekijken]
Open the invoice and scroll to **Payments**. You only see the payments attached to this invoice.
## Search all payments [#alle-betalingen-doorzoeken]
Go to Administration > Payments. Filter by date, payment method, status or customer, or search by customer name or invoice number.
Through the action menu (three dots) on a payment you can, depending on the payment:
| Action | What it does |
|---|---|
| **Details** | Opens the detail screen |
| **Payment PDF** | Creates a proof of payment |
| **Sync** | Fetches the current status from Mollie. Only for Mollie payments that already exist at Mollie |
| **Skip delay** | Sends a scheduled direct debit to the bank now. See [Collecting an invoice](/betalingsverwerking/incasso) |
| **Unassign from invoice** | Removes the payment from the invoice |
| **Cancel** | Cancels a payment that has not been completed yet |
| **Delete** | Deletes the payment |
## Read the details of a payment [#de-details-van-een-betaling-lezen]
Click **Details** for the **Payment Details** screen. You see the amount, the status, the method, the invoice and a timeline.
- **Due date** appears on a pending SEPA direct debit. The status then shows Expected with that date.
- **Send after** appears on a direct debit that Tillor has not yet sent to the bank.
- **Payment Report** shows the report the payment ends up in. As long as the payment is not yet in a report, the report number is shown with **(expected)** after it. For a Mollie payment it says **With the next Mollie payout**, because the report is only known at the payout.
You can read more about reports in [Payment reports](/boekhouden/betalingsrapporten).
## Status labels [#statuslabels]
| Status | Meaning |
|---|---|
| Pending | The payment is still in progress |
| Authorized | Approved, not yet completed |
| Paid | Completed |
| Failed | Did not succeed |
| Canceled | Stopped before it was finished |
| Expired | The payment session ran out |
| Refunded and Partially Refunded | The amount has been returned in full or in part |
| Refund Pending and Partial Refund Pending | The refund has been created at Mollie, but the money has not reached the customer yet. The refunded amount already counts in the invoice balance. Once Mollie carries out the refund, the status becomes **Refunded** or **Partially Refunded** |
| Charged Back | The bank or card issuer has taken the amount back |
## Follow up outstanding amounts [#openstaande-bedragen-opvolgen]
Go to Administration > Invoices. The **Invoices with Open Balance** card shows booked invoices that have not yet been paid in full. In the tables, filter on payment status **Outstanding** and sort by due date.
### Send a reminder [#een-aanmaning-versturen]
You send a reminder per invoice, not in bulk.
### Open the invoice [#open-de-factuur]
Choose an invoice that is still outstanding.
### Send the reminder [#verstuur-de-aanmaning]
Click **Send notification** and choose **Send reminder**. Confirm the sending.
The customer receives a reminder with a link to pay online. See [Paying online](/betalingsverwerking/online).
## Problems? [#problemen]
Use **Sync** in the action menu of the payment. Tillor then fetches the current data. This helps especially if a notification from Mollie was missed.
The action only appears for Mollie payments that already have a transaction at Mollie. For a direct debit that Tillor has not sent yet, there is nothing to fetch.
# Register cash and transfer payments (/en-GB/betalingsverwerking/contant)
With **Cash**, **Transfer** and possibly **Others** you record that a customer paid outside Tillor. Tillor then sends nothing. It updates the outstanding balance of the invoice.
- **Cash**: the customer pays in cash at the desk.
- **Transfer**: you received a bank transfer that was not automatically matched to the invoice.
- **Others**: for other payments with their own description, such as a cheque or an exchange. The method only appears if your organisation has turned it on.
## Register a payment [#een-betaling-registreren]
### Open the payment screen [#open-het-betaalscherm]
Open a booked invoice with an outstanding balance and click **Make payment**.
### Choose the method [#kies-de-methode]
Under **Payment method**, choose **Cash** or **Transfer**.
### Enter the amount [#vul-het-bedrag-in]
Type an amount or use the 25%, 50%, 75% and 100% buttons.
### Check the date received [#controleer-de-datum-van-ontvangst]
**Date received** defaults to today. Change it if the money came in on another day.
### Add a note if needed [#voeg-eventueel-een-opmerking-toe]
Under **Note** you can enter a reference number or note. For **Others**, a description is required.
### Submit the payment [#voer-de-betaling-uit]
Click **Submit payment**.
The date determines which payment report the payment ends up in. If you register a payment from yesterday today, set the date to yesterday so the right report is topped up.
## What happens next? [#wat-gebeurt-er-daarna]
The payment appears immediately on the invoice and in Administration > Payments. See [Finding payments](/betalingsverwerking/betalingen-bekijken).
For **Transfer** you can also have the customer receive an email with the tip to use the structured communication for future transfers. The **Send structured communication reminder** checkbox is in the payment screen. The checkbox is greyed out if the customer has no email address.
## Settings for manual payments [#instellingen-voor-handmatige-betalingen]
Under Support > Settings > Payments you will find these settings:
| Setting | What it does |
|---|---|
| **Show "Others" payment method** | Adds the **Others** method to the payment screen |
| **Cash payment maximum** | The highest cash amount per payment, 2999 euros by default |
| **Default: manual bank transfer reminder** | Turns the reminder checkbox on by default |
| **Cash payment maximum** | Highest amount you can register as a cash payment, in whole euros (default 2999) |
## Problems? [#problemen]
A cash payment cannot be higher than the **Cash payment maximum** under Support > Settings > Payments (2999 euros by default). Register the amount in parts, or choose another method.
The method is turned off. Turn on **Show "Others" payment method** under Support > Settings > Payments.
Manual payments are not available for every invoice. The screen says so.
## See also [#zie-ook]
# Payment groups (/en-GB/betalingsverwerking/groepen)
A payment group bundles several incoming payments under one name, so you can attach them to a booked invoice in one go. Handy if you only want to reconcile at the end of the day or of an activity.
Examples:
- **Closing a till shift**: all card payments of the day are in one group. You attach them to the daily revenue invoice.
- **Invoicing an activity**: participants pay online in advance. When booking, you attach the whole group to the invoice.
- **A reservation with deposit and balance**: deposit and final payment are in one group and are assigned in one go.
## The rules [#de-regels]
- A group has the status Open (not yet attached) or Assigned (already attached to an invoice).
- A group has no customer of its own. The customer follows from the invoice you attach the group to.
- You can only move the payments in a group together. You cannot attach an individual payment from a group to another invoice.
- You can only attach a group to a booked invoice. Draft invoices can still change or disappear.
## Attach a group to an invoice [#een-groep-aan-een-factuur-koppelen]
### Open the payment groups [#open-de-betalingsgroepen]
Go to Administration > Payments and look under **Payment groups**. By default the list only shows open groups. Change the **Status** filter to also see assigned groups.
### Choose Assign [#kies-koppelen]
Open the action menu (three dots) on an open group and choose **Assign**.
### Choose the invoice [#kies-de-factuur]
Select the booked invoice the whole group should be attached to.
### Confirm [#bevestig]
Click **Assign** in the window. All payments in the group go to that invoice in one go, and the group gets the status Assigned.
You can also do it from the invoice. There, choose **Assign payment** in the action menu, go to the **Payment groups** tab and click **Assign group**.
## What happens next? [#wat-gebeurt-er-daarna]
An assigned group appears on the invoice PDF as one line with the total of the group. You expand the individual payments in the payment overview of the invoice. You see the group itself again in the details of each payment in it.
If the group contains a Mollie payment that already exists at Mollie, **Sync** appears next to **Assign**. That action fetches the current data of all suitable payments in the group at once. This helps if you are unsure about the status or a notification was missed. You can remove an empty group with **Delete**.
## How do payments get into a group? [#hoe-komen-betalingen-in-een-groep]
Your till or activity system can pass a group name when it creates a Mollie payment. Tillor then creates a group itself, or uses an existing open group, and puts the payment in it. The fields for this are in [Mollie metadata](/ontwikkelaars/mollie-metadata#ingestie-hints-voor-betalingsgroepen).
## Problems? [#problemen]
The invoice is still a draft. Book it first, because only booked invoices can receive a group.
That is not possible for a payment that is still in a group. Work at the level of the group.
## See also [#zie-ook]
# Collect an invoice with a mandate (/en-GB/betalingsverwerking/incasso)
If a customer has an active mandate, Tillor can collect an invoice from their bank account. You choose how: you attach the mandate to the invoice so collection starts by itself after booking, or you start the collection manually with **Make payment**.
You request a mandate through [Having a SEPA mandate signed](/betalingsverwerking/mandaat). You cannot collect a credit note.
## Have an invoice collected automatically [#een-factuur-automatisch-laten-innen]
### Open the invoice [#open-de-factuur]
Go to Administration > Invoices and open a draft or booked invoice of the customer.
### Choose the mandate [#kies-het-mandaat]
Under **Direct-debit mandate**, choose the customer's mandate. Only active mandates are in the list. Choose **No mandate** to remove the link again.
The field tells you what happens: Tillor immediately creates an outstanding payment, and the bank is charged two days after booking. Until then you can cancel the payment.
### Book the invoice [#boek-de-factuur]
After booking, the invoice shows **Collection is scheduled for** with the date. On that day Tillor sends the direct debit to the bank.
If the invoice was already booked when you attached the mandate, the same two-day period applies from that moment. Once Tillor has sent the direct debit to the bank, you can no longer change the mandate on the invoice.
### The maximum amount of a mandate [#het-maximumbedrag-van-een-mandaat]
Every mandate has a maximum amount. You see it in the list of mandates as **max.** with an amount. If an invoice is higher, then:
- the mandate is greyed out in the list, with a message that the maximum is lower than the invoice amount;
- the invoice shows a message that the invoice amount exceeds the maximum of the mandate;
- Tillor cannot book an invoice with such a mandate attached.
Then choose a mandate with a higher maximum, or let the customer pay another way.
## Start a direct debit manually [#een-incasso-handmatig-starten]
### Open the payment screen [#open-het-betaalscherm]
Open the booked invoice and click **Make payment**.
### Choose SEPA Mandate [#kies-sepa-mandaat]
Under **Payment method**, choose **SEPA Mandate**. If it is greyed out, the customer has no active mandate that can cover the amount.
### Choose the mandate and the delay [#kies-het-mandaat-en-de-vertraging]
Select the **Mandate**. Tillor picks the first active mandate that can cover the amount. Under **Delay (days)** enter 0 to 7 days. With 0 the direct debit goes to the bank immediately, with a higher number Tillor waits that many days.
### Submit the payment [#voer-de-betaling-uit]
Click **Submit payment**.
## What happens next? [#wat-gebeurt-er-daarna]
The payment appears on the invoice and in Administration > Payments.
- As long as the direct debit is waiting, the details show **Send after** with the date. Choose **Skip delay** in the action menu to send it to the bank now, or **Cancel** to stop it.
- After sending, the payment has the status Pending with the **Due date**. A SEPA direct debit takes a few days. Then it becomes Paid, or Failed if the bank rejects the direct debit.
- In the accounting, a pending direct debit already counts as a payment in progress. If it fails or you cancel it, it disappears from the draft again. See [Payment reports](/boekhouden/betalingsrapporten).
- On the payment page the customer sees **Paid by direct debit** with the amount and the date, and no payment buttons. This way nobody pays twice. The invoice PDF and the invoice email state the amount and the collection date.
Tillor deducts the small first payment with which a customer confirmed their mandate from the next invoice.
## Collect utility invoices automatically [#nutsfacturen-automatisch-innen]
You can have consumption invoices for water, electricity and gas collected automatically with the customer's mandate.
- If the customer ticks **Also use this mandate to pay my utility bills (water, electricity, gas) automatically** when signing, Tillor sets up this mandate as soon as it is active. The checkbox is ticked by default.
- You can also choose the mandate yourself under Customers > customer > Invoicing, in the **Invoice Settings** card, under **Mandate**.
- In the list of mandates, the mandate for utilities is marked **Utility bills**.
A new consumption invoice then gets this mandate automatically as its **Direct-debit mandate**.
## Problems? [#problemen]
The customer has no mandate with the status Active whose maximum is high enough. Check the **Mandates** card under Customers > customer > Invoicing.
The attached mandate has a lower maximum than the invoice amount. Choose another mandate or remove the mandate from the invoice.
Tillor has already sent the direct debit to the bank. Follow the payment in Administration > Payments.
Open the payment for the reason. The invoice is open again. Choose **Make payment** for a new direct debit or another method, or send the customer a payment link with **Send notification**.
As long as the payment under Administration > Payments still shows **Send after**, you can cancel it. If it has already been sent, that is no longer possible. You can revoke the mandate for the following invoices, see [Revoking a mandate](/betalingsverwerking/mandaat-beheren).
Automations can also collect: the step [Collect by direct debit](/automatiseringen/acties/facturen-en-betalingen#innen-via-domiciliëring).
## See also [#zie-ook]
# Overview (/en-GB/betalingsverwerking)
A payment in Tillor usually belongs to a booked invoice. The customer can pay online themselves, you can register a payment at the desk, or Tillor collects the amount automatically through a SEPA mandate. On this page you see which method is for what.
- A payment belongs to a booked invoice. You cannot pay on a draft.
- A cash payment can be at most 2999 euros by default. You change that with **Cash payment maximum** under Support > Settings > Payments.
- Above 2500 euros, the payment page warns the customer that the bank or card may refuse the online payment. The customer then gets the IBAN and the structured communication to transfer the money.
- A direct debit with a mandate goes to the bank two days after booking. With **Make payment** you choose a delay of 0 to 7 days yourself. Until the direct debit leaves, you can cancel it.
- If an invoice is higher than the maximum of the mandate, you cannot collect it. If that mandate is on the invoice, you cannot book the invoice either.
- The signing link of a mandate works for 14 days. Tillor reminds the customer after 7 days, 2 days before it expires and on the last day.
- An internal transfer is only possible between two booked invoices of the same customer.
- Tillor cannot refund money to a customer. You arrange a refund outside Tillor, for example with a bank transfer.
## How does this fit together? [#hoe-hangt-dit-samen]
Every method ends in the same place: a payment on the invoice. From there it flows on to the payment report and your accounting.
```mermaid
flowchart LR
F[Booked invoice] --> M{Payment method}
M -- Online --> P[Payment]
M -- Terminal --> P
M -- Cash or transfer --> P
M -- SEPA direct debit --> P
M -- Internal transfer --> P
P -- Status and balance --> F
P -- Per day --> R[Payment report]
R --> B[Accounting]
```
A direct debit first stays Pending. The invoice then already shows as paid (pending). If the collection fails, the invoice is open again. Payment reports and the link with accounting software are covered in [Accounting](/boekhouden).
## Which method do you choose? [#welke-methode-kies-je]
| Method | When | How the customer pays | What Tillor books |
|---|---|---|---|
| [Paying online](/betalingsverwerking/online) | The customer pays themselves, at home or on the road | Through the link in the invoice email or text message, with iDEAL, Bancontact, credit card or another method | The payment as soon as the payment partner confirms it, even if the customer does nothing more |
| [Terminal](/betalingsverwerking/terminal) | The customer is at the desk | With card or phone on a Mollie card terminal | The payment as soon as the terminal completes it |
| [Cash and transfer](/betalingsverwerking/contant) | Money received outside Tillor | Cash at the desk or a bank transfer | The payment you register, with the date received |
| [SEPA mandate](/betalingsverwerking/incasso) | Recurring or large invoices, consumption | They don't. Tillor collects the amount from the bank account | A pending payment until the bank confirms the collection |
| [Internal transfer](/betalingsverwerking/interne-overboeking) | Moving balance between two invoices of the same customer | They don't. No money comes in | Two linked payments, one positive and one negative |
Online payments, card payments and direct debits go through Mollie. You register cash payments and transfers yourself.
} description="The payment screen on a booked invoice" />
} description="Per invoice, in the overview and in the details" />
} description="The payment page the customer sees" />
} description="Card payments at the desk" />
} description="Register payments outside Tillor" />
} description="Move balance between invoices" />
} description="Remotely or at reception" />
} description="Collect automatically with a mandate" />
} description="Bundle payments and attach them in one go" />
} description="Worked examples from practice" />
## Terms [#begrippen]
- **Payment**: a received or pending amount, with a method, a status and usually an invoice.
- **Mandate**: a customer's permission to collect invoices from their bank account. See [SEPA mandate](/betalingsverwerking/mandaat).
- **Payment group**: a bundle of payments that you later attach to an invoice in one go. See [Payment groups](/betalingsverwerking/groepen).
- **Payment report**: the daily overview of received payments for the accounting. See [Payment reports](/boekhouden/betalingsrapporten).
- **Internal transfer**: moving balance between two invoices of the same customer, without any money coming in.
- **Direct debit**: Tillor collects the amount from the customer's bank account, with their mandate.
- **Customer**: the customer the invoice belongs to. See [Customer](/begrippen#klant).
# Make an internal transfer (/en-GB/betalingsverwerking/interne-overboeking)
With **Internal Transfer** you move an amount from one booked invoice to another booked invoice of the same customer. No money comes in. Tillor creates a positive payment on the invoice you write off and a linked negative payment on the target invoice.
This is not a cash payment, card payment or bank transfer. Those methods are separate in the payment screen.
## Register an internal transfer [#een-interne-overboeking-registreren]
### Open the payment screen [#open-het-betaalscherm]
Open the booked invoice with an outstanding balance and click **Make payment**.
### Choose Internal Transfer [#kies-interne-overboeking]
Under **Payment method**, choose **Internal Transfer**.
### Choose the target invoice [#kies-de-doelfactuur]
Under **Target invoice**, select the booked invoice the amount goes to. The list only shows booked invoices of the same customer.
### Enter the amount [#vul-het-bedrag-in]
Type an amount or use the 25%, 50%, 75% and 100% buttons.
### Submit the payment [#voer-de-betaling-uit]
If needed, fill in **Date received** and click **Submit payment**.
## What happens next? [#wat-gebeurt-er-daarna]
- Tillor creates two linked payments, **Internal transfer from** and **Internal transfer to**, each with the invoice number of the other invoice.
- The outstanding balance of both invoices is updated.
- If you delete one of the two payments, Tillor deletes the other one too.
## Internal transfer and accounting [#interne-overboeking-en-boekhouding]
- An internal transfer appears on the payment report of the day you register it. If you register it today, it immediately appears on today's [draft report](/boekhouden/betalingsrapporten#concept-en-definitief).
- It goes into the accounting export, together with the Mollie payments.
- Cash payments, bank transfers and bank accounts do not go into the accounting export.
## After reversing an invoice with Extend occupation [#na-het-omkeren-van-een-factuur-met-bezetting-verlengen]
With **Reverse invoice** you turn an invoice into a credit note. An internal transfer between those two invoices is only a settlement in the accounting. It does not extend or shorten the occupation a second time.
What that means for **Paid until**:
- On the original invoice, **Paid until** does not change.
- On the credit note, **Paid until** only moves back if the original invoice had already been paid with a real payment, such as cash, transfer or Mollie. If it was only settled with an internal transfer, **Paid until** stays the same.
- **Invoiced until** was already adjusted at booking.
## Problems? [#problemen]
Only booked invoices of the same customer appear. Book a draft invoice first, and do not choose the same invoice you are making the payment on.
## See also [#zie-ook]
# Revoke or resend a mandate (/en-GB/betalingsverwerking/mandaat-beheren)
All actions for a mandate are in the menu (three dots) at the end of the row on the **Mandates** card. You will find that card under Customers > customer > Invoicing. Which actions you see depends on the status.
| Status | Actions in the menu |
|---|---|
| Awaiting signature | **Show on the iPad**, **Send reminder**, **Resend signing link**, **Cancel request** |
| Link expired | **Resend signing link**, **Cancel request** |
| Activation failed | **Cancel request** |
| Active | **Open signed mandate**, **Revoke mandate** |
| Revoked | **Open signed mandate** |
**Show on the iPad** only appears if the Tillor app on a device of your organisation is online.
## Resend an open request [#een-openstaande-aanvraag-opnieuw-versturen]
### Open the menu on the request [#open-het-menu-bij-de-aanvraag]
Find the request with the status Awaiting signature or Link expired.
### Choose the action [#kies-de-actie]
- **Send reminder** emails the customer again, with a new link. The end date does not change.
- **Resend signing link** emails a new link that works for another 14 days.
A link sent earlier no longer works after either action.
Tillor shows **Reminder sent** or **Signing link sent again**. The customer receives an email. How the automatic reminders work is covered in [Having a SEPA mandate signed](/betalingsverwerking/mandaat#herinneringen-voor-het-tekenen).
## Cancel a request [#een-aanvraag-annuleren]
Choose **Cancel request** if the customer no longer needs to sign. The request gets the status Canceled. If it is on the tablet, it disappears there. After that you can start a new request.
## Revoke an active mandate [#een-actief-mandaat-intrekken]
Revoke a mandate if the customer may no longer be charged, for example after a move, a cancelled contract or at the customer's request.
For automatic payment you will then need a new mandate, with a new signature from the customer.
### Choose Revoke mandate [#kies-mandaat-intrekken]
Open the menu on the active mandate and choose **Revoke mandate**.
### Confirm [#bevestig]
In the **Revoke this mandate?** screen, click **Revoke**. Tillor shows **Mandate revoked**.
What happens next:
- No more invoices are collected through this mandate. Direct debits that Tillor had not yet sent to the bank are cancelled.
- The status of the mandate becomes Revoked.
- The signed document is kept as proof, but moves to the archive. In the customer's documents you will find it under **Archived**, so the list only shows mandates that still apply.
- The customer receives an email saying the mandate has been revoked, with a copy of the signed document.
Mandates that were set up outside Tillor only show **Revoke mandate** in the menu.
## Problems? [#problemen]
The action only appears for a mandate with the status Active. You cancel a request that has not been signed yet with **Cancel request**.
Revoking only cancels direct debits that Tillor had not yet sent to the bank. You follow a direct debit that is already on its way under Administration > Payments.
Choose the mandate under **Direct-debit mandate** on the invoice. See [Collecting an invoice](/betalingsverwerking/incasso).
## See also [#zie-ook]
# Having a SEPA mandate signed (/en-GB/betalingsverwerking/mandaat)
With a SEPA mandate, a customer gives permission to collect invoices automatically from their bank account. The customer signs the mandate in Tillor itself. Tillor stores the signed document with the customer, and after that you can have invoices collected. That is covered in [Collecting an invoice](/betalingsverwerking/incasso).
Before you start:
- Mandates must be enabled for your organisation. If they are not, the **Create Mandate** button says you need to contact the administrator.
- The customer needs an email address.
- A customer can only have one open request at a time.
## Request a mandate [#een-mandaat-aanvragen]
### Open the customer [#open-de-klant]
Go to Customers > customer > Invoicing. At the bottom is the **Mandates** card with all the customer's mandates and requests.
### Click Create Mandate [#klik-op-mandaat-aanmaken]
A menu opens with one or two choices. Choose how the customer signs.
Choose **Send mandate invitation**. The customer receives an email with a link to the signing page, and Tillor shows **Mandate sent for signature to** the customer's email address.
The link works for 14 days, up to and including the last day. The customer does not have to enter an IBAN. They choose for themselves how to confirm the mandate.
Choose **Sign on the reception iPad**. The mandate appears on the tablet at reception, and Tillor shows **Mandate is on the iPad for the customer to sign**.
This choice only appears in the menu if the Tillor app on a device of your organisation is online. See [Tablets and kiosks](/mobiele-app/tablets-en-kiosken). The customer signs with their finger on the tablet. The signed document records that it was signed at reception, and which colleague used the tablet.
Has the request already been sent and do you still want to show it on the tablet? Open the menu on the request and choose **Show on the iPad**.
## What does the customer do? [#wat-doet-de-klant]
The customer goes through a number of screens. On the tablet these are the same screens, with a few differences listed below.
### View the mandate [#het-mandaat-bekijken]
The **Sign your SEPA mandate for** your organisation page shows who the creditor is, for whom they collect and what kind of payment it is. The customer taps **Sign mandate**.
### Accept the text [#de-tekst-accepteren]
The customer reads the summary or, via **Read the full mandate text**, the whole text, and ticks that they agree.
Below that is a second checkbox to also use the mandate for utility bills (water, electricity, gas). That checkbox is ticked by default. See [Collecting an invoice](/betalingsverwerking/incasso#nutsfacturen-automatisch-innen).
### Sign [#tekenen]
The customer signs with a finger or mouse.
### Choose the confirmation [#de-bevestiging-kiezen]
Under **How would you like to authorise?** the customer chooses between two ways to confirm.
- **A small first payment** with their own bank or card, for example through iDEAL, Bancontact, credit card or Apple Pay. The amount is between 0 and 1 euro, depending on the method. This way the bank confirms that the account is the customer's, and the customer does not have to type in an IBAN. Tillor deducts the amount from the next invoice.
- **Bank account (SEPA)**: the customer enters their IBAN, confirms that the account is theirs and enters a six-digit code. That code arrives by text message on the customer's phone number, or by email if no number is known.
On the tablet the IBAN route works the same way: the code goes by text message to the customer's phone. If the customer chooses the first payment, the tablet shows a QR code that the customer scans with their phone to pay.
## What happens next? [#wat-gebeurt-er-daarna]
- The mandate appears in the list with the status Signed, activating, or Awaiting first payment if the customer chose the small payment.
- As soon as the mandate is valid at the payment partner, the status becomes Active. The customer receives a copy of the signed mandate by email.
- Tillor stores the signed document with the customer's documents. You open it through the menu on the mandate with **Open signed mandate**. The document is sealed and carries a timestamp, so a later change in a PDF reader is visible. See [Seal and timestamp](/handtekeningen/bewijs-en-geldigheid#zegel-en-tijdstempel).
- If the customer's window was closed before the first payment was complete, the request stays open. The customer can try again through the same link or switch to their IBAN.
## Statuses [#statussen]
| Status | Meaning |
|---|---|
| Awaiting signature | The customer has not signed yet |
| Signed, activating | Signed with IBAN, Tillor is creating the mandate |
| Awaiting first payment | Signed, the small payment still has to succeed |
| Active | You can use the mandate for direct debit |
| Activation failed | The payment partner refused the mandate. Tillor tries again later |
| Link expired | The customer did not sign within 14 days |
| Canceled | You canceled the request |
| Revoked | The active mandate has been revoked |
Mandates that were set up outside Tillor show the statuses Pending, Active, Inactive and Canceled. You can only use an active mandate for direct debit.
## Reminders before signing [#herinneringen-voor-het-tekenen]
Tillor sends the customer reminders by email on its own while the request is open: when 7 days remain, two days before it expires and on the last day. Every reminder contains a fresh signing link.
Do you want to give the customer a nudge yourself? In the menu on the request, choose **Send reminder**. The end date then stays the same. If the link has expired, or you want to give another 14 days, choose **Resend signing link**. You can read more about these actions in [Revoking or resending a mandate](/betalingsverwerking/mandaat-beheren).
Do you want an automation to react when a request expires? For that there is the trigger **Mandate request expired**, see [Automations](/automatiseringen).
## Problems? [#problemen]
Hover over the button for the reason. Usually the customer has no email address, or mandates are not enabled for your organisation. Add an email address to the customer or ask your administrator to turn mandates on.
Only one request can be open per customer at a time. Resend the existing request or cancel it, and then create a new one.
The option only appears if the Tillor app on a device of your organisation recently had contact with Tillor. Open the app on the tablet, wait a moment and try again.
The code goes to the phone number on the customer profile. Check that it is correct. If the customer has no number, the code comes by email. The customer can ask for a new code.
The customer sees **This signing link has expired**. On the request, choose **Resend signing link**.
The payment partner has refused the mandate. Tillor automatically tries again later. If it keeps failing, cancel the request with **Cancel request** and ask the customer to sign again, possibly with a different confirmation.
## See also [#zie-ook]
# Letting a customer pay online (/en-GB/betalingsverwerking/online)
Paying online goes through the personal payment page of an invoice. The customer opens the page, chooses a payment method and completes the payment at their bank or card issuer. Tillor works with [Mollie](https://www.mollie.com) for this, so Mollie must be connected.
There is no separate Send payment link button. You share the page with a notification or with the personal URL of the invoice.
Before you start:
- The invoice is booked and an amount is outstanding. Otherwise the customer has nothing to pay.
- Mollie is connected. Without methods from Mollie, the customer only sees a pay button, see [Problems?](#problemen).
- The customer has an email address or phone number, or you share the link yourself.
## Send the payment link to the customer [#de-betaallink-naar-de-klant-sturen]
### Book the invoice [#boek-de-factuur]
Paying online is only possible on a booked invoice with an outstanding balance.
### Send a notification [#verstuur-een-notificatie]
Click **Send notification** and choose a channel, such as email or SMS. The customer receives a message with the **View and pay online** button.
Would you rather share it yourself? Open the action menu (three dots) on the invoice and choose **Personal URL**. Tillor copies the link to your clipboard. You send a reminder with the same link with **Send reminder**, see [Finding payments](/betalingsverwerking/betalingen-bekijken#een-aanmaning-versturen). Does the customer want to pay only part of it? Then create a [link for a part payment](/facturen/betalingen-registreren#een-link-voor-een-deelbetaling-maken).
## What does the customer see? [#wat-ziet-de-klant]
The customer opens the **Your invoice from** your organisation page. It shows the amount to pay, an overview of the invoice lines and a button to view the invoice. From that screen the customer continues in three steps.
### Pay [#betaal]
The customer taps **Pay** with the amount. If there is an Apple Pay button, the customer can pay with it directly.
### Choose a method [#kies-een-methode]
Under **How would you like to pay?** are the available methods, such as iDEAL, Bancontact and credit card. The order comes from Mollie and adapts to the customer's language. These rules apply:
- The method the customer used last time on that device is shown with **Last used**.
- For French-speaking customers, Pay By Bank is at the top with **Often the best fit**.
- If a method has a disruption at Mollie, a warning is shown with it, for example that the method is partly unavailable or under maintenance. The customer can still try the method, but the message says it may not work. The text of the disruption comes from Mollie.
### Complete the payment [#rond-de-betaling-af]
What happens next depends on the method and the device. See below.
### Completing on a computer or phone [#afronden-op-computer-of-telefoon]
For iDEAL and Bancontact, Tillor shows a QR code under **Scan to pay with** the chosen method. The customer opens the bank app on their phone and scans the code. The page continues by itself as soon as the payment is in. If the customer would rather pay on the computer, they can do so with **Pay in your browser**.
For Bancontact, Tillor shows the **Pay with the Bancontact app** button. The customer completes the payment in the app and then returns to the page. With **Pay in your browser** the customer can also pay in the browser on the phone.
For other methods, such as credit card, Tillor sends the customer on to the payment partner's payment page and then brings them back. If the redirect does not happen by itself, there is a link to continue.
### If it does not work [#als-het-niet-lukt]
- **Choose another method** takes the customer back to the list.
- **Start over** starts a new payment with the same method. Handy if the customer cancelled in the bank app or nothing happened.
- For a failed, canceled or expired payment, the page reports the outcome and the customer can choose another method.
## What else the page can show [#wat-de-pagina-nog-meer-kan-tonen]
| Situation | What the customer sees |
|---|---|
| The invoice is paid | **Paid in full** with the amount received, and a confirmation by email |
| The bank has started a transfer | **Confirming your payment**. With Pay By Bank this usually takes a few seconds and at most a few working days |
| A SEPA direct debit is scheduled | **Paid by direct debit** with the amount and the date. The customer does not have to do anything. Payment options are not shown, so nobody pays twice |
| The amount is higher than 2,500 euros | A warning that the bank or card may refuse the online payment because of limits, with the IBAN and the structured communication to transfer the money |
| Paying online is not possible for this invoice | **Pay by bank transfer** with the bank details |
## What happens next? [#wat-gebeurt-er-daarna]
The personal link has no expiry date. So the customer can still open it later. As soon as Mollie confirms the payment, it appears on the invoice and in Administration > Payments. The invoice goes to Paid when the full amount is in. You do not have to register anything yourself. See [Finding payments](/betalingsverwerking/betalingen-bekijken) for statuses.
## Problems? [#problemen]
Mollie is then not passing on any methods. The customer only sees the pay button and goes directly to Mollie's payment page with it. If that stays so, check the connection with Mollie.
Open the payment via Administration > Payments and use **Sync**. With Pay By Bank, confirmation can take a few working days.
Mollie reports that the method is having problems. The customer can choose another method or try again later.
Are you integrating your own system with Mollie payments? See [Mollie metadata](/ontwikkelaars/mollie-metadata).
## See also [#zie-ook]
# Paying with a card terminal (/en-GB/betalingsverwerking/terminal)
With the **Terminal** payment method you send the outstanding amount of an invoice to a card terminal at the desk. The customer pays by card or phone, and Tillor records the payment as soon as the terminal completes it.
Tillor is the exclusive [Mollie](https://www.mollie.com) Tech Partner for card payments. Tillor supplies the Mollie terminals and sets up Mollie Connect, the device and the invoice link together with you. Questions about card payments at the desk therefore come to Tillor.
Tillor does not connect Worldline, CCV or other card machines. If you already have such a terminal, we will supply you with a Mollie device. That way online payments, card payments and the [payment report](/boekhouden/betalingsrapporten) stay one chain.
## Starting a card payment [#een-pinbetaling-starten]
### Open the payment screen [#open-het-betaalscherm]
Open a booked invoice with an outstanding balance and click **Make payment**.
### Choose Terminal [#kies-terminal]
Under **Payment method**, choose **Terminal**.
### Choose the terminal [#kies-de-terminal]
Select the terminal at your desk. Tillor only shows terminals that are available at that moment. If you only have one, it is already selected.
### Enter the amount [#vul-het-bedrag-in]
Type an amount or use the 25%, 50%, 75% and 100% buttons. A partial amount is handy for a deposit, or when the customer pays part in cash and part by card.
### Send the payment [#stuur-de-betaling]
Click **Submit payment**. The **Processing payment** screen appears while Tillor sends the request to the terminal.
## What happens next? [#wat-gebeurt-er-daarna]
The screen follows the payment live. The customer pays on the terminal, and the screen goes from **Payment in progress** to **Payment successful**. It closes by itself after a few seconds, and the outstanding balance of the invoice is updated.
While the terminal is waiting, you can tick two boxes:
- **Print A4 when paid** puts the invoice PDF in the queue of the A4 printer as soon as the payment succeeds. The option is greyed out if no connector is online.
- **Mail after payment** emails the invoice to the customer as soon as the payment succeeds. The option is greyed out if the customer has no email address.
If the payment fails or expires, you get the message **Payment failed** or **Payment expired**. Click **Resend to terminal** to try again.
## Setting the default terminal [#de-standaardterminal-instellen]
Tillor activates the card device with your Mollie account. After Mollie has been connected, Tillor picks the terminal itself if there is exactly one active terminal. To choose a different one, go to Settings > Integrations under Mollie, in the **Default terminal** field (next to the **Primary profile**). Tillor then suggests that terminal for a card payment.
## Problems? [#problemen]
The method only appears once Mollie is connected and a terminal belongs to your account. Check the connection under Settings > Integrations.
Tillor only shows terminals that are online and active. Check that the terminal is switched on and connected, and try again.
After a new attempt, an old payment with the status Pending can remain. Cancel it via Administration > Payments with **Cancel** in the action menu, so the invoice is correct.
Email **support@tillor.eu**.
## See also [#zie-ook]
# Occupations (/en-GB/bezettingen)
An occupation records that a customer is using a certain terrain (a camping pitch, a power post and the like). While the occupation runs, Tillor automatically allocates the consumption of the meters on that terrain to the customer. You manage occupations on the customer profile. Start with [Creating an occupation](#een-bezetting-aanmaken).
- A terrain can only be occupied by one customer at a time. Terrains with an active occupation do not appear in the selection list.
- **Paid until** only accepts today or a later date.
- You cannot change the terrain of an occupation afterwards. If a customer moves, end the occupation and create a new one.
- Deleting an occupation cannot be undone, but the consumption up to the end date is kept and can still be invoiced.
- With **Extend occupation (invoice)** the draft invoice gets a due date of 14 days after it is created.
- Only the fields **Type**, **Rent frequency** and **Price** are informational. They do not automatically drive meter registration or invoicing.
## How does this fit together? [#hoe-hangt-dit-samen]
An occupation connects three things: the customer, the terrain and the meters on that terrain. That is how Tillor knows in whose name the consumption goes.
```mermaid
flowchart LR
K[Klant] --> B[Bezetting]
B --> T[Terrein]
T --> M[Meters op het terrein]
M --> V[Verbruiksperiode van de klant]
V --> F[Factuur]
B -->|Bezetting verlengen| F
```
When you create an occupation, Tillor notes the start meter readings; when you end it, the end meter readings. The consumption in between belongs to the customer. A new occupation on the same terrain starts a new period.
## Viewing occupations [#bezettingen-bekijken]
Open a customer profile via Customers > Overview and go to the **Occupations** card on the **Overview** tab.
- For each occupation the table shows the **Terrain**, **Type**, **Rent frequency**, **Price**, **Status** and **Paid until**, with a relative indication such as "in 12 days".
- Next to **Paid until** there is an info icon with **Invoiced until** in a tooltip, if that date has been filled in or is equal to **Paid until**.
- With **Filter occupations...** you search by terrain name.
- Actions per occupation (edit, extend, delete) are in the three-dot menu at the end of the row.
## Creating an occupation [#een-bezetting-aanmaken]
Before you start:
- The terrain must be free. If it is not in the list, it is already occupied. See Problems at the bottom.
- If the terrain has meters, have the start meter readings at hand. If you enter nothing, Tillor uses the last known reading.
### Open the customer profile [#open-het-klantprofiel]
Go to Customers > Overview, open the customer and go to the **Occupations** card.
### Click Create occupation [#klik-op-bezetting-aanmaken]
You will find the button in the toolbar of the table. A dialog opens.
### Fill in the details [#vul-de-gegevens-in]
Only **Terrain** is required. The rest is optional.
- **Terrain**: choose via **Select a terrain**. Only available terrains are in the list. If no terrain is available at all, you see **No available terrains found.**
- **Paid until (optional)**: until when the customer has paid in advance. You choose today or later.
- **Invoiced until (optional)**: leave empty to follow the same date as **Paid until**, or choose your own date.
- **Type**: **Own accommodation** (default) or **Rental caravan**.
- **Rent frequency (optional)**: one of the options your organisation has set up, each with a start month and a number of months (for example starting in January, 6 months). Choose **No frequency** if you do not want to record one.
- **Description (optional)**: an explanation, for example rate agreements.
- **Price**: the occupation takes over the price of the terrain. With **Override inherited terrain price** you enter your own price.
- **Start meter readings (optional)**: appears as soon as the terrain has meters. If it has no meters, you see **No meters linked**.
### Confirm [#bevestig]
Click **Create occupation** to save.
### Entering meter readings [#meterstanden-invullen]
Type the reading yourself via the **Manual** tab. The field shows the last known reading as an example. If there are earlier readings, you can also pick an existing reading via **Select**.
A meter that sends readings by itself does not allow manual entry. Choose an existing reading via **Select a meter reading**.
If you enter a reading that is lower than the previous saved reading, Tillor shows a warning. You can still confirm the lower value or adjust the entry.
### What happens next? [#wat-gebeurt-er-daarna]
- The occupation is active immediately and appears in the table on the customer profile.
- For every meter on the terrain, Tillor starts a consumption period for this customer. New meter readings count as the customer's consumption from now on.
- The terrain is no longer available for another occupation.
## Editing an occupation [#een-bezetting-bewerken]
### Open the menu of the occupation [#open-het-menu-van-de-bezetting]
Click the three-dot menu next to the occupation and choose **Edit**.
### Adjust the fields [#pas-de-velden-aan]
You can change **Type**, **Rent frequency**, **Description**, **Paid until**, **Invoiced until** and **Price**. **Terrain** is read-only. If your organisation has [custom fields](/eigen-velden) for occupations, they appear at the bottom of the dialog.
### Save [#sla-op]
Click **Save changes**. The change appears with a before/after overview on the customer's **Events** tab.
## Ending an occupation [#een-bezetting-beëindigen]
Ending removes the link between customer and terrain. The terrain then becomes available again.
### Choose Delete [#kies-verwijderen]
Click the three-dot menu next to the occupation and choose **Delete**. The **Delete occupation** window opens.
### Choose the date and the end meter readings [#kies-de-datum-en-de-eindmeterstanden]
If the terrain has meters, you can fill in **End meter readings (optional)**. First choose under **Date** the day on which the occupation ends (today or earlier). A field for the end reading then appears per meter. For a manual meter you enter it via **Manual** or pick it via **Select**. An automatic meter always asks for an existing reading via **Select a meter reading**.
### Confirm [#bevestig-1]
Click **Delete**. This cannot be undone.
### What happens next? [#wat-gebeurt-er-daarna-1]
- Tillor closes the customer's open consumption periods. The consumption up to the end date is kept and can still be invoiced.
- The terrain is available again for a new occupation.
- The occupation disappears from the table.
## Invoicing: extending an occupation [#facturatie-bezetting-verlengen]
With **Extend occupation (invoice)** you create a draft invoice for the next period of an occupation, for example the annual pitch fee. You can do this for one occupation or for all of the customer's occupations at once.
Before you start: at least one product must exist with the action **Extend occupation period** (often a pitch fee). See [Products](/producten).
### Start the action [#start-de-actie]
Open the three-dot menu next to the occupation and choose **Extend occupation (invoice)**.
Click **Extend all** in the toolbar. All occupations go on one draft invoice, with one main line per occupation.
### Choose whether to invoice consumption as well [#kies-of-je-verbruik-meefactureert]
Tick **Invoice outstanding consumption for this terrain** (with **Extend all**: **Invoice outstanding consumption (all terrains)**) if you also want to invoice outstanding consumption on the same draft invoice. If nothing is outstanding on the meters concerned, only the lines for extending the occupation remain.
### Create the draft invoice [#maak-de-conceptfactuur]
Click **Create draft invoice**. Tillor uses the first product with the action **Extend occupation period** (alphabetically by name) and builds the lines for you. Then complete the period on the invoice and book it when you are ready.
### What happens next? [#wat-gebeurt-er-daarna-2]
- A draft invoice is ready for the customer, with the message **Ready** and a description of what was created.
- If you book the invoice, Tillor sets **Invoiced until** to the end moment of the line.
- After payment, Tillor updates **Paid until**. **Invoiced until** only moves forward if it was still before that end moment.
If there is already a draft invoice that extends this terrain, Tillor shows **Check before continuing**. A second draft can give duplicate lines or skip a period. Open the existing draft with **Open draft ...**, or choose **Create draft anyway**.
## Paid until, type, rent frequency and price [#betaald-tot-type-huurfrequentie-en-prijs]
| Field | Meaning |
|---|---|
| **Paid until** | Until when the customer has paid in advance. When creating or editing you choose today or later. |
| **Invoiced until** | Until when invoicing has been done. If you leave it empty, the display follows **Paid until**. |
| **Type** | Distinguishes own stay from rental. |
| **Rent frequency** | Records the rhythm of the rent for administrative follow-up. |
| **Price** | Follows the terrain by default, but can be adjusted per occupation. |
## Common scenarios [#veelvoorkomende-scenarios]
### A new guest checks in [#een-nieuwe-gast-checkt-in]
1. Find the customer or add them.
2. Create an occupation on the terrain on the customer profile.
3. Enter the start meter reading, or let Tillor take over the last reading.
4. From now on Tillor links the consumption of the meters on that terrain to this customer.
### A guest leaves [#een-gast-vertrekt]
1. Choose **Delete** on the occupation.
2. Choose the departure date and enter the end meter readings.
3. Confirm. Tillor closes the consumption periods and the terrain is available again.
### A customer moves to another terrain [#een-klant-verhuist-naar-een-ander-terrein]
1. End the current occupation with the end meter readings of the old terrain.
2. Create a new occupation on the new terrain with the start meter readings.
3. Tillor keeps the consumption periods per terrain separate.
## Problems? [#problemen]
Only terrains without an active occupation are in the list. If another customer still has the terrain, end that occupation first. If nothing is available, you see **No available terrains found.** If all terrains are missing and you see **Something went wrong while loading the terrains.**, reload the page.
Another user beat you to it and took the terrain. Reload the customer page, choose another terrain or first end the other customer's occupation.
That is intended. When creating or editing, **Paid until** only accepts today or later.
First choose under **Date** the day on which the occupation ends. A field then appears per meter. If the terrain has no meters, there is no field.
That is a meter that sends readings by itself. Choose an existing reading via **Select a meter reading**. If it says **No meter readings available**, the meter has not sent a reading yet.
Usually there is no product with the action **Extend occupation period**. Create one, see [Products](/producten), and try again. If you extend all occupations at once, also check that they belong to the same customer.
There is already a draft for this terrain, or the terrain has been invoiced until a date that has not been paid yet. Read the message. With **Create draft anyway** you deliberately continue, with **Open draft ...** you first check the existing draft.
That cannot be undone. Create a new occupation on the same terrain. The consumption up to the end date of the old occupation has been kept.
## Terms [#begrippen]
- **Occupation**: a customer on a terrain for a period. See [occupation](/begrippen#bezetting).
- **Terrain**: the pitch itself, with any meters. See [terrain](/begrippen#terrein).
- **Paid until**: the date until which the customer has paid in advance.
- **Invoiced until**: the date until which invoicing has already been done.
- **Consumption period**: the period in which the consumption of a meter is allocated to one customer. See [consumption batch](/begrippen#verbruiksbatch).
- **Rent frequency**: the rhythm of the rent, for example yearly or per half year.
## See also [#zie-ook]
# VAT & Tax (/en-GB/boekhouden/belasting)
Here you can read how VAT ends up on your invoices and how Tillor checks a customer's VAT number. The check runs through VIES, the European service for looking up a VAT number.
## VAT rates [#btw-tarieven]
VAT rates are set per product. Go to **Administration > Products** and open a product to choose the **VAT %** from the available rates (by default 0%, 6%, 9%, 12% and 21%).
## Reverse charge and other regimes without VAT [#btw-verlegd-en-andere-regimes-zonder-btw]
Sometimes you do not charge VAT, but that is not simply a 0% rate: the customer has to declare the VAT themselves, or the supply is exempt. That is why the **VAT %** list of a product contains five regimes below the rates. If you choose one, the product is set to 0% and Tillor knows why.
| Regime | When | Box in the VAT return |
|--------|------|-----------------------|
| **Reverse charge (EU services)** | A service for a VAT-registered customer in another EU country | 44 |
| **Reverse charge (co-contractor)** | Work on immovable property for a Belgian VAT-registered customer who files periodic returns | 45 |
| **Intra-community supply** | Goods you send to a VAT-registered customer in another EU country | 46 |
| **Export outside the EU** | Goods that leave the EU | 47 |
| **VAT exempt** | A supply that is exempt by its nature (article 44 of the VAT Code) | 00 |
A regime does four things that a plain 0% rate does not:
- **On the invoice** the line shows `0%*`, with the legal statement for the regime below the totals, for example *Reverse charge: VAT is payable by the customer*. If two regimes appear on one invoice, the second gets `**`.
- **Booking only works with a VAT number** for the two reverse charge regimes and for an intra-community supply. Enter the number on the customer profile; it then also appears on the invoice.
- **To the accounting system** the line goes with the code of the regime, so it lands in the right box of your VAT return. See [Admisol](/boekhouden/betalingsrapporten/boekhoudsystemen/admisol#btw-regimes).
- **Over Peppol** the line gets the VAT category of the regime.
Tillor does not check whether a customer or a supply qualifies for a regime. If in doubt, ask your accountant.
## VAT number validation [#btw-nummer-validatie]
When you enter a VAT number on the customer profile, Tillor checks it automatically through the European VIES service as soon as the country has been filled in.
### How it works [#hoe-het-werkt]
1. Open **Customers > customer** (section **Customer Details**)
2. Set the **country** and enter the VAT number (for example `NL123456789B01` or `BE0123456789`)
3. Tillor validates the number automatically (after a short pause)
4. For a valid VAT number a green tick appears; click it for company details from VIES
5. Want to copy the name and address? Click **Apply company address** in that window (the company name goes in the first name field)
6. For an invalid VAT number a red icon appears with an explanation
VAT validation works for all EU countries. For non-EU companies you can enter the VAT number manually without validation.
### Supported countries [#ondersteunde-landen]
Validation supports all EU member states, including the Netherlands (NL), Belgium (BE), Germany (DE), France (FR) and all other EU countries.
### Country code on the invoice PDF [#landcode-op-de-factuur-pdf]
On the invoice PDF, Tillor adds a missing country code automatically for countries where that is the usual way of writing it: if you enter `0123456789` for a Belgian customer, the invoice shows `BE0123456789`. This does not happen for Spain, Italy and Portugal, because the national tax number is written there without a country code (a Spanish NIF such as `B04876793` therefore stays unchanged). If you type the country code in the field yourself, it is always kept.
## Belgian customers and Peppol [#belgische-klanten-en-peppol]
For Belgian customers with a VAT number, a **Peppol ID** must be set on the **Invoicing** tab before you can book invoices. This is a legal requirement for B2B invoicing in Belgium.
See the [Peppol documentation](/boekhouden/peppol) for more information.
## VAT on invoices [#btw-op-facturen]
All invoice lines automatically show the right VAT rate based on the linked product. On the invoice you see **Subtotal**, **VAT** and **Total**; the invoice PDF also contains an overview per VAT rate.
Do you have permission to change organisation settings? Go to **Settings > Invoicing** and switch on **VAT rate dropdown on draft invoice lines**. **Draft invoices** then get a column for choosing the rate per line (the options follow the rates configured for your organisation). When you select a product, the product's default rate stays the starting value. In the same column you also choose a [regime without VAT](#btw-verlegd-en-andere-regimes-zonder-btw) for a single line.
## Problems? [#problemen]
Tillor could not confirm the number through VIES. Check the country and the number. For a company outside the EU you can also enter the number without validation.
The customer has no VAT number. Reverse charge and an intra-community supply only exist for a VAT-registered customer. Enter the number under Customers > customer, section **Customer Details**, and book again.
A Peppol invoice can carry only one reason for the absence of VAT. Put the lines of each regime on their own invoice.
You can only choose from the permitted rates, by default 0%, 6%, 9%, 12% and 21%.
The column with rates only appears on draft invoices, and only when **VAT rate dropdown on draft invoice lines** is switched on.
## See also [#zie-ook]
# Payment methods (/en-GB/boekhouden/betalingsrapporten/betaalmethodes)
Payment reports contain payments from different sources. Only **Mollie** and **internal transfers** are sent to the accounting system.
| Method | On the Tillor report | To accounting |
|---------|-------------------|------------------|
| [Mollie](/boekhouden/betalingsrapporten/betaalmethodes/mollie) | Yes (via Mollie settlement) | Yes |
| [Bank accounts](/boekhouden/betalingsrapporten/betaalmethodes/ponto) | Yes (on the payment day) | No |
| [Internal transfer](/boekhouden/betalingsrapporten/betaalmethodes/internal-transfers) | Yes | Yes |
```mermaid
flowchart LR
Mollie[Mollie] --> R[Tillor-rapport]
Bank[Bankrekeningen] --> R
Internal[Interne overboeking] --> R
R --> BH[Boekhouding]
Mollie --> BH
Internal --> BH
```
## See also [#zie-ook]
# Internal transfers (/en-GB/boekhouden/betalingsrapporten/betaalmethodes/internal-transfers)
With **Internal Transfer** you move an outstanding amount from one invoice to another **booked** invoice of the **same customer**. Tillor creates a positive payment on the invoice you are paying and a linked negative payment on the target invoice.
See [Internal transfer - Registering](/betalingsverwerking/interne-overboeking) for the step-by-step registration process with screenshots.
## In payment reports [#in-betalingsrapporten]
- Internal transfers appear on the Tillor payment report of the day you register them (Brussels time).
- They **do** go to the accounting export: together with Mollie payments, and **not** together with bank accounts or other manual methods (cash, bank transfer, ...).
- In the accounting export every line appears as `Tillor - Interne overboeking - {factuurnummer}`, linked to the invoice and customer concerned.
## See also [#zie-ook]
# Mollie (/en-GB/boekhouden/betalingsrapporten/betaalmethodes/mollie)
Mollie payments (iDEAL, credit card, Bancontact, terminal, etc.) are synchronised in Tillor and linked to payment reports via the **Mollie settlement**.
## Connecting in Tillor [#koppelen-in-tillor]
1. Go to **Settings > Integrations** and choose **Mollie** in the list.
2. Follow the Mollie OAuth steps if the connection is not yet active.
3. On the detail page, under **Website profile**, choose a **Primary profile** (the Mollie website profile for payments and synchronisation). Optionally choose a **Default terminal** (the card device Tillor suggests by default on invoices).
4. Click **Save**. Without a primary profile, Mollie payments do not work in Tillor; a terminal is only needed for card payments.
### Status icons in the selection lists [#statusiconen-in-de-keuzelijsten]
To the left of the profile and terminal name is a coloured icon. That is the status at Mollie, not the name itself.
| Icon | Website profile | Terminal |
|-------|----------------|----------|
| Green (tick) | Verified - suitable for live payments | Active - ready for card payments |
| Orange (clock) | Not verified yet at Mollie | Pending - not yet active |
| Red (prohibited) | Blocked | - |
| Grey | - | Inactive |
Preferably choose a **verified** profile. An **active** terminal is optional and only needed if you want Tillor to suggest card payments. Without a primary profile, payments and synchronisation do not run.
## Mollie settlements [#mollie-settlements]
As long as Mollie has not yet paid out a payment, it appears as an **advance** on the open draft report. Only when the report is finalised does the settlement decide which report it belongs to; see [Mollie payments on the draft](/boekhouden/betalingsrapporten#mollie-betalingen-op-het-concept).
For **report day D**, Tillor looks for a settlement in this order:
1. Settlement **created on day D**
2. Otherwise settlement **created on day D+1** (typically: revenue of D is paid out the next morning)
```mermaid
flowchart TD
D[Rapportdag D] --> E{Settlement aangemaakt op D?}
E -- ja --> F[Koppel aan rapport D]
E -- nee --> G{Settlement aangemaakt op D+1?}
G -- ja --> F
G -- nee --> H[Nog geen Mollie op dit rapport]
F --> I[Eén settlement-id per rapport]
```
**Fixed rules:**
- Every settlement id appears on **at most one** payment report.
- Does a report already have a settlement? That link **stays**; Tillor does not replace it.
- If both D and D+1 are missing (for example a weekend): the report may already exist with only manual/bank account payments; as soon as Mollie publishes, the daily synchronisation adds Mollie.
## Examples [#voorbeelden]
| Report day D | Settlement created at Mollie | Result |
|--------------|----------------------------------|-----------|
| Tue 20 May | Tue 20 May (`stl_aaa`) | `PAYR/2026/0140` (20 May) gets `stl_aaa` |
| Tue 20 May | Wed 21 May early (`stl_bbb`) | `PAYR/2026/0140` (20 May) gets `stl_bbb` (rule D+1) |
| Sun 18 May | Mon 19 May (`stl_ccc`) | `PAYR/2026/0138` (Sunday) gets `stl_ccc`, **not** the Monday report |
| Mon 19 May | Mon 19 May (`stl_ccc`) | Monday report looks for its own settlement (`stl_ddd` on Tue or later), not `stl_ccc` |
| Sat 17 May | No settlement Sat/Sun/Mon morning | Report 17 May: manual/bank accounts first; Mollie follows once the settlement exists |
| Tue 20 May | Report already existed without settlement | Next run 09:00: settlement is still added on 20 May, payments linked |
**In practice (D+1):** revenue of **Tuesday 20 May** is in settlement `stl_6necch`, created **Wednesday 21 May** at 06:08. Tillor links `stl_6necch` to **`PAYR/2026/0140` (report day 20 May)**, not to the report of 21 May.
**Existing report:** was `PAYR/2026/0140` already in Tillor without a linked Mollie settlement and with two manual lines? After the synchronisation, `stl_6necch` is still linked; existing lines stay; Mollie payments from that settlement are added.
**Already linked:** report **15 May** already has `stl_old`. Tillor does **not** change that id. Loose Mollie payments with the same settlement id still end up on the report that already has that settlement.
## Synchronisation on existing reports [#synchronisatie-op-bestaande-rapporten]
After creating missing reports, Tillor looks **only at reports without a linked Mollie settlement** in a rolling window of **one calendar month before yesterday** up to yesterday. Reports that already have a Mollie settlement are **not** fetched again via the Mollie settlement list.
```mermaid
flowchart TD
start[Synchronisatie
ma-za 09:00] --> scope[Rapportdag vanaf
maand vóór gisteren t/m gisteren]
scope --> nullOnly[Alleen rapporten
zonder Mollie-afrekening]
nullOnly --> U{Zoek settlement voor D of D+1}
U -- gevonden --> V[Settlement vastleggen]
U -- niet --> W[Geen Mollie-stap]
V --> X[Ongekoppelde Mollie-betalingen
uit settlement koppelen]
X --> Z[Betalingen met dezelfde
settlement-id op dat rapport]
```
Payments that already have a settlement id from Mollie but are not yet on a report end up on the report with the same settlement id.
## Mollie payments in Tillor [#mollie-betalingen-in-tillor]
Tillor fetches Mollie payments **every 15 minutes** (per organisation with an active Mollie connection). Webhooks from Mollie also work immediately: a payment becomes **Paid**, **Refunded** or **Charged Back** straight away, even if it originated outside Tillor (for example a card machine). If in doubt, or after a missed webhook: **Sync** in the action menu of the payment.
A payment ends up on a report if:
- it is in the linked **settlement** (Mollie's list), or
- the payment already has a settlement id that belongs to the report.
| Type in report | Meaning |
|-----------------|-----------|
| Known | Payment linked to an invoice in Tillor |
| Unknown | No invoice link in Tillor → suspense account 499000, unless you send accounting details along via Mollie |
Settlement payments that do **not** exist in Tillor appear as an unknown Mollie payment on the report.
On a payment report you see linked Mollie payments in the **Payments** table:
## Mollie metadata [#mollie-metadata]
Do you have a till or another system that creates Mollie payments itself? You can steer Tillor through metadata on that payment: linking to an invoice or [payment group](/betalingsverwerking/groepen), or straight to accounting. The fields are described under [Mollie metadata](/ontwikkelaars/mollie-metadata).
## See also [#zie-ook]
# Bank accounts (/en-GB/boekhouden/betalingsrapporten/betaalmethodes/ponto)
The bank connection links to your bank account via open banking and fetches transactions automatically.
## How it works [#hoe-het-werkt]
1. **Transactions**: Every 5 minutes Tillor fetches bank transactions from your bank
2. **Structured communication**: +++123/4567/89002+++ or invoice number (INV/2024/0001) is read
3. **Matching**: Tillor looks for a matching invoice → a payment is created and linked
4. **Duplicate manual transfer**: If there is already a manual transfer on the same invoice with the same amount, it is removed so the payment does not count twice
5. In Tillor you see that payment as a **Bank Transfer**
## Connecting [#koppelen]
The integration is called **Bank accounts** and is found at Settings > Integrations > Bank accounts. You enter a **Client ID** and **Client Secret**; a Tillor administrator helps you with the setup and guides the onboarding.
## Viewing bank transactions [#banktransacties-bekijken]
Imported bank transactions are on **Administration > Bank transactions**. That page is only visible to users with the **View bank transactions** permission. Without that permission you do not see the page in the menu.
In the **Transactions** table, the **Invoice** column sits between **Value date** and **Communication**:
- Is the transaction already on an invoice? Then you see the invoice number as a link (for example `INV/2026/0001`).
- No link yet? Open the action menu (three dots) at the end of the row and choose **Assign to invoice**. If necessary Tillor first creates a payment and links it to the transaction. For this you need the **Assign payment** permission; without it you do not see this action in the menu.
- Is the transaction already on an invoice? Open the same action menu and choose **Unassign from invoice** to remove the link (both manually and automatically matched).
Click the (i) icon next to the IBAN to open the detail panel of that transaction: amount, value date, counterparty and IBAN, communication, the details of the account statement (bank reference, ordering party reference, card number, ...), the linked invoice, payment and payment report, and the references. The action menu is also at the top of that panel.
In the action menu you can also choose:
- **Create task** to attach a task to the transaction, for example to process a payment manually. The task shows the transaction as a linked item; click it to open the detail panel. See [Linked items](/taken/taakdetails#gekoppelde-items).
- **Copy link** for a link that opens the **Bank transactions** page with the detail panel of that transaction, for example to paste in a comment or a message.
You see the same **Invoice** column on a **payment report** in the **Bank account transactions** table, as long as you have the read permission.
## Unassigning [#ontkoppelen]
On **Administration > Bank transactions** (and on a payment report in **Bank account transactions**) you open the action menu on a linked row and choose **Unassign from invoice**. That works for both manually linked and automatically matched transactions.
On **Administration > Payments**, **Unassign from invoice** only appears for payments that you yourself linked or moved to an invoice. That prevents you from accidentally removing a correct automatic link via the payments overview.
## Syncing manually [#handmatig-synchroniseren]
On **Administration > Bank transactions** and on a **payment report** (**Bank account transactions** table) the **Sync bank account** button appears if the bank connection is installed and you have the **Sync bank transactions** permission. With it you request a fresh bank synchronisation; Tillor then imports new transactions and tries to link them to invoices.
Without a bank connection or without that permission the button does not appear. Tillor also imports new transactions automatically, every 5 minutes.
You set both permissions via **Settings > Permissions** (group **Bank transactions**).
## In payment reports [#in-betalingsrapporten]
Bank transfers **do** appear on the Tillor payment report of the payment date (Brussels time), together with manual payments on that day. They do **not** go to the accounting export: only Mollie and internal transfers do. The bank connection is mainly meant for automatic linking to invoices in Tillor.
Customer transfers with a structured communication → Tillor fetches from your bank → invoice is matched → payment + invoice paid.
## See also [#zie-ook]
# Admisol (/en-GB/boekhouden/betalingsrapporten/boekhoudsystemen/admisol)
Admisol is an accounting package that Tillor supports for sending payment reports. Payment reports are converted to Admisol XML and sent to Admisol automatically or manually.
## Installation [#installatie]
1. Go to **Settings** (marker **1** in the screenshot) and choose **Integrations**.
2. Find **Admisol** in the integration list (marker **2**) and open the detail page.
3. On the detail page, enter your **Company ID** and **Web Service Key** (details from Admisol) and click **Install**.
## Sending automatically [#automatisch-versturen]
When a payment report **changes in substance** (for example after linking payments or after **Recalculate report**):
1. Tillor checks whether Admisol is installed for the organisation
2. The report is converted to Admisol XML
3. The XML is sent to Admisol
During the **daily creation** (09:00), Tillor works through the missing days **from oldest to newest**. Each new report is only sent to Admisol once the previous report has received a reply (acceptance or rejection). If sending fails, Tillor stops for that organisation until the next run.
The [draft report](/boekhouden/betalingsrapporten#concept-en-definitief) of the current day is sent to Admisol as soon as it contains a Mollie payment or internal transfer, and after that only again when the booking changes. Cash payments on the draft do not trigger a send. Mollie payments on a draft are booked against the supplier Mollie **without a document reference**; Admisol books that as an **advance** ("still to be received"). Refunds that Mollie has not yet withheld appear as a second, separate advance line on Mollie ("still to be withheld"). On the final send, the actual payout with bank costs takes their place, and payments that were not in the settlement move as an advance to the next draft. While the report is a draft, Admisol shows the document reference as `PAYR/2026/0275 - Concept`; that suffix disappears on the final send. If the report becomes final on the next working day, Tillor sends it again, now with the Mollie settlement, under the **same document number and the same booking date**.
If an automatic send fails, you get a notification and a line appears on the events timeline of the report.
## Sending manually [#handmatig-versturen]
1. Go to **Administration > Payment Reports**
2. Open the report you want to send
3. Click **"Send to accounting"**
## Which payments are included? [#welke-betalingen-gaan-mee]
Only payments with:
- **Mollie** as provider, or
- **Internal Transfer** as payment method
Bank account payments are not sent to accounting.
## Partial refund (Mollie) [#gedeeltelijke-terugbetaling-mollie]
If a linked Mollie payment has been partly or fully refunded, Tillor sends the **original payment amount** on the payment report of the **Mollie settlement in which the payment arrived**. The **refund** appears as a negative line on the report of the **settlement in which Mollie deducts the refund** (label *Terugbetaling*). That can be later settlements; multiple refunds each get their own line on the report of their settlement. That way the report matches what Mollie actually pays out. Because refunds are only booked on that settlement day, no extra line on suspense account **499000** (*restant saldo*) is needed.
## Bank costs per Mollie invoice [#bankkosten-per-mollie-factuur]
Mollie withholds its costs from every payout and invoices them once a month. Tillor therefore books the withheld costs **per invoice period**: each line carries the month for which Mollie invoices the costs, for example *Bankkosten 01/2026*. A payout in the first days of the month often still contains costs of the previous month; those then appear as a separate line on the same report.
All lines of the same period add up to the amount of that month's Mollie invoice. Lines of the current month stay open until Mollie issues the invoice.
### On the supplier Mollie [#op-de-leverancier-mollie]
The withheld costs are not a second cost: Mollie uses them to pay its own invoice. Tillor therefore books them on the **supplier Mollie**, without a document reference. The cost and the VAT only come in through the Mollie purchase invoice. Each month you match the invoice on the supplier Mollie against the *Bankkosten* lines of that period; together they are the same size. A correction via a miscellaneous entry is not needed.
Mollie usually withholds the costs of a payment at the moment the payment comes in, even if the payout follows later. A draft report therefore already books those costs per invoice period, and the advance on Mollie is the amount after costs. A card payment that Mollie is still holding has no withheld cost yet: that cost only appears on the report with the payout. Until then the month on the supplier Mollie is not yet complete.
In Admisol, **do not match lines of a draft report** (document reference ends in *- Concept*). On the final send Admisol replaces the lines of the report, and matches on those lines may disappear. That can also happen when you resend a final report, even if nothing has changed: check the matches on the supplier Mollie afterwards.
## Balance reserve [#balansreserve]
Mollie sometimes withholds part of the payout as a **balance reserve**: money you are still owed, but that Mollie temporarily holds back. Because it is neither a cost nor a refund, Tillor books that amount on the **supplier Mollie** with the label *Balansreserve*, just like the payout itself. That way it stays visible as an outstanding credit at Mollie instead of on the suspense account. If Mollie later releases the reserve, the report of that settlement shows an opposite *Balansreserve* line that books the credit off again. You do not have to do anything; on the supplier Mollie the two lines cancel each other out.
## Invoices that are already matched in Admisol [#facturen-die-in-admisol-al-afgepunt-zijn]
Admisol refuses a line on an invoice or credit note that you have manually matched in Admisol against a booking other than the payment report. Tillor then books the lines of that one invoice on the customer **without a document reference**, so the report still goes through. The amounts and the customer stay the same; you only match the link with the invoice again yourself in Admisol. On the events timeline of the report, the sent XML shows which invoice it concerns.
## Accounting parameters [#boekhoudparameters]
After installation you set the accounting parameters via **Settings** on the Admisol app (same screen as Company ID and Web Service Key). They include document types for invoices and settlements, the Mollie supplier code, the default general ledger account for invoice lines, and the default department. Missing fields get Tillor default values.
Unknown Mollie payments are booked on the suspense account **499000**. Per payment you can also pass department and financial year via [Mollie metadata](/ontwikkelaars/mollie-metadata#directe-boekhoudmetadata-tillorbookkeeping).
### VAT regimes [#btw-regimes]
An invoice line with a [regime without VAT](/boekhouden/belasting#btw-verlegd-en-andere-regimes-zonder-btw) goes to Admisol with its own **tax address profile** and **tax code**. Together they determine which box of the VAT return the line ends up in. The defaults are those of a new Admisol file:
| Regime | Tax address profile | Tax code | Box |
|--------|------------------|----------|---------|
| Reverse charge (EU services) | `EU` | `vd21` | 44 |
| Reverse charge (co-contractor) | `MED` | `v21` | 45 |
| Intra-community supply | `EU` | `v21` | 46 |
| Export outside the EU | `EXP` | `v21` | 47 |
| VAT exempt | `NA` | `v0` | 00 |
If your file uses other codes, adjust them in the accounting parameters: per regime there is a field for the tax address profile and one for the tax code. You find your file's codes in Admisol under **Instellingen > BTW-instellingen > Tax-relaties**. The customer record in Admisol keeps its own tax address profile; only the invoice line gets the one from the regime.
## See also [#zie-ook]
# Exact Online (/en-GB/boekhouden/betalingsrapporten/boekhoudsystemen/exact-online)
Exact Online is the accounting package that many Dutch parks and their offices use. Tillor links **customers**, **booked invoices** and **payment reports** to Exact Online. The integration is **available on request** - not yet as self-service in the App Marketplace.
Do you want to connect Tillor to Exact Online? Request activation via the [demo](https://tillor.eu/demo) or email **support@tillor.eu**. We set up the integration together with your accountant.
## What the integration covers [#wat-de-koppeling-dekt]
The intended export follows the same chain as [Admisol](/boekhouden/betalingsrapporten/boekhoudsystemen/admisol) and [Odoo](/boekhouden/betalingsrapporten/boekhoudsystemen/odoo). We agree the exact mapping of journals and revenue accounts at activation.
- **Customers** from Tillor to Exact Online
- **Booked invoices** (lines and VAT)
- **Payment reports** - only **Mollie** and **internal transfers**, as with the other accounting exports
Bank account payments do appear on the Tillor report, but do not go to the accounting export. See [accounting systems](/boekhouden/betalingsrapporten/boekhoudsystemen).
## No self-service yet [#nog-geen-zelfbediening]
You will not yet find Exact Online under **Settings > Integrations**. Administration choice, general ledger mapping and first export are done together with Tillor support. There is no installation form to fill in yourself.
Tillor exports to one accounting package per organisation. If you already use Admisol or Odoo, we agree which system stays active.
## Requesting [#aanvragen]
1. Note your Exact Online administration (division) and whether your accountant will be looking along.
2. Request the integration via [tillor.eu/demo](https://tillor.eu/demo) or **support@tillor.eu**.
3. Tillor schedules the activation and the mapping of journals and revenue accounts.
## See also [#zie-ook]
# Overview (/en-GB/boekhouden/betalingsrapporten/boekhoudsystemen)
Tillor supports integration with accounting software for sending payment reports. Payment reports are converted to the format of your accounting package (currently Admisol) and sent automatically or manually. [Exact Online](/boekhouden/betalingsrapporten/boekhoudsystemen/exact-online) is available on request.
## Supported systems [#ondersteunde-systemen]
| System | Status |
|---------|--------|
| [Admisol](/boekhouden/betalingsrapporten/boekhoudsystemen/admisol) | Supported |
| [Odoo](/boekhouden/betalingsrapporten/boekhoudsystemen/odoo) | Customers and booked invoices |
| [Exact Online](/boekhouden/betalingsrapporten/boekhoudsystemen/exact-online) | On request |
## General [#algemeen]
- **Automatic**: When a payment report is created or meaningfully updated, it is sent to Admisol (only if Admisol is installed)
- **Manual**: Via **Administration > Payment Reports** → open report → **Send to accounting**
- **Which payments**: Only **Mollie** and **internal transfers**. Bank accounts do appear on the Tillor report, but do not go to the accounting export.
## See also [#zie-ook]
# Odoo (/en-GB/boekhouden/betalingsrapporten/boekhoudsystemen/odoo)
The Odoo integration in Tillor exports **customers** and **booked invoices** to Odoo. Payment reports to Odoo will follow in a later release; until then, use [Admisol](/boekhouden/betalingsrapporten/boekhoudsystemen/admisol) if you want payment reports sent on automatically.
## Installation [#installatie]
1. Go to **Settings** and open the App Marketplace.
2. Find the **Odoo** card and click **Install**.
3. First fill in the following under **Connection**:
- **Odoo URL** - for example `https://mijnbedrijf.odoo.com` or just `mijnbedrijf` (Tillor then completes the `.odoo.com` URL)
- **Username** - a user with API access
- **API key** - an API key (Odoo: user profile > API keys)
4. Click **Continue to database**. Tillor fetches the available databases (or lets you enter the name manually).
5. Choose the database under **Database** and complete the installation.
When you save, Tillor tests the connection.
If both Admisol and Odoo are installed, Tillor uses **Admisol** for exports (fixed priority). Only install Odoo if you no longer use Admisol.
## Accounting parameters (Odoo app) [#boekhoudparameters-odoo-app]
After installation, you set the export parameters under **Settings** on the Odoo app (next to the URL, database, username and API key). Tillor fetches sales journals and income accounts live from Odoo; you pick them through a search field (code and name).
| Field in the app | Default | Meaning |
|---|---|---|
| **Sales journal code** | INV | Sales journal in Odoo with this code |
| **Default income account** | 700000 | Income account used when the invoice line has no ledger number of its own |
| **Post invoices automatically** | off | Post in Odoo straight after the export |
| **Attach invoice PDF** | on | Tillor invoice PDF as an attachment on the Odoo invoice |
| **Attach Peppol UBL** | on | Peppol UBL as an extra attachment (only if Tillor already has that UBL) |
For each invoice line, Tillor first looks for an Odoo account with the same code as the line's **ledger number**; otherwise it uses the default income account. For VAT, Tillor looks for a sales tax in Odoo with the same percentage as on the line.
### VAT regimes [#btw-regimes]
An invoice line with a [regime without VAT](/boekhouden/belasting#btw-verlegd-en-andere-regimes-zonder-btw), such as reverse charge, needs its own sales tax in Odoo: an ordinary 0% ends up in the wrong box of your VAT return. So in the export settings, for each regime you use, enter the **name of the sales tax in Odoo**, exactly as it appears in Odoo under **Accounting > Configuration > Taxes** (in a Belgian Odoo, for example, `0% EU S` for EU services). There are five fields: reverse charge (EU services), reverse charge (co-contractor), intra-community supply, export outside the EU and VAT exempt.
If the field for a regime is empty or the tax does not exist in Odoo, the export of that invoice stops with an error message. Enter the name and send the invoice again.
## Invoice PDF in Odoo [#factuur-pdf-in-odoo]
With **Attach invoice PDF** (on by default), Tillor uploads the same PDF as in Tillor. For a new export this happens **before** posting in Odoo, so the preview on the right of the invoice can be linked. The file name follows the Tillor invoice number (e.g. `INV_2026_0001.pdf`). Tillor also sets that PDF as the main attachment on the Odoo invoice.
On the **Events** of the Tillor invoice you can see whether the export succeeded, including customer, invoice, PDF and UBL.
- If the Odoo invoice already exists (same reference: the Tillor invoice number), Tillor updates the customer, lines, dates and payment reference. If the invoice was already posted in Odoo, Tillor first sets it back to draft, changes the data and posts it again when **Post invoices automatically** is on or the invoice was already posted.
- After that, PDF and UBL attachments are replaced or added when those options are on.
- If the upload fails after a newly created draft invoice, that Odoo invoice is deleted so a following export can try again.
## Peppol UBL in Odoo [#peppol-ubl-in-odoo]
With **Attach Peppol UBL** (on by default), Tillor uploads the Peppol UBL as an extra attachment on the Odoo invoice. The file name follows the Tillor invoice number (e.g. `INV_2026_0001.xml`).
- Tillor does not generate UBL itself: the file only becomes available after a successful Peppol delivery.
- If the UBL is not ready at the time of export, Tillor skips the UBL attachment; as soon as the UBL arrives, it is still added to the existing Odoo invoice.
- If the UBL upload fails, the whole Odoo export does **not** fail (unlike the PDF). Only a PDF error after a new invoice rolls back the Odoo draft.
## Invoices [#facturen]
- When you **book** or **rebook** an invoice, Tillor exports the invoice to Odoo automatically.
- Manually: invoice actions > export to accounting (the same button as for Admisol).
- Only invoices with the status **Booked** are exported.
- If an Odoo invoice with the same Tillor invoice number already exists, no second invoice is created. Tillor updates the customer, lines and dates on that invoice (for example after moving it to another customer or rebooking) and replaces PDF/UBL attachments when those options are on.
- If the invoice PDF changes after a **payment** (or another amount on the document), Tillor replaces the existing PDF attachment in Odoo as soon as the new PDF is ready. No second Odoo invoice is created and no payment is posted in Odoo.
## Customers [#klanten]
Customers are updated or created in Odoo with the Tillor customer number as the reference. Existing partners with the same number are updated.
## Payment reports [#betalingsrapporten]
Sending payment reports to Odoo, automatically or manually, is **not yet available**. The daily payment report process skips Odoo without an error message.
## Requirements in Odoo [#vereisten-in-odoo]
- A sales journal with the configured code (default `INV`)
- G/L accounts with codes that match Tillor lines or the default income account
- Optional: sales VAT rates in Odoo with the same percentages as in Tillor
## See also [#zie-ook]
# Overview (/en-GB/boekhouden/betalingsrapporten)
A **payment report** is a daily overview of payments on one calendar day. Numbering: `PAYR/YYYY/DDDD` (day of the year, four digits; e.g. `PAYR/2026/0054`).
**Contents:** known and unknown payments, the Mollie payout (where applicable) and unlinked bank transactions from your bank accounts. A payout from Mollie is called a settlement in accounting: the amount Mollie puts into your bank account for a series of payments.
Your bookkeeper works with these reports. You do not have to create or close them. See also [How does it fit together?](/boekhouden#hoe-hangt-dit-samen).
## Draft and final [#concept-en-definitief]
A report has a **status**:
| Status | Meaning |
|--------|---------|
| **Draft** | The report of the **current day**. Today's payments (internal transfers, cash, bank accounts and Mollie) are already linked to it and the report already goes to the accounting. Mollie payments appear as an **advance**: money Mollie still has to pay out. There is no Mollie settlement yet and the report is not printed automatically yet. |
| **Final** | The day is closed. Tillor has linked the Mollie settlement (where applicable), printed the report and sent the final version to the accounting. |
Today's draft report is created automatically: by the 09:00 run, or earlier as soon as you register the first manual payment or bank account payment of that day. You never have to make a draft final yourself; Tillor does that at the next daily run after the day is over.
You recognise a draft by the **grey report number with a dotted underline** and the **Draft** badge, in the list (column and filter **Status**), on the detail page and everywhere the report is linked. The PDF of a draft has **(draft)** in the title. The report number and the booking date in the accounting stay the same when the draft becomes final.
### Mollie payments on the draft [#mollie-betalingen-op-het-concept]
Every paid Mollie payment that Mollie has not yet paid out goes straight onto the open draft report. In the accounting, the total appears as an **advance on the supplier Mollie**: this way you can see at any moment how much you still have coming from Mollie.
A **SEPA direct debit that is still running** counts in the same way, even when the collection only leaves for Mollie in a few days. The invoice is then already shown in Tillor as paid (pending), and so it is in the accounting. If the collection fails or is cancelled, the payment disappears from the draft again.
When the draft becomes final, Tillor compares the report with the Mollie settlement:
- Payments that are **in the settlement** stay on the report. The advance is replaced by the real payout, with the bank fees.
- Payments that are **not** in it (for example credit card with a later payout, or revenue after Mollie's cut-off) move on to the **next draft report** and stay there as an advance.
- If a payment from the settlement was already on a later draft, Tillor moves it back to the settlement's report.
Only recent payments are eligible: paid in the last month and still without a settlement at Mollie.
**Refunds** count immediately. A refund that Mollie has not yet deducted from a payout appears as a negative line on the open draft. In the accounting these remain two separate advances on Mollie: one for the payments still to be received and one for the refunds still to be deducted; they are not netted against each other. This also applies when the original payment is already on an older, final report: Mollie then deducts the amount from a later payout. As soon as a settlement offsets the refund, it appears on that settlement's report and disappears from the draft.
A draft goes to the accounting as soon as it contains something the accounting books (a Mollie payment or an internal transfer). After that, Tillor only sends it again if the booking changes, each time under the same document number. Changes are bundled: the dispatch leaves about ten seconds after the last change and after a minute at the latest, so that, for example, assigning a payment to an invoice results in one dispatch. A draft with only cash payments or bank account payments is therefore not sent, and an extra cash payment does not cause a new dispatch.
## Daily generation [#dagelijkse-generatie]
Every **working day at 09:00** (Monday to Saturday, Europe/Brussels time zone), Tillor processes all reports from **1 January up to yesterday** that are still missing or still **draft**, **from oldest to newest**: drafts are made final, missing days are created straight away as a final report. For each report Tillor waits for the Admisol response (success or error) before the next report is processed and sent. After that, Tillor opens **today's draft report**. For each organisation with an active Mollie integration, a **limited** synchronisation follows: reports **without** a Mollie settlement from **one calendar month before yesterday** up to yesterday (see [Mollie](/boekhouden/betalingsrapporten/betaalmethodes/mollie)).
```mermaid
flowchart TD
start[Start werkdag 09:00] --> create[Concepten t/m gisteren definitief maken
ontbrekende dagen aanmaken]
create --> manual[Handmatige en bankrekeningbetalingen
op rapportdag koppelen]
manual --> rollover[Niet-uitbetaalde Mollie-betalingen
naar volgend concept]
rollover --> concept[Conceptrapport van vandaag openen]
concept --> mollieCheck{Mollie actief?}
mollieCheck -- nee --> done[Klaar]
mollieCheck -- ja --> sync[Rapporten zonder settlement
afgelopen maand bijwerken]
sync --> done
```
### What is in a report? [#wat-zit-in-een-rapport]
| Source | When linked |
|------|-------------------|
| Manual payments | Calendar day of the creation date (Brussels) |
| Bank account payments | Calendar day of the payment date (Brussels) |
| Mollie | Settlement for report day D (see [Mollie](/boekhouden/betalingsrapporten/betaalmethodes/mollie)) |
Bank account payments **do** appear on the Tillor report for that day, but are **not** included in the accounting export (only Mollie and internal transfers).
### Yesterday without a Mollie settlement [#gisteren-zonder-mollie-settlement]
Does yesterday's report still need to be made final (or created), and has Mollie no settlement yet for yesterday or today? Then Tillor **waits** until the next working day; the report stays **draft** in the meantime. Older days without a settlement do get a report (manual/bank accounts); Mollie is linked later during synchronisation.
Saturday and Sunday revenue often only gets a Mollie settlement on Monday morning. That belongs to the **Sunday** report (D+1 rule), not to the Monday report. See [examples on the Mollie page](/boekhouden/betalingsrapporten/betaalmethodes/mollie#voorbeelden).
## Examples [#voorbeelden]
| Situation | What you see |
|-----------|-------------|
| Working day, settlement the next morning | The report for **yesterday** still gets Mollie (D+1 rule) |
| Internal transfer registered today | Appears straight away on **today's draft report** and goes to the accounting |
| Mollie payment received today | Appears straight away on the draft, in the accounting as an advance on Mollie |
| Mollie payment not in the report's settlement | Moves on to the next draft when the report is made final |
| Yesterday's report still draft, no settlement | Tillor **waits** until Mollie publishes (next working day 09:00); the report stays draft |
| Report existed without Mollie | The next 09:00 run adds the settlement and payments |
| Report already had a settlement id | The id **stays**; only extra payments can still be linked |
More date examples (weekend, double settlement): [Mollie > Examples](/boekhouden/betalingsrapporten/betaalmethodes/mollie#voorbeelden).
## Opening and navigating a payment report [#betalingsrapport-openen-en-navigeren]
1. Go to **Administration > Payment Reports** (green marker **1** in the screenshot).
2. Open a report in the list.
3. On the detail page, use the arrows in the action bar on the right to go to the previous or next report.
When you hover over an arrow you see extra context (report number, date and number of payments) of the report you are navigating to.
On the right of the detail page is the **Event Log**. There you can see when the report was created, when it was made final and whether it was sent to the accounting.
## Problems? [#problemen]
Mollie has not yet published a payout for yesterday. Tillor then waits until the next working day at 09:00. The report becomes final by itself, you do not have to do anything.
A payment goes on the report of the day it was received. For cash and bank transfers that is the **Date received** you entered. Change that date when registering, see [Cash and bank transfer](/betalingsverwerking/contant).
The payment was not in the payout of the report. It moves on to the next draft and stays there as an advance until Mollie pays out.
Only Mollie payments and internal transfers are included. A report with only cash payments or bank account payments is not sent. An error when sending can be found in the **Event Log** of the report.
## See also [#zie-ook]
## Terms [#begrippen]
- **Payment report**: the daily overview of payments on one calendar day, with the number `PAYR/year/day`.
- **Draft**: the report of the current day. It can still change.
- **Final**: the day is closed and the report has been sent to the accounting.
- **Advance**: a Mollie payment that Mollie has not yet paid out.
- **Settlement**: Mollie's payout to you.
# Overview (/en-GB/boekhouden)
Here you transfer payments and invoices from Tillor to your accounting software. Tillor bundles the payments per day into a payment report and sends that report on, so your bookkeeper does not have to retype anything.
- There is one payment report per calendar day. Today's report already exists as **Draft** and becomes final as soon as the day is over.
- Tillor processes the reports every working day (Monday to Saturday) at 09:00, Belgian time.
- Only Mollie payments and internal transfers go to the accounting software. Cash, bank transfers and bank accounts do appear on the report, but are not sent on.
- Mollie payments are updated every 15 minutes, bank accounts every 5 minutes.
- Mollie usually pays out the next day. The weekend often only gets a payout on Monday morning.
- Tillor bundles changes to a draft and sends it about ten seconds after the last change, and after a minute at the latest.
- A Belgian customer with a VAT number needs a Peppol ID before you can book an invoice.
## How does it fit together? [#hoe-hangt-dit-samen]
```mermaid
flowchart LR
F[Geboekte factuur] --> B[Betaling]
B --> R[Betalingsrapport van de dag]
R -- Mollie en interne overboekingen --> X[Boekhoudsoftware]
R -- Bankrekeningen en contant --> O[Alleen overzicht in Tillor]
```
- A payment belongs to an invoice. See [Invoices](/facturen).
- Every payment goes on the report of the day it was received.
- A Mollie payment first appears as an advance on the draft report. As soon as Mollie pays out, that advance becomes the real payout.
- The report goes to your accounting software. Which systems are supported is described under [Accounting systems](/boekhouden/betalingsrapporten/boekhoudsystemen).
## What does it do? [#wat-doet-het]
- **Payment reports**: daily overviews with the number `PAYR/YYYY/DDDD`, where DDDD is the day of the year
- **Accounting systems**: integration with Admisol, Odoo for customers and invoices (payment reports to Odoo will follow later) and [Exact Online](/boekhouden/betalingsrapporten/boekhoudsystemen/exact-online) on request
- **Payment methods**: Mollie, bank accounts and internal transfers
**Example:** revenue from **20 May** is paid out on **21 May** and appears on report **`PAYR/2026/0140` (20 May)**. More examples: [Mollie examples](/boekhouden/betalingsrapporten/betaalmethodes/mollie#voorbeelden).
In the web app you see payments and invoices as shown below.
## See also [#zie-ook]
## Terms [#begrippen]
- **Payment report**: the daily overview of payments on one calendar day.
- **Draft**: the report of the current day, which can still change.
- **Final**: a closed report that has been sent to the accounting software.
- **Payout (settlement)**: the amount Mollie puts into your bank account for a series of payments.
- **Advance on Mollie**: money Mollie still has to pay you, as it appears in the accounting.
- **General ledger**: the account number in your accounting. See [Products](/producten).
- **Peppol**: the European network for sending invoices directly to the recipient's system. See [Peppol](/boekhouden/peppol).
# Peppol (/en-GB/boekhouden/peppol)
With Peppol you send an invoice directly to the recipient's accounting system, without a PDF. Peppol is the European network for electronic invoicing. In Tillor it happens automatically: if a customer has a Peppol ID, the invoice goes along by itself after booking.
## When do you use Peppol? [#wanneer-gebruik-je-peppol]
Peppol is mandatory for:
- **Belgian B2B invoices** - sending invoices to Belgian businesses with a VAT number
- **Public contracts** - invoicing government bodies in most EU countries
For Dutch customers Peppol is optional but supported.
From 2026, Peppol is mandatory for all B2B invoices in Belgium. Make sure the Peppol IDs of your Belgian customers are set correctly.
## Setting up Peppol [#peppol-instellen]
### Peppol for your organisation [#peppol-voor-je-organisatie]
Peppol uses the **VAT number** and **address** of your organisation. Check that these details are correct in **Settings**.
On the first Peppol dispatch, Tillor automatically registers your organisation as a sender in the Peppol network.
Contact Tillor support if Peppol is not yet available for your organisation.
### Setting a Peppol ID for a customer [#peppol-id-instellen-voor-een-klant]
For every customer you want to invoice through Peppol:
1. Go to *Customers > [customer] > Invoicing*
2. Open **Invoice Settings**
3. Enter the **Peppol ID**, or choose a recipient through the search icon
4. Click **Save**
Do you have a Belgian customer with a VAT number? Then you cannot book an invoice until a Peppol ID is set.
## Looking up a Peppol recipient [#een-peppol-ontvanger-opzoeken]
Do you not know a customer's Peppol ID? Use the search icon to the left of the field:
1. Go to *Customers > [customer] > Invoicing*
2. Click the search icon to the left of **Peppol ID**
3. Tillor searches automatically based on the customer's VAT number
4. Select the right recipient from the results
Not all businesses are registered in the Peppol network. If a business is not found, you can still send the invoice by e-mail.
## Sending invoices through Peppol [#facturen-via-peppol-versturen]
When a customer has a Peppol ID, Tillor sends the invoice through Peppol automatically after booking:
1. Create the invoice as usual
2. Check that the customer's **Peppol ID** is set correctly
3. Check the lines and amounts on the draft invoice, then click **Book invoice**
4. Tillor sends the invoice automatically through the Peppol network (usually within a few minutes of booking)
### Checking the send status [#verzendstatus-controleren]
Open the booked invoice and look at **Events** in the right-hand panel. Here you can see whether the invoice was sent through Peppol, or whether sending or delivery failed.
## What happens next? [#wat-gebeurt-er-daarna]
- The invoice is sent automatically as soon as you book it. You do not have to send anything.
- An invoice that was sent through Peppol gets the label **Sent via Peppol** in the list on the customer profile.
- You can no longer set such an invoice back to draft or move it to another customer. You correct it with a credit invoice. See [Correcting an invoice](/facturen/corrigeren).
- If sending fails, you see that under **Events** on the invoice and there is a notice under Communication > Notifications. Then send the invoice by e-mail, see [Sending an invoice](/facturen/versturen).
## Problems? [#problemen]
The customer is Belgian and has a VAT number. Enter the Peppol ID under Customers > customer > Invoicing, **Invoice Settings**. If you do not know the ID, use the search icon to the left of the field.
Not all businesses are connected to Peppol. Send the invoice by e-mail instead.
Check whether the customer's Peppol ID was filled in before you booked.
## See also [#zie-ook]
# Sending an invoice or reminder (/en-GB/communicatie/e-mails)
With **Send notification** you send a booked invoice to the customer. With **Send reminder** you remind the customer of an outstanding invoice. You choose e-mail, SMS, post or WhatsApp yourself, and afterwards you follow the delivery in [Notifications](/notificaties).
Tillor does not send these messages by itself when booking. You decide when the customer receives something. If you want it to happen automatically, you can do that with an [automation](/begrippen#automatisering).
Before you start:
- The invoice must be **booked**. The button does not appear on a draft invoice.
- The customer has at least an e-mail address, a phone number or a complete postal address (street, postcode and town). Otherwise you do not see **Send notification**.
- For a reminder, an amount must still be outstanding. A paid invoice does not offer **Send reminder**.
- For each channel, the matching detail must be known. Otherwise the channel is greyed out, with the message **No email address on file**, **No phone number on file** or **No postal address on file**.
## Sending an invoice [#een-factuur-versturen]
### Open the invoice [#open-de-factuur]
Go to Administration > Invoices and open a booked invoice.
### Click Send notification [#klik-op-verstuur-notificatie]
The **Send notification** window opens. Choose the channels through which the customer receives the invoice.
### Choose the channels and click Send [#kies-de-kanalen-en-klik-op-versturen]
Tillor reports **Notification sent**. If it fails, you see **Notification not sent**.
The channels work like this:
| Channel | What the customer receives |
|---|---|
| **E-mail** | On by default. The invoice is attached to the message as a PDF, sent to the e-mail address on the customer profile |
| **SMS** | A short text with the personal link to the invoice |
| **Post** | The invoice as a letter to the postal address on the customer profile. Off by default. Tillor shows an indicative postage amount per letter |
| **WhatsApp** | Appears if you have connected WhatsApp Business. If the customer's 24-hour window is closed and you have no payment method with Meta, Tillor blocks the dispatch |
## Sending a reminder [#een-aanmaning-versturen]
### Open the menu next to Send notification [#open-het-menu-naast-verstuur-notificatie]
Click the arrow next to the button and choose **Send reminder**.
### Choose the channels [#kies-de-kanalen]
For a reminder, **SMS** is on by default if the customer has a phone number. If you choose **Post**, the customer receives a reminder letter with the invoice attached and a QR code on the letter. See [Sending an invoice](/facturen/versturen).
### Confirm [#bevestig]
Click **Send**. If you also chose **Registered mail with receipt confirmation**, it says **Send with extra cost**. That option only exists if registered post is supported in the country of the postal address. Tillor charges the extra costs to your organisation.
## What happens next? [#wat-gebeurt-er-daarna]
- The message appears in Communication > Notifications with channel, status and a link to the invoice. You also see it on the customer.
- E-mail and SMS start as Pending and become Sent as soon as they are delivered. The customer can read the message and click the link. You see both again in the detail window.
- For post, the status becomes Sent as soon as the postal service confirms that the letter is on its way or delivered. For post you see the postage amount at the time of sending, and for registered post also the extra amount.
- If a message is stuck for longer than 5 minutes, Tillor tries again. After 2 days without being sent it becomes Failed.
- If the message fails, the invoice stays as it was. You can always send again.
Do you want Tillor to respond by itself, for example by alerting a colleague when a reminder fails? You can create an [automation](/begrippen#automatisering) for that.
## Problems? [#problemen]
The invoice is still a draft, or the customer has no e-mail address, phone number and complete postal address. Book the invoice or add one of those details on the customer profile.
The invoice has already been paid, or not yet booked. A reminder can only be sent for a booked invoice with an amount still outstanding.
The detail is missing on the customer profile. Add the e-mail address, phone number or postal address and open the window again.
Open Communication > Notifications and click the channel of the message. The error message is in the detail window. Usually the address or number is wrong. Correct it on the customer profile and send again.
Registered sending is only possible to postal addresses in countries where Tillor supports it. For other addresses, ordinary post remains possible.
Look at the status in Communication > Notifications. If the message is **Bounced**, the address does not exist. If it is **Sent**, ask the customer to check their spam. See [Notifications](/notificaties#problemen).
## See also [#zie-ook]
# Overview (/en-GB/communicatie)
Under Communication you follow everything that is said or sent between your park and your customers: phone calls, messages Tillor sends, and internal comments. Here you also decide which messages go to a customer and see whether they arrived. Conversations that customers start through chat or social media are in the [inbox](/inbox).
- An invoice message or reminder never goes out by itself when booking. You start it, or an [automation](/begrippen#automatisering) does
- If a message is stuck for longer than 5 minutes, Tillor tries again. After 2 days without being sent it is set to **Failed**
- You can only send an SMS with organisation details during an ongoing call, from the panel at the bottom right
- A new message in the inbox appears as a card at the bottom right and disappears after about ten seconds
- Phone calls only come in after Voys is installed and the call plan points to Tillor
## How does it fit together? [#hoe-hangt-dit-samen]
All communication with a customer comes together on the customer profile. What goes out and what comes in runs over different channels.
```mermaid
flowchart LR
K[Klant] -->|belt| T[Telefoongesprekken]
K -->|chat, WhatsApp, Messenger, Instagram| I[Inbox]
P[Park] -->|factuur of aanmaning| N[Notificaties]
N -->|e-mail, sms, post, WhatsApp| K
P -->|interne opmerking| O[Opmerkingen]
T --> KP[Klantprofiel]
I --> KP
N --> KP
```
- **Calls** come in through your phone provider and are linked to the customer by phone number.
- **Messages from customers** via chat or social media arrive in the inbox.
- **Messages to customers** you send from an invoice. You follow the delivery under Notifications.
- **Comments** are internal. Customers do not see them.
## Components [#onderdelen]
## Terms [#begrippen]
- **Phone provider**: the company that supplies your phone line, for example Voys.
- **Notification**: a message that Tillor sends to a customer or [user](/begrippen#gebruiker).
- **Channel**: the route a message takes, such as e-mail, SMS, post or WhatsApp.
- **Inbox**: the place where messages from customers via chat and social media arrive.
- **Comment**: an internal note on a [customer](/begrippen#klant), invoice or other record.
More terms are in the [glossary](/begrippen).
# Notification types (/en-GB/communicatie/notificatietypes)
This list shows every type of message you can come across in the [notifications overview](/notificaties), and when Tillor sends it. You see the type in the **Type** column and can filter on it with the **Type** filter. The names match the screen.
Messages to customers go by e-mail, SMS, post or WhatsApp. Messages to colleagues go by push, e-mail or phone, following that colleague's preferences. See [In-app notifications](/notificaties#meldingen-in-de-app).
Messages such as **New Invoice** or **Invoice Reminder** are not sent automatically by Tillor when an invoice is booked. You start them with **Send notification** or **Send reminder** on the invoice. See [Sending an invoice or reminder](/communicatie/e-mails).
## Invoices and payments [#facturen-en-betalingen]
| Type | When it is sent |
|---|---|
| New Invoice | To the customer, when you send an invoice. The invoice is attached to the message |
| Invoice Paid | To the customer, when an invoice has been paid |
| Invoice Reminder | To the customer, as a reminder for an outstanding invoice |
| Manual Bank Transfer Reminder | To the customer who pays by bank transfer, with the tip to use the structured reference |
| Invoice Archive | To your organisation's support address, with your bookkeeper in copy, when an invoice archive is ready |
| Peppol Invoice Send Failure | When an invoice could not be sent through Peppol |
| Failed to send invoice to accounting software | When forwarding an invoice to your accounting software fails |
| Invoice export to accounting software recovered | When that forwarding has succeeded after earlier notices |
| Failed to send payment report to accounting software | When forwarding a payment report fails |
| Reverted invoices rebooked | When reverted invoices have been rebooked automatically overnight |
| Bank payment does not settle invoice | When a bank payment has been linked to an invoice, but the invoice is still outstanding afterwards |
| Utility use well above usual, held from automatic billing | When a customer was not invoiced automatically because electricity or water use is far above the usual |
| Scheduled product price applied | To your organisation, on the day a [scheduled price](/producten/prijzen-plannen) takes effect. Old and new price are shown side by side |
| Machine start auto-refund | When an online payment for a machine start has been refunded because the machine did not start |
| Offline NFC Payments Review | When offline NFC payments could not be verified after synchronisation |
| NFC Tag Low Balance | To the customer when the balance of an NFC tag is low |
## SEPA mandates and signing [#sepa-mandaten-en-ondertekenen]
| Type | When it is sent |
|---|---|
| SEPA mandate signing request | To the customer with the link to sign the mandate, also for the reminders before the link expires |
| SEPA mandate verification code | To the customer with the code they enter on the signing page, by SMS or e-mail |
| Signed SEPA mandate copy | To the customer, as soon as the mandate is active |
| SEPA mandate revoked | To the customer, with the signed document attached once more |
| Signature request | To a signer when it is their turn, by e-mail or by SMS if there is no e-mail address |
| Signing code | To the signer with the code to sign, by SMS or e-mail |
| Signed document | To all signers with the signed PDF, as soon as the last one has signed |
| Signature declined | To the colleague who sent the request, when a signer declines |
| DPA Acceptance | Confirmation of the DPA acceptance, with the signed DPA attached |
| DPA verification code | By SMS to the responsible person with the code to accept the data processing agreement |
## Meters, controllers and access [#meters-controllers-en-toegang]
| Type | When it is sent |
|---|---|
| Meter alarm | When a meter has a new alarm |
| Meter alarm resolved | When a meter alarm has been resolved |
| Meter Removal | When meters have been removed |
| Meters needing attention | Overview of meters whose readings are missing or that have had an alarm for a long time |
| Controller offline | When a controller gives no sign of life for longer than 5 minutes |
| Controller overheating | Urgent notice when a controller gets too hot |
| Connector offline | When your park's connector no longer gives a sign of life |
| Connector back online | When the connector is reachable again |
| Connector HTTP gateway down | When the connector is still running, but cameras can no longer reach it |
| LPR camera offline | When a licence plate camera does not respond for longer than 5 minutes |
| Access point open too long | When an access point stays open longer than allowed |
| Expired license plate exit summary | Summary of vehicles with an expired access period that left while reception was closed |
| QR Access Code | To the customer with the QR code for access |
| Tablet or kiosk offline | When a tablet or kiosk gives no sign of life outside its sleep period |
| Tablet or kiosk battery low | When a tablet or kiosk is almost empty and not charging |
## Tasks, comments and inbox [#taken-opmerkingen-en-inbox]
| Type | When it is sent |
|---|---|
| Task assigned | To the colleague to whom a task has been assigned |
| Task unassigned | To the colleague from whom a task has been taken away |
| Task completed | When a task has been completed |
| Task Reminder | When a task's reminder time has been reached |
| Task deadline | When a task reaches its deadline without being completed |
| Daily task view digest | By e-mail, the daily summary of a task view you follow |
| Comment Reply | Someone has replied to a comment |
| Comment Mention | You have been mentioned in a comment |
| Comment Resolved | A comment has been marked as resolved |
| Comment reply rejected | When an e-mail reply to a comment was not posted because the sender address is not right |
| Inbox Message | When a new message arrives in the inbox |
| Urgent AI handoff | When the AI assistant hands an urgent conversation over to you |
| Website chat follow-up | To a website visitor with an unread reply, with a link to resume the conversation |
## Automations and integrations [#automatiseringen-en-integraties]
| Type | When it is sent |
|---|---|
| Automation message | Text that an automation sends to a customer |
| Automation notice | Notice that an automation sends to a colleague, by push, e-mail or both |
| Automation run failed | To the creator of an automation when a run ended with an error |
| Webhook delivery failing | When deliveries to your webhook fail and Tillor keeps trying again |
| Webhook delivery permanently failed | When Tillor could not deliver a webhook event after all attempts |
| External notification | Message that a connected system sent itself, see [External notifications](/notificaties#externe-notificaties) |
A webhook is a connection through which Tillor automatically passes an event on to another system.
## Account and organisation [#account-en-organisatie]
| Type | When it is sent |
|---|---|
| User Welcome | Welcome message for a new user |
| E-mail verification | The link to confirm an e-mail address |
| Organization invitation | Invitation for someone without a Tillor account to join your organisation |
| Organization Details | SMS to a caller with a link to your organisation's details |
| Contact Form Submission | When someone fills in the contact form |
| Holiday opening hours reminder | Reminder to fill in the opening hours for an upcoming public holiday |
| Document Deleted | To the user who deleted a document |
## Notices from the Tillor team [#meldingen-van-het-tillor-team]
These messages are meant for the Tillor team and you do not normally see them: **System Incident**, **Security alert**, **Grafana alert** and **LoRa gateway outage**.
## See also [#zie-ook]
# Overview (/en-GB/communicatie/providers)
Through a phone provider such as Voys, Tillor sees who is calling and stores calls, recordings and transcriptions. You connect the provider under Settings > Integrations. Twilio is not a phone provider: it sends Tillor's SMS messages and has been set up by Tillor itself.
## Available providers [#beschikbare-providers]
# Twilio (/en-GB/communicatie/providers/twilio)
Twilio sends SMS messages on behalf of Tillor and, if set up, WhatsApp notifications. It is not a telephony provider like Voys and you do not install it yourself: Tillor has set it up for the whole platform.
## Difference from Voys [#verschil-met-voys]
| | Voys | Twilio |
|---|---|---|
| Telephony (calling, calls) | Yes | No |
| Configuration in Tillor | **Settings > Integrations** | No - platform setting |
| Visible to users | Calls, recordings, transcriptions | Sent SMS and WhatsApp notifications |
## What does Twilio do in Tillor? [#wat-doet-twilio-in-tillor]
Once Twilio is set up, Tillor uses it for things such as:
- Sending **SMS notifications** (for example payment reminders, booking confirmations and invoice notifications)
- Sending **organisation details by SMS** from **Communication > Phone Calls** (SMS button with the tooltip **Send organization details to the caller via SMS**)
- Delivering **WhatsApp notifications** when WhatsApp is set up through Twilio on the platform
- Using **SMS verification codes** when signing the data processing agreement (DPA)
You follow sent SMS and WhatsApp notifications in **Communication > Notifications**:
You do not set up Twilio yourself in Tillor. Ask your platform administrator or Tillor support for the right integration for your environment.
## No installation under Integrations [#geen-installatie-in-integraties]
Unlike Voys, you will **not** find Twilio under **Settings > Integrations**. The integration is managed by the administrator of the Tillor environment.
## See also [#zie-ook]
# Voys Telephony (/en-GB/communicatie/providers/voys)
With the Voys integration, Tillor sees who is calling and shows the customer details straight away. Calls, recordings and transcripts then end up under [Phone Calls](/communicatie/telefoongesprekken). Voys is a business phone provider.
Before you start:
- You need an active Voys VoIP account, and access to the call plan settings in Voys.
- You need the **Manage integrations** permission.
- The caller's phone number must be on the customer profile or on a contact person, otherwise Tillor cannot link the call to a customer.
## Set up Voys [#voys-instellen]
1. Go to **Settings** (sidebar under **Support**)
2. Choose **Integrations** and open **Voys** in the list
3. On the detail page, enter your Voys details (`username`, `password`, `client_uuid`, `token`) and click **Install**
You need an active Voys VoIP account.
After installation and configuration, Tillor links calls to customers automatically when the phone number matches a customer or contact.
## Find the URLs for Voys [#urls-voor-voys-terugvinden]
Tillor and Voys talk to each other through addresses (URLs). At some steps Voys asks Tillor for an answer, for example whether you are open. That answer is **ACK** (yes, continue) or **NAK** (no, follow the other path). A webhook is an address that Voys calls during a call.
For webhooks, caller name lookup and access codes, you use the URLs that Tillor generates for you.
1. Go to **Settings > Integrations** and open **Voys**
2. After installation, the **URLs to configure** block appears on the detail page under **Settings** - copy the right URL for each purpose
Among other things, you will find:
- **Conversation notifications** - webhook URL for call events
- **Webhook for Caller Lookup** - URL for caller name lookup in your Voys call plan
- **XML Phonebook** - URL for VoIP phones to fetch the phone book
- **Access codes** - URL for operating the access point (barrier, gate or door) through the call plan
- **Opening hours webhook** - ACK when Tillor is open, NAK when Tillor is closed
- **Caller allowed webhook** - ACK when the caller may be put through, NAK when the caller must go to voicemail
- **Routing webhook** - ACK with a destination, NAK when no destination is set
In the Voys call plan, use the same variables as listed in Tillor (such as `{callerid}`, `{did}`, `{callername}`, `{callid}` and `{code}`).
## Configure call notifications in Voys [#gespreksnotificaties-in-voys-configureren]
1. In Voys, open the [Call notifications](https://freedom.voys.nl/redirect/CallNotification) module
2. Click **Add**
3. For package/service, choose **Custom**
4. Paste the Tillor URL from **Conversation notifications**
5. Save
Voys documentation:
- [Call notifications](https://help.voys.nl/gespreksnotificaties)
## Configure caller names (caller lookup) in the call plan [#bellernamen-caller-lookup-in-call-plan-configureren]
For caller name lookup, you use a webhook step in the call plan in Voys.
1. In Tillor, open the **Webhook for Caller Lookup** URL (on **Settings > Integrations > Voys**, under **URLs to configure**) and copy it
2. In Voys, open the [Webhooks](https://help.voys.nl/webhooks) module and create a webhook with this URL template
3. Activate that webhook in your call plan through the webhook step
4. In the URL template, use the variables that Voys supports (`{callerid}`, `{did}`, `{callername}` and, if needed, `{code}`)
5. In the webhook routing, set **Variable caller name** so that the returned name is shown on handsets
The opening hours and routing webhooks do not do a caller name lookup. Use this separate step for that.
More background:
- [Webhooks](https://help.voys.nl/webhooks)
- [What are call notifications (difference from webhooks)](https://help.voys.nl/gespreksnotificaties)
## Opening hours and destinations in the call plan [#openingsuren-en-bestemmingen-in-het-belplan]
Tillor is the source for opening hours, holidays and public holiday exceptions. Voys no longer needs to know that calendar itself.
1. On **Settings > Integrations > Voys**, choose the Voys handset for **open** and optionally for **closed**
2. Copy **Opening hours webhook** or **Routing webhook** from **URLs to configure**
3. In Voys, create a [webhook](https://help.voys.nl/webhooks) with that URL template
4. Put that webhook as a step in the call plan, **above** any menus
5. Leave **Use menu** off
Two patterns:
- **Opening hours webhook** - `status=ACK` follows the **HTTP and menu succeeded** path (open), `status=NAK` follows **HTTP or menu failed** (closed). If an open destination is set, it is included with ACK as `destination`.
- **Routing webhook** - Tillor chooses the destination. In the succeeded step, set **Variable final destination**. ACK + `destination` when there is a destination, otherwise NAK.
On an error or timeout, Voys takes the failed path. Treat that as closed.
Voys documentation: [Webhooks](https://help.voys.nl/webhooks).
## Send callers to voicemail automatically [#bellers-automatisch-naar-voicemail-sturen]
With the **Caller allowed webhook**, you let Voys decide per caller whether a call is put through. Tillor checks whether the caller's number belongs to a customer who has automatic voicemail switched on.
First set up the call plan:
1. Copy **Caller allowed webhook** from **URLs to configure** on **Settings > Integrations > Voys**
2. In Voys, create a [webhook](https://help.voys.nl/webhooks) with that URL template
3. Put that webhook as a step in the call plan, **above** the steps that put the call through
4. Leave **Use menu** off
5. Send the **HTTP and menu succeeded** path on to your normal routing and the **HTTP or menu failed** path to voicemail
6. On **Settings > Integrations > Voys**, under **Call routing**, tick **Auto voicemail in Voys**
As long as that is off, you will not see **Send calls to voicemail** on the customer profile.
Then switch on automatic voicemail per customer:
1. Open the customer profile and go to the **Communication** tab
2. In **Communication settings**, tick the **Send calls to voicemail** option
3. Click **Save**
This is how the answer works:
- **ACK** - the caller may go through. This also applies to unknown numbers and to callers with a hidden number.
- **NAK** - the number belongs to a customer with automatic voicemail. Voys follows the failed path.
Tillor compares the caller's number with the phone number on the customer profile, regardless of spaces or country code notation. Phone numbers of contact persons do not count.
On an error or timeout, Voys also takes the failed path. All callers then temporarily go to voicemail, not only the blocked ones. So use a voicemail destination where you check messages regularly.
This webhook does not look at opening hours. Combine it with the opening hours or routing webhook by putting both as separate steps in the call plan.
Voys documentation: [Webhooks](https://help.voys.nl/webhooks).
## Fixed routing per caller [#vaste-routering-per-beller]
The same **Routing webhook** can send a caller straight to a specific Voys handset, extension or phone number. That only applies to customers for whom you have chosen a destination, and only when **Static call routing in Voys** is on.
1. Put the **Routing webhook** in the call plan, as with opening hours
2. In the succeeded step, set **Variable final destination**
3. On **Settings > Integrations > Voys**, under **Call routing**, tick **Static call routing in Voys**
As long as that is off, you will not see **Static call routing** on the customer profile. The webhook then only uses the handset for open or closed.
Then set the destination per customer:
1. Open the customer profile and go to the **Communication** tab
2. Under **Static call routing**, choose a Voys handset, or **Other** for a phone number or extension (for example 411)
3. Choose **None** to switch off the fixed routing
4. Click **Save**
This is how the routing webhook chooses the destination:
- If there is a fixed destination for this caller, that is the `destination`.
- Otherwise, `destination` is the Voys handset for open or closed.
- **NAK** - there is no fixed destination and no handset for the current state. This also applies to unknown numbers and to callers with a hidden number, as long as there is no open or closed handset.
Tillor compares the caller's number with the phone number on the customer profile, regardless of spaces or country code notation. Phone numbers of contact persons do not count.
On an error or timeout, Voys takes the failed path.
Voys documentation: [Webhooks](https://help.voys.nl/webhooks).
## What happens next? [#wat-gebeurt-er-daarna]
- Every call that comes in or goes out is listed in Communication > Phone Calls, with the customer attached if the number matches. See [Phone Calls](/communicatie/telefoongesprekken).
- For an incoming call, the caller appears as a card at the bottom right in Tillor, with the customer details.
- Recordings and transcripts follow as soon as the call has ended, if call recording is switched on in your Voys account.
## Problems? [#problemen]
The block only appears after installation. First click **Install** on the Voys detail page.
Voys only forwards calls once the call notifications module uses the **Conversation notifications** URL from Tillor. Check in Voys that the URL is there and that it comes from the **URLs to configure** block.
Check that the webhook for caller name lookup is in the call plan and that **Variable caller name** is set in the succeeded step. The opening hours and routing webhooks do not look up names.
First tick **Auto voicemail in Voys** under Settings > Integrations > Voys, at **Call routing**. Only then does the option appear on the customer's **Communication** tab. The same goes for **Static call routing**.
On an error or timeout of a webhook, Voys takes the failed path. Check that Tillor is reachable and that the URL in the webhook is still correct. See the warning at [Send callers to voicemail automatically](#bellers-automatisch-naar-voicemail-sturen).
Tillor compares the number with the phone number on the customer profile. Numbers of contact persons count for linking calls, but not for voicemail and fixed routing.
## See also [#zie-ook]
# Phone Calls (/en-GB/communicatie/telefoongesprekken)
Under Communication > Phone Calls you will find every call that comes in or goes out through your phone provider, with the customer attached if Tillor recognises the number. You use the page to follow up on calls and, during a call in progress, to send your organisation's details to the caller by SMS.
Before you start:
- Calls only appear after you have installed and set up [Voys](/communicatie/providers/voys). Without the integration, the list stays empty.
- Recordings and transcripts only exist if call recording is switched on in your Voys account.
- The SMS button in a call in progress only works if SMS sending is set up for your environment. See [Twilio](/communicatie/providers/twilio).
## View calls [#gesprekken-bekijken]
In the **All Calls** table you see the following for each call:
| Column | What you see |
|---|---|
| **Direction** | **Inbound** or **Outbound** |
| **Started At** | Date and time |
| **From** and **To** | The phone numbers |
| **Duration** | The length of the call, once it has ended |
| **Customer** | The linked customer, or a name that Voys passed on (not verified) if no customer is linked |
| **Status** | Where the call currently stands |
Tillor links a call to a customer based on the phone number. If the number does not belong to a customer yet, add it to the customer profile or to a contact person. New calls are then linked automatically.
A call goes through these statuses:
| Status | Meaning |
|---|---|
| Created | The call has just started |
| Ringing | The phone is ringing |
| Answered | Someone has picked up |
| In Progress | The call is in progress |
| Warm Transfer and Cold Transfer | The call has been transferred, with or without an announcement |
| Hung Up and Ended | The call is over |
| Failed | The call was not established |
## Send organisation details by SMS [#organisatiegegevens-via-sms-versturen]
A caller asks for your address or opening hours? Send them by SMS within a few seconds, while the call is in progress.
### Wait until the call is in progress [#wacht-tot-het-gesprek-loopt]
The action is on the panel with active calls at the bottom right, not in the list. The call must have the status **In Progress**. On a phone, first tap the phone icon at the top right.
### Expand the call [#klap-het-gesprek-uit]
If the call is collapsed, expand it.
### Click the message icon [#klik-op-het-berichtenpictogram]
The tooltip says **Send organization details to the caller via SMS**.
### Choose the language [#kies-de-taal]
Tillor marks the language it recognises for the caller with *(detected)*. Choose the language of the SMS.
The caller receives a short link to a public page with your organisation's details. If your organisation's address is filled in, there are also route buttons for **Waze**, **Google Maps** and **Apple Maps**. The email button on that page already has a subject and message text, with the number and time of the call in it when they are known. The website link gets tracking tags, so you can measure how many callers click through.
## Recordings and transcripts [#opnames-en-transcripties]
### Open the call [#open-het-gesprek]
In the list, click **Transcription** next to the call. The **Call Details** window opens.
### Choose a tab [#kies-een-tabblad]
On **Recording**, the call plays in your browser. On **Transcription** you find the written-out text per speaker, and on **Summary** a short summary.
Tillor creates the transcript and summary itself as soon as the call has finished and a recording exists. That takes a little while. For a call without a recording, there are no tabs.
Call recordings can contain privacy-sensitive information. Make sure you comply with privacy legislation (GDPR) when recording calls, and inform callers that calls are recorded.
## What happens next? [#wat-gebeurt-er-daarna]
- Once a call has ended, it is in the list with its duration, the customer and, if there is a recording, a transcript and summary.
- An SMS sent with organisation details is listed in Communication > Notifications with the type **Organization Details**.
## Problems? [#problemen]
Check that Voys is installed under Settings > Integrations and that the call notifications in Voys point to the URL from Tillor. See [Voys Telephony](/communicatie/providers/voys).
Tillor compares the caller's number with the phone number on the customer profile or on a contact person. Add the number and new calls will be linked. Calls that have already come in stay as they were.
The button is only on the panel with active calls at the bottom right, and only while the call has the status **In Progress**. It is not in the list on this page.
Voys did not record the call. Switch on call recording in your Voys account. Earlier calls cannot be recorded afterwards.
## See also [#zie-ook]
# Connector (/en-GB/connector)
The Tillor Connector is a small box on your park's network. It connects Tillor to the devices on site: receipt printers, barriers, access controllers and ID readers. Without a connector, Tillor cannot operate those devices. If it is switched off, printing and operating barriers from Tillor do not work. How to carry on in that case is described under [Problems](#problemen).
Tillor supplies the connector preconfigured and monitors it remotely. You do not need to install or update anything.
- Every organisation has one connector. If you manage several parks, each park (organisation) gets its own box.
- The connector reports to Tillor every 15 seconds.
- If Tillor hears nothing from it for 3 minutes, the Tillor team is notified automatically.
- Tillor installs updates itself, without you doing anything.
- The connector sets up a secure, outgoing connection itself. You do not need to open any ports on your router.
## How does this fit together? [#hoe-hangt-dit-samen]
The connector sits between Tillor on the internet and the devices on your own network. Tillor sends an instruction to the connector, and the connector carries it out on the right device. In the other direction, the connector reports what happened, for example a licence plate that was read.
```mermaid
flowchart LR
T[Tillor] <-->|beveiligde verbinding via internet| C[Connector in je park]
C --> P[Bonnenprinter]
C --> S[Slagboom of toegangscontroller]
C --> I[Identiteitslezer]
```
For example:
- You print a receipt or label. Tillor sends it to the connector, and the connector puts it on your printer.
- You give a customer an access method. Tillor sends the change through the connector to the access controllers, see [Access Control](/toegangscontrole#hoe-hangt-dit-samen).
- A guest scans an ID card at check-in. The connector passes the scan on to Tillor, see [Identity document scans](/identiteitsscans).
## What Tillor does for you [#wat-tillor-voor-je-doet]
- **Delivery**: the box arrives preconfigured for your organisation.
- **Installation and linking**: we connect your printers, barriers and scanners during start-up.
- **Updates**: new versions are installed automatically, without interruption.
- **Monitoring**: Tillor sees whether the connector is connected and reports an outage itself.
## What you need yourself [#wat-je-zelf-nodig-hebt]
- A power socket near your network equipment
- A network cable to your router or switch, on the same network as your printers and barriers
- A stable internet connection
## Connected devices [#gekoppelde-apparaten]
- **Printers**: see [Printer](/printer) for setting up and using them.
- **Barriers, gates and access controllers**: see [Access Control](/toegangscontrole).
- **ID readers**: see [Identity document scans](/identiteitsscans) for creating customers from a scan and retention periods.
On your park's network, you can view the connector's status at `http://[adres-van-de-connector]:3000/`. You will see the connection to Tillor, the print queue and the licence plates read most recently. Tillor support gives you the address during installation. More about the protocol is under [MQTT](/ontwikkelaars/mqtt).
## Problems? [#problemen]
Check that the box is receiving power and that the network cable is firmly connected. Check whether the internet in your park works. Then unplug the box briefly and plug it back in. If the problem persists, contact Tillor support. We usually see an outage ourselves already.
First check the status of the connector, see the technical tip above. Check that the device is switched on and on the same network. If the connector is connected and the device is reachable but nothing happens, contact support.
Look under **Controller Operations** on the Access Control page. If an instruction stays on **Pending**, the connector is offline.
## Terms [#begrippen]
- **Connector**: the box in your park that connects Tillor to your devices.
- **Access controller**: a box at a barrier that reads tags and QR codes.
- **Managed solution**: Tillor supplies, configures and maintains the box for you.
More explanation is in the [glossary](/begrippen).
## See also [#zie-ook]
# Documents (/en-GB/documenten)
With document management, you keep files on a customer, such as insurance policies, ID cards, contracts, permits and other attachments. Files that do not belong to anyone yet are in the central document list until you link them to a customer. Start at [Documents on a customer](#documenten-bij-een-klant) or at [The central document list](#de-centrale-documentenlijst).
- A file can be 250 MB at most.
- You can upload PDF, Word, Outlook messages (.msg), Excel, PowerPoint, images (JPEG, PNG, GIF) and text files.
- Tillor converts images to PDF after uploading. The other file types stay as they are, with a PDF preview next to them.
- When a document is deleted, you receive a copy as an attachment at your email address, if the file could be secured.
- A PDF that belongs to a signature request, and the signed PDF, can be archived but not deleted.
- An archived document is kept, but is no longer among the active documents.
## How does this fit together? [#hoe-hangt-dit-samen]
```mermaid
flowchart LR
U[Upload of e-mail] --> C[Centrale documentenlijst]
C -->|Koppelen aan klant| K[Documenten van de klant]
K --> S[Ondertekenverzoek]
S --> O[Ondertekende PDF bij de klant]
M[SEPA-mandaat] --> K
```
A document is in one place: either in the central list, or on a customer. If you link it to a customer, it disappears from the central list. Signed PDFs and signed mandates automatically end up in the customer's documents.
## Documents on a customer [#documenten-bij-een-klant]
### View documents [#documenten-bekijken]
1. Go to Customers > Overview and open the customer's profile.
2. Click the **Documents** tab.
3. You see this customer's documents, divided into **Active** and **Archived**.
4. Click a document (or the eye icon) to view it on the right in the **Preview**. With the download icon, you save it.
### Edit, move or archive a document [#een-document-bewerken-verplaatsen-of-archiveren]
The **…** menu next to a document contains **Edit**, **Move to customer**, **Download**, **Archive** (or **Unarchive**) and **Delete**.
### Delete a document [#een-document-verwijderen]
Before you start: a document that belongs to a signature request cannot be deleted. Archive it instead.
### Choose Delete [#kies-verwijderen]
Choose **Delete** in the **…** menu next to the document.
### Confirm [#bevestig]
In the dialog, confirm with **Delete**, or cancel with **Cancel**. Deleting cannot be undone.
After deleting, you receive a message at your account email address with the deleted document as an attachment, so you usually have a copy at hand.
### Have a document signed [#een-document-laten-ondertekenen]
Under a customer's documents are the **Signature requests**. With **Request signatures**, you have a PDF signed online by the customer, a contact person, a colleague or an external party. The signed PDF is added to the documents as **[title] (signed)**, with the type **Signed agreement** if the original PDF had no type. See [Signatures](/handtekeningen).
## The central document list [#de-centrale-documentenlijst]
Besides documents on customers, Tillor has a central list. Files that are not linked to a customer yet appear here, for example documents that arrive by email. Go to Administration > Documents.
### Upload a document [#een-document-uploaden]
Drag a file to the upload area, or click **Select file**. The file is saved automatically and appears as a new item in the list.
In the upload area there is a special email address. Send the file as an attachment to that address, and it appears in the central list by itself.
### Link a document to a customer [#een-document-koppelen-aan-een-klant]
Every document in the central list has an edit form and a preview panel.
### Find the document [#zoek-het-document]
Go to Administration > Documents and scroll to the document.
### Fill in the fields [#vul-de-velden-in]
- **Document Name**: the name of the document.
- **Assign to Customer**: the customer this document belongs to (optional).
- **Document type**: for example **Insurance policy**, **Insurance payment proof**, **Identity card**, **SEPA mandate**, **Signed agreement** or **Other** (optional).
- **Insurance Expiry Date**: the date on which an insurance policy or permit expires. This field only appears for document types that can have an expiry date.
- **Notes**: free notes on the document (optional).
### Save [#sla-op]
Click **Save Changes**.
### What happens next? [#wat-gebeurt-er-daarna]
- The document disappears from the central list and is on that customer's **Documents** tab.
- If you filled in an **Insurance Expiry Date**, you see it as a label on the document.
## AI suggestions for documents [#ai-suggesties-bij-documenten]
When you upload a PDF, Tillor analyses the content in the background. If Tillor recognises a name that matches a customer in your administration, a suggestion button appears next to **Assign to Customer** with the customer's name and a percentage that shows how sure Tillor is. A suggestion can also appear for an insurance expiry date.
Click the button to accept the suggestion, or choose a different customer yourself. A suggestion is always a proposal. Click **Save Changes** to make your choice final.
## Problems? [#problemen]
If the document belongs to a signature request, as the original PDF or as the signed PDF, Tillor refuses to delete it, because it is evidence. Archive it with **Archive** in the **…** menu.
The message is **The document could not be archived.** Try again. The same goes for **Restore failed** with **Unarchive**.
Your changes to **Document Name**, customer, type or notes were not saved. Check the form and click **Save Changes** again.
The document could not be downloaded. Try again.
That field only appears for document types that can have an expiry date, such as **Insurance policy**. First choose the right type under **Document type**.
Check the file type (PDF, Word, Outlook message, Excel, PowerPoint, JPEG, PNG, GIF or text) and the size (250 MB at most).
As soon as a document is linked to a customer, it is only on that customer under **Documents**. If it is in the archive, you will find it under **Archived**.
## Terms [#begrippen]
- **Document type**: the kind of document, for example **Insurance policy** or **Identity card**.
- **Archived**: a document that is kept but is no longer among the active documents.
- **Central document list**: files that are not linked to a customer yet.
- **Signature request**: an instruction to have a PDF signed. See [signature request](/begrippen#ondertekenverzoek).
- **Customer**: the record in Tillor that a document hangs on. See [customer](/begrippen#klant).
## See also [#zie-ook]
# Overview (/en-GB/eigen-velden)
With custom fields, you add fields to a record yourself. Think of a gas bottle deposit number on a customer, a surcharge on a terrain or an expected arrival time on a reservation. The field appears in that record's form, just like the fields Tillor brings itself.
You manage them under Settings > Custom fields.
- You cannot change a field's type and key after creating it
- Text: 1,000 characters at most by default, Long text 10,000. A pick list has 200 options at most
- A group of fields has 30 subfields at most. Repeating rows: 100 rows at most by default, never more than 500
- Files: 20 per field at most by default (never more than 50), each 50 MB at most
- A field that disappears because of a condition is cleared when the record is saved
- A deleted field disappears from the forms. The values that were filled in do stay on the records
- All limits per type are under [Field types and settings](/eigen-velden/veldtypes)
## How does this fit together? [#hoe-hangt-dit-samen]
You create a field once, and it then appears everywhere that kind of record is filled in.
```mermaid
flowchart LR
L[Keuzelijst met opties] -->|gebruikt door| V[Eigen veld van het type Keuze]
V -->|staat in het formulier van| R[Klant, terrein, bezetting, taak en andere records]
T[Toegang: wie mag zien en bewerken] --> V
R -->|waarden komen terug in| E[Exports, filters en automatiseringen]
```
- **Pick lists** you create separately from the fields. If you change an option, it is correct in every field that uses the list.
- **A field** belongs to one kind of record. The type and key are fixed.
- **Access** you arrange per field. Anyone who may not see a field never gets to see the value, not even in exports or automations.
## Where you can add custom fields [#waar-kun-je-eigen-velden-toevoegen]
Every kind of record has its own tab. The number of fields is shown after the name.
| Tab | Record |
|---|---|
| **Customers** | Customer profile |
| **Terrains** | Terrain |
| **Occupations** | Occupation |
| **Meters** | Meter |
| **Tasks** | Task |
| **Products** | Product |
| **Documents** | Document |
| **Reservations** | Reservation |
| **Access methods** | Access method |
The **Pick lists** tab has no records. There you create lists of options that you reuse in choice fields.
## What you can do with them [#wat-je-ermee-kunt]
- Add a field of a certain type, such as text, number, amount, date, choice or file. See [Field types and settings](/eigen-velden/veldtypes)
- Place the field in the form among the existing fields, or only show it when another value matches
- Make the field required, optionally only under a condition
- Decide who may see the field and who may edit it. See [Visibility and access](/eigen-velden/zichtbaarheid-en-toegang)
The values are available in the export of customers and terrains and in automations. An automation can also fill a custom field with the **Set custom field** step.
## Who can use it [#wie-kan-het-gebruiken]
Creating, changing, rearranging and deleting fields is possible with the **Manage custom fields** permission. Anyone without it can open the page if they may view settings, but the buttons are then disabled.
Anyone who may see and edit a field can fill it in on a record.
## Parts [#onderdelen]
## Terms [#begrippen]
- **[Custom field](/begrippen#eigen-veld)**: an extra field that you add to a record yourself
- **Label**: the name that colleagues see above the input field
- **Key**: the fixed name of the field, for example `gasMeterNumber`. You see it in the list and it is used in exports and filters
- **Type**: what kind of value the field stores
- **[Pick list](/begrippen#keuzelijst)**: a list of options that you use in several choice fields
More terms are in the [glossary](/begrippen). A worked example is under [Practical examples](/praktijk).
# Create pick lists (/en-GB/eigen-velden/keuzelijsten)
A field of the type **Choice** or **Multiple choice** needs a pick list. You create the list once and use it in as many fields as you like. If you change an option, it is correct everywhere straight away.
### Open the Pick lists tab [#open-het-tabblad-keuzelijsten]
Go to Settings > Custom fields and click **Pick lists**. Every list shows its options with colour and how many fields use it.
### Create a list [#maak-een-lijst-aan]
Click **New pick list**. Fill in a **Name** and optionally a **Description**. Tillor creates a **Key** itself.
### Add options [#voeg-opties-toe]
Click **Add option** and fill in the **Label**, for example *Seasonal*. Choose a colour with the colour dot. A list needs at least one option.
### Save [#sla-op]
Click **Save**. Then choose the list when creating a field of the type **Choice** or **Multiple choice**.
## What happens next? [#wat-gebeurt-er-daarna]
- The list is available when you create a field of the type **Choice** or **Multiple choice**.
- If you later change an option's label or colour, it is correct straight away in every field that uses the list.
- An option's **Value** is fixed as soon as it has been used on a record.
## Problems? [#problemen]
A list that is still used in a field cannot be deleted. Tillor says that the list is still used by a field. First remove the list from those fields or delete those fields.
No list exists yet. Create one on the **Pick lists** tab and then choose it in the field.
A list needs at least one option and 200 at most. Add an option with **Add option**.
# Create a custom field (/en-GB/eigen-velden/veld-aanmaken)
With a custom field, you store information that Tillor does not know itself, such as a gas bottle deposit number on a customer. You create it in a few minutes, and on the right of the page you immediately see how colleagues will get the field. Afterwards you fill it in on the record itself, see [Visibility and access](/eigen-velden/zichtbaarheid-en-toegang).
Before you start:
- You need the **Manage custom fields** permission. Without that permission, the **New field** button is grey.
- If the field needs a choice, first create a [pick list](/eigen-velden/keuzelijsten). Otherwise it says **Create a pick list first**.
- Choose the type carefully: you cannot change it afterwards.
### Open Custom fields and choose the tab [#open-eigen-velden-en-kies-het-tabblad]
Go to Settings > Custom fields and open the tab of the record the field belongs to, for example **Customers**. Click **New field**.
If the tab is still empty, you see a few suggestions under **Quick start**, such as **Number of dogs** for customers. Click a suggestion to open the form already filled in. Suggestions with a pick list first ask for a list. See [Pick lists](/eigen-velden/keuzelijsten).
### Fill in the field [#vul-het-veld-in]
Under **1. Field**, you choose the kind of record at **Applies to**, give the field a **Label** and choose the **Type**. Every type card has a short explanation.
Tillor creates a **Key** from your label itself. Under **3. Key** you can change it with **Change** before you save.
### Fine-tune the field [#stel-het-veld-af]
Under **2. Settings** are the options that belong to the chosen type. See [Field types and settings](/eigen-velden/veldtypes). You can also choose:
- **Width**: **Half** or **Full width** in the form
- **Position in form**: leave the field at the bottom (**Default section (bottom)**), or choose an existing field of the form and put the field **Before** or **After** that field
- **Required**: the record cannot be saved while the field is empty
- **Visibility**: only show the field when a condition is met
- **Required when**: only make the field required when a condition is met
- **Validation rules**: compare the value with another field, or check it with an expression
- **Help text**: a short explanation under the input field
### Decide who may access it [#bepaal-wie-erbij-mag]
Under **4. Access**, by default everyone may see and edit the field. Click **Restrict** to change that. See [Visibility and access](/eigen-velden/zichtbaarheid-en-toegang).
### Save the field [#sla-het-veld-op]
Click **Save**. Tillor says **Field saved** and takes you back to the list. The field is immediately in the record's form.
## What happens next? [#wat-gebeurt-er-daarna]
- The field is immediately in the record's form, at the place you chose.
- Existing records still have an empty value. If the field is required, a colleague has to fill it in before saving such a record again.
- The values are included in the export of customers and terrains and are available in automations.
- Who may see or edit the field, you arrange under **4. Access**.
## Position and conditions [#plaats-en-voorwaarden]
With **Position in form**, you put a field with the fields it belongs with, instead of at the bottom. With **Visibility**, you only show a field when another value calls for it. In this example, **Winter storage** only appears for a terrain with the **Contract type** Seasonal, directly after **Description**.
A condition consists of one or more rules. At **Condition type**, you choose **Rules** or **Expression**. The expression is meant for complicated cases and requires a bit of code. For most fields, rules are enough.
If a field disappears because the condition no longer holds, Tillor erases the value when the record is saved. If the field comes back, it is empty. A field that is required under a condition is only required while it is visible.
## Edit, move or delete a field [#een-veld-bewerken-verplaatsen-of-verwijderen]
In the list, every field has four buttons.
| Button | What it does |
|---|---|
| **Move up** and **Move down** | Changes the order of the fields in the form |
| **Edit field** | Opens the field. The type, the key and the record the field belongs to are then fixed |
| **Delete** | Deletes the field after a confirmation |
A deleted field disappears from the forms. The values that were filled in do stay on the records, but are no longer shown or edited.
## Problems? [#problemen]
The button is disabled without the **Manage custom fields** permission. Ask an administrator to grant the permission.
That is not possible. Create a new field with the right type and then delete the old field. Tillor does not carry over values from the old field.
Check at **Position in form** whether you chose a field. With **Default section (bottom)**, the field comes after the form's standard fields. If it has a condition at **Visibility**, it is only there when that condition holds.
# Field types and settings (/en-GB/eigen-velden/veldtypes)
When you create a field, you choose a type. You cannot change the type afterwards. Under **2. Settings** are that type's options. All options are optional, unless stated otherwise below.
For almost every type, you can also fill in an **Error message**. It replaces the default message when a value is not right. With **Placeholder**, you decide what appears in the empty input field.
## Text and Long text [#tekst-en-lange-tekst]
**Text** is one line, **Long text** several lines.
| Setting | What it does |
|---|---|
| **Minimum length** and **Maximum length** | The number of characters. Without a maximum, 1,000 characters apply for Text and 10,000 for Long text |
| **Format** | **Any text**, **Email address**, **Phone number**, **Web address**, **IBAN**, **Postcode**, **Digits only** or **Custom pattern** |
| **Pattern (regular expression)** | With **Custom pattern**. The whole value must match. Tillor refuses patterns with nested repetitions or backreferences and patterns longer than 200 characters |
## Number and Amount [#getal-en-bedrag]
**Amount** uses your organisation's currency.
| Setting | Applies to | What it does |
|---|---|---|
| **Minimum** and **Maximum** | Number, Amount | Lower limit and upper limit |
| **Whole numbers only** | Number | No decimals allowed |
| **Display** | Number, only for whole numbers | **Input field** or **Counter (− / +)** with buttons |
| **Step** | Number | The value must be the minimum (or 0) plus a whole number of steps |
| **Maximum decimals** | Number | Limits the decimals |
## Yes / no [#ja--nee]
An on/off switch. With **Must be checked**, the record can only be saved with the box ticked. Handy for consent.
## Date [#datum]
| Setting | What it does |
|---|---|
| **Earliest date** and **Latest date** | Fixed limits |
| **Not in the past** and **Not in the future** | Compared with today in your organisation's time zone |
| **Within days of today** | At most this many days before or after today |
## Choice and Multiple choice [#keuze-en-meerkeuze]
You choose a [pick list](/eigen-velden/keuzelijsten). **Choice** stores one option, **Multiple choice** several. With Multiple choice, you set **Minimum selected** and **Maximum selected**. A list has 200 options at most.
## Link to record [#koppeling-naar-record]
The field points to another record in Tillor.
| Setting | What it does |
|---|---|
| **Links to** | Customer, Terrain, Occupation, Meter, Task, Invoice, Reservation, Payment report, Phone call, Contact, Product, Meter cabinet, Payment, Document, NFC tag or Access method |
| **Several records** | Allow more than one linked record. You can then also set a minimum and maximum |
| **Display** | **Picker** or **Dropdown** (one searchable list) |
| **Only this customer's records** | Limits the options to records of the customer you are editing. Only for Contact, Invoice, Reservation, Occupation, Payment, Document, NFC tag and Access method |
| **Only the terrain's records** | Limits the options to the terrain's meters: for an occupation the terrain of that occupation, for a terrain the terrain itself. Only for Meter. You cannot save a meter from another terrain |
| **Filter options** | Optional TypeScript that decides per option whether it appears in the list, see [Filter options](#opties-filteren). For Contact, Product, Meter cabinet, Payment, Document, NFC tag, Access method, Invoice, Reservation, Occupation, Meter and Terrain |
If a linked record is deleted later, the field shows **Deleted**.
If there are at least 50 records to choose from, you first type 2 characters to search. If there are fewer, such as the meters of one terrain, you see them all straight away.
### Filter options [#opties-filteren]
With **Filter options**, you decide yourself which records the field offers. You write TypeScript, like the [rate formula](/terreinen#tariefformule), which Tillor runs for every option. If it returns `true`, the option appears in the list; otherwise it does not.
In the filter, you read fields with curly braces. The **Variable** menu shows what is available, including custom fields:
| Variable | What it is |
|-----------|------------|
| `{option.…}` | The record you could choose, for example `{option.type}` or `{option.terrainId}` for a meter |
| `{occupation.…}`, `{terrain.…}`, … | The record you are editing, under the name of its type, with `customFields` for its own fields |
Example: only electricity meters of the occupation's terrain.
```ts
return {option.type} === "ELECTRICITY" && {option.terrainId} === {occupation.terrainId};
```
### Custom labels [#eigen-labels]
The same filter can also decide what an option is called in the list. What you return decides the result:
| You return | Result |
|----------------|-----------|
| `true` | The option is in the list under its own name |
| `false`, `null` or an empty text | The option is not in the list |
| A text | The option is in the list under that text |
| `{ label, group }` | The option gets that label and goes under the heading `group`. Both are optional |
Example: only meters from ICY and Hydrodigit, with the type added and grouped per supplier.
```ts
if (!["ICY", "TILLOR_HYDRODIGIT"].includes({option.provider})) return false;
return { label: {option.name} + " · " + {option.type}, group: {option.provider} };
```
The label applies in the picker and on the chosen chips in the form. In places that only show the value, such as the detail page or an export, the record's own name is shown.
**Insert example** under the field gives a starting point. A filter that does not compile cannot be saved; the message under the field says what is wrong.
The filter does not only limit the list. If you still choose a record through the API or an old form that the filter leaves out, Tillor refuses to save it and names the field. Automations and imports are not checked, just as they may also fill in hidden fields.
## Group of fields [#groep-velden]
A fixed set of subfields that appear together in the form, such as **Dogs** and **Other animals** under **Animals**.
| Setting | What it does |
|---|---|
| **Add sub-field** | Every subfield has a label, type and its own settings. Click **More** for the key, width and conditions. A group can have 30 subfields at most |
| **Display** | **Card** (with a border) or **Inline** (the fields continue in the form) |
| **Columns** | 1 up to and including 4 |
| **Width in the group** | Per subfield how many columns it spans |
## Repeating rows [#herhalende-rijen]
A table to which you add rows with **Add row**, for example several vehicles. You set the subfields as with a group. With **Minimum rows** and **Maximum rows**, you limit the list. Without a maximum, 100 rows apply, and more than 500 is not possible.
A group or repeating row may contain one more level of group or repeating row, no deeper.
## Files [#bestanden]
For documents and photos. A file that you upload can only be opened by whoever may see the field.
| Setting | What it does |
|---|---|
| **Several files** | Allow more than one file |
| **Minimum files** and **Maximum files** | Without a maximum, 20 files apply, and more than 50 is not possible |
| **Maximum size per file (MB)** | 50 MB per file at most, even if you want a higher value |
| **Allowed file types** | **Any file**, **Images**, **PDF**, **Office documents**, or your own extension such as `.dwg` or a MIME type such as `application/zip` |
Tillor checks the type from the file's content, not only from its name.
## JSON [#json]
Meant for structured data that an integration supplies. Colleagues rarely fill this in on the form. With **Maximum size (KB)**, you set a limit, 64 KB by default and 256 KB at most.
## Settings for every type [#instellingen-voor-elk-type]
| Setting | What it does |
|---|---|
| **Encrypt this value** | Stores the value encrypted. An encrypted field cannot be searched, filtered or sorted and is not available as a variable in automations. Only for top-level fields, so not for subfields. All custom fields are stored encrypted anyway, whether you switch this on or not |
| **API only** | Hides the field in forms and detail views. An integration fills it through the API. Such a field cannot be required |
| **API only, read-only** | Does show the field, but disabled, so colleagues see the value but cannot change it |
| **Validation rules** | Compare a date, number or amount with another field (**Before**, **On or before**, **After**, **On or after**, with an offset in days, weeks or months), or check the value with an expression. 10 rules per field at most |
A changed limit does not apply retroactively. A value that you do not change does not block saving the record, even if it no longer meets the new rule.
# Visibility and access (/en-GB/eigen-velden/zichtbaarheid-en-toegang)
A custom field appears in the form of the record it belongs to. By default, everyone with access to that record can see and fill in the field. You can restrict that per field.
## Where you see the values [#waar-je-de-waarden-ziet]
You fill in custom fields in the same place as the other details of the record.
| Record | Where |
|---|---|
| Customer | The **Customer Details** block on the customer profile |
| Terrain, meter, occupation, reservation, product, document, access method | The form to create or edit the record |
| Task | The task window. You save changes with **Save fields** |
A field appears in the position you chose under **Position in form**. If you made no choice, it appears after the standard fields.
If a field is required, you cannot save the record while it is empty. A field with **Visibility** only appears when the condition is met.
Custom fields are also included in the export of customers and terrains and you can use them in automations.
## Who can see or edit a field [#wie-mag-een-veld-zien-of-bewerken]
Open the field under Settings > Custom fields and go to **4. Access**. Click **Restrict**.
You have two blocks.
| Block | What it does |
|---|---|
| **Who can see this field** | If you leave it empty, every member can see it. Anyone who may not see it never sees the value, not even in exports or in automations they edit |
| **Who can edit this field** | If you leave it empty, everyone who sees the field can also edit it. Others see it read-only |
In each block you choose a **colleague or group** and/or a **permission**. If someone matches one of the chosen colleagues, groups or permissions, they have access. You can only edit a field if you are also allowed to see it.
In the list, such a field gets the label **Restricted**. Hover over it for the explanation: only certain colleagues, groups or permissions may see or edit this field.
The **Visibility** option (a condition) only hides a field in the form. Anyone who may see the field can still find the value. Use **Who can see this field** if nobody else may read it.
## Who can manage fields [#wie-mag-velden-beheren]
Creating, changing, reordering and deleting fields and managing choice lists requires the **Manage custom fields** permission. How you grant permissions is described in [Inviting users and granting permissions](/gebruikers/gebruikers-en-rechten). The **Custom fields** page is visible to anyone who may view or edit settings, or who has this permission. Without the permission you only see the fields you may read, and **New field**, edit and delete are disabled.
## Problems? [#problemen]
Check under **Who can see this field** whether that colleague, their group or one of their permissions is selected. If the field is an **API only** field, it does not appear in forms.
Look under **Who can edit this field**. If colleagues, groups or permissions are selected there, others are limited to reading. If someone tries to change the value anyway, Tillor refuses.
# Creating and editing an invoice (/en-GB/facturen/aanmaken-en-bewerken)
A new invoice is always a draft: you create it on the customer profile and fill in the lines. As long as it is a draft, you can add, change, move and delete lines. After that you [book it](/facturen/boeken).
Before you start:
- The customer already exists in Tillor. See [Customer management](/klantenbeheer).
- For products with a terrain or occupation, the customer has an occupation on that terrain. Without an occupation you create a quote that you cannot book.
## Creating an invoice [#een-factuur-aanmaken]
You create invoices on the customer profile, not from Administration > Invoices.
### Open the customer [#open-de-klant]
Go to Customers > Overview and open the customer's profile.
### Create the invoice [#maak-de-factuur-aan]
In the **Invoices** block, click **New Invoice**. Tillor creates a draft invoice and opens the invoice page straight away.
The invoice gets a temporary draft number. The final invoice number, the invoice date and the due date only appear when you [book it](/facturen/boeken).
## Adding and changing lines [#regels-toevoegen-en-aanpassen]
The invoice page has a table with the invoice lines. At the bottom is an empty row where you start a new line.
### Choose a product or type a description [#kies-een-product-of-typ-een-omschrijving]
Choose a **Product** from the list and Tillor fills in the **Description** and the price. You can also type a description yourself.
### Enter quantity and price [#vul-aantal-en-prijs-in]
Adjust the **Quantity** and the **Price (incl. VAT)** per unit where needed. The **Total** of the line is calculated automatically. If the setting for VAT per line is on for your organisation, you also choose the VAT rate.
### Add a note (optional) [#voeg-een-notitie-toe-optioneel]
Below the table you can fill in a **Note (Optional)**. That text appears on the invoice and is visible to the customer.
Changes are saved automatically almost immediately. You can also click **Save changes**, or **Cancel** to undo unsaved changes.
### Reordering or deleting lines [#regels-herschikken-of-verwijderen]
- Drag a line by the handle to its left to change the order.
- Click the cross to the right of a line to delete it.
On the **Events** timeline next to the invoice you see what was changed and when, with the before and after of the fields and lines.
## Lines with an action [#regels-met-een-actie]
If the chosen product has an action on the invoice line, extra input appears below the line. Which actions a product has is set on the product itself. See [Product actions](/producten/productacties).
| Action | What you fill in on the invoice |
|-------|-----------------------------|
| **Top up NFC Tag** | The tag to be topped up. After payment, Tillor adds the amount to the tag's balance. |
| **Period** | Start and end date, and for a product with a terrain also the **Terrain** (in a list or **Choose on the map**). |
| **Extend Occupation Period** | The terrain for which you extend the occupation, plus start and end date. |
| **Request contact details** | The customer's email address and phone number. If they are required, you cannot book without them. |
| **Create access method** | The type of access method and optionally a licence plate or PIN code. |
| **Show alert** | Nothing. You only see an alert with the text set on the product. |
| **Prevent booking** | Nothing. The invoice cannot be booked as long as the line is on it. |
### Choosing the period and terrain [#periode-en-terrein-kiezen]
For a line with **Period** you choose a start and end date. Below it you see the number of days and the **Quantity** that Tillor charges. If the period does not fit a week or month of the product exactly, Tillor rounds up and **Rounded up** is shown. With the **Pro rata** checkbox you charge a partial week or month proportionally instead. That checkbox only appears for products with a weekly or monthly period.
If the product needs a terrain, you first choose the period and then the **Terrain**.
When booking, Tillor creates the reservation. A card then appears on the line with reservation number, status, terrain and dates. Whether the customer is checked in straight away depends on the product: with **Check in on booking** it happens when booking, with **Check in on payment** only once the invoice is paid. An advance payment only holds the terrain.
### Extending an occupation [#een-bezetting-verlengen]
With **Extend Occupation Period** you invoice a period for one of the customer's occupations, for example pitch fees.
### Choose the terrain [#kies-het-terrein]
Under **Select active occupation** choose the terrain. The list shows the customer's active occupations.
### Choose the period [#kies-de-periode]
Choose the **Start date**. Tillor then immediately opens the calendar for the **End date**. Below the dates you see until when the occupation is currently invoiced and how many days and what quantity the line covers.
### Set the rounding [#stel-het-afronden-in]
The **Round to next period boundary** checkbox is on by default. The line then ends at the next period boundary of the rental frequency, so the customer follows the same cycle in time. With the checkbox off, the line lasts exactly one period from the start date.
The line gets a description in the form **Product name | Terrain name | Period**. The end date counts as the last day, and a half period is also charged for half.
If the occupation already has a **Paid until** date and rounding is on, the new line starts the day after. If **Paid until** is still empty, you choose the start date yourself and Tillor calculates the end date up to the next period boundary. What happens with **Paid until** and **Invoiced until** after booking and payment is described under [Occupations](/bezettingen).
Two extra checkboxes help in exceptional situations:
- **Show all terrains (offer)** lets you choose any terrain to make a quote. If the customer does not have an occupation on that terrain, you cannot book the invoice. Users with the **Invoice corrections** permission can still book such an invoice, see [Booking an invoice](/facturen/boeken#problemen).
- **Mark as credit (refund)** turns the line into a refund. The quantity becomes negative and the period runs from today until **Paid until**. With **Round to period boundary** you round that to a period boundary.
## What happens next? [#wat-gebeurt-er-daarna]
- Changes are saved automatically almost immediately. The **Events** timeline shows who changed what.
- Nothing is sent to the customer and nothing changes about occupations or tags. That only happens when you [book](/facturen/boeken) and when payment is made.
- A draft with a **Prevent booking** line cannot be booked.
- You delete a draft with **Delete invoice** in the actions menu.
## Problems? [#problemen]
Only draft invoices can be edited. Under certain conditions you can set a booked invoice back to draft, see [Correcting an invoice](/facturen/corrigeren#terugzetten-naar-concept).
The customer has no available tag. Link an NFC tag to the customer first. See [NFC](/nfc).
The button is on the customer profile in the **Invoices** block, not on the invoice list under **Administration**.
For **Extend Occupation Period**, the list only shows the customer's active occupations. Create an occupation first, see [Occupations](/bezettingen), or use **Show all terrains (offer)** for a quote.
## Next [#verder]
# Printing, downloading or sharing an invoice (/en-GB/facturen/afdrukken-en-downloaden)
With **Print** you print an invoice, save it as a PDF or send it to a printer. The button is on every invoice page, including drafts. The arrow next to it opens a menu with the other options. You create a link for the customer under [Sharing a personal link](#een-persoonlijke-link-delen).
Before you start: for the printer options, a Tillor Connector must be running for your organisation. Without a connector those options are greyed out.
## Printing or saving [#afdrukken-of-opslaan]
| Option | What it does |
|-------|--------------|
| **Print** | Opens the print window of your browser. You can also use the shortcut Ctrl+P (Cmd+P on a Mac). |
| **Open in new window** | Shows the PDF in a new window. |
| **Download PDF** | Saves the invoice as a PDF file. |
| **Send to A4 printer** | Sends the invoice to your connected A4 printer. |
| **Send to receipt printer** | Sends the invoice to your connected receipt printer. |
The two printer options are greyed out as long as no Tillor Connector is active for your organisation. How you set up printers is described under [Printer](/printer).
## Showing the invoice on a tablet [#de-factuur-tonen-op-een-tablet]
If there is a tablet at the desk that shows customer documents, you can have the invoice appear there. Open the three dots at the top right of the invoice page and choose **Preview on iPad**. For a cash payment, the same button is also in the payment window.
## Sharing a personal link [#een-persoonlijke-link-delen]
For a booked invoice you can create a link that the customer can open to view the invoice and, if anything is still outstanding, pay online.
### Open the actions menu [#open-het-actiemenu]
Click the three dots at the top right of the invoice page and choose **Personal URL**.
### Share the link [#deel-de-link]
Tillor copies the link to your clipboard and shows the message **URL generated**. Paste it into a message or email to the customer.
The actions menu contains more options. See [Correcting an invoice](/facturen/corrigeren) for copying, reversing and recalculating an invoice.
## What happens next? [#wat-gebeurt-er-daarna]
- Printing, downloading and sending to the printer change nothing about the invoice.
- With **Preview on iPad** the customer sees the invoice on the tablet. The invoice timeline shows that the PDF was sent to the tablet.
- The personal link has no expiry date. The customer sees the outstanding amount there and can pay online. See [Letting a customer pay online](/betalingsverwerking/online).
- Products can also print automatically on payment. See [Product actions](/producten/productacties#thermisch-printen-en-a4-printen).
## Problems? [#problemen]
There is no active Tillor Connector for your organisation. Check the connection and the printer settings, see [Printer](/printer).
That option is only in the actions menu of a booked invoice.
Tillor then shows a message with the reason, for example that paper or toner has run out. Fix that and try again.
## Next [#verder]
# Registering a payment (/en-GB/facturen/betalingen-registreren)
On a booked invoice with an outstanding amount you make a payment or record one, for example a card payment, cash or a direct debit. The amount, the payment status and the **Payments** list next to the invoice are then updated. All methods are also described under [Payment processing](/betalingsverwerking).
Before you start:
- The invoice is booked and an amount is still outstanding. Otherwise **Make payment** is missing.
- For **Terminal**, Mollie is connected. For **SEPA Mandate**, the customer has an active mandate. Otherwise the method is not in the list or is greyed out.
## Making a payment [#een-betaling-uitvoeren]
### Open the booked invoice [#open-de-geboekte-factuur]
Go to Administration > Invoices and open a booked invoice. The **Make payment** button is there as long as an amount is outstanding.
### Choose the payment method [#kies-de-betaalmethode]
Click **Make payment** and choose a **Payment method**.
| Method | Use it for |
|---------|-----------------|
| **Terminal** | A card payment. You choose a payment terminal and Tillor sends the payment to it. See [Terminal](/betalingsverwerking/terminal). |
| **Internal Transfer** | Moving the amount to another booked invoice of the same customer (**Target invoice**). See [Internal transfer](/betalingsverwerking/interne-overboeking). |
| **Cash** | Recording a cash payment. See [Cash](/betalingsverwerking/contant). |
| **Bank Transfer** | Recording a bank transfer you have received. |
| **SEPA Mandate** | An automatic direct debit via an active **Mandate** of the customer. See [Mandate](/betalingsverwerking/mandaat). |
| **Others** | Another form of payment, such as a cheque. It is under **More payment methods** and is only visible if you have turned it on. A description is then required. |
**Terminal** and **SEPA Mandate** only appear if they are available for your organisation. **SEPA Mandate** is greyed out as long as the customer has no active mandate, and does not exist for credit invoices.
### Enter the amount [#vul-het-bedrag-in]
The **Amount** defaults to the full outstanding amount. Type a different amount or use the **25%**, **50%**, **75%** and **100%** buttons. The amount may not be higher than what is outstanding.
### Fill in the extra fields [#vul-de-extra-velden-in]
For **Cash**, **Bank Transfer** and **Others** you optionally fill in the **Date received** (not in the future) and a **Note**. For a direct debit you choose the **Mandate** and optionally a **Delay (days)**, where 0 sends immediately.
If you choose **Bank Transfer** and the customer has an email address, you can tick **Send structured communication reminder**. The customer then receives an email with the tip to use the structured communication for future payments.
### Submit the payment [#voer-de-betaling-uit]
Click **Submit payment**.
For **Cash** there is also a **Preview on iPad** button to show the invoice to the customer on a linked tablet.
## Maximum amounts [#maximumbedragen]
A cash payment may not be higher than the **Cash payment maximum** under Support > Settings > Payments (2999 euros by default). For a direct debit, the amount may not exceed the maximum of the mandate.
## Linking an existing payment [#een-bestaande-betaling-koppelen]
If a payment or bank transaction that belongs to this invoice has already come in, you link it instead of creating a new one.
### Open the actions menu [#open-het-actiemenu]
Click the three dots at the top right of the invoice page and choose **Assign payment**.
### Choose the payment [#kies-de-betaling]
In the window, choose a payment or group. The **Payment groups**, **Card & online payments** and **Bank transactions** tabs show what is available. At the top are suggestions that match the outstanding amount.
### Link [#koppel]
Click **Assign payment**, **Assign group** or **Assign bank transaction**, depending on what you chose.
For bank transactions you also need the **View bank transactions** permission.
## Creating a link for a part-payment [#een-link-voor-een-deelbetaling-maken]
If the customer only wants to pay part of the outstanding amount, you create a payment link for an amount you choose. You can do that on any booked invoice with an outstanding amount.
### Open the actions menu [#open-het-actiemenu-1]
Click the three dots next to **Send notification** and choose **Part-payment link**.
### Enter the amount [#vul-het-bedrag-in-1]
Under **Amount**, type what the customer may pay. The amount must be greater than 0 and may not be higher than what is still outstanding.
### Create the link [#maak-de-link]
Click **Create and copy link**. Tillor copies the link to your clipboard and shows it under **Payment link**. With the copy button next to it you copy it again.
Send the link to the customer yourself, for example by email or chat. The customer opens the normal payment page of the invoice, but it now only asks for your amount, with a message that it is a part-payment of the amount still outstanding. The customer then pays in the way they choose on [the payment page](/betalingsverwerking/online).
The link stays valid, but never asks for more than what is outstanding at that moment. If part has been paid in the meantime, the payment page adjusts accordingly. After a payment the invoice shows Partially until the full amount has come in.
## What happens next? [#wat-gebeurt-er-daarna]
- The outstanding amount decreases and the payment status changes: Partially as long as something is outstanding, Paid once everything has come in.
- For a direct debit or card payment, the invoice first shows Pending until the money has definitively come in.
- If a line has a payment action, Tillor carries it out as soon as the invoice is paid. Think of topping up an NFC tag, extending **Paid until** of an occupation or printing a receipt. See [How does this fit together?](/producten#hoe-hangt-dit-samen).
- The payment appears on the payment report of the day. See [Payment reports](/boekhouden/betalingsrapporten).
## Problems? [#problemen]
The invoice must be booked and an amount must be outstanding. You cannot pay on a draft invoice.
The invoice must be booked and an amount must still be outstanding.
The customer has no active mandate. Set that up in the customer details, see [Mandate](/betalingsverwerking/mandaat).
That payment method is off by default. Turn on **Show "Others" payment method** under Support > Settings > Payments.
The payment has started, for example a direct debit, but the money has not definitively come in yet. Once the payment is processed, the status changes to **Paid**. See [Statuses](/facturen/statussen).
## Next [#verder]
# Booking an invoice (/en-GB/facturen/boeken)
Booking turns a draft into a final invoice with its own invoice number. Only then can you [send](/facturen/versturen) the invoice and [have it paid](/facturen/betalingen-registreren). So check the lines before you book, because a booked invoice can no longer be changed freely.
Before you start:
- The invoice has at least one line, or a total that is not zero.
- Lines with **Period** or **Extend Occupation Period** have a start and end date.
- If a line has an action that asks for details, they are filled in. Think of **Request contact details** or **Create access method**.
- For a Belgian customer with a VAT number, a Peppol ID is filled in. See [Peppol](/boekhouden/peppol).
If something is wrong, **Book invoice** is greyed out. Hover over the button to read why. See also [Problems?](#problemen).
## Booking an invoice [#een-factuur-boeken]
### Open the draft invoice [#open-de-conceptfactuur]
Go to Administration > Invoices and open an invoice with status Draft, for example via the **Drafts** list.
### Check the invoice [#controleer-de-factuur]
Review the lines and the note.
### Click Book invoice [#klik-op-boek-factuur]
The invoice gets a sequential invoice number. Tillor confirms that the invoice has been booked.
## What changes? [#wat-verandert-er]
This is what an invoice looks like before and after booking. They are two different example invoices, but you can see the difference in number, status and buttons.
**Before booking**: a temporary draft number and the **Book invoice** button.
**After booking**: a final invoice number, a payment status and the **Make payment** and **Send notification** buttons.
## What happens next? [#wat-gebeurt-er-daarna]
- The **invoice date** is the day of booking. The **due date** is that day plus your organisation's **Default due date (days)**, 7 days by default. You change that under Support > Settings > Invoicing.
- If the total is not a multiple of 5 cents, Tillor adds a **Rounding** line itself.
- If the invoice has a negative total, it becomes a **Credit Invoice**.
- If the customer has a Peppol ID, Tillor sends the invoice automatically via Peppol. See [Peppol](/boekhouden/peppol).
- Lines with **Extend Occupation Period** set **Invoiced until** of the occupation to the end of the line. **Paid until** only follows on payment. See [How does this fit together?](/producten#hoe-hangt-dit-samen).
- Lines with **Period** and **Ask for a site** create a reservation. Whether the customer is checked in straight away depends on the product.
- If a direct-debit mandate is linked, Tillor immediately creates an outstanding payment. The bank is charged two days after booking.
- The customer receives nothing automatically. You send the notification yourself, see [Sending an invoice](/facturen/versturen).
- Do you still want to change something? Within 7 days and as long as nothing has been sent, you set the invoice [back to draft](/facturen/corrigeren#terugzetten-naar-concept).
## Choosing a different payment term [#een-andere-betaaltermijn-kiezen]
If the due date differs from your default, you do not need to set that up in advance.
### Open the dropdown menu [#open-het-keuzemenu]
Click the arrow next to **Book invoice** and choose **Custom payment terms…**.
### Choose the term [#kies-de-termijn]
Under **Payment terms** choose an option, from **Due on invoice date** to **Net 60 days**. You immediately see the **Estimated due date**.
### Book [#boek]
Click **Book invoice**.
## Forwarding to your accounting [#doorsturen-naar-je-boekhouding]
Forwarding to your accounting software normally happens by itself. If you want to start it again, for example after an error, you can do that per invoice.
Open the booked invoice, click the three dots at the top right and choose **Send to accounting software**. Which systems are available is described under [Accounting](/boekhouden). [Exact Online](/boekhouden/betalingsrapporten/boekhoudsystemen/exact-online) is available on request.
## Problems? [#problemen]
Hover over the button. Tillor names the reason. The most common ones are below.
The product on that line does not allow booking. Delete the line or choose a different product.
A line with **Period** or **Extend Occupation Period** is missing a date. Fill in the start and end date.
Add a line, or make sure the total is not zero.
On lines with **Request contact details**, fill in the required fields. On lines with **Create access method**, choose a type, and for licence plate recognition also the licence plate.
Such an invoice is a quote and you cannot book it. First have the customer take the terrain into occupation. If you have the **Invoice corrections** permission, you can use the arrow next to **Book invoice** to choose **Force book**. The occupation is then only extended once the customer occupies the terrain.
The invoice amount may not exceed the maximum amount of the linked mandate. Change the mandate under **Direct-debit mandate** in the **Invoice Information** next to the invoice, or lower the amount. See [SEPA mandate](/betalingsverwerking/mandaat).
A product with a guarded ledger (for example a deposit) may not bring the customer's balance below zero. If you have the **Override ledger balance** permission, you can still book with a justification. See [Guarding the customer's balance](/producten/product-aanmaken#het-saldo-van-de-klant-bewaken).
For a Belgian customer with a VAT number, a Peppol ID must be known. Open Customers > customer > Invoicing, go to **Invoice Settings** and fill in the ID. See [Peppol](/boekhouden/peppol).
## See also [#zie-ook]
# Correcting an invoice (/en-GB/facturen/corrigeren)
You cannot simply change a booked invoice. Which route you choose depends on how far the invoice has progressed.
All corrections except reverting are in the actions menu (three dots) next to **Send notification**.
| Situation | What you do |
|----------|-------------|
| The invoice has just been booked and not yet sent | [Revert to draft](#terugzetten-naar-concept) |
| The invoice has already been sent or is too old | [Reverse](#een-factuur-omkeren) with a credit invoice |
| You want to reuse the same lines | [Copy](#een-factuur-kopiëren) |
| The invoice is on the wrong customer | [Move](#een-factuur-verplaatsen-naar-een-andere-klant) |
| The amounts are wrong | [Recalculate](#een-factuur-herberekenen) |
## Reverting to draft [#terugzetten-naar-concept]
As long as the invoice has not left the building, you revert it to draft and book it again after your change.
It is possible if all of the following apply:
- The invoice is booked.
- Tillor has not yet sent a notification for it, through any channel.
- The invoice has not been sent via Peppol.
- The invoice date is less than 7 days ago.
### Open the booked invoice [#open-de-geboekte-factuur]
Go to Administration > Invoices and open the invoice.
### Revert it [#zet-hem-terug]
Click **Revert to draft** and confirm with **Yes, revert to draft**. If the button is not there, the invoice does not meet the conditions.
### Change the invoice and book again [#pas-de-factuur-aan-en-boek-opnieuw]
Change the lines and click **Book invoice**.
In the meantime the invoice has a draft number with the original number in brackets. The **Rounding** line is removed and comes back when you book again. When you book again, the invoice gets its original number back, with the original invoice date and due date. A draft that comes from a booked invoice cannot be deleted.
After a revert, that event on the **Events** timeline has a **Restore version** button. With it you replace the current lines with the lines as they were at the moment of reverting. If the invoice has been booked again by then, Tillor first reverts it to draft again.
If the invoice has already been printed, shown to the customer or shared in some other way, be careful. The customer then has a version that will soon no longer be correct.
### When reverting is no longer possible [#als-terugzetten-niet-meer-kan]
If the invoice no longer meets the conditions, for example because a notification has already been sent or the invoice is older than 7 days, you can still revert it with the **Invoice corrections** permission. Open the three dots at the top right of the invoice page and choose **Force revert to draft**. Only use this if it is legally and accounting-wise acceptable. A credit invoice via [reversing](#een-factuur-omkeren) is usually the cleaner solution.
## Reversing an invoice [#een-factuur-omkeren]
By reversing you create a credit invoice that cancels a booked invoice. This always works, even if the invoice has already been sent or paid.
### Reverse the invoice [#keer-de-factuur-om]
Open the three dots at the top right of the booked invoice and choose **Reverse invoice**. Tillor creates a new draft with the same lines in negative amounts and opens it.
### Check and book [#controleer-en-boek]
Adjust the draft if needed and click **Book invoice**. It then becomes a **Credit Invoice**.
The two invoices refer to each other. In the **Invoice Information**, the credit invoice shows **Reversal of** and the original invoice shows **Reversed as**. In the invoice list on the customer profile you see the label **Reversal draft** on the draft and **This invoice was reversed** on the original invoice.
If you have reversed an invoice before, Tillor asks for confirmation with **Yes, reverse again**, so you do not accidentally create two credit invoices.
If you want to offset the credit invoice against the original invoice, choose **Internal Transfer** when paying. See [Internal transfer](/betalingsverwerking/interne-overboeking).
## Copying an invoice [#een-factuur-kopiëren]
Choose **Copy invoice** in the actions menu of a booked invoice. Tillor creates a new draft with the same lines, the same note and the same direct-debit mandate, and opens it. The **Rounding** line is not copied.
## Moving an invoice to another customer [#een-factuur-verplaatsen-naar-een-andere-klant]
If an invoice is on the wrong customer, you move it.
### Open the actions menu [#open-het-actiemenu]
Click the three dots at the top right of the invoice page and choose **Move to customer**.
### Choose the customer [#kies-de-klant]
Choose the **Target customer** and click **Move invoice**.
The invoice moves along with the linked payments, meter batches and comments. A booked invoice is then sent to your accounting again. If the invoice has already been sent via Peppol, you cannot move it.
## Recalculating an invoice [#een-factuur-herberekenen]
If the amounts on a booked invoice do not match the lines, choose **Recalculate invoice** in the actions menu. Tillor recalculates the totals.
## Deleting a draft [#een-concept-verwijderen]
You can delete a draft invoice with **Delete invoice** in the actions menu. You then return to the customer's profile. You cannot delete booked invoices, you reverse those.
## What happens next? [#wat-gebeurt-er-daarna]
| Route | Result |
|-------|--------|
| Revert to draft | The invoice number is kept. When you book again, the invoice gets its original number and dates back. |
| Reverse | A credit invoice is created that refers to the original invoice. You can offset it with an [internal transfer](/betalingsverwerking/interne-overboeking). |
| Copy | A new draft is created. The original invoice does not change. |
| Move | Payments, meter batches and comments move along. A booked invoice goes to your accounting again. |
| Recalculate | The totals are recalculated from the lines. |
## Problems? [#problemen]
One of the conditions is not met. Has a notification already been sent or is the invoice 7 days or older? Then you can reverse it, or with the **Invoice corrections** permission force a revert.
You need the **Invoice corrections** permission for that. If the invoice has been sent via Peppol, moving is not possible.
An administrator sets those. See [Users](/gebruikers).
## Next [#verder]
# Overview (/en-GB/facturen)
Under Administration > Invoices you find all invoices of your park, with the outstanding amounts at the top. An invoice starts as a draft and only becomes final when you book it. After that you can send it, have it paid and correct it if needed.
- You create a new invoice on the customer profile, not from this list.
- A booked invoice gets a due date: the day of booking plus your organisation's default due date, 7 days by default. You can choose a different term per invoice.
- If the total is not a multiple of 5 cents, Tillor adds a **Rounding** line when booking.
- Tillor does not send a booked invoice to the customer by itself. You do that yourself with **Send notification**.
- You can revert to draft up to 7 days after the invoice date, as long as no notification has been sent and the invoice has not been sent via Peppol. After that you reverse the invoice with a credit invoice.
- A cash payment may be at most 2999 euros by default. You change that with **Cash payment maximum** under Support > Settings > Payments.
- A direct debit with a SEPA mandate goes to the bank two days after booking. Until then you can cancel the payment.
- The personal link of an invoice has no expiry date. The customer sees what is still outstanding there.
- If the customer has a Peppol ID, Tillor automatically sends the invoice via Peppol after booking.
## How does this fit together? [#hoe-hangt-dit-samen]
An invoice is the start of a chain. A payment belongs to a booked invoice, the payments of a day go into a payment report and that report goes to your accounting.
```mermaid
flowchart LR
A[Draft invoice] -- Book --> B[Booked invoice]
B -- Send notification --> K[Customer receives the invoice]
K -- Customer pays online --> C[Payment]
B -- You register a payment --> C
C -- Balance and payment status --> B
C -- Bundled per day --> D[Payment report]
D -- Mollie and internal transfers --> E[Accounting]
```
- The outstanding balance and the payment status of the invoice follow automatically from the payments.
- A payment without an invoice can be linked to a booked invoice later.
- Which payments go to the accounting is described under [Accounting](/boekhouden).
## The invoice list [#de-facturenlijst]
At the top are four counters: **Total Invoices**, **Open Invoices** (unpaid or partially paid), **Overdue Invoices** (due date passed) and **Total Outstanding** (the total amount of the open invoices).
Below that are four lists:
- **Pending Payments**: booked invoices whose payment has started but has not definitively come in yet
- **Invoices with Open Balance**: booked invoices with an amount that still has to be paid, sorted by due date
- **Drafts**: the ten most recently created draft invoices
- **All Invoices**: the full list, filtered on booked invoices by default
You do not create new invoices from this list. You do that on the customer profile, see [Creating an invoice](/facturen/aanmaken-en-bewerken#een-factuur-aanmaken).
### Searching and filtering [#zoeken-en-filteren]
The search bar searches on invoice number, the customer's first or last name, email address and amount. In the **All Invoices** list you can also filter on:
| Filter | What you do with it |
|--------|-------------------|
| **Period** | Only invoices within a certain period |
| **Status** | **Draft** or **Booked** |
| **Payment Status** | **Unpaid**, **Partially**, **Pending** or **Paid** |
| **Customer Type** | **Standard**, **Worker Rental Caravan** or **Worker Towing Caravan** |
| **Customer** | All invoices of one customer |
| **Products** | Invoices with a certain product on a line |
| **Amount** | Invoices with a minimum or maximum amount |
In the **Invoices with Open Balance** list there is also the **Due for a reminder** filter. You choose a number of days (7 to 90) and then see the overdue invoices that were created at least that long ago and for which no reminder by email or SMS has been sent in recent days. Handy for deciding whom to remind again.
### Invoices per customer [#facturen-per-klant]
On a customer profile you find all invoices of that customer in the **Invoices** block on the **Overview** tab, or on the **Invoicing** tab. You also create a new invoice there.
## Guides [#handleidingen]
## Related [#gerelateerd]
## Terms [#begrippen]
- **Draft**: an invoice you can still change, with a temporary draft number.
- **Booked**: a final invoice with its own invoice number. See [Booking](/begrippen#boeken).
- **Credit Invoice**: a booked invoice with a negative total, for example after reversing an invoice.
- **Payment status**: whether and how much of the invoice has been paid. See [Statuses](/facturen/statussen).
- **Customer**: the customer the invoice is for. See [Customer](/begrippen#klant).
- **Occupation**: a customer on a terrain for a period. See [Occupation](/begrippen#bezetting).
# Invoice statuses (/en-GB/facturen/statussen)
Every invoice has a **status** (whether it is final yet) and, once it is booked, a **payment status** (how much has been paid). You can filter on both in the [invoice list](/facturen).
## Invoice status [#factuurstatus]
| Status | Meaning |
|--------|-----------|
| Draft | The invoice can still be edited and has a temporary draft number. You cannot send it or have it paid yet. |
| Booked | The invoice is final and has its own invoice number. You can send it, have it paid and correct it. |
A draft that has been reverted from a booked invoice has a draft number with the original invoice number in brackets. See [Correcting an invoice](/facturen/corrigeren).
## Payment status [#betalingsstatus]
The payment status is shown next to the invoice number of a booked invoice.
| Status | Meaning |
|--------|-----------|
| Unpaid | Nothing has been paid yet. |
| Partially | Part has been paid and an amount is still outstanding. |
| Pending | The full amount has been initiated, for example a direct debit, but the money has not been definitively processed yet. |
| Paid | The invoice has been fully settled. |
An invoice is **overdue** if the due date has passed and an amount is still outstanding. That is not a separate status. You see it in the **Overdue Invoices** counter on the invoice list.
## Invoice type [#factuurtype]
| Type | Meaning |
|------|-----------|
| **Invoice** | A normal invoice with a positive total. |
| **Credit Invoice** | A booked invoice with a negative total, for example after [reversing an invoice](/facturen/corrigeren#een-factuur-omkeren). |
## Labels in the list on the customer profile [#labels-in-de-lijst-op-het-klantprofiel]
| Label | Meaning |
|-------|-----------|
| **Sent via Peppol** | The invoice has been sent via Peppol. |
| **Reversal draft** | This draft was created to reverse another invoice. |
| **This invoice was reversed** | A credit invoice or draft exists that cancels this invoice. |
## Next [#verder]
# Sending an invoice (/en-GB/facturen/versturen)
With **Send notification** you send the customer a booked invoice by email, SMS, WhatsApp or post. Tillor never does that by itself. If the invoice has already been sent but not yet paid, you send a reminder. The customer can then pay via the link in the message, see [Letting a customer pay online](/betalingsverwerking/online).
Before you start:
- The invoice is booked. On a draft the buttons are missing.
- The customer has at least an email address, a phone number or a complete postal address (street, postcode and town). Otherwise the buttons are missing.
- For a reminder, an amount is still outstanding.
## Sending an invoice [#een-factuur-versturen]
### Open the booked invoice [#open-de-geboekte-factuur]
Go to Administration > Invoices and open an invoice with status Booked.
### Click Send notification [#klik-op-verstuur-notificatie]
A **Send notification** window opens.
### Choose the channels [#kies-de-kanalen]
You can choose from:
- **Email**: the customer receives an email with the invoice attached. On by default if there is an email address.
- **SMS**: the customer receives a text message. Only available with a phone number.
- **WhatsApp**: only visible if WhatsApp Business is installed. Requires a phone number, and a payment method at Meta or an ongoing conversation with the customer.
- **Post**: the invoice is sent as a PDF by post. Only available with a complete postal address. Off by default and shows an indicative postage amount per letter.
A channel that is not possible for this customer is disabled with the reason, for example **No email address on file**. Choose at least one channel.
### Send [#verstuur]
Click **Send**.
## Sending a reminder [#een-aanmaning-versturen]
A reminder is possible as soon as the invoice is booked and an amount is still outstanding.
### Open the dropdown menu [#open-het-keuzemenu]
Click the arrow next to **Send notification** and choose **Send reminder**.
### Choose the channels [#kies-de-kanalen-1]
Here **Email** and **SMS** are on by default if the customer has an email address and phone number. With **Post**, the customer receives a reminder letter with the invoice attached, with a QR code to view or pay online.
### Optionally choose registered mail [#kies-eventueel-aangetekend]
If you ticked **Post**, you can choose **Registered mail with receipt confirmation**. That is only possible for a reminder, not for the first invoice notification, and only if registered mail is available for that address. Tillor then shows the indicative extra amount on top of the normal postage costs. The button is then called **Send with extra cost**.
### Send [#verstuur-1]
Click **Send**.
## What happens next? [#wat-gebeurt-er-daarna]
On the invoice page, the **Notifications** block shows which messages have been sent. All messages of your organisation are under Communication > Notifications.
Postal items start as **Pending**. The status of the letter then follows: **PDF received**, **Validated**, **Processing**, **In print center** and **Handed to postal service**. As soon as the carrier confirms it, the status becomes **Sent**. Undeliverable post becomes **Failed**. A letter that has been cancelled at the carrier gets the status **Skipped**. Open the message for the postage amount, the carrier's reference and the latest tracking status. More about this is under [Notifications](/notificaties).
- Tillor sends the message immediately. The customer receives a link to view the invoice and pay online.
- A reminder remains a separate action per invoice. The **Due for a reminder** filter in the [invoice list](/facturen) helps you choose whom to remind again.
- Automations can also send reminders automatically. See [Automations](/automatiseringen).
An invoice for which a notification has already been sent can no longer easily be reverted to draft. See [Correcting an invoice](/facturen/corrigeren#terugzetten-naar-concept).
## Problems? [#problemen]
The invoice must be booked, and the customer must have an email address, a phone number or a complete postal address. Complete the details on the customer profile.
A reminder is only possible for a booked invoice with an outstanding amount.
Open the message under Communication > Notifications for the error message. Then check the customer's email address, phone number or postal address and send again. See [Notifications](/notificaties).
## Next [#verder]
# Invite users and give permissions (/en-GB/gebruikers/gebruikers-en-rechten)
A colleague with a Tillor account is called a user in Tillor. You decide who has access to your organisation and what that person may see and do, using permissions. For colleagues you often address together, you can then create a [group](/gebruikers/groepen).
Before you start:
- You need the **Manage user permissions** permission. Without it, the **Invite user** and **Edit permissions** buttons are greyed out.
- You can only give permissions you have yourself. A permission you lack cannot be switched on for someone else.
- Only a user with **All permissions** can give the **Manage user permissions** permission itself to someone else.
## Invite a colleague [#een-collega-uitnodigen]
### Open the users [#open-de-gebruikers]
Go to Support > Settings > Users. You see the **Members** of your organisation and the **Pending invitations**.
### Click Invite user [#klik-op-gebruiker-uitnodigen]
The **Invite user** window opens.
### Enter the email address [#vul-het-e-mailadres-in]
Type your colleague's **Email address** and click **Invite**.
What happens next depends on the email address:
The user immediately becomes a member of your organisation. Tillor says **User added to the organization**. The person sees your organisation straight away among their organisations.
Tillor says **Invitation sent** and sends an invitation by email. Until the person signs in for the first time, they appear under **Pending invitations** with the **Pending** badge. On first sign-in they become a member of your organisation. With **Revoke invitation** you withdraw the invitation, and Tillor says **Invitation revoked**.
A new user starts with these permissions: **View settings**, **Edit settings**, **View integrations**, **Manage integrations**, **Meter alarm notifications**, **Inbox message notifications**, **Tablet and kiosk alerts**, **Manage signature requests** and **Manage custom fields**. Check whether that suits the person and adjust it.
## Edit permissions [#rechten-bewerken]
### Click Edit permissions on the user [#klik-bij-de-gebruiker-op-rechten-bewerken]
The **Edit user permissions** window opens. At the top are the groups the user is a member of. With **Search permissions** you find a permission quickly.
### Switch permissions on or off [#zet-rechten-aan-of-uit]
Permissions are grouped per area, such as **Invoicing**, **Payments** or **Inbox**. At the bottom you see how many effective permissions the user has.
### Save the permissions [#sla-de-rechten-op]
Click **Save permissions**. Tillor says **User permissions saved**.
### Where does a permission come from? [#waar-komt-een-recht-vandaan]
Each permission shows its source. That way you can see why someone can or cannot do something.
| Source | Meaning |
|---|---|
| **Direct** | You gave the permission directly to this user. You can switch it off here |
| A group name | That [group](/gebruikers/groepen#groepsrechten) gives the permission. You cannot switch it off here, only on the group |
| **Blocked** with a group name | That group denies the permission. Even if the user had it themselves, it stays blocked |
| **Not granted** | Nobody gives the permission |
The **Edit permissions** button is greyed out for your own row and for users with the **All permissions** badge. Those users have everything and you cannot restrict them.
## Set a colleague's notifications [#meldingen-van-een-collega-instellen]
With the bell icon (**Notification settings**) on a user you open their notifications in this organisation. For each notification you choose email, push or phone call. With **All notifications** you switch off a channel in one go. Changes take effect immediately and only apply in this organisation.
Notifications that are always sent cannot be switched off. What a notification is and where you see them is described under [Notifications](/notificaties#meldingen-in-de-app).
## Remove a user [#een-gebruiker-verwijderen]
Click the bin icon (**Remove from organization**) and confirm with **Remove user**. Tillor says **User removed from the organization**. The person immediately loses access to this organisation. Their Tillor account remains, and so do any other organisations.
You cannot remove yourself. You can only remove a user with **All permissions** if you also have **All permissions** yourself.
## What happens next? [#wat-gebeurt-er-daarna]
- The user sees your organisation among their organisations and can use whatever they have permissions for.
- A change in permissions applies immediately after saving.
- A removed user loses access immediately. Their Tillor account remains.
## Problems? [#problemen]
You do not have the **Manage user permissions** permission. Ask a colleague with **All permissions** to give it to you.
That email address is already a member of your organisation, or an invitation for that address is already pending. Check the **Members** and **Pending invitations** lists. If the invitation is already there, revoke it and invite again if the person did not receive the email.
Ask them to check their spam. They only become a member when they sign in with exactly the email address you invited. If they sign in with a different address, revoke the invitation and invite that address.
You can only give permissions you have yourself. If a group name is shown next to the permission, that group gives or blocks the permission and you change it on the group.
The colleague has **All permissions**, or it is your own row. You cannot edit those.
In the **Edit user permissions** window, check whether a group shows the permission as **Blocked**. A denial from a group always wins over a permission you gave directly.
You cannot remove yourself. You can only remove a user with **All permissions** if you also have **All permissions** yourself.
## See also [#zie-ook]
# Groups (/en-GB/gebruikers/groepen)
A group is a fixed set of colleagues, for example **Reception** or **Technical team**. You use a group in these places:
- **Assigning tasks**: search for the group name when you assign a task
- **Mentioning and notifying**: a mention or notification to a group goes to all its members
- **Sharing views**: for a task view, choose **Specific groups**, see [Views](/taken/weergaven#wie-ziet-een-weergave)
- **Automations**: the steps that create or update a task can assign to groups
## Create a group [#een-groep-maken]
### Open Groups [#open-groepen]
Go to Support > Settings > Groups.
### Click New group [#klik-op-nieuwe-groep]
Enter a **Name**, for example Reception.
### Choose the members [#kies-de-leden]
Under **Members**, choose the people. You can only add users who are already members of the organisation.
### Click Save [#klik-op-opslaan]
Tillor says **Group saved**.
Click a group to change its name or members. If you delete a group, tasks stay assigned to the people who are assigned to them directly. Only the group itself disappears.
## Group permissions [#groepsrechten]
A group can also give or take away permissions. On the group, click the key icon (**Group permissions**). For each permission you choose:
| Choice | What it does |
|---|---|
| **Allow** | Everyone in the group gets the permission ("Granted to all") |
| **Inherit** | The group does nothing with this permission. Each member keeps their own access ("Inherits own access"). This is the initial setting |
| **Deny** | The permission is blocked for everyone in the group ("Blocked for all") |
With **Search permissions** you find a permission quickly. At the bottom you see how many permissions you have set. Click **Save**, after which Tillor says **Group permissions saved**.
Without that permission, the **Group permissions** button is greyed out. You also cannot delete a group that still has group permissions.
## What happens next? [#wat-gebeurt-er-daarna]
- Group permissions come on top of each member's own permissions. A denial always wins: if a permission is set to **Deny** on one group and **Allow** on another, it stays blocked.
- In a member's **Edit user permissions** window you see for each permission which group gives or blocks it. See [Edit permissions](/gebruikers/gebruikers-en-rechten#rechten-bewerken).
- If you add a member, the group permissions apply to that member too. If you remove them, they no longer do.
- Assigning a task, mentioning someone or sending a notification to the group reaches everyone who is a member at that moment.
## Groups from Microsoft Entra [#groepen-uit-microsoft-entra]
If you already manage your staff in Microsoft Entra ID, Entra can keep a group's members up to date automatically. Below the list of groups you then see the **Entra groups** table, where you link each Entra group to a Tillor group.
For a linked group, Entra is the source. A member you add or remove by hand in Tillor is set back in line with Entra at the next synchronisation.
See [Microsoft Entra groups](/gebruikers/microsoft-entra) to set up the link.
## Problems? [#problemen]
Try again. If it keeps failing, contact Tillor support.
You do not have the **Manage user permissions** permission.
Another group of that member denies that permission. A denial always wins. Open the member's **Edit user permissions** window to see which group blocks it.
Only users of your organisation are in the list. Invite the person first. See [Invite users](/gebruikers/gebruikers-en-rechten).
If the group is linked to Microsoft Entra, Entra is the source and the next synchronisation sets the members back in line. Change the member in Entra.
## See also [#zie-ook]
# Overview (/en-GB/gebruikers)
This is where you arrange who works with Tillor and what they may do: invite users, give permissions, put colleagues in groups and adjust your organisation's settings. A user is anyone with an account who has access to your organisation. You manage this under Support > Settings.
- A new user gets a fixed set of starting permissions (settings, integrations, a few notifications, signature requests and custom fields). You give everything else
- You can only give permissions you have yourself. Only a user with **All permissions** can pass on the **Manage user permissions** permission
- A denial via a group always wins over a permission you gave directly
- You cannot remove yourself or edit your own permissions
- You have no separate Tillor password: you sign in with Google, Microsoft or Apple
- You do not change company details such as the VAT number or IBAN yourself. Tillor support does that
## How does this fit together? [#hoe-hangt-dit-samen]
A user has permissions in two ways: directly, or through a group. A group can also deny a permission.
```mermaid
flowchart TD
U[User] -->|given directly| R[The user's permissions]
U -->|is a member of| G[Group]
G -->|Allow| R
G -->|Inherit| N[Does nothing, the user keeps their own permissions]
G -->|Deny| B[Permission blocked, even if the user had it themselves]
R --> A[What the user sees and may do in Tillor]
B --> A
```
- **Direct**: you switch a permission on in the **Edit user permissions** window. See [Invite users and give permissions](/gebruikers/gebruikers-en-rechten).
- **Through a group**: under **Group permissions** you choose **Allow**, **Inherit** or **Deny** for each permission. That applies to everyone in the group. See [Groups](/gebruikers/groepen).
- **Denied**: if a permission is set to **Deny** on one group, it is blocked, however many other groups or direct permissions give it.
- You use the same groups for assigning tasks, mentioning and sharing views.
## Your own account [#je-eigen-account]
In the sidebar, click your name (at the bottom) and choose **Account**. There you manage your profile, phone number, active sessions, OAuth apps and linked sign-in platforms. Under **Notifications** you choose, for each notification, whether Tillor reaches you by email or push. See [Sign-in & access](/inloggen).
## API keys [#api-sleutels]
An API key lets another program talk to Tillor on your behalf. It belongs to your account. You manage them on your account page.
### Open your account [#open-je-account]
In the sidebar, click your name (at the bottom) and choose **Account**.
### Create the key [#maak-de-sleutel]
Open the **API Keys** section and click **Create API Key**.
### Copy it straight away [#kopieer-hem-meteen]
After that, Tillor no longer shows the full key.
Via **Developers** (same user menu) you also find the shortcut **Go to API Keys**.
Keep API keys safe and never share them through insecure channels. If a key has leaked, delete it or click **Regenerate** and create a new one if needed.
## Parts [#onderdelen]
## Terms [#begrippen]
- **User**: someone with an account who has access to your [organisation](/begrippen#organisatie).
- **[Permission](/begrippen#recht)**: authorisation to see or do something, such as **Edit products**.
- **All permissions**: a badge for users who may do everything. You do not edit their permissions.
- **[Group](/begrippen#groep)**: a fixed set of colleagues, optionally with permissions of their own.
- **Invitation**: a pending request to someone without an account to become a member.
- **API key**: a code that lets another program work with Tillor.
More terms are in the [glossary](/begrippen).
# Payment settings (/en-GB/gebruikers/instellingen-betalingen)
Under Support > Settings > Payments are a few settings that affect how payments are recorded and how notifications are sent. The settings apply to your whole organisation.
## Settings [#instellingen]
| Setting | What it does |
|---|---|
| **Show "Others" payment method** | Puts the **Others** method in the payment screen. With it you record payments with a description of your own, for example a cheque or a swap. Off by default. |
| **Default: manual bank transfer reminder** | Switches the tick for the reminder about the structured reference on by default when you record a manual bank transfer. You can still switch the tick on or off per payment. Off by default. |
| **Cash payment maximum** | An amount in whole euros. 2999 by default. |
| **Email sender address** | The address Tillor uses to send notifications by email. |
## Cash payment maximum [#maximumbedrag-contant]
With **Cash payment maximum** you decide how high a single cash payment may be. By default that is 2999 euros. Tillor checks it on every cash payment, including one that arrives through an integration. If the amount is higher, record it in parts or choose another method. See [Cash and bank transfer](/betalingsverwerking/contant).
## Sender address of notifications [#afzenderadres-van-meldingen]
If you leave **Email sender address** empty, your organisation's name is shown as the sender of notifications, with a Tillor address. If you enter a valid email address, for example `meldingen@recreatiepark-het-meer.be`, Tillor uses that address, with your organisation's name as the sender name. Enter only the address, without a name. An invalid address is not saved.
## Save changes [#wijzigingen-opslaan]
At the bottom, click **Save settings**. With **Cancel** you reset the form to the saved values.
## See also [#zie-ook]
# Invoicing settings (/en-GB/gebruikers/instellingen-facturatie)
Under Support > Settings > Invoicing you set the defaults for invoices and for the PDF you send to customers. The settings apply to your whole organisation.
## What appears on the invoice PDF [#wat-staat-er-op-de-factuur-pdf]
| Setting | What it does |
|---|---|
| **General terms on invoice PDF** | The PDF gets a back page with general terms for every page. The footer refers to it. The text of the terms is fixed and names your organisation's legal name. Off by default. |
| **VAT breakdown table on invoice PDF** | Next to the totals is a table with the taxable amount and the VAT amount per VAT rate. Off by default. |
| **Invoice PDF items per page** | The maximum number of lines on a page. If there are more lines, a new page follows. 20 by default, minimum 1. |
## Payment term [#betaaltermijn]
Under **Default due date (days)** you enter the number of days between the invoice date and the due date. It applies to invoices for which you did not choose a due date yourself. By default that is 7 days. You can enter 0, in which case the invoice is due on the day of booking. See [Book an invoice](/facturen/boeken).
## Choose VAT rates [#btw-tarieven-kiezen]
Under **Allowed VAT rates** are the rates you can choose in the VAT dropdown on draft invoices. By default these are 0%, 6%, 9%, 12% and 21%.
1. Type a percentage between 0 and 100 in the field below the list. A comma or a full stop is allowed.
2. Click **Add rate**.
3. Remove a rate with the cross next to the percentage.
4. Click **Save settings**.
The list is always sorted from low to high. You cannot add a rate that is already in the list twice. If an existing invoice line has a rate that you later remove from the list, that rate stays on that line.
You only see that dropdown if **VAT rate dropdown on draft invoice lines** is on. A draft invoice then gets a VAT column in which you choose a rate per line. If you choose a product, that product's rate remains the initial value. See [VAT](/boekhouden/belasting) and [Create and edit invoices](/facturen/aanmaken-en-bewerken).
## Automatic invoices for consumption [#automatische-facturen-voor-verbruik]
Under **Minimum amount for automatic utility invoices** you enter an amount in euros. For customers with automatic invoicing of utilities, Tillor only creates an invoice once the outstanding amount reaches this amount. If you leave the field empty (**No minimum**), every outstanding amount is invoiced.
If a customer has a minimum of their own on the customer profile, that minimum applies to that customer instead of this setting. See [Meter management](/meterbeheer).
## Save changes [#wijzigingen-opslaan]
At the bottom, click **Save settings**. With **Cancel** you reset the form to the saved values. If you only have the **View settings** permission, the fields are greyed out.
## See also [#zie-ook]
# Set up rental periods (/en-GB/gebruikers/instellingen-huurperiodes)
For an occupancy you choose a **Rent frequency**. Which choices you see there is decided under Support > Settings > Occupation. Every period you add here becomes a choice in the list.
## Add a period [#een-periode-toevoegen]
### Add a period [#voeg-een-periode-toe]
Open **Occupation** and click **Add period**. A block appears with the initial values: January, 12 months.
### Fill in the period [#vul-de-periode-in]
Choose the **Start month** and enter a number from 1 to 12 under **Duration (months)**. A period of 12 months that starts in January is a calendar year. A period of 1 month is a monthly rent. Under **Label** you can enter a name of your own, for example Yearly.
### Choose how to round [#kies-hoe-je-afrondt]
The tick **Round start dates to the next period** is on by default. What it does is described under [Round to the next period](#afronden-naar-de-volgende-periode).
### Save [#sla-op]
Click **Save settings**. With **Remove period** you remove a period. With **Cancel** you reset the form to the saved list.
If you have not added any periods yet, it says **No rent periods configured**. In an occupancy's form you then cannot choose a rent frequency.
## Where you see the periods [#waar-zie-je-de-periodes-terug]
In an occupancy's form the list is under **Rent frequency**, with **No frequency** at the top. A period of 1 month is called **Monthly** there. A period of 12 months shows as **Year (Jan - Dec)**, with the first and last month of your period. Other durations show as **6 months (Apr - Sep)**. If you entered a **Label** for a period, that label is shown instead of that text, in the list and in the **Rent frequency** column of the occupancies.
If you remove a period from the settings, occupancies already created with it keep their rent frequency.
## Round to the next period [#afronden-naar-de-volgende-periode]
The tick decides the initial state of **Round to next period boundary** on the invoice line with which you extend an occupancy. On the invoice line you can still switch the tick on or off yourself.
- If the tick is on, the line ends at the next period boundary. If you start in the middle of a period, the first part is charged pro rata. After that the customer follows the same cycle as the other tenants.
- If the tick is off, the line lasts exactly one period from the start date.
See [Create and edit invoices](/facturen/aanmaken-en-bewerken) and [Occupancies](/bezettingen).
## See also [#zie-ook]
# Access control settings (/en-GB/gebruikers/instellingen-toegangscontrole)
Under Support > Settings > Access control you set the behaviour of the barriers for number plates whose access period has expired.
## Let expired number plates exit [#verlopen-kentekens-laten-uitrijden]
A visitor with a number plate whose access period has expired otherwise cannot get through the exit barrier any more. With **Allow expired license plates to exit** the exit barrier opens anyway, during a grace period after expiry. That only works outside opening hours. If reception is open, staff deal with the vehicle at the desk.
The tick is on by default. If you switch it off, the exit barrier stays closed for an expired number plate.
| Setting | What it does |
|---|---|
| **Allow expired license plates to exit** | Switches the grace period on or off. |
| **Exit grace period (days)** | The number of days after expiry during which a vehicle can still leave outside opening hours. 2 by default, at most 30. With 0 there is no grace. |
The grace only applies to number plates at an exit. A number plate that is blocked or not active never gets grace. For other access methods, such as NFC tags or QR codes, there is no grace.
Opening hours come from Support > Settings > Opening hours. See [Opening hours](/gebruikers/organisaties#openingsuren).
## Save changes [#wijzigingen-opslaan]
At the bottom, click **Save settings**. With **Cancel** you reset the form to the saved values.
## See also [#zie-ook]
# Microsoft Entra groups (/en-GB/gebruikers/microsoft-entra)
With provisioning, Microsoft Entra ID sends your users and groups to Tillor. If you link an Entra group to a Tillor [group](/gebruikers/groepen), the members of that group follow Entra: anyone you add in Entra gets the group's tasks and views, and anyone you remove or disable loses them. Nobody has to sign in again for this.
Entra uses the SCIM protocol for this. Tillor itself reads nothing from your Microsoft tenant: Entra decides which users and groups it sends. Only during [Quick setup](#snel-instellen) does your browser talk to Microsoft to create the app for you.
## What does and does not happen [#wat-er-wel-en-niet-gebeurt]
- **Existing members only.** Entra does not create Tillor accounts. Someone who is not yet a member of your organisation does not count until you [invite](/gebruikers/organisaties) that person. As soon as they become a member, they are immediately in their linked groups
- **No data of non-members.** For people without a Tillor account, Tillor stores no name or email address, only an unreadable code that lets Tillor recognise them if they become a member later
- **Nothing without a link.** An Entra group only changes something in Tillor once you link it to a Tillor group under **Entra groups not linked**
- **One to one.** A Tillor group belongs to at most one Entra group
- **The name stays Tillor's.** If you rename the group in Entra, you see the new name after **Entra ·**, but the Tillor group keeps its own name
- **Nested groups** are not expanded. A group that is a member of another group does not count as a member. If you want those people too, assign the nested group separately in Entra and link it to the same or another Tillor group
- **Signing in does not change.** People simply sign in with Microsoft, see [Sign-in](/inloggen)
## Before you start [#voordat-je-begint]
You need:
- In Tillor, the **Edit settings** permission
- In Microsoft Entra, the **Cloud Application Administrator** or **Application Administrator** role (or higher)
- An Entra licence that allows automatic provisioning to custom apps (Microsoft Entra ID P1 or higher)
Make sure your colleagues have the same Microsoft account or the same email address in Tillor as in Entra. That is how Tillor recognises who is who, see [How Tillor recognises people](#hoe-tillor-mensen-herkent).
## Quick setup [#snel-instellen]
If you are an Entra administrator yourself, Tillor sets up the link for you in one go.
1. Go to **Support > Settings** and choose **Groups**
2. Under **Microsoft Entra**, click **Set up with Microsoft** and then **Sign in and set up**
3. In the Microsoft window, sign in with your administrator account and give consent. Microsoft asks for permission to manage apps and provisioning and to read your groups
Tillor then creates the app in Entra, fills in the tenant URL and the token, has users recognised by their Microsoft account and has Entra send the type of each group along. After that the synchronisation starts and Tillor immediately sends you and all your groups, so you do not have to wait for the first synchronisation. Finally, Tillor reads the type of each group and whether a Team belongs to it. You see each step being ticked off. Tillor does this in the background: you can close the window or even the page. If you click **Set up with Microsoft** again later, you see how far it is, or for up to an hour after it finished whether it succeeded or failed. After that you can start again with **Set up again**.
Entra sends all your users and groups in the process. You do not have to choose anything beforehand: the groups appear under **Entra groups not linked** and change nothing until you link them. To do so, continue at [Link groups in Tillor](#groepen-koppelen-in-tillor). The members of the groups follow with the first synchronisation. That takes a few minutes, and a few hours for large organisations.
Tillor only uses the access for this setup. It goes encrypted to the background task and is not stored anywhere afterwards; Microsoft lets it expire by itself after about an hour. If you go through **Set up with Microsoft** again, Tillor finds the same app again and does not create a second one.
Quick setup creates a new token. A token you pasted into Entra by hand earlier stops working afterwards. If the setup stops halfway, click **Retry**.
If signing in does not work, for example because your organisation blocks consent for apps, or if you want Entra to send only certain groups, set up the link by hand as described below.
## Manual setup [#handmatig-instellen]
### Create a token in Tillor [#token-maken-in-tillor]
1. Go to **Support > Settings** and choose **Groups**
2. At the top is **Microsoft Entra**. If the link is already set up, click **Connection**
3. Copy the **Tenant URL**. It looks like `https://…/api/orgs//scim/v2`
4. Click **Generate token** and copy the token that appears
The token is shown only once. Paste it into Entra straight away. If you lose it, click **Replace token** and use the new token.
### Create an app in Entra [#een-app-maken-in-entra]
1. Open the [Microsoft Entra admin centre](https://entra.microsoft.com)
2. Go to **Identity > Applications > Enterprise applications** and click **New application**
3. Click **Create your own application**
4. Give the app a name, for example **Tillor**, choose **Integrate any other application you don't find in the gallery (Non-gallery)** and click **Create**
If you already have an enterprise application for Tillor, you can use that too.
### Connect provisioning [#provisioning-koppelen]
1. In the app, open **Provisioning** and click **Get started** (or **New configuration**)
2. Set **Provisioning Mode** to **Automatic**
3. Under **Admin Credentials**, enter:
- **Tenant URL**: the Tenant URL from Tillor
- **Secret Token**: the token from Tillor
4. Click **Test Connection**. Entra must report that the connection succeeded
5. Click **Save**
### Check the attributes [#attributen-controleren]
Under **Mappings**, open the **Provision Microsoft Entra ID Users** line:
- Set **externalId** to **objectId** (by default it says **mailNickname**). Tillor then recognises someone by their Microsoft account, even if the email address differs
- Leave **userName** (← **userPrincipalName**), **active** and **emails[type eq "work"].value** (← **mail**) as they are
Leave **Provision Microsoft Entra ID Groups** switched on. The default settings (**displayName**, **externalId** ← **objectId**, **members**) are fine.
If you want to see in Tillor what kind of group it is, add these attributes to the groups. Under **Show advanced options**, first choose **Edit attribute list for customappsso** and add the target attributes, then **Add New Mapping** for each line:
| Source in Entra | Target attribute | Type |
|---|---|---|
| Expression `Join(",", [groupTypes])` | `urn:ietf:params:scim:schemas:extension:tillor:2.0:Group:groupTypes` | String |
| **securityEnabled** | `urn:ietf:params:scim:schemas:extension:tillor:2.0:Group:securityEnabled` | Boolean |
| **mailEnabled** | `urn:ietf:params:scim:schemas:extension:tillor:2.0:Group:mailEnabled` | Boolean |
| **onPremisesSyncEnabled** | `urn:ietf:params:scim:schemas:extension:tillor:2.0:Group:onPremisesSyncEnabled` | Boolean |
| **mail** | `urn:ietf:params:scim:schemas:extension:tillor:2.0:Group:mail` | String |
| **description** | `urn:ietf:params:scim:schemas:extension:tillor:2.0:Group:description` | String |
If a source is missing from Entra's list, skip that line. Entra cannot send whether a Team belongs to a group this way; Tillor only sees that through **Set up with Microsoft**.
You may leave other attributes as they are. Tillor does not store them.
### Assign groups [#groepen-toewijzen]
1. In the app, open **Users and groups** and click **Add user/group**
2. Choose the groups Tillor should receive, for example **Reception**, and click **Assign**
3. Under **Provisioning > Settings**, check that **Scope** is set to **Sync only assigned users and groups**
Entra sends a group together with its members. You do not have to assign the members separately.
### Start provisioning [#provisioning-starten]
Under **Provisioning**, set **Provisioning Status** to **On** and click **Save**.
The first round can take a while, depending on the number of users. After that Entra sends the changes about every 40 minutes. If you want to update one person immediately, use **Provision on demand** in Entra.
### Link groups in Tillor [#groepen-koppelen-in-tillor]
Refresh **Settings > Groups**. At the top is the **Microsoft Entra** line with the last synchronisation and how many groups are linked. Below your Tillor groups is **Entra groups not linked** with the groups that were sent but do nothing yet. Click **Show** if the list is closed and use the search field to find a group. For each group, choose under **Link to…** what should happen and then click **Save**. With **Revert** you discard your choices. A Tillor group can only be attached to one Entra group; groups that are already linked cannot be chosen again.
| Choice | What happens |
|---|---|
| **Create new** | Tillor creates a group with the name from Entra and fills it with the recognised members |
| An existing group | The members of that group are replaced by the recognised members from Entra. If Entra has not yet sent the members of that group, the current members stay until the synchronisation delivers them |
From now on, Entra updates the members at every synchronisation. The linked group disappears from the list, and in your Tillor groups it says **Entra · [name]** under the group, with what kind of group it is.
Linking is only done from **Entra groups not linked**. A Tillor group you manage by hand, such as IT, is not linked from the group itself.
After each group name it shows what kind of group it is in Entra. With the buttons above the list you show only one kind.
| Label | What it is |
|---|---|
| **Security** | An ordinary security group, often the group you want to link |
| **Mail-enabled security** | A security group with an email address of its own |
| **Distribution list** | Only an email list |
| **Microsoft 365** | A group with a shared mailbox and a SharePoint site, sometimes with a Team |
| **Windows Server AD** | Comes from your local Active Directory (hybrid) and is managed there |
| **Dynamic** | Entra decides the members itself with a rule |
| **Teams** | A Team belongs to it |
| **Type unknown** | Tillor does not know the type yet. Go through **Set up with Microsoft** again |
SharePoint site groups, such as **Owners**, **Members** and **Visitors** of a site, are not Entra groups. They never reach Tillor. What you do see is the Microsoft 365 group behind the site.
## How Tillor recognises people [#hoe-tillor-mensen-herkent]
For each user Entra sends, Tillor looks for an existing member of your organisation:
1. First by the **Microsoft account** the person signs in to Tillor with (the Entra object ID, if you set **externalId** to **objectId**)
2. Otherwise by **email address**: the work address from Entra, or the **userPrincipalName** if that is an email address
If Tillor finds nobody, or the user is disabled in Entra, they do not count in the group. As soon as the person becomes a member of the organisation, they count straight away. If you enable them again in Entra, they count at the next synchronisation.
## What happens when something changes in Entra [#wat-er-gebeurt-bij-wijzigingen-in-entra]
| In Entra | In Tillor |
|---|---|
| Member added to a linked group | Joins the Tillor group (if they are a member of the organisation) |
| Member removed from the group | Leaves the Tillor group |
| User disabled (**Account enabled** off) | Leaves all linked Tillor groups. Their Tillor account remains |
| User or group no longer assigned to the app | Entra sends a disable or delete, with the same effect |
| Group deleted | Under the Tillor group it says **Removed in Entra. Members were kept.** The Tillor group remains with its last members and is no longer updated |
Removing someone from your organisation altogether is done in Tillor, under [Organisation](/gebruikers/organisaties). Entra only manages the group members.
## What you see in the activity log [#wat-je-terugziet-in-het-activiteitenlog]
In the [activity log](/activiteitenlog) you see:
- Every change to the members of a Tillor group that Entra makes, with who joined or left. It is recorded in the name of the system, not of a user
- Every synchronisation round from Entra, one line per round. A round in which Entra sends nothing is not shown
- Who linked or unlinked an Entra group to a Tillor group, and who replaced the token
## Change or stop the link [#koppeling-wijzigen-of-stoppen]
- **Unlink**: on the Tillor group, click **Unlink**. The Tillor group stays as it is and you manage it by hand again. The Entra group comes back under **Entra groups not linked**
- **Another Tillor group**: unlink, then link the Entra group to another group under **Entra groups not linked**. The previous group keeps its members, but is no longer updated
- **Stop altogether**: in Entra, set **Provisioning Status** to **Off**, or delete the enterprise application
## Replace the token [#token-vervangen]
In the **Microsoft Entra** line, click **Connection** and then **Replace token** if the token has leaked or if you need it again. The old token stops working immediately. Paste the new token into Entra under **Provisioning > Admin Credentials > Secret Token** and click **Save**. Until you do, the synchronisation in Entra fails.
## Troubleshooting [#problemen-oplossen]
**Set up with Microsoft stops at a step**
The step shows Microsoft's message. Usually your account lacks the administrator role or the consent. Check the roles under [Before you start](#voordat-je-begint) and click **Retry**. Tillor reuses the app and provisioning that were already created.
**Test Connection fails**
Check that the Tenant URL was copied in full, including `/scim/v2`, and that the token is the one generated last. After **Replace token**, an old token no longer works.
**A group is not in the list**
Wait until the first synchronisation is done and refresh the page. If you set up the link by hand, Entra only sends groups that are assigned to the app: check **Users and groups** in the app and wait for the next round, or use **Provision on demand**.
**Someone is missing from the Tillor group**
- Is that person a member of your Tillor organisation? Entra does not create accounts
- Does the email address in Entra match the one in Tillor? Otherwise set **externalId** to **objectId**, so that Tillor recognises them by their Microsoft account. That only works if they have already signed in to Tillor with Microsoft once
- Is the user enabled in Entra?
- Are they a direct member of the group, and not through a nested group?
**My manual change disappears**
For a linked group, Entra is the source. Change the members in Entra, or unlink the group.
**More details about a failed round**
In Entra, open **Provisioning > Provisioning logs**. There you see for each user and group what Entra tried and what answer Tillor gave.
## See also [#zie-ook]
# Organisation (/en-GB/gebruikers/organisaties)
On the **Settings** page (at the bottom of the main menu, Support > Settings) you manage your organisation's settings. On the left you switch between the sections. Which sections you see depends on your permissions.
| Section | What for |
|---|---|
| **General** | Organisation profile, time zone, default country and brand colours. See [General](#algemeen) |
| **Opening hours** | Weekly schedule, seasons, exceptions and public holidays. See [Opening hours](#openingsuren) |
| **Invoicing** | PDF, payment term and VAT rates. See [Invoicing settings](/gebruikers/instellingen-facturatie) |
| **Printing** | Printers and print times. See [Printing](#afdrukken) |
| **Payments** | The Others payment method and sender address. See [Payment settings](/gebruikers/instellingen-betalingen) |
| **Occupation** | Rent frequencies for occupancies. See [Set up rental periods](/gebruikers/instellingen-huurperiodes) |
| **Terrain tariff** | The formula for the calculated tariff. See [Tariff formula](/terreinen#tariefformule) |
| **Access Control** | Leaving with an expired number plate. See [Access control settings](/gebruikers/instellingen-toegangscontrole) |
| **Map** | Map centre and map direction. See [Set the map default](/kaart#kaartstandaard-instellen) |
| **Terrain types** | Types for terrains. See [Terrain types](/terreinen#terreintypes) |
| **Task labels** | Labels for tasks. See [Labels](/taken/labels) |
| **Groups** | Bundle colleagues. See [Groups](/gebruikers/groepen) |
| **Custom fields** | Extra fields on customers, terrains and more. See [Custom fields](/eigen-velden) |
| **Apple Wallet** | Pass background and access point. See [Apple Wallet](#apple-wallet) |
| **Tablets & kiosks** | Tablets and kiosks. See [Tablets and kiosks](/mobiele-app/tablets-en-kiosken) |
| **Integrations** | Links with other services. See [Integrations](#integraties) |
| **Users** | Members, invitations and permissions. See [Manage user permissions](#gebruikersrechten-beheren) |
- Which sections you see depends on your permissions. You save changes at the bottom with **Save settings**
- About a week before a public holiday, Tillor emails the support address if the opening hours for that day are still empty
- After you save the wallet settings, Tillor updates all active wallet passes again. Visitors usually see that after opening the pass
- Once your organisation has invoices or payments, the currency can no longer change
Company details on invoices (name, address, VAT number, IBAN, logo) are set during onboarding. Contact Tillor support if you want to change them.
## Integrations [#integraties]
Choose **Integrations** to see the available links, such as Voys telephony, bank accounts, Mollie or accounting software (e.g. Admisol). Under **Integrations** in the left-hand menu are categories (communication, payments, accounting, meters). Click an integration in the list to open its detail page. There you install the link or adjust its settings (no separate dialog). See also the [overview of integrations](/integraties).
## General [#algemeen]
Under **General** you set the organisation profile, the time zone, the default country and the brand colours. You need the **Edit settings** permission to save changes.
## Opening hours [#openingsuren]
Under **Opening hours** you edit one weekly schedule. With the coloured options you switch to **seasonal periods** (for example 1 July to 31 August) or an **exception** (a single date or a period such as 24 to 26 December). **Public holidays** for the coming 12 months are already there: choose a holiday and enter the hours (or leave them empty if you are closed that day). Leave a weekday empty if you are closed that day. The inbox AI uses these hours as office opening hours. About a week before a public holiday, Tillor sends a reminder email to the organisation's **support address** (or the general email address if there is no support address) when the hours for that holiday have not been filled in yet. If you use Partoo, the opening hours are synchronised automatically. See [Partoo](/integraties/partoo). A website can fetch the resolved hours (including season labels such as Summer or Winter) and upcoming holidays through the [Opening hours API](/ontwikkelaars/voorbeelden/opening-hours).
## Printing [#afdrukken]
Under **Printing** you set PDF printing, printer IP addresses and the **print times schedule**. For each weekday, add one or more times (or leave the day empty). Online, mandate and bank transfer payments wait for the next time that day before the invoice goes to the printer queue.
## Apple Wallet [#apple-wallet]
Under **Apple Wallet** you set two things side by side: the **pass background** on the left, the **access point location** on the right.
**Pass background** (left): optional full-bleed photo for the Poster Generic layout on iPhone with **iOS 27**. Upload JPEG, PNG or WebP; large files are reduced automatically. Drag on the preview to choose which part of the photo stays visible behind the QR code. The preview shows your choice immediately; only after **Save** at the bottom of **Settings** does the photo (or its removal) go live, and Tillor passes the focus on to access passes.
On iPhone with **iOS 26 or older**, the pass uses the classic generic layout with the same data (status, visitor name, validity, QR code). Without an image of your own, all passes get the default Tillor gradient background. With a photo of your own, the **organisation logo** from your company details is at the top, in colour on the photo. On the default gradient, the logo is white on the dark gradient.
On Poster Generic passes (iOS 27) the QR code is **square**; on older devices it is rectangular, as on a classic generic pass.
**Access point location** (right): click on the map or drag the pin to set the GPS point of the main access point. **Apple Wallet** and **Google Wallet** use that location on the access pass. On iPhone, iOS can suggest the pass on the lock screen when a visitor is nearby. Choose **Use park map centre** to remove the pin and use the centre of the park map.
After you save **Settings**, Tillor updates all active wallet passes in the organisation (Apple through silent push, Google through object sync). Guests usually see the update after opening the pass in Wallet; sometimes a manual refresh in the Wallet app is still needed. The preview in Tillor shows the same cropping as on the pass: drag the image so that the centre is where you want it.
On the back of the wallet pass are the organisation's phone number and email address (the support email if one is set, otherwise the general address). For blocked, expired or revoked passes, those details also appear behind the reception text on the lock screen (Apple) or in Google Wallet.
## Manage user permissions [#gebruikersrechten-beheren]
Under **Users** you see the **Members** of your organisation and the **Pending invitations**. How you invite and remove colleagues and set their notifications is described under [Invite users and give permissions](/gebruikers/gebruikers-en-rechten).
### Edit permissions [#rechten-bewerken]
Click **Edit permissions** on a user. The full explanation, including groups and blocked permissions, is under [Edit permissions](/gebruikers/gebruikers-en-rechten#rechten-bewerken). Below are the permissions that often raise questions.
### Bank accounts [#bankrekeningen]
| Permission | What may the user do? |
|---|---|
| **View bank transactions** | The **Administration > Bank transactions** page and the **Bank account transactions** block on **Administration > Payment reports** |
| **Sync bank transactions** | The **Sync bank account** button (manual import) |
The permissions are in the permissions dialog under the **Bank transactions** group.
See also [Bank accounts](/boekhouden/betalingsrapporten/betaalmethodes/ponto) for the open banking link.
### Assign payment [#betaling-koppelen]
| Permission | What may the user do? |
|---|---|
| **Assign payment** | **Assign payment** on a booked invoice, **Assign** on payment groups and **Assign to invoice** on bank transactions (not visible without the permission) |
The permission is in the permissions dialog under the **Payments** group.
### OAuth apps [#oauth-apps]
| Permission | What may the user do? |
|---|---|
| **Authorize OAuth apps** | Give third parties (e.g. Cursor, Claude, ChatGPT) permission through OAuth, and keep using existing OAuth tokens |
Existing users keep the permission after the migration. New users do not get it automatically. Tick it in the user's permissions dialog. Switch it off to prevent that user from linking new OAuth apps; that user's existing tokens then stop as well. Users with this permission in at least one organisation may authorise.
See also [MCP](/ontwikkelaars/mcp).
## Data processing agreement [#verwerkersovereenkomst]
If a **Data Processing Agreement Required** screen appears instead of Tillor, your organisation must sign the current data processing agreement (DPA) before you can continue. You can first download the document with **Download DPA Document**. Then you request a verification code. It is sent by text message to the phone number of the responsible person. Enter the code and click **Accept DPA**.
## Details on invoices [#gegevens-op-facturen]
Company details such as name, address, VAT number and IBAN appear automatically on invoices. They are set during onboarding. Contact Tillor support to change them.
## See also [#zie-ook]
# Evidence and validity (/en-GB/handtekeningen/bewijs-en-geldigheid)
For every signing, Tillor records who signed, when and how, and seals the PDF so that any later change is visible. The result is a simple electronic signature, suitable for rental contracts, house rules, waivers and terms. For documents where the law requires a stronger signature, Tillor is not the right place.
## What is on the evidence pages? [#wat-staat-er-op-de-bewijspaginas]
The signed PDF gets one or more **Signing evidence** pages at the end. They show:
- the title of the document, the request, your organisation, the number of pages and when the request was created, sent and completed
- two fingerprints of the file: of the PDF as you uploaded it, and of the signed pages before the evidence pages were added. If a single character in the file changes, the fingerprint no longer matches
- per signer: name, role, type, email address, phone number and language, when the link went out and when that person first opened the page, the time of signing, the IP address and the device
- how the signer was confirmed: with a one-time code, which channel the code went to and when, or signed in to Tillor for staff
- the sentence the signer agreed to, exactly as it appeared on screen
- what the signer filled in: every text, date and checkbox field with its value, including what was left empty
- the signature and the initials as they were drawn, and on which pages they appear. A typed signature appears as an image of the typed name, just like a drawn one
- how the signing was done: on the signing page via the link, in Tillor by a signed-in staff member, or on the tablet at reception (with a code, or with the identity confirmed by a staff member)
- the **audit trail**: every step with time, who and from which IP address and device. For example *Signing link sent*, *Signing page opened*, *Verification code sent*, *Wrong code entered*, *Signed* and *Completed and sealed*
Times are shown in your organisation's time zone, with the UTC time (the worldwide standard time) next to it. Tillor stores IP addresses and devices encrypted. You can see them in Tillor and on the evidence pages. The signatures and filled-in values appear in the document at the places you chose. Your original upload is stored separately and never changes.
You see the same steps on the request page under **History** and on the customer under **Events**.
The two fingerprints are SHA-256 checksums. A SHA-256 fingerprint changes completely as soon as a single byte of a file changes, which is why it proves the file has not been altered. The evidence page also shows the fingerprint of the sealing certificate (see below).
## Seal and timestamp [#zegel-en-tijdstempel]
As the last step, the signed PDF is **sealed** with a digital signature of your organisation, created by Tillor. If you open it in Adobe Reader or another PDF reader, you see a signature panel. If anything about the file changes after sealing, the reader reports it.
The reader may call the signer **unknown** or **not trusted**. That is normal: the certificate comes from Tillor and not from a paid certificate authority. Which certificate it is appears with its fingerprint on the evidence page.
The seal also gets a **timestamp** from an independent, free timestamp service (FreeTSA, or DigiCert if that one does not respond). This proves, independently of Tillor, when the file existed in exactly this form. The time appears on the request page under **Timestamp**.
## What kind of signature [#welk-soort-handtekening]
This is a **simple electronic signature** under the European eIDAS rules. Tillor checks the email address or phone number with a code, records the drawing and keeps the evidence. That suits rental contracts, house rules, waivers and terms.
A **qualified** signature, for example with itsme or an eID card, is not possible. If you have a document for which the law requires that, have it signed outside Tillor.
## What happens to the evidence? [#wat-gebeurt-er-met-het-bewijs]
- The original PDF and the signed PDF stay with the customer's documents. You can archive them but not delete them.
- The evidence is part of the signed PDF. Anyone who received a copy therefore also has the evidence pages.
- The audit trail stays on the request page, even if the request was declined, canceled or has expired.
## Problems? [#problemen]
That is correct and normal. The seal comes from Tillor, not from a paid certificate authority. What matters is that the reader does not report a change after sealing. The certificate appears with its fingerprint on the evidence page.
The file was modified after sealing, for example by saving it again or editing it. Download the signed PDF again from the request's detail page or from the customer's documents. That file is unchanged.
That is not possible in Tillor. Have that document signed outside Tillor.
## See also [#zie-ook]
# Requesting signatures (/en-GB/handtekeningen/handtekening-vragen)
With a signing request, you let one or more people sign a PDF online. You make it in two parts: first you choose the customer and the PDF, then you set up the signers and fields in the editor. How to follow who has signed afterwards is covered in [Following up a request](/handtekeningen/opvolgen).
Before you start:
- You need the **Manage signature requests** permission. If you do not have it, the **Request signatures** button is greyed out.
- The file must be a PDF, up to 250 MB. Tillor rejects any other file type with **This is not a PDF. Choose a PDF file.**
- Every signer needs an email address or phone number to receive the link or code. For a customer or contact, fill that in first in their details.
- Every signer needs at least one signature or initials field.
## Making a signing request [#een-ondertekenverzoek-maken]
### Start the request [#start-het-verzoek]
Choose where you start.
Go to Administration > Signatures and click **Request signatures**. Choose the **Customer**.
Open the **Documents** tab of the customer and click **Request signatures**. The customer is already filled in.
Under **Document**, choose a PDF that is already with that customer, or leave **Upload a new PDF** selected and drag the PDF into the box (or click **Choose PDF**). Enter a **Title**, for example *Rental contract 2027*. If you leave it empty, Tillor uses the name of the document. Then click **Continue**.
An uploaded PDF is added to the customer's documents. Tillor never changes it: the signatures go on a separate copy.
### Add signers [#voeg-ondertekenaars-toe]
Under **Signers**, click **Add signer** and choose:
- **Customer: [name]**
- **Contact of the customer**
- **Staff member**
- **External party**: fill in **Name**, **Email address** and/or **Mobile number** and **Language**. At least one of the two contact details is required. Without an email address, the person gets the link by text message.
You can add up to 10 signers. They sign from top to bottom, and the next one only gets the link once the previous one has signed. With **Sign earlier** and **Sign later** (the arrows) you change the order, and with the bin icon you remove someone. In the box below the name you can optionally enter a **Role**, for example *Tenant* or *Guarantor*.
Every signer gets their own colour. You see that colour again on their fields in the document.
### Place the fields [#plaats-de-velden]
Under **Fields for**, choose the signer you are placing fields for. Then choose the type of field and tap or drag on a page of the document. Drag a field to move it and drag the corner to make it larger or smaller.
| Field | What the signer does |
| --- | --- |
| **Signature** | Places the drawn signature by tapping the box |
| **Initials** | Places the drawn initials by tapping the box |
| **Name** | Nothing: Tillor fills in the signer's name |
| **Date signed** | Nothing: Tillor fills in the day of signing |
| **Text** | Types one line, up to 200 characters, for example a number plate |
| **Long text** | Types a few lines, up to 2,000 characters, for example a remark |
| **Checkbox** | Ticks a condition |
| **Date** | Picks a date, for example an arrival day |
Click a placed field to select it. Below the buttons you then see:
- **Signer**: assigns the field to another signer, without drawing it again.
- For **Text**, **Long text**, **Checkbox** and **Date** also a **Question or label** (the signer sees it at the input box) and **Required**. A field that is not required may stay empty.
- The cross on the field deletes it.
If someone needs initials on every page, use **Initials on every page**. Tillor then places an initials field on all pages for that signer. As long as a signer has no signature or initials field, you see **No signature field yet** next to that person.
### Set the message and deadline [#stel-bericht-en-termijn-in]
Under **Request**, fill in:
- **Title**: as the signers see it.
- **Message to the signers**: optional, it appears in the email and on the signing page.
- **Sign before**: the final date. By default this is 14 days after creation. Signing is possible until the end of that day.
- **Reminder after**: after how many days (1 to 14) a signer whose turn it is gets a reminder. 3 days by default.
### Send the request [#verstuur-het-verzoek]
Click **Send** and confirm. The first signer gets the link.
If you want to continue later, click **Save draft**. With the bin icon next to it (**Delete draft**) you discard the request, after confirmation. The PDF stays with the customer's documents.
## What happens next? [#wat-gebeurt-er-daarna]
- The request gets the status In progress. You find it on the customer under **Documents** and under Administration > Signatures. Tillor reports **Sent to the first signer**.
- The first signer gets an email with a personal link, or a text message if there is only a phone number. Each following signer gets the link as soon as the previous one has signed.
- A signer whose turn it is and who does not respond automatically gets a reminder after the number of days under **Reminder after**, up to 2 times. You can always send a reminder yourself, see [Following up a request](/handtekeningen/opvolgen#een-herinnering-sturen).
- As soon as everyone has signed, the request becomes Completed and the signed PDF is with the customer.
- If the deadline passes before everyone has signed, the request becomes Expired.
If you want to change something while nobody has signed yet, or only you have, click **Back to editing**. The request becomes a draft again: the links that were sent stop working and everyone signs again once you send it again. If someone else has already signed, cancel the request and make a new one.
Do you want an automation to react to a completed request, for example with a task? Use the trigger **Signature request completed**, see [Triggers](/automatiseringen/triggers).
## Problems? [#problemen]
You are missing the **Manage signature requests** permission. Ask an administrator to add it under Settings > Users.
You chose another file type, for example Word. Save the document as a PDF first and choose that file.
On the first screen, **Customer** or **Document** is empty. Fill in both and click **Continue** again.
Tillor checks the request before it goes out and tells you what is missing:
- **Add at least one signer before sending.**
- A signer has no signature or initials field yet. Tillor selects that person. Then drag on the document to place a field.
- A signer has no email address or phone number and so cannot receive a link or code. That also applies to a customer or contact: first fill in an email address or phone number in their details. In the list, such a person shows **No email address or phone number**.
- **Give the request a title.**
The request may not have gone out. Reload the page. If the request is still a Draft, click **Send** again.
Your changes were not saved. Reload the page and check what is still there before you continue.
Reload the page. If that does not help, check that the file is a valid PDF.
Click the field and choose the right person under **Signer**. The field stays where it is.
## See also [#zie-ook]
# Overview (/en-GB/handtekeningen)
With **Signatures** you have a PDF such as a rental contract, house rules, a waiver or a guarantee signed online. The signers sign one after another, and you decide where on the pages each signature, initials field or input box goes. How to go about it is covered in [Requesting signatures](/handtekeningen/handtekening-vragen).
When everyone has signed, Tillor makes a signed PDF with evidence pages at the end. It then appears in the customer's **Documents** and every signer receives a copy. Your original PDF is kept unchanged.
Preparing, sending, reminding, withdrawing and canceling signing requests requires the **Manage signature requests** permission, in the **Signatures** group under Settings > Users. If you do not have that permission, those buttons are greyed out. All users in your organisation can view requests and sign themselves when it is their turn.
- A request has at most 10 signers and only PDF files, up to 250 MB.
- By default, people can sign for 14 days, until the end of the last day. You can choose another date.
- A signer whose turn it is gets a reminder after 3 days by default (you can choose 1 to 14 days), with a maximum of 2 automatic reminders. These go out with Tillor's daily check.
- When signing, the signer confirms with a 6-digit code. The code is valid for 10 minutes and a new one can be requested after 2 minutes.
- Your original PDF never changes. You can archive the original and the signed PDF but not delete them, because they are the evidence.
- The request gets the status Expired during the daily check, not at the exact moment the deadline passes.
## Where to find it [#waar-vind-je-het]
- Administration > Signatures shows all signing requests with their status and how many signatures are already in place.
- On a customer's profile, the **Documents** tab has the **Request signatures** button, with the customer's **Signature requests** below it.
## How does this fit together? [#hoe-hangt-dit-samen]
A signing request always belongs to one customer and one PDF. The signers do not have to be the customer: a contact, a colleague or an external party can also sign.
```mermaid
flowchart LR
A[PDF bij de klant] --> B[Ondertekenverzoek met ondertekenaars en velden]
B --> C[Ondertekenaar 1 tekent]
C --> D[Ondertekenaar 2 tekent]
D --> E[Ondertekende PDF met bewijspagina's]
E --> F[Documenten van de klant]
E --> G[Kopie voor elke ondertekenaar]
```
## How a request progresses [#hoe-een-verzoek-verloopt]
```mermaid
flowchart LR
A[Concept] -->|Versturen| B[Bezig]
B -->|iedereen getekend| C[Afgerond]
B -->|ondertekenaar weigert| D[Geweigerd]
B -->|Aanvraag annuleren| E[Geannuleerd]
B -->|termijn voorbij| F[Verlopen]
B -->|Terug naar bewerken| A
```
## Statuses [#statussen]
| Status | Meaning |
|---|---|
| Draft | You are still preparing the request. Nothing has been sent yet. |
| In progress | The request has been sent and people are signing. |
| Completed | Everyone has signed and the signed PDF is with the customer. |
| Declined | A signer declined. The request has stopped. |
| Canceled | You or a colleague withdrew the request. |
| Expired | It was not signed in time. |
Per signer you see **Waiting** (not their turn yet), **Link sent** (their turn), **Signed** or **Declined**.
## Who can sign [#wie-kan-ondertekenen]
| Type | How that person signs |
|---|---|
| **Customer** | Via a personal link by email, or by text message if there is only a phone number |
| **Contact** | Like the customer, for a contact of that customer |
| **Staff member** | In Tillor itself, without a code |
| **External party** | Like the customer, with a name and an email address or phone number that you fill in yourself |
A customer, contact or external party can also sign at the desk, on a tablet with the Tillor app. See [On the tablet at reception](/handtekeningen/ondertekenen#op-de-tablet-aan-de-receptie).
## Automating [#automatiseren]
A signing request can start an [automation](/automatiseringen/triggers). With **Signature request completed** you can, for example, create a task as soon as a rental contract is signed, and with **Signature request changed** you react to every status change. You can also send the same events as a [webhook](/ontwikkelaars/webhooks) to your own system.
## Terms [#begrippen]
- **Signing request**: the assignment to have one PDF signed, with signers, fields and a deadline. See [signing request](/begrippen#ondertekenverzoek).
- **Signer**: someone who has to sign. A customer, contact, staff member or external party.
- **Field**: a place on the PDF where a signer signs, adds initials or fills something in.
- **Draft**: a request you are still preparing. Nothing has been sent yet.
- **Evidence pages**: the pages at the end of the signed PDF showing who signed, when and how. See [evidence page](/begrippen#bewijspagina).
- **Seal**: the digital signature of your organisation that closes the signed PDF. See [seal](/begrippen#zegel).
# How someone signs (/en-GB/handtekeningen/ondertekenen)
This page shows what your signers go through, so you can answer questions, and how to have someone sign at the desk on the tablet. You send out a request yourself via [Requesting signatures](/handtekeningen/handtekening-vragen).
Before you start:
- The request must have the status In progress and the signer must have their turn. If it is not yet anyone's turn, it says **Not your turn yet**.
- For the tablet you need the **Manage signature requests** permission and the Tillor app must be online on a device of your organisation.
- The signer needs a phone number or email address, because the code goes there. Only a staff member signs without a code.
## On the tablet at reception [#op-de-tablet-aan-de-receptie]
If someone is standing in front of you, they do not have to open the link themselves. This works for a customer, contact or external party whose turn it is.
### Open the request [#open-het-verzoek]
Go to Administration > Signatures and open the request, or open it via the **Documents** tab of the customer.
### Click Sign on tablet [#klik-op-op-tablet-tekenen]
For the signer whose turn it is, click **Sign on tablet** and choose how the identity is confirmed:
- **With a code**: the signer confirms on the tablet with the code that arrives by text message or email, just like via the link.
- **Without a code**: you checked the identity at the desk, for example with an ID card. No code is asked for. The evidence sheet states that the identity was confirmed by a staff member, and the history shows who that was.
Tillor reports **Opened on the tablet**.
### Let the person sign [#laat-de-persoon-tekenen]
The document opens in the app on the tablet, with the signer's name at the top in large letters. Check that name together with the person in front of you. The steps are the same as via the link, see below. Right after sending, the tablet may briefly show **Preparing the document**.
After signing or declining, the tablet returns to the home screen after a few seconds. With several signers, you send each one to the tablet separately when it is their turn. The evidence sheet states that the signature was placed on the tablet.
## What does the signer do? [#wat-doet-de-ondertekenaar]
The signer receives an email, or a text message if there is only a phone number. It contains a personal link to the signing page, with your message and the name of your organisation. The page works on a phone, tablet and computer, in the signer's language.
The signer sees the document directly in the app, after you chose **Sign on tablet**. No link or email is needed. Someone who signs on the tablet with a code receives the code on their own phone or in their email.
After that, the steps are the same.
### Getting started [#beginnen]
The first card shows who else is signing, the place in the queue (for example *Signer 2 of 3*) and the steps. On the right is the document, with the signatures of earlier signers already in place. With **Start signing**, the signer begins. Every step has a back button. The phone's back button works too.
### Draw your signature [#teken-je-handtekening]
The signer draws a **Signature** with a finger or mouse, or chooses **Type** and types their full name. Tillor then renders that typed name in a handwritten typeface. If there are initials fields, an **Initials** step follows in the same way (drawn or typed initials). With **Clear**, the signer starts again. Switching between **Draw** and **Type** empties the box.
### Place your signature [#plaats-je-handtekening]
The signer taps each marked box in the document (**Click to sign** or **Click to initial**). **Next field** jumps to the next empty box. With **Previous box** and **Next box**, the signer walks through all the boxes. A second tap on a filled box does nothing.
### Fill in your details [#vul-je-gegevens-in]
Only if you placed input boxes: text, date or a tick. Each box says **required** or **optional**. An empty required box blocks the step. What is typed appears in the document straight away. Tillor fills in the name and date of signing itself.
### Confirm and sign [#bevestig-en-onderteken]
The signer ticks that they have read the document. If anything is still missing, a list of buttons appears that jump to that step.
Only when everything is ready does the signer have a 6-digit code sent with **Send verification code**: by text message if there is a phone number, otherwise by email. The code is valid for 10 minutes. If it does not arrive, **Resend code** is available after 2 minutes. The signer then clicks **Sign** themselves. Signing never happens automatically.
## What do you see afterwards? [#wat-zie-je-daarna]
- If it is not yet anyone's turn, it says **Not your turn yet** and a message follows when it is.
- Someone who has already signed sees **You signed** until the others are done.
- As soon as everyone has signed, each signer can download the signed PDF via the same link (**Signed by everyone**).
- For a withdrawn request, the signer sees **Request withdrawn**, for an expired request **Signing period ended** and for a declined request **Signing stopped**.
- A staff member signs in Tillor, via the **Sign now** button on the detail page or via the link in the message. A code is not needed, because that person is already signed in. Here too, the signature can be drawn or typed.
## Declining [#weigeren]
With **Decline to sign**, a signer can reject the request and optionally give a reason (up to 500 characters). The request then stops, nobody else is asked, and whoever created the request receives a message. See [Following up a request](/handtekeningen/opvolgen#wat-gebeurt-er-daarna).
## Problems? [#problemen]
The button only appears if the Tillor app on a device of your organisation has been in contact with Tillor in the last few minutes, and only for a customer, contact or external party whose turn it is. Open the app on the tablet, wait a moment and reload the page. Also check that **Show receipts and documents** is on in the [device settings](/mobiele-app/toestelinstellingen#kassabonnen-en-geluid). See also [Tablets and kiosks](/mobiele-app/tablets-en-kiosken).
Tillor could not reach a tablet that shows documents. Check that the app is open and that the device has a connection, and try again.
The code goes to the phone number, or to the email address if there is no phone number. Ask the signer to check the spam folder and to use **Resend code** after 2 minutes. If the number or address is wrong, correct it on the customer or contact and send a reminder. For an external party, cancel the request and make a new one with the right details.
The code entered is wrong or has expired. A code is valid for 10 minutes. The signer requests a new one with **Resend code** and enters it. Every wrong attempt appears in the history as **Wrong code entered**.
Something is still missing. Under **Still to do before you can sign:** it says what remains: drawing the signature or initials, tapping a box, or filling in a required box. The tick that the document has been read must also be on.
If the request was set back to draft, canceled or has expired, the old link no longer works. After sending again, the signer gets a new link. For a canceled or expired request, you need to make a new request.
The page was already open while the request changed, for example because it has already been signed. The page now shows where it stands. Nothing went wrong.
## See also [#zie-ook]
# Following up a request (/en-GB/handtekeningen/opvolgen)
After sending, you follow a signing request on its detail page: who has already signed, whose turn it is and what you can still do. This is also where you send a reminder, cancel a request and download the signed PDF.
Before you start:
- Anyone can view. Reminding, canceling, setting back and sending to the tablet require the **Manage signature requests** permission. Without that permission, those buttons are greyed out.
- The request must have been sent. A Draft is edited in the editor, see [Requesting signatures](/handtekeningen/handtekening-vragen).
## Opening the request [#het-verzoek-openen]
Open Administration > Signatures. For each request, the list shows the **Title**, **Customer**, **Status**, how many have already **Signed**, when it was **Created** and until when signing is allowed (**Sign before**). Search by title or customer name, or filter with **Status** on, for example, only the requests still in progress. Click a request to open it.
The same requests are also on the customer, on the **Documents** tab under **Signature requests**.
## The detail page [#de-detailpagina]
On the left you see the request's details, the signers in order and the **History**. On the right is the document, with the signatures that have already been placed. At the top it says who the request is waiting for, for example *Waiting for Marc Janssens to sign.*
For each signer you see whether they still have to wait (**Waiting**), have received the link (**Link sent**), have **Signed** or **Declined**, with the time. The page refreshes by itself when someone signs.
### Before and after: from In progress to Completed [#voor-en-na-van-bezig-naar-afgerond]
This is what the same kind of request looks like while signing and afterwards. First it is In progress: the tenant has signed and the guarantor's turn is next.
As soon as the last signer has signed, it is Completed. All signatures are in the document, the history has been extended and at the top is the button to download the signed PDF.
## Sending a reminder [#een-herinnering-sturen]
For a signer whose turn it is, click **Send reminder**. That person receives the same link again, and Tillor reports **The link was sent again**. The link from the first message keeps working too. The button is not shown for staff members, who sign in Tillor, nor for signers who still have to wait.
Tillor also sends reminders itself. A signer whose turn it is gets a reminder after the number of days you set under **Reminder after** (3 by default), counted from the first message or the previous reminder. This happens at most 2 times per signer, and during Tillor's daily check. A reminder can therefore arrive up to a day later than the number of days you set.
## Having someone sign on the tablet [#laten-tekenen-op-de-tablet]
If the signer is at the desk, click **Sign on tablet** for that person. How that works and why the button is sometimes missing is covered in [On the tablet at reception](/handtekeningen/ondertekenen#op-de-tablet-aan-de-receptie).
## Signing yourself as a staff member [#zelf-ondertekenen-als-medewerker]
If a colleague or you yourself are next, that person receives a message with a link to Tillor. The detail page then shows the **Sign now** button.
## Canceling a request [#een-verzoek-annuleren]
Click **Cancel request** and confirm. The signing links then stop working and signatures that have already been placed are not used. If you want to continue after all, click **Keep**.
Canceling is only possible while the request is In progress. A completed, declined or expired request is final.
## Back to editing [#terug-naar-bewerken]
If nobody has signed yet, or only you, the detail page shows **Back to editing**. The request becomes a draft again, links that were sent stop working and everyone signs again after sending. If someone else has already signed, the button is missing. Cancel the request then and make a new one.
## What happens next? [#wat-gebeurt-er-daarna]
- **Someone signs**: the signer gets the status **Signed** and the next one receives the link. The page refreshes by itself.
- **Everyone has signed**: you briefly see *Everyone signed. The signed PDF is being prepared.* The request becomes Completed. The signed PDF appears as **[title] (signed)** in the customer's **Documents**, with the same document type as the original PDF. If that had no type, it gets the type **Signed agreement**. Each signer receives a copy.
- **Someone declines**: the request stops with the status Declined. Whoever created the request gets a notification and the other signers are no longer asked. The reason is shown with the signer, if one was entered.
- **You cancel**: the request gets the status Canceled and the links stop working.
- **The deadline has passed**: after the day under **Sign before**, nobody can sign any more. Tillor sets the request to Expired during the daily check. Until that check, the detail page shows that the deadline has passed. If you still want someone to sign, make a new request.
## The signed PDF [#de-ondertekende-pdf]
On the detail page, you download the PDF with **Download signed PDF**, below the history. The **Timestamp** is also there, see [Evidence and validity](/handtekeningen/bewijs-en-geldigheid#zegel-en-tijdstempel).
By email, the PDF is attached to the message to the signer. If that does not work, there is a button to download it. Someone with only a phone number receives a text message with a link.
The signed PDF and the original PDF are the evidence of the signing. You therefore cannot delete them, only archive them.
## History and events [#verloop-en-gebeurtenissen]
Under **History** is every step with time and who did it: created, sent, link sent, page opened, code sent, wrong code, signed, declined, set back, canceled, expired and completed. The same line is on the customer's **Events** tab and in the [activity log](/activiteitenlog).
## Problems? [#problemen]
The button is only shown for a signer with the status **Link sent**, so one whose turn it is. For a staff member it is never shown, because they sign in Tillor. If it is shown but greyed out, you are missing the **Manage signature requests** permission.
Try again. If it keeps failing, check the signer's email address and phone number. For a customer or contact, you change those in their details. For an external party, cancel the request and make a new one with the right details.
Someone other than you has already signed. The request can then no longer go back to a draft. Cancel the request with **Cancel request** and make a new one.
Canceling is only possible for a request that is In progress. Reload the page and see what the status is now. You can no longer cancel a completed, declined or expired request.
You see *The signing period has ended; the request expires at the next daily check.* Nobody can sign now. As soon as the check has run, the request is Expired.
Tillor is still preparing the PDF. Reload the page after a few minutes. As soon as it is ready, it is with the customer's documents and **Download signed PDF** appears. If it is still not ready after a quarter of an hour, Tillor tries again at the next daily check.
That is intended. The original PDF and the signed PDF are the evidence. You can archive them.
## See also [#zie-ook]
# Identity scans (/en-GB/identiteitsscans)
With an identity reader, you scan passports, ID cards, driving licences, visas and residence documents. Tillor recognises the document type, reads the data and uses it to create a customer quickly, without retyping everything. The reader sends the scan to your organisation via the [Tillor connector](/connector) on your local network. How to create a customer afterwards is covered in [Creating a customer from a scan](#klant-aanmaken-vanuit-een-scan).
- Tillor automatically deletes a scan without a linked customer after 7 days, together with the associated files.
- A linked scan is kept until you unlink or delete it. You decide the retention period.
- Creating a customer from a scan requires at least a first name in the scan.
- If a customer with the same national register number already exists, link the scan to that customer instead of creating a duplicate.
- Scan files are stored encrypted. The page images carry a **Not valid as ID** watermark. The portrait stays without a watermark.
- The connector listens on port 8765 by default.
## How does this fit together? [#hoe-hangt-dit-samen]
```mermaid
flowchart LR
subgraph lokaal[Lokaal netwerk]
R[Identiteitslezer]
C[Tillor-connector]
end
T[Openstaande scan in Tillor]
K[Klant of contactpersoon]
R --> C
C --> T
T -->|Klant aanmaken of koppelen| K
T -->|Niet gekoppeld na 7 dagen| X[Automatisch verwijderd]
```
A scan starts as a pending scan. If you link it to a customer or contact, it is kept with that customer.
## Creating a customer from a scan [#klant-aanmaken-vanuit-een-scan]
Before you start:
- The scan must be in Tillor as a pending scan. If it is not there, see Problems at the bottom.
- The scan needs a first name.
### Open the customer list [#open-de-klantenlijst]
Go to Customers > Overview and click **Create new customer**. As long as there are pending scans, the button shows a menu: choose **Manual** or a scan from the list.
### Check the scan [#controleer-de-scan]
After you choose a scan, a confirmation opens with a preview of the document and the data from the reading strip. Click **Create customer**.
The same route works via **Start reservation** (**New customer…**) and via the panel at the bottom right with **Make customer based on scan**.
### What happens next? [#wat-gebeurt-er-daarna]
- Tillor creates the customer, links the scan and fills in first name, last name, date of birth, address and other fields where possible.
- You land on the new customer profile.
- The scan is no longer in the queue and is kept with the customer.
- The linking appears on the customer's **Events** tab.
## Linking to an existing customer or contact [#koppelen-aan-een-bestaande-klant-of-contactpersoon]
Besides a new customer, you can also link a scan to an existing customer or contact.
On the customer profile, a dotted card **Assign a pending identity scan** appears as long as there are suitable pending scans. Choose a scan with **Choose scan…** and click **Assign to this customer**.
On a contact's card, you can link a scan that has no contact yet and contains at least a first name, with **Assign to contact**. You can also have a new contact created with **Create contact from scan**.
After linking, Tillor completes the customer's or contact's details where possible. As first name, Tillor only takes over the first part of the first name, for example `Andy` from `Andy Adhemar R`. On the scan, all first names stay visible.
## Unlinking, exporting or deleting a scan [#een-scan-ontkoppelen-exporteren-of-verwijderen]
A linked scan has actions for **Download**, **Export PDF**, **Unlink scan** and **Delete scan**. Deleting permanently removes the scan and all encrypted files and cannot be undone.
## Retention period and your responsibility [#bewaartermijn-en-jouw-verantwoordelijkheid]
Tillor automatically deletes scans that are not yet linked to a customer after 7 days (the scan and the associated files). Link or process pending scans in time via **Create new customer**, the panel at the bottom right or the dotted card on a customer profile.
A different rule applies to linked scans: they are kept until your organisation unlinks or deletes them. You decide whether, when and on what legal basis identity documents are scanned and how long linked scans are needed. Tillor processes the scans as a processor on your instruction. Compliance with privacy legislation, retention periods for linked scans and timely deletion when storage is no longer needed are your responsibility as the controller.
## Problems? [#problemen]
On the reader, check the connector's IP address and port 8765, and whether the connector is running. See [Connector](/connector).
Only scans without a linked customer count as pending. If the scan is already linked, or older than 7 days and therefore deleted, it is no longer there.
The reason is shown with the scan. If the scan has no first name, it says *fill that in on the scanner or link this scan manually*. If the document is still valid and a customer with this national register number already exists, open the suggested customer at the top of the card or link the scan to that customer.
The customer was not created and the scan stays pending. Try again. If that does not work, create the customer manually and link the scan with **Assign to customer**.
Try again, or use the panel at the bottom right.
## Terms [#begrippen]
- **Identity scan**: the data and images read from one identity document.
- **Pending scan**: a scan that is not yet linked to a customer and disappears after 7 days.
- **Reading strip (MRZ)**: the lines of letters and digits at the bottom of the document that the reader reads out.
- **Connector**: the box on your local network that forwards scans to Tillor. See [connector](/begrippen#connector).
- **Customer**: the record in Tillor. See [customer](/begrippen#klant).
## See also [#zie-ook]
# Reading and replying to conversations (/en-GB/inbox/gesprekken)
The inbox brings together all conversations from your connected channels. Here you read them, reply and tidy up. How to connect a channel is described under [Inbox](/inbox).
Before you start:
- You need the **View inbox** permission to read conversations and **Manage inbox** to reply or archive. Without **View inbox**, the inbox does not appear in the sidebar.
- At least one channel must be connected. Otherwise you see a link to Settings > Integrations.
## Opening the inbox [#de-inbox-openen]
### Go to the inbox [#ga-naar-de-inbox]
In the sidebar, under **Support**, choose **Inbox** (marker **1** in the screenshot). If no channel is connected yet, Tillor shows a link to Settings > Integrations.
### Choose a conversation [#kies-een-gesprek]
On the left is the **Conversations** list with the threads from all channels. Use **Open** and **Archived** to switch between active and finished conversations. Click a conversation to open it on the right.
An open conversation shows the messages in order, with name and time. At the bottom is the reply field (marker **2** in the example).
The background of a conversation follows the channel: beige for WhatsApp, blue bubbles for Messenger, pink for Instagram and light grey for website chat.
## Sending a reply [#een-antwoord-sturen]
### Open the conversation [#open-het-gesprek]
Click the conversation in the list.
### Type your reply [#typ-je-antwoord]
Type in the reply field at the bottom.
### Send [#verstuur]
Click **Send** or press **Ctrl+Enter**.
Next to the time on your own messages you see a tick for sent, a double tick for delivered and a blue double tick for read. Replies you send through the WhatsApp Business app or the Messenger app also appear in the conversation for as long as the integration is active.
You cannot edit a message you have sent yourself. The channels do not offer that option. On Messenger and Instagram, a delete button appears next to your own text messages. It only hides the message in Tillor; the customer keeps the message in their own app.
Incoming Messenger photos are stored and shown in the conversation; in the list, a photo icon appears instead of text. Emoji reactions to Messenger messages appear as counters under the message.
### WhatsApp and the 24-hour reply window [#whatsapp-en-het-antwoordvenster-van-24-uur]
A customer who sends you a message on WhatsApp opens a free 24-hour reply window. Tillor shows **Free reply window open** with a countdown. If the window has closed, **24-hour window closed** appears and your reply is sent as a paid WhatsApp template, until the customer writes again.
- If no payment method has been added for your WhatsApp Business account in Meta WhatsApp Manager, Tillor blocks paid replies. Free replies within the window remain possible.
- If Meta has not yet approved the template in your organisation's language, your reply waits. This usually takes a few minutes and can take up to 48 hours.
## What happens next? [#wat-gebeurt-er-daarna]
- Your reply appears in the conversation with a tick: sent, delivered or read. If delivery fails, it shows **Not delivered**.
- An archived conversation disappears from **Open**. If the customer writes again, the conversation reappears.
- The conversation also appears on the customer, under Customers > customer > Communication.
## Finding and tidying up conversations [#gesprekken-terugvinden-en-opruimen]
- **Search**: filter threads by name or phone number, within **Open** or **Archived**.
- **Unread**: in **Open**, unread conversations are shown in bold with a red dot. Click **Mark all as read** at the top of the list to mark everything as read in one go.
- **Archive**: click **Archive** on a finished conversation in **Open**.
- **Restore**: open a conversation in **Archived** and click **Restore** to bring it back and be able to reply again.
- **Context menu**: right-click or long-press a conversation for **Mark as read**, **Mark as unread**, **Pin conversation** or **Unpin conversation**, **Archive** and **Restore**.
The number next to **Inbox** in the sidebar counts open conversations where the last message is from the customer and still awaits a reply. New messages appear live; the number updates itself.
## Tags [#tags]
With tags you label conversations for your whole team.
1. Open a conversation and use the **Tags** block in the side panel.
2. Create a tag with **New tag** or choose an existing one. Use the tag menu to edit or delete tags.
3. Filter the list with the tag icon next to the platform filter.
Tags with **AI can apply** can be added by Tillie after an automatic reply. Tags your team has already set stay in place.
## Notifications [#meldingen]
Users with **Inbox message notifications** receive a push notification for every new message from a customer. Your own replies do not trigger a notification.
With **View inbox** you also see a notification at the bottom right for a new message, in the same dock as pending identity scans and active phone calls. It shows the sender, the channel and a snippet of the text. Click it to open the conversation. The notification disappears after about ten seconds, unless you keep the mouse over it. If the conversation is already open, no notification appears.
## Conversations and customers [#gesprekken-en-klanten]
Tillor links a conversation to a customer where possible:
- WhatsApp by phone number.
- Messenger by a matching name, or by a phone number or email address that the customer shares in the conversation themselves.
- Instagram by a matching name or `@` username.
Meta does not pass on an email address or phone number through Messenger and Instagram. A customer's open conversations also appear under Customers > customer > Communication.
The side panel on the right shows the participant's details per channel, such as the WhatsApp number, the Instagram username with profile link or the page for website chat. Use the panel icon above the conversation to hide or show the panel.
## Problems? [#problemen]
You need the **View inbox** permission. Ask an administrator to grant it under Settings > Users, with **Edit permissions** next to your name.
To reply you need **Manage inbox**. You also cannot reply in an archived conversation: click **Restore** first.
Check that the conversation is open and that you have **Manage inbox**. On WhatsApp, the closed reply window can also be the cause, see above. Then try again.
The channel could not deliver the message. On WhatsApp this is usually down to the closed 24-hour window or a missing payment method at Meta.
No channel has been connected yet, or no messages have come in yet. Connect a channel under Settings > Integrations.
Tillor updates the conversation automatically when a customer edits or withdraws a message on Messenger or Instagram, or edits one on WhatsApp (within 15 minutes).
## See also [#zie-ook]
# Inbox AI assistant (Tillie) (/en-GB/inbox/inbox-ai-assistant)
**Tillie** is the default name of the AI assistant in the [Tillor inbox](/inbox). She answers frequently asked questions, collects details for reservation or sales enquiries and hands the conversation over to your team when a colleague is needed. Tillie works on **all inbox channels**: [website chat](/inbox/website-chat), [WhatsApp Business](/inbox/whatsapp-business-inbox), [Messenger](/inbox/messenger) and [Instagram Direct](/inbox/instagram).
Install **Inbox AI assistant** separately under **Settings > Integrations**. The assistant belongs to the inbox, not only to the website widget.
## Installing the integration [#integratie-installeren]
1. Go to **Settings > Integrations** (sidebar, under **Support**)
2. Open **Inbox AI assistant** in the list
3. Click **Install**
4. Under **Settings**, set what Tillie may do (see the fields below)
| Field | What does it do? |
|------|----------------|
| **Inbox AI enabled** | Main switch for all Inbox AI features. Turn it off to stop without uninstalling |
| **Send automatic replies** | When off: Tillie sends no messages to visitors. Translations, language detection and draft replies for the team can stay on separately |
| **Automatically enable AI for new threads** | Only applies when automatic replies are on. When off: every new conversation starts without AI; you enable AI per conversation in the sidebar. When on: new inbox conversations on all channels get AI straight away (with a 30-minute pause after a team message) |
| **Generate staff draft replies** | Lets colleagues generate an AI draft in the compose box. That draft is never sent automatically |
| **Translate messages** | Translates incoming messages into the organisation language and team replies into the contact's language. Team replies also get tidy punctuation, capital letters and chat abbreviations written out in full (even when no translation is needed) |
| **Detect contact language** | Uses AI to recognise the visitor's language when it is not yet known, and stores it on the conversation |
| **AI assistant name** | Name used in replies and prompts (default **Tillie**) |
| **MCP servers (JSON)** | Optional. Read-only MCP connections (URL and headers) |
| **MCP tools** | After saving: **Load tools**, list the read-only tools and switch each tool on or off |
Turn **Inbox AI enabled** on, **Translate messages** (and optionally **Detect contact language**) on, and **Send automatic replies** off. Tillie then translates, but sends nothing to visitors.
### MCP tools (optional) [#mcp-tools-optioneel]
If your park has an MCP server with read-only connections, Tillor can fetch **live park data** during a conversation. Think of activities, caravans for sale, or other data your server offers.
Tillor has **no fixed list of tool names**. Which tools exist, you see after **Load tools** in the integration settings. You can only enable tools that your MCP server marks as read-only.
1. Fill in **MCP servers (JSON)** (URL and headers).
2. Save and click **Load tools**.
3. Enable the tools that suit your park.
Depending on the AI configuration of your environment, Tillie chooses for herself which enabled tool fits, based on your server's tool description. She never calls tools you have not enabled.
Results from MCP end up in Tillie's reply. They do not replace the knowledge base: she still does not make up prices, availability or rules if they come from nowhere.
Tillie uses an AI model that Tillor sets up for your environment. If the assistant does not reply, contact Tillor support.
## What Tillie does after a visitor message [#wat-tillie-doet-na-een-bezoekersbericht]
After every new incoming message in a conversation where AI is active:
1. Tillor shows a **typing indicator** on the channel while the reply is being generated
2. Tillor determines the intent: **reservation**, **sales** or **other** (organisations with a rental caravan flow also **rental caravan**)
3. Tillie replies in the visitor's language; the typing indicator then disappears
Tillie decides for herself, based on her instructions, when to reply and when to stay silent. To an opening greeting ("hi", "hey", "hello") she replies with a short welcome and the question of what she can help with. After a closing thank-you, she does not respond again to a short "thanks", "ok" or "no" from the visitor, so no thank-you loop arises.
| Intent | Behaviour |
|-----------|--------|
| **Reservation** | Asks for missing details: arrival, departure, type (tent, mobile home, touring caravan), dogs yes/no (and how many), number of people, children and ages, then name, email and phone number, and optionally the number plate for check-in (can be skipped). Details Tillor already knows (e.g. from the website widget or WhatsApp) are filled in; only missing fields are asked. For a weekday ("Monday"), Tillie first asks a confirmation question ("Do you mean …?") before continuing. Every reply ends with one question. Answers short policy questions from the knowledge base (e.g. changing a reservation later) and then carries on collecting. Once everything is complete, Tillie summarises the **enquiry** and hands the conversation over to a colleague - there is no final reservation yet |
| **Rental caravan** | Collects name, email, address, country and reason for stay (on request), then hands over to your team |
| **Sales** | Explains that the visitor has to come by the office for a viewing or purchase, and passes it on to your team |
| **Other** | Only replies if the answer is in the knowledge base. Otherwise Tillie honestly says she does not know, offers to pass the question on to a colleague, and hands the conversation over |
Tillie **does not make up prices, availability or rules**. Only what is in the knowledge base may be stated as fact.
### Booking form on your website [#boekingsformulier-op-je-website]
Do you connect your own form to [Website chat](/inbox/website-chat)? Then you can have Tillie only confirm and hand over straight away, without intake questions. That suits a form whose tab closes afterwards. See [Website chat API - metadata](/ontwikkelaars/website-chat#metadata-boekingsformulier).
## Per conversation: Automatic, On or Off [#per-gesprek-automatisch-aan-of-uit]
In the conversation details in the sidebar you choose per thread:
| Mode | Behaviour |
|-------|--------|
| **Automatic** | Tillie replies, but pauses for **30 minutes** after every message from your team |
| **On** | Tillie always replies, even straight after a team message |
| **Off** | Tillie does not reply to this conversation |
During the pause you see a countdown in the sidebar.
## Tags after an AI reply [#tags-na-een-ai-antwoord]
In the side panel you can create and assign organisation-wide **tags** (permission **Manage inbox**). Use **New tag** to create a tag. Open the tag menu on a conversation to assign tags; editing and deleting each tag are in that same menu. Tick **AI can apply** if Tillie may add that tag after an automatic reply. Tillie then chooses zero or more of those tags herself based on the conversation; tags your team has already set stay in place.
Typical tags are, for example, **Sales**, **Booking** and **Urgent**. Tillie recognises those names and links them to what she has already established in the conversation:
| Tillie intent | Matches tag names such as |
|---|---|
| Sales | Verkoop, Sale |
| Reservation | Boeking, Reservatie, Booking |
| Rental caravan | Caravan, Verhuur |
| Urgent hand-over | Urgent, Spoed, Dringend |
The tag name does not have to match exactly: **Boeking aanvragen** also counts as a booking tag. Only tags with **AI can apply** are eligible.
## Language, tone and contact details [#taal-toon-en-contactgegevens]
Replies follow the visitor's language - not only the four widget languages (`en`, `nl`, `de`, `fr`), but any language Tillie can reply in (e.g. Spanish, Polish, Turkish). If someone explicitly asks for another language, Tillie switches and stores the chosen language on the conversation.
**Hand-over summaries** (visible to your team only) always follow the **organisation language** from Tillor, for every hand-over (reservation, rental caravan, sales, open question, explicit request for a colleague), regardless of the language of the conversation. Tillie receives that organisation language in every prompt.
Messages to visitors (AI and team) are always **plain text**, not markdown, because WhatsApp, Instagram, Messenger and the widget do not support it. On WhatsApp, Tillie may add up to three reply buttons under a short reply, when a tap is a choice the message itself already mentions. The message stays readable if the customer types instead of tapping. Outside the 24-hour window, the reply is sent as a template without buttons.
Tillie stays calm and professional, does not talk about competitors, and does not ignore safety rules if a visitor asks her to ignore instructions. Contact details for referrals come from your **Tillor organisation profile** (name, address, phone, email, website). You set **office opening hours** under **Settings > Opening hours** (weekly hours, seasonal periods, public holidays and exceptions); Tillie uses those hours to say when a colleague can reply. Keep those fields up to date. About a week before a public holiday, Tillor reminds the support address by email if the hours for that day have not been filled in yet.
## Events in the conversation (for your team only) [#gebeurtenissen-in-het-gesprek-alleen-voor-je-team]
During reservation intake, Tillie updates name, email and phone as soon as the visitor gives them. In the inbox, an **AI assistant updated participant details** event (from → to) then appears, visible to your team only.
On hand-over, an **AI assistant handed this conversation to your team** event appears: a prominent card with a summary (table for reservation or rental caravan details, plus notes for open questions). The summary is always in the **language of your organisation** (nl, en, de or fr), even when the visitor chats in another language. The visitor does not see that card.
## Knowledge base: facts Tillie may use [#kennisbank-feiten-die-tillie-mag-gebruiken]
Tillie answers questions based on a **knowledge base**: short articles with verified facts about your park, for example opening hours, pet rules, the swimming pool, charging points or how to change a reservation later.
Some articles apply to all Tillor organisations, others are specific to your park. In a conversation, Tillie only uses the general articles plus the articles added for your organisation.
Do you want topics added, changed or removed? Let Tillor support know. We fill and maintain the knowledge base together with you, tailored to what your reception wants to be able to answer.
## Conversation flows: a script per intent [#gespreksflows-draaiboek-per-bedoeling]
Besides the knowledge base, Tillie follows **conversation flows**: agreements on which details she asks for, in which order, and when she hands the conversation over to your team. Every intent (reservation, rental caravan, sales, other - see the table above) has such a flow.
The flows are set up by default, but Tillor tunes them with you to your park. Would you like different details to be asked for a reservation enquiry, for example, or Tillie to hand over sooner? Let Tillor support know.
Check AI replies in the inbox before you trust them to visitors. A reservation via chat remains an **enquiry** - not a final booking.
## What happens next? [#wat-gebeurt-er-daarna]
- A conversation that Tillie hands over appears in the inbox with a block **Tillie handed this conversation to your team** and the collected details.
- Your team receives a notification. For an urgent hand-over this goes through the **Urgent AI handoff** notification. See [Notification types](/communicatie/notificatietypes).
- If a colleague replies, Tillie pauses for 30 minutes in the **Automatic** mode.
## Problems? [#problemen]
Check that **Inbox AI enabled** and **Send automatic replies** are on under Settings > Integrations > Inbox AI assistant. Then check in the conversation's sidebar whether the mode is not set to **Off**, or whether a countdown is running after a message from your team.
**Automatically enable AI for new threads** is off. Turn the switch on, or choose **On** per conversation.
Tillie only uses what is in the knowledge base and does not make up prices, availability or rules. Add to the knowledge base.
## Related [#gerelateerd]
# Overview (/en-GB/inbox)
In the inbox you read and reply to messages from customers and visitors that come in through WhatsApp, Messenger, Instagram or the chat on your website, all in one place. You find it in the sidebar under **Support > Inbox**. First you connect the channels you want to use, then you work in [Reading and replying to conversations](/inbox/gesprekken) every day.
The inbox is meant for two-way traffic with customers. Automatic WhatsApp notifications, for example for a low NFC balance, go through Twilio and not through these integrations.
- A new message appears as a card at the bottom right and disappears after about ten seconds. The number next to **Inbox** counts open conversations waiting for a reply
- The AI assistant Tillie pauses for 30 minutes after a colleague has replied
- A chat message on the website can contain a maximum of 4096 characters, without images or files
- A customer can edit a WhatsApp message up to 15 minutes after sending it, and you see that in the conversation
- The email reminder to a website visitor goes out after about 5 minutes of inactivity. The link works for 30 days
- A message of your own that you delete in Tillor (Messenger and Instagram) only disappears in Tillor, not for the customer
## How does this fit together? [#hoe-hangt-dit-samen]
You install each channel separately. All conversations then end up in the same list, and Tillor links them to a customer where possible.
```mermaid
flowchart LR
W[WhatsApp] --> I[Inbox]
M[Messenger] --> I
G[Instagram] --> I
C[Chat on your website] --> I
I --> K[Linked customer via phone number or name]
I --> A[Tillie replies or hands over]
A --> T[Your team]
I --> T
T -->|reply| W
T -->|reply| M
T -->|reply| G
T -->|reply| C
```
- Your team replies in Tillor. The reply goes back to the customer through the same channel.
- Tillie, the AI assistant, can reply and hand a conversation over to your team. You decide that per conversation.
- Replies you send outside Tillor, for example in the WhatsApp Business app, also appear in the conversation.
## Connecting channels [#kanalen-koppelen]
Install an integration per channel under Settings > Integrations.
When you connect Messenger, Tillor imports the page's existing conversations. If Messenger is already connected, you can also start that synchronisation manually from the inbox.
## Working day to day [#dagelijks-werken]
## Permissions [#rechten]
| Permission | What may the user do? |
|-----------|------------------------|
| **View inbox** | Open the inbox and read conversations |
| **Manage inbox** | Send replies, archive, restore and pin conversations, mark as unread and delete your own messages in Tillor (Messenger and Instagram) |
| **Inbox message notifications** | Receive push notifications for new messages from customers |
Set permissions under Settings > Users.
## Terms [#begrippen]
- **Conversation or thread**: all messages with one customer or visitor on one channel.
- **Open and Archived**: the two tabs of the conversation list. Archiving takes a conversation out of **Open**, restoring puts it back.
- **Tillie**: the default name of the AI assistant in the inbox. You can change the name.
More terms are in the [glossary](/begrippen).
# Instagram (/en-GB/inbox/instagram)
With **Instagram** you receive Instagram Direct messages in the [Tillor inbox](/inbox). The integration uses a linked **Facebook Page** with an **Instagram Professional account** in Meta Business Suite.
Before you start:
- You need the **Manage integrations** permission.
- Your Instagram account is a Professional account (Business or Creator), linked to a Facebook Page.
## Installing the integration [#integratie-installeren]
1. Go to **Settings** (sidebar, under **Support**)
2. Choose **Integrations** and open **Instagram** in the list (marker **2**)
3. Click **Install** (marker **1**) and complete the Meta OAuth flow (Instagram messaging permissions)
4. Choose the **Facebook Page** that is linked to your Instagram Professional account
5. Check the **Instagram username** field under the page selection (Tillor shows the linked account, for example `@uwaccount`)
6. Save the settings
Without a linked Instagram Professional account on the selected page, Tillor cannot complete the integration.
## What happens next? [#wat-gebeurt-er-daarna]
- After installation, incoming Instagram Direct messages arrive in the [inbox](/inbox) automatically.
- Replies sent through the Instagram app also appear in the inbox. Messages you send through Tillor are not shown twice.
- If no messages come in after all, contact Tillor support. The Instagram connection with Meta must be set up for the whole platform.
- Messenger and Instagram are separate integrations. If you want both channels in the inbox, install both.
## Problems? [#problemen]
### Connecting failed or no Instagram on the page [#koppelen-mislukt-of-geen-instagram-op-de-pagina]
If installation stops with *The app could not be linked* or *No Instagram Professional account*, check in Meta:
1. **Instagram Professional** - your Instagram account must be Business or Creator (not a personal account).
2. **Link the page** - in [Meta Business Suite](https://business.facebook.com/) or Business Settings: link the Instagram account to the **Facebook Page** you log in with.
3. **Message access** - in the Instagram app: **Settings** > **Messages and story replies** > **Connected tools** > allow access to messages (required for Direct in inbox apps).
4. **Correct Meta login** - use an account that is an **admin** of the Facebook Page with messaging permissions.
During installation, Tillor looks up all Facebook Pages on your account and picks the first page with a linked Instagram Professional account. If you have several pages, you can choose a different page in the integration settings after installation.
During installation, Tillor always requests the permissions `instagram_basic`, `instagram_manage_messages` and `pages_read_engagement`. Set them to **Ready for testing** first under **Use cases** (Messenger/Instagram) in the Meta Developer Console. **Invalid Scopes** means they are not yet on the Meta app. The `instagram_business_*` permissions belong to a different login method and are not for Tillor.
## Related [#gerelateerd]
# Messenger (/en-GB/inbox/messenger)
With **Messenger** you receive messages from customers through a linked Facebook Page in the [Tillor inbox](/inbox).
Before you start:
- You need the **Manage integrations** permission.
- You sign in to Meta with an account that is an admin of the Facebook Page.
## Installing the integration [#integratie-installeren]
1. Go to **Settings** (sidebar, under **Support**)
2. Choose **Integrations** and open **Messenger** in the list (marker **2**)
3. Click **Install** (marker **1**) and complete the Meta OAuth flow
4. On the detail page, choose which **Facebook Page** receives Messenger messages
5. Save the settings
Tillor shows the linked page under **Settings** on the detail page. After installation, Tillor receives incoming Messenger messages automatically. Replies you also send through the Messenger app appear in the inbox. Messages you send through Tillor are not shown twice.
For **Instagram Direct**, install the separate [Instagram](/inbox/instagram) integration.
## What happens next? [#wat-gebeurt-er-daarna]
- Tillor imports the page's existing conversations. You can also start that synchronisation yourself later from the inbox.
- New messages arrive in the [inbox](/inbox) automatically. Tillor links them to a customer with the same name, or by a phone number or email address that the customer shares in the conversation.
## Problems? [#problemen]
Check under Settings > Integrations > Messenger that the correct **Facebook Page** has been chosen and that the settings have been saved.
Meta does not pass on an email address or phone number through Messenger. Tillor only links on a matching name or on details the customer shares themselves.
## Related [#gerelateerd]
# Conversations via website chat (/en-GB/inbox/website-chat-gesprekken)
A conversation appears in the inbox as soon as the visitor sends their first message, with the channel **Website chat**. How to respond is described in [Reading and replying to conversations](/inbox/gesprekken). This page explains what extra you see with website chat.
In the side panel on the right is an **Open on website** button with the page where the visitor was last active, plus visitor and session details. Extra fields from the visitor form are shown there too.
## Who is the visitor? [#wie-is-de-bezoeker]
- Tillor recognises a visitor by their browser. The same browser on the same device therefore opens the same conversation.
- Name, email and phone from the visitor form are kept in that browser after the first message. If the visitor comes back later, they do not have to fill anything in again.
- If that storage is empty, for example in a different browser or after clearing, the widget fills in the details from the existing conversation.
- Messages are text of up to 4096 characters. Images and files are not supported.
## Typing and presence [#typen-en-aanwezigheid]
| What | Who sees it | Where |
|-----|--------------|------|
| **Typing…** while the visitor is writing | Your team | Below the conversation in the inbox, even before the first message |
| **Typing…** while a colleague is writing | The visitor | In the widget |
| **Online** (green dot) or **Last seen** with a time | Your team | Above the conversation |
The visitor counts as online as long as the tab is visible. The widget sends a sign of life about every 20 seconds. Fetching messages, typing and reading also count as activity.
## Ticks [#vinkjes]
Visitors see ticks next to their own messages:
| Ticks | Meaning |
|---------|-----------|
| One | Sent |
| Two grey | Your team has opened the conversation and loaded the messages |
| Two blue | Your team has marked the conversation as read |
In the inbox you see ticks next to your own replies:
| Ticks | Meaning |
|---------|-----------|
| One | Sent |
| Two grey | The visitor is on the page and has fetched the messages, even with the chat closed |
| Two blue | The visitor has the chat window open |
Replies from the inbox appear in the widget automatically, even if the visitor opens the window later.
## Visitor activity in the conversation [#bezoekersactiviteit-in-het-gesprek]
After the first message, your team sees grey info text in the conversation. The visitor does not see it. These lines do not raise an unread counter and do not trigger a push notification.
| Event | Text in the inbox |
|-------------|-------------------|
| Chat closed | User closed the chat |
| Other tab or window minimised | User switched tab or minimized the browser |
| Another page opened | User navigated to the page URL |
Navigation is also detected on sites that switch pages internally without reloading. The widget passes on the current page about every 20 seconds, so the side panel shows the last active page.
## Tillie on website chat [#tillie-op-website-chat]
Tillie, the AI assistant, also works in the widget. To use it, install **Inbox AI assistant** separately. Installation, knowledge base and behaviour are described on [Inbox AI assistant (Tillie)](/inbox/inbox-ai-assistant). Messages from Tillie get a little robot in the widget instead of the organisation logo.
As soon as the visitor types, your team may see **Typing…**. The first message is only sent when they click **Send**, together with the contact details they entered.
## See also [#zie-ook]
# Website chat settings (/en-GB/inbox/website-chat-instellingen)
You find the settings under Settings > Integrations > Website chat. Installing and placing the snippet are described in [Putting the chat on your website](/inbox/website-chat).
## Widget [#widget]
| Field | What does it do? |
|------|---------------|
| **Widget enabled** | Hides the chat everywhere without removing the integration. On by default |
| **Show on Tillor public pages** | Shows the chat button on public Tillor pages such as the access pass, outstanding invoice and public map. Your own site uses the snippet. On by default |
| **Welcome message** | Text in the chat header and before the visitor's first message. Maximum 500 characters. Leaving it empty gives a default text in the widget's language |
| **Launcher tooltip** | Label for the floating button, meant for screen readers. Maximum 80 characters |
| **Reply soon message** | Line under the organisation name in the chat header, for example "We usually reply quickly" |
| **Launcher icon** | Icon on the chat button: **Speech bubble**, **Rounded chat**, **Question mark**, **Search** or **Person** |
| **Accent color** | Colour of the chat button and of the visitor's messages. Choose a colour or enter a hex value, for example `#2563eb` |
| **Allowed domains** | Comma-separated hostnames that may load the chat. Empty means: any domain |
| **Email visitors about unread replies** | See [below](#herinnering-per-e-mail). On by default |
The chat header automatically shows your organisation's logo. Messages from the AI assistant get a little robot instead of that logo. Neither can be set under Website chat.
If you do not set a **Welcome message**, **Launcher tooltip** or **Reply soon message**, the widget uses a default text in its own language. You set that language on the snippet with `data-locale` (see [Options on the snippet](#opties-op-het-snippet)).
## Visitor form [#bezoekersformulier]
Here you decide what a visitor fills in before the first message. If there are required fields, they appear together with the message field on one screen. The visitor fills everything in and clicks **Send**, with no separate intermediate step.
### Standard fields [#standaardvelden]
| Field | What does it do? |
|------|---------------|
| **Name required** | Visitors enter their name. The name is stored with the conversation |
| **Email required** | Visitors enter their email address. The address is stored with the conversation |
| **Phone required** | Visitors enter a phone number. Tillor converts it to a fixed format and uses it to link the conversation to calls and customers |
Each field is switched on or off separately. If only phone is on, the visitor only sees the phone field.
### Extra fields [#extra-velden]
Click **Add field** for your own questions. You can add a maximum of 8 extra fields. Delete a field with **Remove field**.
| Option | Explanation |
|-------|--------|
| **Field label** | What the visitor sees in the widget. Maximum 80 characters |
| **Field key** | Internal name of the field. Start with a lowercase letter and use only lowercase letters, digits and `_` (maximum 32 characters) |
| **Field type** | **Text** or **Email** |
| **Required** | The visitor must fill in the field before they can chat. A new field is required by default |
| **Placeholder** | Hint in the input field. Maximum 120 characters |
The answers to extra fields appear in the inbox with the conversation, next to the channel and visitor ID.
## Email reminder [#herinnering-per-e-mail]
Visitors often close the page before your team or Tillie replies. With **Email visitors about unread replies**, the visitor receives an email with the **Continue the conversation** button as soon as a reply is waiting that they have not read.
- The visitor must have provided an email address, via the visitor form or pre-filled. Without an address, nothing happens.
- The email only goes out once the visitor has been inactive for about 5 minutes. They receive one email per series of unread replies.
- The button opens the chat and continues the conversation, also on another device or in another browser. The link works for 30 days.
- The visitor can also reply directly to the email. That reply appears in the same conversation in the inbox, with a small envelope icon next to the message.
- Replies from Tillie count, just like replies from your team.
## Options on the snippet [#opties-op-het-snippet]
Besides `data-org-id` and `data-widget-key`, you can put optional attributes on the script. This is intended for whoever places the snippet on the site.
| Attribute | What does it do? |
|-----------|---------------|
| `data-locale` | Widget language: `en`, `nl`, `de`, `fr`, `pt` or `ro`, optionally with a region such as `nl-BE`. Default `en`; another language falls back to English. The region determines the date and time format |
| `data-accent-color` | Accent colour for this page as a 6-digit hex. Overrides the colour under **Settings** |
| `data-messages` | JSON object to adjust individual texts, for example `{"send":"Versturen","messagePlaceholder":"Typ uw bericht…"}` |
| `data-sounds` | `false` turns off sounds for new team replies and on sending. On by default |
| `data-launcher` | `false` hides the floating chat button. You then open the chat with your own button via [the widget SDK](/ontwikkelaars/website-chat#widget-sdk) |
| `data-visitor` | JSON object to pre-fill name, email and phone, for example `{"name":"Jan","email":"jan@voorbeeld.nl","phone":"+32470123456"}` |
| `data-visitor-name`, `data-visitor-email`, `data-visitor-phone` | Pre-fills one of those fields |
| `data-debug` | `true` shows log lines in the browser console |
Attributes only fill in empty fields. If the visitor has already entered details in this browser, those stay in place.
An example with Dutch texts:
```html
```
You can also turn on debug without changing the snippet: run `localStorage.setItem('tillor-inbox-debug', '1')` in the browser console and refresh the page.
## Spam protection [#spambeveiliging]
The widget does not use a captcha. Tillor protects sending with the widget key and with **Allowed domains**. If your contact form has its own captcha, it may stay as an extra layer.
## Terms for visitors [#voorwaarden-voor-bezoekers]
Under the message field is a short notice that by sending, the visitor agrees to the [website chat terms](https://tillor.eu/chat-terms). The link opens in a new tab and follows the language of `data-locale`.
## See also [#zie-ook]
# Putting the chat on your website (/en-GB/inbox/website-chat)
With the Website chat integration, your site gets a chat button. Messages from visitors end up in the [inbox](/inbox), alongside WhatsApp, Messenger and Instagram.
### Install the integration [#installeer-de-integratie]
Go to Settings > Integrations and open **Website chat**. Click **Install**. No link to an external account is needed; Tillor creates the widget key itself.
### Set up the widget [#stel-de-widget-in]
Under **Settings** on the same page, fill in at least the **Welcome message** and the **Accent color**. Also fill in **Allowed domains** so that only your site may load the chat. All options are described on [Website chat settings](/inbox/website-chat-instellingen).
### Copy the snippet [#kopieer-het-snippet]
Under **Embed on your website**, click **Copy snippet**. If the block is not there, save the settings and refresh the page.
### Paste the snippet on your site [#plak-het-snippet-op-je-site]
Paste the snippet before the closing `