Where it is stored, how to export it and how to switch
This page provides the information required by the EU Data Act (Regulation (EU) 2023/2854, Articles 26, 28 and 29). The Subscription Agreement refers to it in Article 13.4 and Annex A. Your data remains yours: you can export it at any time, free of charge.
1. Where is your data stored?
The BIQSDRIVE 27 database, with all the data of your driving school or training centre, your students, trainees and business customers, is hosted by a Belgian hosting provider in data centres in Belgium. A few supporting services use other suppliers:
| Component | Supplier | Location of processing | Jurisdiction over the infrastructure |
|---|---|---|---|
| Platform and database (production) | Level 27 BV, Hasselt (BE 0890.439.412) | Belgium | Belgium (European Union) |
| Backups | Level 27 BV | Separate location within the European Economic Area | EEA Member State |
| Sending text messages (SMS) | Spryng B.V., Amsterdam | Frankfurt (Germany) | Germany (European Union) |
| Helpdesk and support tickets | Odoo SA, Grand-Rosière (BE 0477.472.701) | Belgium and France; backups in France, the Netherlands and Sweden | Member States of the European Union |
| AI agents (AI support agent, admin agent and planning agent) | Anthropic Ireland, Limited, with processing by Anthropic PBC | United States | United States (contract under Irish law; transfer under the standard contractual clauses of the European Commission) |
| Bank Connection (Payment Automation) | Isabel NV (Ponto), Brussels (BE 0455.530.509) | See the Isabel NV privacy statement | See the Isabel NV privacy statement |
| Payments through Pay. (online, SoftPOS and payment terminals) | Pay. (TinTel B.V.), Spijkenisse | See the Pay. privacy statement | See the Pay. privacy statement |
| Emails sent from the Platform | Microsoft Ireland Operations Limited, Dublin (Azure Communication Services); replies from your customers arrive in your organisation's own mailbox | European Union (EU data location) | Ireland (European Union); possible transfer to the United States under the EU-US Data Privacy Framework and the standard contractual clauses of the European Commission |
| Reviews and surveys | The service your organisation connects itself, with its own account: Tally, Klantenvertellen or Google (Google Business Profile) | Under your own agreement with that service and its privacy statement | Under your own agreement |
| Protection of the public forms against bots | Friendly Captcha GmbH, Wörthsee | Germany; the check in the browser may be delivered from servers outside the EU | Germany (European Union); possible transfer with the standard contractual clauses of the European Commission |
| Reading the identity card with a card reader | e-Contract.be BV, Beersel (BE 0845.600.072) | Belgium | Belgium (European Union) |
| Ad measurement (Leads module) | The advertising platform your organisation connects itself, with its own account: Google Ireland Limited (Google Ads and the Google tag) or Meta Platforms Ireland Limited (Meta Pixel and Conversions API) | Under your own agreement with that service and its privacy statement | Under your own agreement |
| Flexi-Dimona declarations (once available) | The Belgian National Social Security Office (RSZ), which receives the declarations that BIQSDRIVE submits in the name and on the instructions of your organisation, using your organisation's own RSZ access; not a supplier of BIQSDRIVE | Belgium | Belgium (European Union) |
In short: the database and the backups containing your Customer Data are stored in Belgium and the EEA and fall under the jurisdiction of EU Member States. The payments that Payment Automation matches to customers, files and orders are also stored by BIQSDRIVE in Belgium (Level 27); for the processing by Isabel NV (Bank Connection) and Pay. we refer to their privacy statements (see the table). The invitations for reviews and surveys and the opt-outs from review invitations are also stored by BIQSDRIVE in Belgium (Level 27). For Tally and Klantenvertellen, BIQSDRIVE also passes the recipient's name and email address to that service in the invitation, insofar as that service allows it; for Google, the invitation contains only the link. What BIQSDRIVE passes on in this way, and what recipients fill in or publish at Tally, Klantenvertellen or Google, falls under your own agreement with that service and its privacy statement (see the table). The data of the HR and time tracking module, such as work schedules, leave, absences and working time, is also stored by BIQSDRIVE in Belgium (Level 27). The Platform keeps it for as long as your organisation keeps it. If your organisation has a staff member who has left erased, their name, contact details and free texts disappear at once; the Platform keeps the other data, including absences due to illness, without that identification until five years after the end of their contract, for the retention periods of social law, and then erases it. Once the flexi-Dimona declarations (the Belgian declarations of employment for flexi-jobs) are available, BIQSDRIVE submits them to the RSZ in the name and on the instructions of your organisation, using your organisation's own RSZ access, and the Platform keeps them for five years. The leads of the Leads (CRM) module are also stored by BIQSDRIVE in Belgium (Level 27): a lead without activity is closed after the period your organisation sets (30 days by default) and a closed lead is anonymised after the period your organisation sets (24 months by default). If your organisation sets up a Google tag or Meta Pixel, it only loads after the visitor's consent, and BIQSDRIVE only reports leads and enrolments to Google or Meta with the visitor's consent for marketing, with the email address, telephone number and name only in hashed form; what those services do with them falls under your own agreement with them (see the table). Apart from this, only the processing by the AI agents (your questions, their answers and suggestions, and the data they look up for this within the user's permissions) takes place in the United States, where it falls under US law. The agents never retrieve national register numbers, INSZ numbers (Belgian social security numbers), identity documents, full addresses, dates of birth, internal notes, account numbers or imported bank transactions, nor the type of or reason for an absence, comments on leave requests, corrections to time records or Dimona declarations; the planning agent only sees that a staff member is absent or unavailable. As a location, the planning agent only uses the municipality or the postcode. When you talk to the agents, do not share any data about students or trainees that is not needed to answer your question.
Emails and temporary data: emails from the Platform are sent through Microsoft's Azure Communication Services, with an EU data location. For each recipient, the Platform records whether an email arrived, with the answer of the receiving mail server: this delivery log is erased after 120 days, and the delivery status stays in the message history of the file. An address that turned out to be undeliverable stays flagged until a staff member corrects it or confirms that it is right; Microsoft itself keeps such an address for 24 hours to 14 days. Messages in the customer portal and the business portal (the bell) are erased after six months. An opt-out from group emails stays recorded in the file for as long as the file exists, as does a request to correct the name, date of birth or national register number. The data that itsme® provides for an enrolment through the registration form is kept encrypted by the Platform while that enrolment is in progress, for at most seven days. If itsme®'s data differs from the file, the Platform keeps it encrypted for at most fourteen days, until a staff member decides, after checking the identity card, to apply or reject it. It is then erased. For an identification with itsme® at the front desk, the Platform keeps itsme®'s data encrypted for at most 24 hours, until it is attached to a file. For a report to an advertising platform, the Platform keeps the IP address, the browser and the page only until the report has been sent or has finally failed.
The full list of parties that process personal data on our behalf is available at www.biqsdrive.com/en/sub-processors.
2. Protection against access by foreign governments
This section concerns data that does not relate to a person, such as your organisation's settings, rates and planning rules (non-personal data, Articles 28 and 32 of the Data Act). For personal data, the GDPR applies, together with the safeguards in section 1 and on the Sub-processors page. The Data Act requires us to describe how we prevent governments outside the European Union from gaining access to data in breach of European or Belgian law.
Technical measures
- The database and the backups are hosted by a Belgian provider, in data centres in the European Economic Area.
- Encryption of all traffic (TLS) and of databases and backups at rest.
- Strict access control with personal accounts, multi-factor authentication for administrators and logging of administrative actions.
- The AI agents only see the data that the user is allowed to see and never retrieve national register numbers, INSZ numbers, identity documents, full addresses, dates of birth, internal notes, account numbers or imported bank transactions, nor the type of or reason for an absence, comments on leave requests, corrections to time records or Dimona declarations. As a location, the planning agent only uses the municipality or the postcode. This keeps what is processed in the United States limited to what is necessary.
Organisational measures
- Only authorised persons bound by a duty of confidentiality have access to production data, and only insofar as necessary.
- Every request from a government for access to data is subject to a legal review. We only release data on the basis of a binding decision founded on European or Belgian law, or on an international agreement that provides for it, and then only the minimum data required.
- We notify the customer concerned before we release any data, except where the request serves law enforcement, and for as long as necessary to safeguard it.
Contractual measures
- Our suppliers are contractually bound to process data only on our instructions and to inform us of requests from governments, insofar as the law allows.
- Transfers outside the European Economic Area by the AI agents are covered by the standard contractual clauses of the European Commission, and any transfer by Microsoft (emails) by the EU-US Data Privacy Framework and the standard contractual clauses. For Isabel NV and Pay. we refer to their privacy statements (section 1).
If we receive a request from a government outside the European Union for access to your data, we only comply with it within the limits of Article 32 of the Data Act, and we inform you in advance, except where the request serves law enforcement, and for as long as necessary to safeguard it.
3. Exporting your data
The Administrator of your Account can make an export at any time, at no extra cost, using the export function in the Platform. While your Account is suspended, you can request an export at info@biqsdrive.com; you will receive it within five working days. You can also make an export at any time during the free trial period.
| Category | Content | Format |
|---|---|---|
| 1. Students, trainees and candidates | Identification, contact and file details, supervisors and representatives (such as parents or a guardian) | CSV/XLSX and JSON |
| 2. Enrolments and planning | Enrolments, packages, courses, lesson planning, calendar, availability | CSV/XLSX and JSON |
| 3. Lessons and follow-up | Recorded lessons and training hours, evaluations, digital lesson follow-up, progress sheets | CSV/XLSX and JSON |
| 4. Exams and certifications | Bookings, notices to attend, results and certifications as recorded in the Platform | CSV/XLSX and JSON |
| 5. Resources | Instructors, vehicles, rooms and locations | CSV/XLSX and JSON |
| 6. Business customers | Business customers, contact persons, participants and training programmes | CSV/XLSX and JSON |
| 7. Financial | Invoices, payments (with their source: a payment through Pay., a bank transfer or cash), matches, reminders and balances kept in the Platform | CSV/XLSX and JSON; invoices in PDF |
| 8. Documents | Documents uploaded by your organisation or generated by the Platform (certificates, contracts) | Original format or PDF |
| 9. Configuration and metadata | Rates, lesson types, templates, settings; creation and modification dates, author | JSON |
| 10. Audit trail | The change history that the Platform keeps for each record (time, user, field changed) | CSV/JSON |
| 11. Reviews and surveys | Scheduled and sent invitations for reviews and surveys (recipient, time, service and status) and opt-outs from review invitations | CSV/XLSX and JSON |
| 12. HR and time tracking | Contract data of the staff members, work schedules, public holidays and closure days, leave types and leave entitlements, leave requests and absences and the decisions on them, working time with the changes, history of the staff members; as soon as available, flexi-Dimona declarations with the response of the RSZ | CSV/XLSX and JSON |
| 13. Leads (CRM) | Leads with their follow-up and history, inquiry forms, follow-up sequences and their progress, reports to advertising platforms | CSV/XLSX and JSON |
4. Register of data structures and formats
Every export comes with a description of the data structure (data dictionary). For each export file, the register describes:
- the fields, with their name, description, data type and whether the field is mandatory;
- the keys and the relationships between the files (for example between student, enrolment and lesson);
- the permitted values for drop-down lists (such as licence categories and lesson types);
- the version number and the date of the last change.
You will find the current register of data structures and formats below. You can also request it free of charge at data@biqsdrive.com.
Open a category to see the files and their fields. Fields ending in _id refer to the key of another file; the relations are listed under each table. "Required" means that the field is always filled in. Dates and times follow ISO 8601.
1. Students, trainees and candidates (CSV/XLSX and JSON)
students: Students and trainees, with their identification, contact and file details. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
branch_id | Branch the student or trainee belongs to. | integer | Yes |
first_name | First name. | text, max. 128 characters | Yes |
last_name | Surname. | text, max. 128 characters | Yes |
email | Email address. | text, max. 180 characters | No |
no_bulk_mail | Opted out of group emails through the link at the bottom of a group email. Emails about their own lessons, payments and reminders keep being sent. | yes/no | Yes |
phone | Phone number. | text, max. 32 characters | No |
birth_date | Date of birth. | date | No |
birth_place | Place of birth. | text, max. 128 characters | No |
gender | Gender. Allowed values: male, female, other. | text, max. 8 characters | No |
nationality | Nationality, as a two-letter country code. | text, max. 2 characters | No |
national_id | National register number (for the Netherlands: citizen service number, BSN). | text, max. 32 characters | No |
id_card_number | Identity card number. | text, max. 32 characters | No |
id_card_valid_until | Expiry date of the identity card. | date | No |
identity_verified_at | Time the identity details were last confirmed through itsme®. | date and time | No |
identity_verified_via | Service used to confirm the identity. Allowed values: itsme (itsme®). | text, max. 16 characters | No |
street | Street. | text, max. 255 characters | No |
house_number | House number. | text, max. 16 characters | No |
box | Box number within the building (not a PO box). | text, max. 16 characters | No |
postal_code | Postcode. | text, max. 16 characters | No |
city | Municipality. | text, max. 128 characters | No |
country_code | Country, as a two-letter country code (ISO 3166-1), for example BE. | text, max. 2 characters | Yes |
lang | Language for communication. Allowed values: nl (Dutch), fr (French), en (English), de (German). | text, max. 2 characters | Yes |
status | Status of the file. Allowed values: new, active, paused, completed, cancelled. | text, max. 16 characters | Yes |
blocked | Blocked manually: no lessons can be confirmed. | yes/no | Yes |
block_reason | Reason for the block. | text, max. 255 characters | No |
medical_exam_date | Date of the medical examination. | date | No |
registration_source | How the student or trainee was created. Allowed values: manual (manually by your organisation), online (through an online enrolment), import (through an import). | text, max. 16 characters | Yes |
notes | Free notes from your organisation. | text | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: branch_id refers to branches.id.
student_photos: Passport photo from the electronic identity card, if it was provided through itsme®. Key: student_id.
| Field | Description | Type | Required |
|---|---|---|---|
student_id | Key of the student or trainee. | integer | Yes |
mime_type | File type of the image (for example image/jpeg). | text, max. 32 characters | Yes |
data | The image. | file (binary) | Yes |
source | Who provided the photo. Allowed values: itsme (itsme®). | text, max. 16 characters | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: student_id refers to students.id.
portal_users: Accounts for the student and trainee portal, without passwords and other authentication data: of students and trainees, and of representatives who are not customers and act through the portal for a student under 18 (student_relations.portal_user_id). Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
student_id | Key of the student or trainee; empty for the account of a representative who is not a customer. | integer | No |
name | Name of the representative, for the account of a representative who is not a customer. | text, max. 255 characters | No |
email | Email address used to log in. | text, max. 180 characters | Yes |
lang | Language for communication. Allowed values: nl (Dutch), fr (French), en (English), de (German). | text, max. 2 characters | Yes |
enabled | Account enabled. | yes/no | Yes |
totp_enabled_at | Time two-factor authentication was enabled. | date and time | No |
invited_at | Time of the invitation. | date and time | No |
activated_at | Time the first password was chosen. | date and time | No |
last_login_at | Time of the last login. | date and time | No |
password_changed_at | Time of the last password change. | date and time | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: student_id refers to students.id.
student_relations: Companions and representatives of a student or trainee. A companion rides along when the student practises with a provisional licence. A representative (for example a parent or guardian) can receive copies of the emails to the customer, pay the customer's orders, act for the customer through the portal while the customer is under 18, and sign for a minor. The person is another customer (related_student_id; the contact fields here then stay empty and that customer's own details apply) or a contact entered here. When the student or the linked customer is erased under the GDPR, the links are removed in both directions; when the link of a representative who is not a customer is removed, their portal account is removed too. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
student_id | Student or trainee (key from students). | integer | Yes |
role | Role of the person. Allowed values: companion, representative. | text, max. 16 characters | Yes |
related_student_id | The person as a customer of your organisation (key from students); empty for a contact entered here. | integer | No |
first_name | First name, for a contact entered here. | text, max. 128 characters | No |
last_name | Last name, for a contact entered here. | text, max. 128 characters | No |
email | Email address, for a contact entered here. | text, max. 180 characters | No |
phone | Phone number, for a contact entered here. | text, max. 32 characters | No |
lang | Language for communication, for a contact entered here; empty = the language of the student. | text, max. 2 characters | No |
birth_date | Date of birth, for a contact entered here; for the warning when a companion or representative is under 18. | date | No |
relation | Relationship to the student. Allowed values: parent, guardian, partner, family (family member), friend, other. | text, max. 16 characters | No |
licence_since | Companion: date since which the companion has held a category B licence. | date | No |
attest_date | Companion: date of the companion certificate; filled in automatically when the linked customer attended the training session. | date | No |
valid_until | Last day the link applies; empty = open-ended. | date | No |
note | Free note from your organisation. | text | No |
receives_mail | Representative: receives, for information, a copy of most standard emails to the customer, such as proposals and reminders for lessons and exams. | yes/no | Yes |
mail_opted_out_at | Time the representative stopped the copies themselves with the link under an email. | date and time | No |
default_payer | Representative: pays the customer's orders and is proposed as the payer of new orders (at most one per customer). | yes/no | Yes |
street | Street, for a contact entered here (for an order they pay). | text, max. 255 characters | No |
house_number | House number. | text, max. 16 characters | No |
box | Box number in the building (not a PO box). | text, max. 16 characters | No |
postal_code | Postcode. | text, max. 16 characters | No |
city | Town or city. | text, max. 128 characters | No |
country_code | Country, as a two-letter country code (ISO 3166-1), for example BE. | text, max. 2 characters | No |
portal_user_id | Representative who is not a customer: their portal account (key from portal_users), with which they act for the customer while the customer is under 18. A representative who is a customer uses their own account. | integer | No |
status | Status of the link. Allowed values: accepted (accepted, counts), proposed (added by the customer in the portal, awaiting your organisation; does not count yet). | text, max. 16 characters | Yes |
pending_changes | Changes the customer proposed in the portal for an accepted companion, awaiting your organisation; until then the current details apply. | JSON structure | No |
proposed_at | Time the addition or the changes were proposed in the portal; empty if nothing is waiting. | date and time | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: student_id refers to students.id; related_student_id refers to students.id; portal_user_id refers to portal_users.id.
identity_correction_requests: Requests from a customer in the portal to correct their name, date of birth or national register number, with what was in the file at that moment and your organisation's answer. The file itself only changes when a staff member updates it. The request is kept for as long as the file exists. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
student_id | Key of the student or trainee. | integer | Yes |
portal_user_id | Portal account used for the request (key from portal_users). | integer | No |
requested | The requested values per field (first_name, last_name, birth_date, national_id); only the fields that should change. | JSON structure | Yes |
on_file | The values that were in the file when the request was made, per field. | JSON structure | Yes |
note | Remark from the customer. | text | No |
status | Status of the request. Allowed values: requested, applied, rejected (not applied). | text, max. 16 characters | Yes |
created_at | Time the record was created. | date and time | Yes |
handled_at | Time the request was closed. | date and time | No |
handled_by | User who closed the request (key from users). | integer | No |
answer | Message from your organisation to the customer, shown in the portal. | text | No |
Relations: student_id refers to students.id; portal_user_id refers to portal_users.id; handled_by refers to users.id.
email_bounces: Email addresses that the receiving mail server refused (undeliverable). While an address is open, automatic emails are not sent to it; emails that a staff member writes themselves are. One record per address; it stays open until a staff member corrects the address or confirms that it is right. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
email | Email address, in lower case. | text, max. 255 characters | Yes |
status | Type of refusal. Allowed values: bounced (refused by the receiving mail server), suppressed (not sent because the address was refused before). | text, max. 16 characters | Yes |
detail | Answer of the receiving mail server, when the sending service passes it on. | text, max. 500 characters | No |
count | Number of times the address was refused. | integer | Yes |
first_at | Time of the first refusal. | date and time | Yes |
last_at | Time of the last refusal. | date and time | Yes |
cleared_at | Time a staff member confirmed that the address is right. | date and time | No |
cleared_by | User who confirmed the address (key from users). | integer | No |
Relations: cleared_by refers to users.id.
inbox_messages: Messages in the customer portal and the business portal (the bell): what your organisation let a customer or a user of a business customer know, such as a lesson proposal, a lesson moved or cancelled, a payment request or a new document. The text itself is not stored; the portal builds it from the event and the details. Erased after six months. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
owner_type | Type of recipient. Allowed values: portal_user (portal account of a customer), b2b_user (user of the business portal). | text, max. 16 characters | Yes |
owner_id | Key of the recipient: a portal account (portal_users) or a user of the business portal (b2b_users), according to owner_type. | integer | Yes |
event | Type of message, such as lesson_proposal or payment_request. | text, max. 32 characters | Yes |
details | Data of the message as plain values, such as dates, the name of the instructor or trainer, an amount or a file name. | JSON structure | Yes |
link | Page in the portal that a click on the message opens. | text, max. 255 characters | No |
created_at | Time the record was created. | date and time | Yes |
read_at | Time the recipient read the message. | date and time | No |
2. Enrolments and planning (CSV/XLSX and JSON)
enrollments: Enrolments of students and trainees for a category, with the package of hours. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
subscription_number | Enrolment number, for example GNT-2026-0042 (branch code, year, sequence number). | text, max. 32 characters | No |
student_id | Key of the student or trainee. | integer | Yes |
license_type_id | Key of the category (licence category or course). | integer | Yes |
branch_id | Key of the branch. | integer | Yes |
state | Status of the enrolment. Allowed values: enrolled, in_progress (in progress), exam_ready (ready for the exam), passed, failed, expired, cancelled. | text, max. 16 characters | Yes |
enrollment_date | Date of the enrolment. | date | Yes |
hours_required | Number of hours in the package (topped up with each order of hours). | decimal number, 2 decimals | Yes |
hours_completed | Number of hours of completed lessons. | decimal number, 2 decimals | Yes |
hours_planned | Number of hours of planned lessons not yet completed. | decimal number, 2 decimals | Yes |
preferred_instructor_id | Preferred instructor (key from instructors). | integer | No |
preferred_vehicle_id | Preferred vehicle (key from vehicles). | integer | No |
order_id | Order the enrolment came from (key from sales_orders). | integer | No |
theory_passed_at | Date the theory exam was passed. | date | No |
automatic_transmission | The exam is taken with an automatic gearbox. | yes/no | Yes |
bijlage4 | Belgian annex 4 (bijlage 4, training certificate): no provisional licence model is needed for the exam. | yes/no | Yes |
notes | Free notes from your organisation. | text | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: student_id refers to students.id; license_type_id refers to license_types.id; branch_id refers to branches.id; preferred_instructor_id refers to instructors.id; preferred_vehicle_id refers to vehicles.id; order_id refers to sales_orders.id.
provisional_licenses: Provisional licences linked to an enrolment. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
enrollment_id | Key of the enrolment. | integer | Yes |
number | Number of the provisional licence. | text, max. 64 characters | Yes |
validity_months | Period of validity in months. Allowed values: 12 (12 months), 18 (18 months), 36 (36 months). | integer | Yes |
issue_date | Date of issue. | date | Yes |
expiry_date | Expiry date (issue date plus period of validity). | date | Yes |
active | The provisional licence is in use. | yes/no | Yes |
note | Free note from your organisation. | text | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: enrollment_id refers to enrollments.id.
availabilities: Availability per weekday of students, trainees and instructors. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
student_id | Student or trainee (key from students); empty for an instructor's availability. | integer | No |
instructor_id | Instructor (key from instructors); empty for a student's or trainee's availability. | integer | No |
day_of_week | Weekday according to ISO 8601: 1 is Monday, 7 is Sunday. | integer | Yes |
time_from | Start time. | time (HH:MM) | Yes |
time_to | End time. | time (HH:MM) | Yes |
status_id | Key of the availability status. | integer | Yes |
valid_from | Valid from (empty: no start date). | date | No |
valid_until | Valid until and including (empty: no end date). | date | No |
note | Free note from your organisation. | text, max. 255 characters | No |
Relations: student_id refers to students.id; instructor_id refers to instructors.id; status_id refers to availability_statuses.id.
scheduled_slots: The calendar: every planned lesson, session, exam and other appointment, with the assigned instructor, vehicle, room and student or trainee. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
type | Type of appointment. Allowed values: lesson, course_session (course session), exam, other (other appointment). | text, max. 16 characters | Yes |
branch_id | Key of the branch. | integer | Yes |
instructor_id | Key of the instructor or trainer. | integer | No |
vehicle_id | Key of the vehicle. | integer | No |
room_id | Key of the room. | integer | No |
student_id | Key of the student or trainee. | integer | No |
license_type_id | Key of the category (licence category or course). | integer | No |
start_at | Start (date and time). | date and time | Yes |
end_at | End (date and time). | date and time | Yes |
block_start_at | Start of the period in which the instructor, vehicle, room and student are occupied (for an exam, including travel time). | date and time | Yes |
block_end_at | End of that period. | date and time | Yes |
lesson_id | Key of the lesson. | integer | No |
course_session_id | Key of the course session. | integer | No |
exam_id | Key of the exam. | integer | No |
leave_request_id | Approved leave this absence block belongs to (key from leave_requests); the block is read-only in the calendar and disappears with the leave. | integer | No |
ignore_conflict | Planned anyway: conflicts with this appointment were accepted. | yes/no | Yes |
title | Title in the calendar. | text, max. 255 characters | Yes |
category | Category of another appointment. For an absence block of approved leave (leave_request_id), the category comes from the leave type (leave_types.category). Allowed values: holiday (leave), office, sick, other. | text, max. 32 characters | No |
show_on_ride_sheet | Another appointment is printed on the instructor's trip sheet. | yes/no | Yes |
Relations: branch_id refers to branches.id; instructor_id refers to instructors.id; vehicle_id refers to vehicles.id; room_id refers to rooms.id; student_id refers to students.id; license_type_id refers to license_types.id; lesson_id refers to lessons.id; course_session_id refers to course_sessions.id; exam_id refers to exams.id; leave_request_id refers to leave_requests.id.
courses: Courses and group courses. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
branch_id | Key of the branch. | integer | Yes |
course_type_id | Key of the course type. | integer | Yes |
name | Name. | text, max. 255 characters | Yes |
room_id | Key of the room. | integer | No |
product_id | Key of the product. | integer | No |
price | Price. | decimal number, 2 decimals | Yes |
capacity_min | Minimum number of participants. | integer | Yes |
capacity_max | Maximum number of participants. | integer | Yes |
min_attendance_pct | Required minimum attendance, as a percentage. | decimal number, 2 decimals | Yes |
state | Status of the course. Allowed values: draft, open, full (fully booked), in_progress (in progress), done (finished), cancelled. | text, max. 16 characters | Yes |
notes | Free notes from your organisation. | text | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: branch_id refers to branches.id; course_type_id refers to course_types.id; room_id refers to rooms.id; product_id refers to products.id.
course_license_types: Categories a course applies to. Key: course_id and license_type_id.
| Field | Description | Type | Required |
|---|---|---|---|
course_id | Key of the course. | integer | Yes |
license_type_id | Key of the category (licence category or course). | integer | Yes |
Relations: course_id refers to courses.id; license_type_id refers to license_types.id.
course_instructors: Instructors or trainers of a course. Key: course_id and instructor_id.
| Field | Description | Type | Required |
|---|---|---|---|
course_id | Key of the course. | integer | Yes |
instructor_id | Key of the instructor or trainer. | integer | Yes |
Relations: course_id refers to courses.id; instructor_id refers to instructors.id.
course_sessions: Sessions (lesson times) of a course. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
course_id | Key of the course. | integer | Yes |
sequence | Sequence number of the session within the course. | integer | Yes |
session_type | Type of session. Allowed values: theory, practical. | text, max. 16 characters | Yes |
start_at | Start (date and time). | date and time | Yes |
end_at | End (date and time). | date and time | Yes |
room_id | Key of the room. | integer | No |
max_participants | Maximum number of participants for this session. | integer | No |
state | Status of the session. Allowed values: scheduled (planned), in_progress (in progress), done (finished), cancelled. | text, max. 16 characters | Yes |
note | Free note from your organisation. | text | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: course_id refers to courses.id; room_id refers to rooms.id.
course_session_instructors: Instructors or trainers of a session. Key: course_session_id and instructor_id.
| Field | Description | Type | Required |
|---|---|---|---|
course_session_id | Key of the course session. | integer | Yes |
instructor_id | Key of the instructor or trainer. | integer | Yes |
Relations: course_session_id refers to course_sessions.id; instructor_id refers to instructors.id.
registration_submissions: Online enrolments through an enrolment form, with all the details and answers entered. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
wizard_id | Key of the enrolment form. | integer | No |
entry_point_id | Key of the enrolment link. | integer | No |
wizard_name | Name of the form at the time of enrolment. | text, max. 120 characters | Yes |
entry_point_name | Name of the enrolment link at the time of enrolment. | text, max. 120 characters | Yes |
data | All the details collected by the steps of the form. | JSON structure | Yes |
answers | Answers to the custom questions, with each question as it was worded at the time. | JSON structure | Yes |
current_step | Furthest step reached. | integer | Yes |
state | Status of the enrolment. Allowed values: in_progress (in progress), completed, expired. | text, max. 16 characters | Yes |
lang | Language for communication. Allowed values: nl (Dutch), fr (French), en (English), de (German). | text, max. 2 characters | Yes |
student_id | Key of the student or trainee. | integer | No |
order_id | Key of the order. | integer | No |
pay_now | The person enrolling chose to pay online straight away (or the form required it). | yes/no | Yes |
completed_at | Time the enrolment was completed. | date and time | No |
last_activity_at | Time of the last step the person saved; after a configurable number of minutes without a step, the CRM counts the registration as abandoned. | date and time | No |
attribution | Campaign data from the link the registration started with: UTM parameters (utm_source, utm_medium, utm_campaign, utm_content, utm_term) and ad click IDs (gclid, gbraid, wbraid, fbclid, fbc, fbp), each at most 255 characters. | JSON structure | No |
ad_consent | Answer to the cookie banner of the registration page: statistics and marketing (yes or no), version and time. Decides whether a conversion may go to an advertising platform (ad_conversions). | JSON structure | No |
possible_duplicates | Existing students or trainees who may be the same person, detected at enrolment. | JSON structure | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: wizard_id refers to registration_wizards.id; entry_point_id refers to registration_entry_points.id; student_id refers to students.id; order_id refers to sales_orders.id.
3. Lessons and follow-up (CSV/XLSX and JSON)
lessons: Recorded practical lessons, with the digital lesson follow-up (odometer reading, feedback and points for attention). Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
branch_id | Key of the branch. | integer | Yes |
instructor_id | Key of the instructor or trainer. | integer | Yes |
vehicle_id | Key of the vehicle. | integer | No |
license_type_id | Key of the category (licence category or course). | integer | Yes |
enrollment_id | Enrolment whose hours the lesson uses (key from enrollments). | integer | No |
start_at | Start (date and time). | date and time | Yes |
end_at | End (date and time). | date and time | Yes |
sequence | Lesson number within the enrolment, assigned on confirmation. | integer | No |
state | Status of the lesson. Allowed values: draft, pending_approval (awaiting the student's agreement), confirmed, in_progress (in progress), done (completed), cancelled. | text, max. 20 characters | Yes |
source | How the lesson was created. Allowed values: manual (manually in the planning), portal (through the portal), online, auto_plan (automatic planning), customer_portal (by the student in the student portal). | text, max. 16 characters | Yes |
price | Price of the lesson. | decimal number, 2 decimals | Yes |
cancel_reason_id | Key of the cancellation reason. | integer | No |
cancel_note | Explanation of the cancellation. | text | No |
cancel_fee | Cancellation fee charged. | decimal number, 2 decimals | No |
cancelled_at | Time of the cancellation. | date and time | No |
note | Free note from your organisation. | text | No |
created_by | User who created the lesson (key from users). | integer | No |
booking_decision | Decision on a lesson the student booked themselves. Allowed values: approved, rejected. | text, max. 16 characters | No |
booking_reviewed_at | Time of that decision. | date and time | No |
booking_reviewed_by | User who decided (key from users). | integer | No |
booking_rejection_reason | Reason for the rejection. | text | No |
previous_start_at | Original start, while a proposed new time is awaiting a reply. | date and time | No |
previous_end_at | Original end, while a proposed new time is awaiting a reply. | date and time | No |
odometer_start | Odometer reading of the vehicle at the start (km). | integer | No |
odometer_end | Odometer reading of the vehicle at the end (km). | integer | No |
started_at | Time the instructor recorded the start. | date and time | No |
finished_at | Time the instructor recorded the end. | date and time | No |
started_by | User who recorded the start (key from users). | integer | No |
finished_by | User who recorded the end (key from users). | integer | No |
previous_lesson_feedback | Filled in at the start: how the previous lesson or exam went. | text | No |
feedback | Filled in at the end: how the lesson or exam went. | text | No |
attention_points | Filled in at the end: what the next lesson will work on. | text | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: branch_id refers to branches.id; instructor_id refers to instructors.id; vehicle_id refers to vehicles.id; license_type_id refers to license_types.id; enrollment_id refers to enrollments.id; cancel_reason_id refers to cancel_reasons.id; created_by refers to users.id; booking_reviewed_by refers to users.id; started_by refers to users.id; finished_by refers to users.id.
lesson_students: Students or trainees of a lesson. Key: lesson_id and student_id.
| Field | Description | Type | Required |
|---|---|---|---|
lesson_id | Key of the lesson. | integer | Yes |
student_id | Key of the student or trainee. | integer | Yes |
Relations: lesson_id refers to lessons.id; student_id refers to students.id.
lesson_signatures: Signatures of the student and the instructor for a lesson. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
lesson_id | Key of the lesson. | integer | Yes |
role | Who signed. Allowed values: student (student or trainee), instructor. | text, max. 16 characters | Yes |
student_id | Student or trainee who signed (key from students). | integer | No |
instructor_id | Instructor who signed (key from instructors). | integer | No |
representative_id | Representative who signed for a student under 18 (key from student_relations); empty if the student signed themselves. It remains the student's signature (role student). | integer | No |
representative_name | Name of the representative who signed, as at the time of signing. | text, max. 255 characters | No |
representative_relation | Relationship of the representative to the student at the time of signing (as student_relations.relation). | text, max. 16 characters | No |
signer_name | Name of the signer, as at the time of signing. | text, max. 255 characters | Yes |
data | The signature as a PNG image. | file (binary) | Yes |
sha256 | SHA-256 checksum of the image. | text, max. 64 characters | Yes |
signed_at | Time of the signature. | date and time | Yes |
captured_by | User on whose device the signature was made (key from users). | integer | No |
ip_address | IP address of the device at the time of signing. | text, max. 45 characters | No |
user_agent | Browser and device at the time of signing (user agent). | text, max. 255 characters | No |
Relations: lesson_id refers to lessons.id; student_id refers to students.id; instructor_id refers to instructors.id; representative_id refers to student_relations.id; captured_by refers to users.id.
course_enrollments: Participation of students and trainees in a course, with attendance and result. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
course_id | Key of the course. | integer | Yes |
student_id | Key of the student or trainee. | integer | Yes |
enrollment_id | Key of the enrolment. | integer | No |
order_line_id | Key of the order line. | integer | No |
state | Status of the participation. Allowed values: enrolled, attending (attending the course), completed, failed, cancelled. | text, max. 16 characters | Yes |
result | Result. Allowed values: pending (not yet known), pass (passed), fail (failed), absent. | text, max. 8 characters | Yes |
attendance_rate | Attendance as a percentage of the sessions held so far. | decimal number, 2 decimals | Yes |
attendance | Attendance per session: the key of the session with yes or no. | JSON structure | Yes |
certificate_issued | The certificate was issued. | yes/no | Yes |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: course_id refers to courses.id; student_id refers to students.id; enrollment_id refers to enrollments.id; order_line_id refers to sales_order_lines.id.
follow_up_sheets: Follow-up sheets: one per enrolment, with the skills of the follow-up template of the category (follow_up_templates). The sheet always shows the current active skills of that template. Deleting the enrolment deletes the sheet. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
enrollment_id | Enrolment (key from enrollments; one sheet per enrolment). | integer | Yes |
template_id | Template the sheet is based on (key from follow_up_templates). | integer | Yes |
source | How the sheet was created. Allowed values: on_in_progress (automatically at the first confirmed lesson of the enrolment), on_enrollment (automatically when the order was confirmed), manual (created manually), catch_up (created when first opened, for an enrolment from before follow-up sheets existed). | text, max. 16 characters | Yes |
created_at | Time the record was created. | date and time | Yes |
created_by | User who created the sheet manually (key from users); empty if it was created automatically. | integer | No |
Relations: enrollment_id refers to enrollments.id; template_id refers to follow_up_templates.id; created_by refers to users.id.
follow_up_ratings: Ratings of a skill on a follow-up sheet. Ratings are only added: the current level of a skill is the latest rating; without a rating it is not seen. In the customer portal the customer (or their representative) only sees the level and the date, not the notes, the lessons or the name of the instructor, if your organisation switches this on. When the customer is erased under the GDPR, the notes are removed; the levels stay with the anonymised enrolment. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
sheet_id | Follow-up sheet (key from follow_up_sheets). | integer | Yes |
skill_id | Skill (key from follow_up_skills). | integer | Yes |
level | Level, on a fixed scale that is the same for every organisation. Allowed values: not_seen (not seen), explained, practising, mastered. | text, max. 16 characters | Yes |
lesson_id | Lesson in which the level was given (key from lessons); empty for a rating from the customer page. | integer | No |
rated_at | Time of the rating. | date and time | Yes |
rated_by | User who rated (key from users). | integer | No |
rated_by_name | Name of that user at the time of the rating. | text, max. 128 characters | Yes |
note | Note with the rating; internal, not visible in the portal. | text, max. 500 characters | No |
Relations: sheet_id refers to follow_up_sheets.id; skill_id refers to follow_up_skills.id; lesson_id refers to lessons.id; rated_by refers to users.id.
4. Exams and certifications (CSV/XLSX and JSON)
exams: Exam bookings and results as recorded in the Platform, with the follow-up of a practical exam. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
enrollment_id | Key of the enrolment. | integer | Yes |
student_id | Key of the student or trainee. | integer | Yes |
branch_id | Key of the branch. | integer | Yes |
exam_center_id | Key of the exam centre. | integer | Yes |
exam_slot_id | Key of the exam slot. | integer | No |
exam_type | Type of exam. Allowed values: theory, practical, medical. | text, max. 16 characters | Yes |
date_at | Date and start time of the exam. | date and time | Yes |
duration_hours | Duration in hours. | decimal number, 2 decimals | Yes |
end_at | End (date and time). | date and time | Yes |
travel_before_minutes | Travel time from the branch to the exam centre, in minutes. | integer | Yes |
travel_after_minutes | Travel time back to the branch, in minutes. | integer | Yes |
state | Status of the booking. Allowed values: draft, booked, done (taken), cancelled. | text, max. 16 characters | Yes |
result | Result. Allowed values: pending (not yet known), passed, failed, absent. | text, max. 8 characters | Yes |
result_date | Date of the result. | date | No |
result_reason | Explanation of the result. | text | No |
examiner_name | Name of the examiner. | text, max. 128 characters | No |
attempt_number | Attempt (1 for the first attempt). | integer | Yes |
instructor_id | Instructor who accompanies the candidate (key from instructors). | integer | No |
vehicle_id | Key of the vehicle. | integer | No |
external_reference | Reference of the exam at the exam centre. | text, max. 128 characters | No |
note | Free note from your organisation. | text | No |
av_guid | Identifier of the appointment at Autoveiligheid. | text, max. 64 characters | No |
av_reservation_only | Only the slot is reserved at the exam centre; the candidate has not yet been submitted. | yes/no | Yes |
mapping_id | Key of the exam type. | integer | No |
odometer_start | Odometer reading of the vehicle at the start (km). | integer | No |
odometer_end | Odometer reading of the vehicle at the end (km). | integer | No |
started_at | Time the instructor recorded the start. | date and time | No |
finished_at | Time the instructor recorded the end. | date and time | No |
started_by | User who recorded the start (key from users). | integer | No |
finished_by | User who recorded the end (key from users). | integer | No |
previous_lesson_feedback | Filled in at the start: how the previous lesson or exam went. | text | No |
feedback | Filled in at the end: how the lesson or exam went. | text | No |
attention_points | Filled in at the end: what the next lesson will work on. | text | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: enrollment_id refers to enrollments.id; student_id refers to students.id; branch_id refers to branches.id; exam_center_id refers to exam_centers.id; exam_slot_id refers to exam_slots.id; instructor_id refers to instructors.id; vehicle_id refers to vehicles.id; mapping_id refers to exam_type_mappings.id; started_by refers to users.id; finished_by refers to users.id.
exam_signatures: Signatures of the candidate and the instructor for a practical exam. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
exam_id | Key of the exam. | integer | Yes |
role | Who signed. Allowed values: student (student or trainee), instructor. | text, max. 16 characters | Yes |
student_id | Student or trainee who signed (key from students). | integer | No |
instructor_id | Instructor who signed (key from instructors). | integer | No |
representative_id | Representative who signed for a student under 18 (key from student_relations); empty if the student signed themselves. It remains the student's signature (role student). | integer | No |
representative_name | Name of the representative who signed, as at the time of signing. | text, max. 255 characters | No |
representative_relation | Relationship of the representative to the student at the time of signing (as student_relations.relation). | text, max. 16 characters | No |
signer_name | Name of the signer, as at the time of signing. | text, max. 255 characters | Yes |
data | The signature as a PNG image. | file (binary) | Yes |
sha256 | SHA-256 checksum of the image. | text, max. 64 characters | Yes |
signed_at | Time of the signature. | date and time | Yes |
captured_by | User on whose device the signature was made (key from users). | integer | No |
ip_address | IP address of the device at the time of signing. | text, max. 45 characters | No |
user_agent | Browser and device at the time of signing (user agent). | text, max. 255 characters | No |
Relations: exam_id refers to exams.id; student_id refers to students.id; instructor_id refers to instructors.id; representative_id refers to student_relations.id; captured_by refers to users.id.
exam_slots: Exam slots at an exam centre, entered manually or reserved through Autoveiligheid. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
exam_center_id | Key of the exam centre. | integer | Yes |
license_type_id | Key of the category (licence category or course). | integer | Yes |
exam_type | Type of exam. Allowed values: theory, practical, medical. | text, max. 16 characters | Yes |
start_at | Start (date and time). | date and time | Yes |
end_at | End (date and time). | date and time | Yes |
capacity | Number of places (0 is unlimited). | integer | Yes |
state | Status of the exam slot. Allowed values: available, full (fully booked), past, cancelled. | text, max. 16 characters | Yes |
external_id | Identifier at the exam centre. | text, max. 128 characters | No |
source | Origin. Allowed values: manual (entered manually), av_api (through Autoveiligheid). | text, max. 16 characters | Yes |
av_guid | Identifier of the exam slot at Autoveiligheid. | text, max. 64 characters | No |
mapping_id | Key of the exam type. | integer | No |
Relations: exam_center_id refers to exam_centers.id; license_type_id refers to license_types.id; mapping_id refers to exam_type_mappings.id.
certificate_requests: Requests for certificates and duplicates through the student and trainee portal. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
student_id | Key of the student or trainee. | integer | Yes |
portal_user_id | Portal account that made the request (key from portal_users). | integer | No |
certificate_type | Document requested. Allowed values: enrollment_card (proof of enrolment), theory (theory certificate), practical (practical certificate), course (course certificate), other (other document). | text, max. 16 characters | Yes |
training | Course the request relates to, as chosen by the requester. | text, max. 255 characters | No |
reason | Reason for the request. Allowed values: lost, damaged, extra_copy (extra copy), other. | text, max. 16 characters | Yes |
note | Explanation from the requester. | text | No |
status | Status of the request. Allowed values: requested, handled, rejected. | text, max. 16 characters | Yes |
created_at | Time the record was created. | date and time | Yes |
handled_at | Time the request was handled. | date and time | No |
handled_by | User who handled the request (key from users). | integer | No |
answer | Reply to the requester. | text | No |
Relations: student_id refers to students.id; portal_user_id refers to portal_users.id; handled_by refers to users.id.
5. Resources (CSV/XLSX and JSON)
branches: Branches (locations) of your organisation, with their planning rules. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
name | Name. | text, max. 255 characters | Yes |
code | Short code, unique within the organisation; start of the enrolment numbers. | text, max. 16 characters | Yes |
street | Street. | text, max. 255 characters | No |
house_number | House number. | text, max. 16 characters | No |
box | Box number within the building (not a PO box). | text, max. 16 characters | No |
postal_code | Postcode. | text, max. 16 characters | No |
city | Municipality. | text, max. 128 characters | No |
country_code | Country, as a two-letter country code (ISO 3166-1), for example BE. | text, max. 2 characters | Yes |
email | Email address. | text, max. 180 characters | No |
phone | Phone number. | text, max. 32 characters | No |
timezone | Time zone (IANA), for example Europe/Brussels. | text, max. 64 characters | Yes |
lesson_duration_hours | Default duration of a lesson in hours. | decimal number, 2 decimals | Yes |
exam_duration_hours | Default duration of an exam in hours. | decimal number, 2 decimals | Yes |
max_lessons_per_day | Maximum number of lessons per day per student (0 is unlimited). | integer | Yes |
max_lessons_mode | What happens when that maximum is exceeded. Allowed values: ignore, warn, block. | text, max. 8 characters | Yes |
double_booking_mode | What happens in case of a double booking. Allowed values: ignore, warn, block. | text, max. 8 characters | Yes |
check_instructor_overlap | Check for overlaps between instructors. | yes/no | Yes |
check_vehicle_overlap | Check for overlaps between vehicles. | yes/no | Yes |
check_room_overlap | Check for overlaps between rooms. | yes/no | Yes |
availability_conflict_mode | What happens in case of a conflict with an availability. Allowed values: ignore, warn, block. | text, max. 8 characters | Yes |
grid_minutes | Planning grid in minutes. Allowed values: 5 (5 minutes), 10 (10 minutes), 15 (15 minutes), 20 (20 minutes), 30 (30 minutes), 60 (60 minutes). | integer | Yes |
day_start_hour | First hour of the day in the planning. | integer | Yes |
day_end_hour | Last hour of the day in the planning. | integer | Yes |
late_cancel_hours | Number of hours before a lesson from which a cancellation is charged. | integer | Yes |
reminder_hours | Number of hours before a lesson at which a reminder is sent. | integer | Yes |
portal_booking_mode | How bookings made through the portal are confirmed. Allowed values: manual_confirm (confirmation by your organisation), auto_confirm (confirmed automatically). | text, max. 16 characters | Yes |
max_active_students | Guide value for the maximum number of active students (0 is no maximum). | integer | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: company_id refers to companies.id.
instructors: Instructors and trainers. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
first_name | First name. | text, max. 128 characters | Yes |
last_name | Surname. | text, max. 128 characters | Yes |
email | Email address. | text, max. 180 characters | No |
phone | Phone number. | text, max. 32 characters | No |
default_vehicle_id | Default vehicle (key from vehicles). | integer | No |
color | Colour in the calendar, as a hexadecimal code (for example #8FC043). | text, max. 7 characters | Yes |
timezone | Time zone (IANA). | text, max. 64 characters | Yes |
online_booking_hours | Hours during which customers can book lessons with this instructor online, per ISO weekday with time blocks (HH:MM). The customer portal only offers the hours that also fall within the instructor's work schedule (employee_schedules). The employee number is stored with the employee (employees.employee_number). | JSON structure | Yes |
medical_exam_valid_until | Expiry date of the medical certificate. | date | No |
active | Active; an active instructor counts towards the licence. | yes/no | Yes |
notes | Free notes from your organisation. | text | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: default_vehicle_id refers to vehicles.id.
instructor_branches: Branches where an instructor works. Key: instructor_id and branch_id.
| Field | Description | Type | Required |
|---|---|---|---|
instructor_id | Key of the instructor or trainer. | integer | Yes |
branch_id | Key of the branch. | integer | Yes |
Relations: instructor_id refers to instructors.id; branch_id refers to branches.id.
instructor_license_types: Categories an instructor may teach; no rows means all categories. Key: instructor_id and license_type_id.
| Field | Description | Type | Required |
|---|---|---|---|
instructor_id | Key of the instructor or trainer. | integer | Yes |
license_type_id | Key of the category (licence category or course). | integer | Yes |
Relations: instructor_id refers to instructors.id; license_type_id refers to license_types.id.
instructor_certificates: Qualifications (brevets) and certificates of an instructor. Key: instructor_id and certificate_id.
| Field | Description | Type | Required |
|---|---|---|---|
instructor_id | Key of the instructor or trainer. | integer | Yes |
certificate_id | Key of the qualification or certificate. | integer | Yes |
Relations: instructor_id refers to instructors.id; certificate_id refers to certificates.id.
instructor_vehicles: Default vehicle of an instructor per category. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
instructor_id | Key of the instructor or trainer. | integer | Yes |
license_type_id | Key of the category (licence category or course). | integer | Yes |
vehicle_id | Key of the vehicle. | integer | Yes |
Relations: instructor_id refers to instructors.id; license_type_id refers to license_types.id; vehicle_id refers to vehicles.id.
instructor_signatures: Signature of an instructor for documents. Key: instructor_id.
| Field | Description | Type | Required |
|---|---|---|---|
instructor_id | Key of the instructor or trainer. | integer | Yes |
data | The signature as a PNG image. | file (binary) | Yes |
sha256 | SHA-256 checksum of the image. | text, max. 64 characters | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
updated_by | User who saved the signature (key from users). | integer | No |
Relations: instructor_id refers to instructors.id; updated_by refers to users.id.
vehicles: Vehicles. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
branch_id | Key of the branch. | integer | Yes |
name | Name. | text, max. 128 characters | Yes |
short_name | Short name. | text, max. 16 characters | No |
license_plate | Number plate. | text, max. 16 characters | No |
brand | Make. | text, max. 64 characters | No |
model | Model. | text, max. 64 characters | No |
transmission | Gearbox. Allowed values: manual, automatic. | text, max. 16 characters | Yes |
blocked | Temporarily unavailable. | yes/no | Yes |
block_reason | Reason for the block. | text, max. 255 characters | No |
odometer_km | Odometer reading. | integer | No |
inspection_valid_until | Roadworthiness inspection valid until. | date | No |
insurance_valid_until | Insurance valid until. | date | No |
color | Colour in the calendar, as a hexadecimal code (for example #8FC043). | text, max. 7 characters | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: branch_id refers to branches.id.
vehicle_license_types: Categories a vehicle can be used for. Key: vehicle_id and license_type_id.
| Field | Description | Type | Required |
|---|---|---|---|
vehicle_id | Key of the vehicle. | integer | Yes |
license_type_id | Key of the category (licence category or course). | integer | Yes |
Relations: vehicle_id refers to vehicles.id; license_type_id refers to license_types.id.
vehicle_allowed_instructors: Instructors allowed to use a vehicle; no rows means everyone. Key: vehicle_id and instructor_id.
| Field | Description | Type | Required |
|---|---|---|---|
vehicle_id | Key of the vehicle. | integer | Yes |
instructor_id | Key of the instructor or trainer. | integer | Yes |
Relations: vehicle_id refers to vehicles.id; instructor_id refers to instructors.id.
rooms: Rooms, grounds and simulators. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
branch_id | Key of the branch. | integer | Yes |
name | Name. | text, max. 128 characters | Yes |
type | Type of space. Allowed values: classroom, terrain (training ground), simulator, other. | text, max. 16 characters | Yes |
capacity | Number of places. | integer | Yes |
shared | Can also be used by other branches of the organisation. | yes/no | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: branch_id refers to branches.id.
6. Business customers (CSV/XLSX and JSON)
business_accounts: Business customers. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
code | Your organisation's own customer number for this business customer. | text, max. 32 characters | No |
name | Name. | text, max. 255 characters | Yes |
legal_name | Registered name, if different. | text, max. 255 characters | No |
vat_number | VAT number. | text, max. 32 characters | No |
vat_status | Result of the last check of the VAT number in VIES. Allowed values: unknown (not checked), valid, invalid. | text, max. 16 characters | Yes |
vat_checked_at | Time of that check. | date and time | No |
street | Street. | text, max. 255 characters | No |
house_number | House number. | text, max. 16 characters | No |
box | Box number within the building (not a PO box). | text, max. 16 characters | No |
postal_code | Postcode. | text, max. 16 characters | No |
city | Municipality. | text, max. 128 characters | No |
country_code | Country, as a two-letter country code (ISO 3166-1), for example BE. | text, max. 2 characters | Yes |
email | General email address. | text, max. 180 characters | No |
no_bulk_mail | Opted out of group emails through the link at the bottom of a group email. Emails about its own orders and payments keep being sent. | yes/no | Yes |
billing_email | Email address for payment links and invoices. | text, max. 180 characters | No |
phone | Phone number. | text, max. 32 characters | No |
lang | Language for communication. Allowed values: nl (Dutch), fr (French), en (English), de (German). | text, max. 2 characters | Yes |
currency | Currency, as a three-letter code (ISO 4217), for example EUR. | text, max. 3 characters | Yes |
payment_terms_days | Payment term in days. | integer | Yes |
discount_pct | Discount as a percentage. | decimal number, 2 decimals | Yes |
requires_purchase_order | Orders require a purchase order reference. | yes/no | Yes |
default_cost_center | Default cost centre. | text, max. 64 characters | No |
auto_link_orders | New orders of linked participants are invoiced to this business customer by default. | yes/no | Yes |
peppol_identifier | Peppol identifier. | text, max. 64 characters | No |
notes | Free notes from your organisation. | text | No |
settings | Settings per business customer. | JSON structure | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
archived_at | Time of archiving. | date and time | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: company_id refers to companies.id.
business_account_contacts: Contact persons of business customers. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
account_id | Key of the business customer. | integer | Yes |
name | Name. | text, max. 255 characters | Yes |
email | Email address. | text, max. 180 characters | No |
phone | Phone number. | text, max. 32 characters | No |
function | Position within the company. | text, max. 128 characters | No |
lang | Language for communication. Allowed values: nl (Dutch), fr (French), en (English), de (German). | text, max. 2 characters | Yes |
receives_invoices | Receives the financial correspondence. | yes/no | Yes |
receives_planning | Receives the correspondence about the planning. | yes/no | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: account_id refers to business_accounts.id.
business_account_members: Participants of business customers: the link between a business customer and a student or trainee, with the period of the programme. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
account_id | Key of the business customer. | integer | Yes |
student_id | Key of the student or trainee. | integer | Yes |
valid_from | Start of the link. | date | Yes |
valid_until | End of the link (empty: no end date). | date | No |
status | Status of the link. Allowed values: pending (awaiting confirmation), active, ended, rejected. | text, max. 16 characters | Yes |
default_bill_to | New orders of this participant are invoiced to the business customer by default. | yes/no | Yes |
reference | Staff number or standing purchase order reference for this participant. | text, max. 64 characters | No |
cost_center | Cost centre. | text, max. 64 characters | No |
source | Who created the link. Allowed values: staff (your organisation), b2b_portal (the business customer through the business portal). | text, max. 16 characters | Yes |
accepted_at | Time of acceptance. | date and time | No |
ended_reason | Reason for ending. | text, max. 255 characters | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: account_id refers to business_accounts.id; student_id refers to students.id.
b2b_users: Accounts of contact persons for the business portal, without passwords or other authentication data. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
account_id | Key of the business customer. | integer | Yes |
email | Email address used to log in. | text, max. 180 characters | Yes |
name | Name. | text, max. 128 characters | Yes |
roles | Roles granted, on top of the basic role. Allowed values: ROLE_B2B_MANAGER (participant management), ROLE_B2B_BILLING (invoicing), ROLE_B2B_ADMIN (administrator). | JSON structure | Yes |
lang | Language for communication. Allowed values: nl (Dutch), fr (French), en (English), de (German). | text, max. 2 characters | Yes |
enabled | Account enabled. | yes/no | Yes |
totp_enabled_at | Time two-factor authentication was enabled. | date and time | No |
invited_at | Time of the invitation. | date and time | No |
activated_at | Time the first password was chosen. | date and time | No |
last_login_at | Time of the last login. | date and time | No |
password_changed_at | Time of the last password change. | date and time | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: account_id refers to business_accounts.id.
7. Financial (CSV/XLSX and JSON)
sales_orders: Orders of students, trainees and business customers, with the invoicing and payment status. The Platform does not create invoices itself: the invoice is drawn up in your accounting software, and the order number and the invoice reference are stored here. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
number | Order number (unique). | text, max. 32 characters | No |
branch_id | Key of the branch. | integer | Yes |
student_id | Key of the student or trainee. | integer | Yes |
bill_to_id | Business customer who pays (key from business_accounts); empty if the student or trainee pays themselves or a representative pays. | integer | No |
bill_to_contact_id | Key of the business customer's contact person. | integer | No |
bill_to_relation_id | Representative who pays (key from student_relations); never together with bill_to_id. If the link is removed, the customer pays the orders that are not yet confirmed themselves again; a confirmed order keeps the payer details in bill_to_snapshot. | integer | No |
customer_reference | Purchase order number of the payer. | text, max. 64 characters | No |
cost_center | Cost centre. | text, max. 64 characters | No |
bill_to_snapshot | Details of the payer, recorded at the time of confirmation. | JSON structure | No |
order_type | Type of order. Allowed values: subscription (enrolment with a package of hours), other (other order). | text, max. 16 characters | Yes |
license_type_id | Key of the category (licence category or course). | integer | No |
state | Status of the order. Allowed values: draft, sent, confirmed, cancelled. | text, max. 16 characters | Yes |
currency | Currency, as a three-letter code (ISO 4217), for example EUR. | text, max. 3 characters | Yes |
notes | Free notes from your organisation. | text | No |
confirmed_at | Time of the confirmation. | date and time | No |
enrollment_id | Key of the enrolment. | integer | No |
source | Origin of the order, for example manual (entered manually) or online (online enrolment). | text, max. 16 characters | Yes |
invoice_status | Status in the accounting software. Allowed values: not_invoiced (not invoiced), queued (in the queue), invoiced, failed. | text, max. 16 characters | Yes |
invoice_connector | Connection with the accounting software, or manual. | text, max. 32 characters | No |
invoice_reference | Invoice number as shown by the accounting software. | text, max. 64 characters | No |
invoice_external_id | Identifier of the invoice in the accounting software. | text, max. 128 characters | No |
invoiced_at | Time of invoicing. | date and time | No |
payment_status | Status of the payments through the payment service provider. Allowed values: not_paid (not paid), pending (processing), partial (partly paid), paid. | text, max. 16 characters | Yes |
paid_cents | Amount received through the payment service provider, in cents. | integer | Yes |
paid_at | Time of full payment. | date and time | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: branch_id refers to branches.id; student_id refers to students.id; bill_to_id refers to business_accounts.id; bill_to_contact_id refers to business_account_contacts.id; bill_to_relation_id refers to student_relations.id; license_type_id refers to license_types.id; enrollment_id refers to enrollments.id.
sales_order_lines: Lines of an order. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
order_id | Key of the order. | integer | Yes |
product_id | Key of the product. | integer | Yes |
description | Description. | text, max. 255 characters | Yes |
quantity | Quantity. | decimal number, 2 decimals | Yes |
unit_price | Unit price excluding VAT. | decimal number, 2 decimals | Yes |
vat_rate | VAT rate as a percentage. | decimal number, 2 decimals | Yes |
course_id | Course the enrolment is for (key from courses). | integer | No |
Relations: order_id refers to sales_orders.id; product_id refers to products.id; course_id refers to courses.id.
payments: Payments through payment links and payment terminals. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
order_id | Key of the order. | integer | Yes |
channel | Channel. Allowed values: link (payment link), terminal (payment terminal). | text, max. 16 characters | Yes |
started_by_user_id | User who started a payment on the terminal (key from users). | integer | No |
provider | Payment service provider. | text, max. 32 characters | Yes |
amount | Amount in cents. | integer | Yes |
currency | Currency, as a three-letter code (ISO 4217), for example EUR. | text, max. 3 characters | Yes |
status | Status of the payment. Allowed values: open, pending (processing), paid, cancelled, expired, refunded. | text, max. 16 characters | Yes |
test_mode | Test payment. | yes/no | Yes |
provider_reference | Reference of the payment at the payment service provider. | text, max. 128 characters | No |
provider_status | Status as named by the payment service provider. | text, max. 64 characters | No |
method | Payment method used, such as Bancontact. | text, max. 64 characters | No |
expires_at | Time the payment link expires. | date and time | No |
sent_to | Email address the payment link was sent to. | text, max. 180 characters | No |
sent_at | Time of sending. | date and time | No |
paid_at | Time of payment. | date and time | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: order_id refers to sales_orders.id; started_by_user_id refers to users.id.
received_payments: Payments the Platform registers for Payment Automation (Annex D of the Subscription Agreement): payments through Pay. (online, SoftPOS and payment terminal), incoming bank transfers that are read in through the Bank Connection and matched to a customer, file or order, and cash payments that your organisation registers itself. The Platform does not store unmatched transfers, outgoing transactions or balances; they are therefore not included in the export. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
source | Source of the payment. Allowed values: pay (payment through Pay. online, with SoftPOS or with a terminal), bank_transfer (bank transfer), cash. | text, max. 16 characters | Yes |
payment_id | Payment through Pay. started from the Platform, with a payment link or terminal (key from payments); empty for a bank transfer or a cash payment. | integer | No |
received_on | Date of the payment; for a bank transfer, the date on the bank statement. | date | Yes |
amount | Amount in cents. | integer | Yes |
currency | Currency, as a three-letter code (ISO 4217), for example EUR. | text, max. 3 characters | Yes |
communication | Payment reference, structured or free. | text, max. 140 characters | No |
payer_name | Name of the payer. | text, max. 140 characters | No |
payer_account | Account number (IBAN) of the payer. In the Platform, only visible to users with a financial role. | text, max. 34 characters | No |
method | Payment method used, such as Bancontact, Visa or bank transfer. | text, max. 64 characters | No |
transaction_reference | Reference of the transaction at Pay. or at the bank. | text, max. 128 characters | No |
card_masked | For a card payment: the masked card details that Pay. passes on, such as the card brand and the last four digits. | text, max. 32 characters | No |
match_status | Status of the matching to customers, files and orders. Allowed values: matched (fully matched), partial (partly matched), unmatched (not matched, only for a payment through Pay. or a cash payment). | text, max. 16 characters | Yes |
counts_for_platform_fee | Registered Payment for the Platform Fee (Annex D.6 of the Subscription Agreement). | yes/no | Yes |
registered_by_user_id | User who registered a cash payment (key from users). | integer | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: payment_id refers to payments.id; registered_by_user_id refers to users.id.
payment_matches: Matches of registered payments to customers, files and orders. One payment can be split over several orders. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
received_payment_id | Key of the payment. | integer | Yes |
order_id | Order the payment is booked to. | integer | No |
student_id | Student or trainee (file) the payment is matched to. | integer | No |
business_account_id | Business customer the payment is matched to. | integer | No |
amount | Matched amount in cents. | integer | Yes |
match_method | How the match was made. Allowed values: structured_communication (structured payment reference), order_or_file_number (order or file number), amount_and_account (amount and account number of the payer), payment_link (payment through Pay. on the order), manual (manually by a user). | text, max. 24 characters | Yes |
matched_by_user_id | User who made or corrected the match manually (key from users); empty for an automatic match. | integer | No |
matched_at | Time of the match. | date and time | Yes |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: received_payment_id refers to received_payments.id; order_id refers to sales_orders.id; student_id refers to students.id; business_account_id refers to business_accounts.id; matched_by_user_id refers to users.id.
payment_reminders: Reminders for outstanding amounts, planned or sent according to your organisation's settings. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
order_id | Order the reminder is for. | integer | Yes |
sequence | Sequence number of the reminder for this order (1 is the first reminder). | integer | Yes |
amount_due | Outstanding amount at the time of the reminder, in cents. | integer | Yes |
currency | Currency, as a three-letter code (ISO 4217), for example EUR. | text, max. 3 characters | Yes |
due_date | Payment deadline stated in the reminder. | date | No |
status | Status of the reminder. Allowed values: scheduled (planned), sent, paused (paused, for example while the Bank Connection is interrupted), cancelled (cancelled, for example because the payment has come in since). | text, max. 16 characters | Yes |
scheduled_at | Planned time of sending. | date and time | No |
sent_to | Email address the reminder was sent to. | text, max. 180 characters | No |
sent_at | Time of sending. | date and time | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: order_id refers to sales_orders.id.
8. Documents (original format or PDF, in a ZIP file with an index in CSV)
index.csv: Index of all documents in the ZIP file. Each document is in a folder per record it is linked to (for example student-12/), with the last eight characters of the UUID before the original file name; documents without a link are in the folder unlinked/. Documents generated by the Platform, such as a proof of enrolment, are included. Key: uuid. Format: CSV.
| Field | Description | Type | Required |
|---|---|---|---|
path | Path of the document in the ZIP file. | text | Yes |
uuid | Unique key of the document. | UUID | Yes |
name | Original file name. | text, max. 255 characters | Yes |
category | Type of document. Allowed values: identity, medical, licence (driving licence), contract, invoice, certificate, other. | text, max. 24 characters | Yes |
mime_type | File type (MIME type), for example application/pdf. | text, max. 127 characters | Yes |
size | Size in bytes. | integer | Yes |
sha256 | SHA-256 checksum of the file. | text, max. 64 characters | Yes |
source | Origin. Allowed values: upload (uploaded), generated (generated by the Platform), import (imported). | text, max. 16 characters | Yes |
records | Records the document is linked to, as type:key separated by a space (for example student:12 sales_order:7). Allowed values: student (student or trainee (students)), sales_order (order (sales_orders)), business_account (business customer (business_accounts)), instructor (instructor (instructors)), vehicle (vehicle (vehicles)), company (organisation (companies)), branch (branch (branches)). | text | No |
shared_with_student | Shared with the student or trainee in the portal (1 is yes, 0 is no). | yes/no | Yes |
shared_with_b2b | Shared with the business customer in the business portal (1 is yes, 0 is no). | yes/no | Yes |
retention_until | Statutory retention up to and including this date; empty if there is no retention obligation. | date | No |
created_at | Time the document was uploaded or generated. | date and time | Yes |
9. Configuration and metadata (JSON)
companies: Your organisation and its settings. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
name | Name. | text, max. 255 characters | Yes |
vat_number | VAT number. | text, max. 32 characters | No |
recognition_number | Approval number of the driving school with the authorities. | text, max. 64 characters | No |
localization | Country pack (regulations and catalogues). Allowed values: generic (general), be_flanders (Belgium, Flanders), be_wallonia (Belgium, Wallonia), be_brussels (Belgium, Brussels), nl (the Netherlands). | text, max. 32 characters | Yes |
business_type | Type of organisation. Allowed values: driving_school (driving school), training_center (training centre). | text, max. 32 characters | Yes |
street | Street. | text, max. 255 characters | No |
house_number | House number. | text, max. 16 characters | No |
box | Box number within the building (not a PO box). | text, max. 16 characters | No |
postal_code | Postcode. | text, max. 16 characters | No |
city | Municipality. | text, max. 128 characters | No |
country_code | Country, as a two-letter country code (ISO 3166-1), for example BE. | text, max. 2 characters | Yes |
email | Email address. | text, max. 180 characters | No |
phone | Phone number. | text, max. 32 characters | No |
website | Website. | text, max. 255 characters | No |
currency | Currency, as a three-letter code (ISO 4217), for example EUR. | text, max. 3 characters | Yes |
settings | Settings of the organisation. | JSON structure | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
company_logos: Your organisation's logo. Key: company_id.
| Field | Description | Type | Required |
|---|---|---|---|
company_id | Key of the organisation. | integer | Yes |
mime_type | File type of the image. | text, max. 32 characters | Yes |
data | The image. | file (binary) | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: company_id refers to companies.id.
users: Users of the Platform and their roles, without passwords or other authentication data. The fields that refer to a user (such as created_by or handled_by) use this key. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
email | Email address used to log in. | text, max. 180 characters | Yes |
name | Name. | text, max. 255 characters | Yes |
roles | Roles of the user. Allowed values: ROLE_ADMIN (administrator), ROLE_MANAGER (manager), ROLE_PLANNER (planner), ROLE_INSTRUCTOR (instructor). | JSON structure | Yes |
instructor_id | Instructor this user is (key from instructors). | integer | No |
lang | Language for communication. Allowed values: nl (Dutch), fr (French), en (English), de (German). | text, max. 2 characters | Yes |
enabled | Account enabled. | yes/no | Yes |
disabled_reason | Reason the account is disabled. Allowed values: manual, license (licence), instructor_inactive (instructor not active). | text, max. 32 characters | No |
two_factor_required | Two-factor authentication required. | yes/no | Yes |
totp_enabled_at | Time two-factor authentication was enabled. | date and time | No |
last_login_at | Time of the last login. | date and time | No |
password_changed_at | Time of the last password change. | date and time | No |
invited_at | Time of the invitation. | date and time | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: instructor_id refers to instructors.id.
user_branches: Branches where a user may work; no rows for an administrator means all branches. Key: user_id and branch_id.
| Field | Description | Type | Required |
|---|---|---|---|
user_id | Key of the user. | integer | Yes |
branch_id | Key of the branch. | integer | Yes |
Relations: user_id refers to users.id; branch_id refers to branches.id.
license_types: Licence categories and courses, with their rules. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
code | Code, for example B. | text, max. 16 characters | Yes |
name | Name. | text, max. 128 characters | Yes |
category | Type of vehicle. Allowed values: car, motorcycle, moped, truck (lorry), bus, trailer, agricultural (agricultural vehicle), other. | text, max. 16 characters | Yes |
color | Colour in the calendar, as a hexadecimal code (for example #8FC043). | text, max. 7 characters | Yes |
minimum_age_years | Minimum age, years. | integer | Yes |
minimum_age_months | Minimum age, additional months. | integer | Yes |
max_students | Maximum number of students per lesson. | integer | Yes |
vehicle_required | A vehicle is needed. | yes/no | Yes |
default_hours | Default number of hours in a package. | decimal number, 2 decimals | Yes |
default_lesson_duration_hours | Default duration of a lesson in hours. | decimal number, 2 decimals | Yes |
theory_required | Theory exam required. | yes/no | Yes |
theory_validity_years | Validity of the theory exam in years. | integer | Yes |
medical_required | Medical certificate required. | yes/no | Yes |
requires_subscription_number | An enrolment receives an enrolment number. | yes/no | Yes |
reexam_mandatory_hours | Mandatory hours before a retake. | decimal number, 2 decimals | Yes |
reexam_failure_threshold | Number of failed attempts after which those hours apply. | integer | Yes |
sort_order | Order in lists. | integer | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
pack_code | Code of the country pack that installed this record; empty if your organisation created it itself. | text, max. 32 characters | No |
regulatory | Country-specific characteristics (such as the provisional licence model and the medical group). | JSON structure | Yes |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: company_id refers to companies.id.
follow_up_templates: Templates for the follow-up sheets: one per category, with topics and skills that your organisation sets up itself. A switched-off template creates no new sheets; a template that has sheets cannot be deleted. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
license_type_id | Category (key from license_types; one template per category). | integer | Yes |
name | Name. | text, max. 128 characters | Yes |
active | Active (yes) or switched off (no): a switched-off template creates no new sheets. | yes/no | Yes |
pack_code | Code of the country package that installed the template; empty if your organisation created it itself. | text, max. 32 characters | No |
Relations: license_type_id refers to license_types.id.
follow_up_topics: Topics of a follow-up template, such as manoeuvres. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
template_id | Template (key from follow_up_templates). | integer | Yes |
name | Name. | text, max. 160 characters | Yes |
position | Order in the template. | integer | Yes |
active | Active (yes) or switched off (no); a switched-off topic keeps the ratings of its skills. | yes/no | Yes |
Relations: template_id refers to follow_up_templates.id.
follow_up_skills: Skills within a topic, such as parking in a bay. A skill that has ratings is switched off instead of deleted. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
topic_id | Topic (key from follow_up_topics). | integer | Yes |
name | Name. | text, max. 160 characters | Yes |
description | Explanation for the instructor: what to look at. | text, max. 500 characters | No |
position | Order within the topic. | integer | Yes |
active | Active (yes) or switched off (no). | yes/no | Yes |
Relations: topic_id refers to follow_up_topics.id.
exam_rules: Conditions for admission to an exam, per category. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
license_type_id | Key of the category (licence category or course). | integer | Yes |
name | Name. | text, max. 160 characters | Yes |
exam_type | Type of exam. Allowed values: theory, practical, medical. | text, max. 16 characters | Yes |
rule_type | Type of condition. Allowed values: min_age (minimum age), min_hours (minimum number of hours), min_lessons (minimum number of lessons), theory_passed (theory passed), theory_validity (theory validity), medical_valid (valid medical certificate), waiting_period (waiting time between attempts), practice_months (months of practice period), prior_license (previous licence required), progressive_years (years of experience with a previous licence), reexam_hours (hours before a retake). | text, max. 32 characters | Yes |
min_hours | Minimum number of hours. | decimal number, 2 decimals | No |
min_lessons | Minimum number of lessons. | integer | No |
waiting_days | Waiting time in days between two attempts. | integer | No |
age_years | Age, years. | integer | No |
age_months | Age, additional months. | integer | No |
validity_months | Validity in months. | integer | No |
practice_months | Months since the start of the enrolment. | integer | No |
required_license_code | Code of the category the person must already hold. | text, max. 16 characters | No |
progressive_years | Number of years holding that category. | integer | No |
failure_threshold | Number of failed attempts after which the minimum number of hours applies. | integer | No |
pack_code | Code of the country pack that installed this record; empty if your organisation created it itself. | text, max. 32 characters | No |
sort_order | Order in lists. | integer | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
Relations: license_type_id refers to license_types.id.
products: Products and rates, such as packages of hours, enrolment fees and charges. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
code | Code. | text, max. 32 characters | No |
name | Name. | text, max. 255 characters | Yes |
description | Description. | text | No |
type | Type of product. Allowed values: practical_hours (practical hours), course_enrollment (enrolment for a course), exam_fee (exam fee), admin_fee (administration fee), cancel_fee (cancellation fee), guidance (accompaniment), other. | text, max. 32 characters | Yes |
practical_hours | Number of practical hours per unit. | decimal number, 2 decimals | Yes |
price | Price excluding VAT. | decimal number, 2 decimals | Yes |
vat_rate | VAT rate as a percentage. | decimal number, 2 decimals | Yes |
publish_online | Visible in online enrolments. | yes/no | Yes |
sort_order | Order in lists. | integer | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
pack_code | Code of the country pack that installed this record; empty if your organisation created it itself. | text, max. 32 characters | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: company_id refers to companies.id.
product_license_types: Categories a product applies to. Key: product_id and license_type_id.
| Field | Description | Type | Required |
|---|---|---|---|
product_id | Key of the product. | integer | Yes |
license_type_id | Key of the category (licence category or course). | integer | Yes |
Relations: product_id refers to products.id; license_type_id refers to license_types.id.
cancel_reasons: Cancellation reasons and the fees that go with them. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
name | Name. | text, max. 128 characters | Yes |
charge_fee | Charge a cancellation fee by default. | yes/no | Yes |
fee_type | Type of fee. Allowed values: percentage (percentage of the price), fixed (fixed amount). | text, max. 16 characters | Yes |
fee_percentage | Percentage. | decimal number, 2 decimals | Yes |
fee_fixed_amount | Fixed amount. | decimal number, 2 decimals | Yes |
fee_product_id | Product used to charge the fee (key from products). | integer | No |
instructor_selectable | Instructors can choose this reason. | yes/no | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
Relations: company_id refers to companies.id; fee_product_id refers to products.id.
course_types: Types of courses. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
code | Code. | text, max. 32 characters | Yes |
name | Name. | text, max. 128 characters | Yes |
default_session_type | Default type of session. Allowed values: theory, practical. | text, max. 16 characters | Yes |
color | Colour in the calendar, as a hexadecimal code (for example #8FC043). | text, max. 7 characters | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
pack_code | Code of the country pack that installed this record; empty if your organisation created it itself. | text, max. 32 characters | No |
Relations: company_id refers to companies.id.
certificates: Catalogue of instructors' qualifications (brevets) and certificates. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
code | Code. | text, max. 32 characters | Yes |
name | Name. | text, max. 160 characters | Yes |
is_director | Holders of this qualification may act as director of the driving school on official documents. | yes/no | Yes |
pack_code | Code of the country pack that installed this record; empty if your organisation created it itself. | text, max. 32 characters | No |
sort_order | Order in lists. | integer | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
Relations: company_id refers to companies.id.
availability_statuses: Types of availability. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
code | Code (unique). | text, max. 32 characters | Yes |
name | Name. | text, max. 64 characters | Yes |
color | Colour in the calendar, as a hexadecimal code (for example #8FC043). | text, max. 7 characters | Yes |
blocks_planning | A lesson that overlaps with this causes a conflict. | yes/no | Yes |
sort_order | Order in lists. | integer | Yes |
exam_centers: Exam centres, without the access credentials of the connections. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
name | Name. | text, max. 128 characters | Yes |
code | Code. | text, max. 32 characters | No |
street | Street. | text, max. 255 characters | No |
house_number | House number. | text, max. 16 characters | No |
box | Box number within the building (not a PO box). | text, max. 16 characters | No |
postal_code | Postcode. | text, max. 16 characters | No |
city | Municipality. | text, max. 128 characters | No |
country_code | Country, as a two-letter country code (ISO 3166-1), for example BE. | text, max. 2 characters | Yes |
api_type | Type of connection. Allowed values: manual (no connection), av (Autoveiligheid), cbr, custom (other connection). | text, max. 16 characters | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
pack_code | Code of the country pack that installed this record; empty if your organisation created it itself. | text, max. 32 characters | No |
Relations: company_id refers to companies.id.
exam_type_mappings: Exam types and their codes at the exam centre. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
code | Fixed code within the organisation, for example B-E2-01. | text, max. 32 characters | No |
license_type_id | Key of the category (licence category or course). | integer | No |
exam_type | Type of exam. Allowed values: theory, practical, medical. | text, max. 16 characters | Yes |
av_category | Category at Autoveiligheid. | text, max. 5 characters | Yes |
av_type | Type at Autoveiligheid. | text, max. 5 characters | Yes |
av_code | Code at Autoveiligheid. | text, max. 5 characters | Yes |
description | Description. | text, max. 255 characters | No |
list_price | Official exam price including VAT (for information). | decimal number, 2 decimals | Yes |
duration_minutes | Duration in minutes. | integer | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
pack_code | Code of the country pack that installed this record; empty if your organisation created it itself. | text, max. 32 characters | No |
Relations: company_id refers to companies.id; license_type_id refers to license_types.id.
exam_center_type_mappings: Exam types offered by an exam centre. Key: exam_center_id and exam_type_mapping_id.
| Field | Description | Type | Required |
|---|---|---|---|
exam_center_id | Key of the exam centre. | integer | Yes |
exam_type_mapping_id | Key of the exam type. | integer | Yes |
Relations: exam_center_id refers to exam_centers.id; exam_type_mapping_id refers to exam_type_mappings.id.
exam_travel_times: Travel times between branches and exam centres. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
branch_id | Key of the branch. | integer | Yes |
exam_center_id | Key of the exam centre. | integer | Yes |
minutes_to | Minutes from the branch to the exam centre. | integer | Yes |
minutes_from | Minutes from the exam centre back to the branch. | integer | Yes |
Relations: branch_id refers to branches.id; exam_center_id refers to exam_centers.id.
registration_wizards: Enrolment forms: steps, fields, custom questions and design. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
name | Name. | text, max. 120 characters | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
sort_order | Order in lists. | integer | Yes |
steps | Steps of the form (type, title, active). | JSON structure | Yes |
personal_fields | Personal fields (visible, required, width, help text). | JSON structure | Yes |
questions | Custom questions (question, type, required, choices, help text). | JSON structure | Yes |
payment_mode | Payment at enrolment. Allowed values: pay_now (pay straight away), pay_later (pay later), choice (the person enrolling chooses). | text, max. 16 characters | Yes |
primary_color | Main colour (hexadecimal). | text, max. 7 characters | Yes |
accent_color | Accent colour (hexadecimal). | text, max. 7 characters | Yes |
background_color | Background colour (hexadecimal). | text, max. 7 characters | Yes |
corner_radius | Corner rounding in pixels. | integer | Yes |
card_style | Style of the cards. Allowed values: flat, shadow (with shadow), bordered (with border). | text, max. 16 characters | Yes |
progress_style | Style of the progress indicator. Allowed values: steps, bar, dots. | text, max. 16 characters | Yes |
button_style | Style of the buttons. Allowed values: solid (filled), outline (outlined). | text, max. 16 characters | Yes |
show_logo | Show the logo. | yes/no | Yes |
welcome_text | Text above the first step. | text | No |
success_message | Text after the enrolment. | text | No |
redirect_url | Address the button leads to after the enrolment. | text, max. 500 characters | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: company_id refers to companies.id.
registration_wizard_license_types: Categories a form offers; no rows means all active categories. Key: registration_wizard_id and license_type_id.
| Field | Description | Type | Required |
|---|---|---|---|
registration_wizard_id | Key of the enrolment form. | integer | Yes |
license_type_id | Key of the category (licence category or course). | integer | Yes |
Relations: registration_wizard_id refers to registration_wizards.id; license_type_id refers to license_types.id.
registration_wizard_branches: Branches a form offers; no rows means all active branches. Key: registration_wizard_id and branch_id.
| Field | Description | Type | Required |
|---|---|---|---|
registration_wizard_id | Key of the enrolment form. | integer | Yes |
branch_id | Key of the branch. | integer | Yes |
Relations: registration_wizard_id refers to registration_wizards.id; branch_id refers to branches.id.
registration_entry_points: Enrolment links to a form, optionally with a preselected category, product or branch. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
wizard_id | Key of the enrolment form. | integer | Yes |
code | Code in the link. | text, max. 16 characters | Yes |
name | Name. | text, max. 120 characters | Yes |
description | Description. | text | No |
license_type_id | Key of the category (licence category or course). | integer | No |
product_id | Key of the product. | integer | No |
branch_id | Key of the branch. | integer | No |
default_campaign | Campaign (utm_campaign) for prospects who come in through this link if the link itself carries none. | text, max. 128 characters | No |
default_origin_id | Origin for prospects who come in through this link if the visitor gives none (key from lead_origins). | integer | No |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
sort_order | Order in lists. | integer | Yes |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: wizard_id refers to registration_wizards.id; license_type_id refers to license_types.id; product_id refers to products.id; branch_id refers to branches.id; default_origin_id refers to lead_origins.id.
registration_dashboards: Enrolment pages with tiles linking to enrolment links. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
code | Code in the link. | text, max. 16 characters | Yes |
name | Internal name. | text, max. 120 characters | Yes |
title | Title of the page. | text, max. 160 characters | No |
intro_text | Introductory text. | text | No |
primary_color | Main colour (hexadecimal). | text, max. 7 characters | Yes |
background_color | Background colour (hexadecimal). | text, max. 7 characters | Yes |
show_logo | Show the logo. | yes/no | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: company_id refers to companies.id.
registration_dashboard_items: Tiles on an enrolment page. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
dashboard_id | Key of the enrolment page. | integer | Yes |
entry_point_id | Key of the enrolment link. | integer | Yes |
label | Title of the tile. | text, max. 120 characters | No |
description | Text of the tile. | text | No |
sort_order | Order in lists. | integer | Yes |
Relations: dashboard_id refers to registration_dashboards.id; entry_point_id refers to registration_entry_points.id.
10. Audit trail (CSV/JSON)
identity_verifications: History of the identity checks with itsme®: when, at whose request and which details of the student or trainee were changed in the process. The time of creation and of the last change and, where the Platform keeps track of it, the user who performed an action are included as fields in the files of the other categories (such as created_at, updated_at, created_by, started_by and handled_by). Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
student_id | Key of the student or trainee; empty as long as a check made during an enrolment through the registration form is not yet linked to a customer. | integer | No |
submission_id | Enrolment through the registration form during which the check took place (key from registration_submissions). | integer | No |
provider | Identity service. Allowed values: itsme (itsme®). | text, max. 16 characters | Yes |
channel | How the check was started. Allowed values: portal (by the student or trainee in the portal), link (through a link sent by your organisation), registration (during an enrolment through the registration form). | text, max. 16 characters | Yes |
status | Outcome. Allowed values: pending, identified (identified during an enrolment, not yet linked to a file), verified (confirmed), mismatch (details do not match), failed, expired, cancelled. | text, max. 16 characters | Yes |
requested_by_user_id | User who sent the link (key from users); empty for a check through the portal. | integer | No |
created_at | Time the record was created. | date and time | Yes |
expires_at | Time the request expires. | date and time | Yes |
started_at | Time the check started at itsme®. | date and time | No |
completed_at | Time the check was completed. | date and time | No |
changes | For a confirmed check: the changed fields with their old and new values. For details that do not match: the names of the fields that differed. | JSON structure | No |
error_code | Error code for a failed check. | text, max. 64 characters | No |
resolution | Decision on itsme® data that differed from the file. Allowed values: applied (applied after checking the identity card), rejected (rejected, itsme® data erased), purged (erased automatically after fourteen days without a decision). | text, max. 16 characters | No |
resolved_at | Time of that decision. | date and time | No |
resolved_by_user_id | User who decided after checking the identity card (key from users); empty when the data was erased automatically after fourteen days. | integer | No |
Relations: student_id refers to students.id; requested_by_user_id refers to users.id; submission_id refers to registration_submissions.id; resolved_by_user_id refers to users.id.
11. Reviews and surveys (CSV/XLSX and JSON)
review_invitations: Invitations for a review or a survey with a service that your organisation connects itself (Tally, Klantenvertellen or Google), planned or sent by email according to your organisation's settings. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
provider | Service the invitation is for. Allowed values: google (Google, review on the Google Business Profile), klantenvertellen (Klantenvertellen, review), tally (Tally, survey). | text, max. 32 characters | Yes |
recipient_type | Type of recipient. Allowed values: student (student or trainee), guardian (parent or supervisor of a student), business_contact (contact person of a business customer). | text, max. 32 characters | Yes |
student_id | Student or trainee the invitation relates to. | integer | No |
business_account_contact_id | Contact person of the business customer who receives the invitation. | integer | No |
recipient_name | Name of the recipient as used in the invitation. | text, max. 255 characters | No |
trigger | Moment the invitation is sent, as set by your organisation (for example after a passed exam, a completed course, a Code 95 session or a paid order). | text, max. 64 characters | Yes |
status | Status of the invitation. Allowed values: scheduled (planned), sent, cancelled, opted_out (not sent, because the recipient has opted out of invitations for reviews). | text, max. 16 characters | Yes |
scheduled_at | Planned time of sending. | date and time | No |
sent_to | Email address the invitation was sent to. | text, max. 180 characters | No |
sent_at | Time of sending. | date and time | No |
recipient_data_shared | Whether the name and email address of the recipient were passed on to the service in the invitation (only for Tally and Klantenvertellen, never for Google). | yes/no | Yes |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: student_id refers to students.id; business_account_contact_id refers to business_account_contacts.id.
review_opt_outs: Opt-outs from invitations for reviews: people who used the opt-out link in an invitation for a review (Google or Klantenvertellen) to say they no longer want to receive invitations for reviews from your organisation. The Platform then no longer sends that person invitations for reviews; invitations for surveys have no opt-out link and are not covered. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
email | Email address of the person who opted out. | text, max. 180 characters | Yes |
recipient_type | Type of person who opted out, as in the invitation. Allowed values: student (student or trainee), guardian (parent or supervisor of a student), business_contact (contact person of a business customer). | text, max. 32 characters | Yes |
student_id | Student or trainee the opt-out relates to. | integer | No |
business_account_contact_id | Contact person of the business customer who opted out. | integer | No |
scope | Invitations the opt-out applies to. Allowed values: reviews (all invitations for reviews from your organisation (Google and Klantenvertellen), not for surveys). | text, max. 16 characters | Yes |
review_invitation_id | Invitation in which the opt-out link was used. | integer | No |
opted_out_at | Time of the opt-out. | date and time | Yes |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: student_id refers to students.id; business_account_contact_id refers to business_account_contacts.id; review_invitation_id refers to review_invitations.id.
12. HR and time tracking (CSV/XLSX and JSON)
employees: Employees in the HR and time tracking module: every instructor and trainer, and the office staff your organisation adds, with the details of their employment. When an employee is erased under the GDPR, their name (replaced by a neutral label), their contact details and notes, and the free text on their leave (leave_requests.reason and decision_note) and on their worked time (attendance_entries.note) are removed at once. The Platform keeps their leave with the dates of sickness, their leave entitlements, their worked time, their work schedules, their history and the details of their employment (employee number, contract type, contract dates and hours) until retention_until, five years after the end date of the contract (or after the day of erasure if there is no end date); after that, the Platform erases them in the nightly clean-up. Setting an employee to inactive erases nothing. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Organisation that is the employer (key from companies). | integer | Yes |
user_id | Login of the employee (key from users); empty if the employee does not sign in. | integer | No |
instructor_id | Instructor or trainer this employee is (key from instructors); empty for office staff. For an instructor, the name, email address, phone number and branches of the instructor apply. | integer | No |
first_name | First name. | text, max. 128 characters | Yes |
last_name | Last name. | text, max. 128 characters | Yes |
email | Email address. | text, max. 180 characters | No |
phone | Phone number. | text, max. 32 characters | No |
employee_number | Employee number. | text, max. 32 characters | No |
contract_type | Contract type. Allowed values: employee, self_employed (self-employed), flexi (flexi-job worker), student (student worker), intern. | text, max. 16 characters | Yes |
hire_date | Start date of employment. | date | No |
end_date | End date of the contract; empty as long as no end is known. | date | No |
weekly_hours | Contract hours per week (0 to 80). | decimal number, 2 decimals | No |
active | Active (yes) or no longer employed (no). Setting an employee to inactive does not erase or hide any data. | yes/no | Yes |
notes | Free notes from your organisation; erased when the employee is erased. | text | No |
anonymised_at | Time the employee was erased under the GDPR; empty as long as that has not happened. | date and time | No |
retention_until | End of the retention after erasure: the end date of the contract, or the day of erasure if there is no end date, plus five years. After that day, in the nightly clean-up, the Platform erases the leave, leave entitlements, worked time, work schedules, branches and history of the employee and clears the details of their employment (employee number, contract dates and hours; contract type reset to employee). Empty as long as the employee has not been erased. | date | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: company_id refers to companies.id; user_id refers to users.id; instructor_id refers to instructors.id.
employee_branches: Branches of an office staff member. For an employee who is an instructor, the branches of the instructor apply (instructor_branches). Whoever approves leave does so for the employees of their own branches. Key: employee_id and branch_id.
| Field | Description | Type | Required |
|---|---|---|---|
employee_id | Employee (key from employees). | integer | Yes |
branch_id | Key of the branch. | integer | Yes |
Relations: employee_id refers to employees.id; branch_id refers to branches.id.
work_schedules: Shared work schedules of your organisation, which you assign to employees (employee_schedules). Public holidays and closure days (public_holidays) and approved leave count no working hours. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
name | Name. | text, max. 128 characters | Yes |
weeks | Length of the rota: 1 (the same every week) or 2 (two-week rota). | integer | Yes |
pattern | Working hours per ISO weekday (1 = Monday to 7 = Sunday; for a two-week rota, 8 to 14 for the second week), as time blocks HH:MM in the employee's time zone, for example {"1": [["08:00", "12:00"], ["13:00", "17:00"]]}. 24:00 ends a day; time blocks do not overlap. | JSON structure | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
Relations: company_id refers to companies.id.
employee_schedules: Which work schedule an employee follows from valid_from to valid_until: a shared work schedule or their own. On a given day, the row with the latest start date that covers that day applies. For a two-week rota, the first week is the week of valid_from (or of 1 January 2024 if there is no start date). When the employee is erased under the GDPR, this is kept until employees.retention_until, after which the Platform erases it. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
employee_id | Employee (key from employees). | integer | Yes |
schedule_id | Shared work schedule (key from work_schedules); empty if the employee has their own schedule (pattern). | integer | No |
weeks | Length of the own schedule: 1 or 2 weeks. | integer | Yes |
pattern | Own work schedule, in the same format as work_schedules.pattern; used if no shared work schedule is chosen. | JSON structure | Yes |
valid_from | First day this schedule applies; empty = from the start. | date | No |
valid_until | Last day this schedule applies; empty = open-ended. | date | No |
Relations: employee_id refers to employees.id; schedule_id refers to work_schedules.id.
public_holidays: Public holidays and closure days per organisation. Every year the Platform fills in the statutory public holidays for this year and the next (in Belgium, the ten statutory public holidays); a year that has already been filled in is left unchanged, so a holiday your organisation deletes or moves does not come back. On those days the work schedule counts no hours. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
holiday_date | Date (one day per organisation). | date | Yes |
name | Name. | text, max. 128 characters | Yes |
kind | Type of day. Allowed values: public (statutory public holiday), closure (closure day of your organisation). | text, max. 8 characters | Yes |
code | Code of the statutory public holiday the Platform filled in; empty for a day your organisation entered itself. | text, max. 32 characters | No |
Relations: company_id refers to companies.id.
leave_types: Types of leave and absence that your organisation sets up. By default: statutory leave, extra-statutory leave or working time reduction (ADV), sickness (without approval, with a certificate), special leave, unpaid leave and training. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
code | Code (unique per organisation). | text, max. 32 characters | Yes |
name | Name. | text, max. 128 characters | Yes |
color | Colour in the calendar, as a hexadecimal code (for example #79AA38). | text, max. 7 characters | Yes |
category | Category of the absence blocks in the calendar (scheduled_slots.category) and of the row in the timesheets. Allowed values: holiday (leave), sick, office. | text, max. 8 characters | Yes |
requires_approval | A request must be approved; without approval it is approved at once. | yes/no | Yes |
self_requestable | The employee can request or report this type themselves. | yes/no | Yes |
deducts_balance | Is deducted from the leave entitlements (leave_allocations). | yes/no | Yes |
needs_certificate | A certificate goes with it, such as a sick note. The Platform does not store the certificate, only the date it was received (leave_requests.certificate_received_on). | yes/no | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
sort_order | Order in lists. | integer | Yes |
Relations: company_id refers to companies.id.
leave_allocations: Leave entitlements in hours per employee, leave type and calendar year. Lines add up: a carry-over from the previous year is an extra line. The balance is what was allocated minus the approved leave of that type in that year. When the employee is erased under the GDPR, this is kept until employees.retention_until, after which the Platform erases it. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
employee_id | Employee (key from employees). | integer | Yes |
leave_type_id | Leave type (key from leave_types). | integer | Yes |
year | Calendar year. | integer | Yes |
hours | Number of hours. | decimal number, 2 decimals | Yes |
note | Comment from your organisation, for example for a carry-over. | text, max. 255 characters | No |
Relations: employee_id refers to employees.id; leave_type_id refers to leave_types.id.
leave_requests: Leave requests, sickness reports and leave registered by your organisation, with the decision. For sickness, only the type and the period: the Platform stores no sick notes or diagnosis, only the date the certificate was received. A request falls within a single calendar year. Approved leave of an instructor becomes absence blocks in the calendar, one per working window (scheduled_slots.leave_request_id). When the employee is erased under the GDPR, reason and decision_note are removed at once; the rest is kept until employees.retention_until and then erased, with the absence blocks. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
employee_id | Employee (key from employees). | integer | Yes |
leave_type_id | Type of leave or absence (key from leave_types). | integer | Yes |
requested_by_id | User who entered the request: the employee themselves or someone from your organisation (key from users). | integer | No |
decided_by_id | User who approved, rejected or cancelled the request (key from users). | integer | No |
start_date | First day. | date | Yes |
end_date | Last day. | date | Yes |
day_part | Part of the day; half a day or a number of hours is only possible for a single day. Allowed values: full (full day), am (morning (before 12:00)), pm (afternoon (from 12:00)), hours (number of hours (time_from to time_to)). | text, max. 5 characters | Yes |
time_from | Start time (HH:MM), for a number of hours. | text, max. 5 characters | No |
time_to | End time (HH:MM), for a number of hours. | text, max. 5 characters | No |
minutes | Scheduled working time covered by the request, in minutes, calculated from the work schedule without public holidays and other leave; recalculated on approval. | integer | Yes |
state | Status of the request. Allowed values: requested (requested, awaiting a decision), approved, rejected, cancelled (cancelled or withdrawn). | text, max. 10 characters | Yes |
reason | Comment from the employee with the request; erased when the employee is erased. | text, max. 500 characters | No |
decided_at | Time of the decision. | date and time | No |
decision_note | Explanation of the decision; required for a rejection; erased when the employee is erased. | text, max. 500 characters | No |
certificate_received_on | Date your organisation received the certificate; the certificate itself is not in the Platform. | date | No |
created_at | Time the record was created. | date and time | Yes |
Relations: employee_id refers to employees.id; leave_type_id refers to leave_types.id; requested_by_id refers to users.id; decided_by_id refers to users.id.
attendance_entries: Worked time: clocking in and out with the button in the Platform, days an instructor confirms from the suggestions based on their planning, and entries made by your organisation. Only if your organisation switches on time tracking. In whole minutes and without location or biometric data; an entry lasts at most 24 hours and the entries of an employee do not overlap. Every entry your organisation adds, corrects or deletes is recorded, with the old and new times, in the employee's history. When the employee is erased under the GDPR, note is removed at once; the rest is kept until employees.retention_until and then erased. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
employee_id | Employee (key from employees). | integer | Yes |
created_by_id | User who created the entry: the employee themselves or someone from your organisation (key from users). | integer | No |
corrected_by_id | User from your organisation who last corrected the entry (key from users). | integer | No |
check_in_at | Start. | date and time | Yes |
check_out_at | End; empty as long as the employee is still clocked in. | date and time | No |
source | Origin of the entry. Allowed values: button (clocked in or out with the button), suggestion (suggestion from the planning, confirmed by the instructor), manual (entered by your organisation). | text, max. 10 characters | Yes |
note | Comment; erased when the employee is erased. | text, max. 255 characters | No |
corrected_at | Time of the last correction by your organisation. | date and time | No |
warned_at | Time the warning went out that the employee is still clocked in (after the number of hours your organisation sets). | date and time | No |
created_at | Time the record was created. | date and time | Yes |
Relations: employee_id refers to employees.id; created_by_id refers to users.id; corrected_by_id refers to users.id.
dimona_declarations: Not yet available: flexi-Dimona will follow later. Specification of the flexi-Dimona declarations that BIQSDRIVE will submit to the RSZ in the name and on the instructions of your organisation, with its own RSZ access (declaration, change and cancellation), with the response from the RSZ. The Platform will only submit flexi-Dimona declarations. The INSZ is not in this file; where the Platform will store it with the employee has not been decided yet. The Platform keeps the declarations for five years from the day after the last day of the work period or of the period they relate to and then erases them (Article 6.10 of the Subscription Agreement); at the end of the agreement, the standard erasure applies. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
employee_id | Employee (key from employees). | integer | Yes |
company_id | Employer for whom the declaration was made (key from companies). | integer | Yes |
action | Type of declaration. Allowed values: in (declaration of employment), update (change), cancel (cancellation). | text, max. 8 characters | Yes |
worker_type | Type of worker as declared: always FLX (flexi-job worker). | text, max. 3 characters | Yes |
joint_committee | Joint committee as declared: always XXX (flexi-job). | text, max. 8 characters | Yes |
work_date | Date of the work period, or first day of the declared period. | date | Yes |
end_date | Last day of the declared period, for a declaration covering a period (written flexi-job employment contract); empty for a declaration for a single day. | date | No |
start_time | Start time as declared. | time (HH:MM) | No |
end_time | End time as declared. | time (HH:MM) | No |
triggered_by | What triggered the declaration. Allowed values: planning (confirmation of the start of the shift in the planning), time_clock (time record), office (your organisation). | text, max. 16 characters | Yes |
attendance_entry_id | Worked time entry that triggered the declaration, for example a later start (key from attendance_entries). | integer | No |
status | Status of the declaration. Allowed values: queued (ready to send), held (held back before sending by a user with the HR permission of your organisation; not sent), sent (sent, awaiting response), ok (accepted by the RSZ, response OK), nok (accepted by the RSZ, response NOK: not accepted as a flexi-job), refused (rejected by the RSZ), error (technical error). | text, max. 16 characters | Yes |
billable | Counts as a charged flexi-Dimona declaration (Annex B.2 of the Subscription Agreement): yes for a declaration (in) accepted by the RSZ, with or without warnings, including with the response NOK; no for a change, a cancellation, a rejection or a technical error. | yes/no | Yes |
declaration_reference | Reference of the declaration at the RSZ. | text, max. 64 characters | No |
period_reference | Number of the Dimona period at the RSZ. | text, max. 64 characters | No |
sent_at | Time the declaration was sent to the RSZ. | date and time | No |
response_at | Time of the response from the RSZ. | date and time | No |
response_detail | Explanation of a negative response, a rejection or an error, as given by the RSZ. | text, max. 500 characters | No |
created_by_user_id | User who sent or confirmed the declaration manually, or held it back before sending (key from users); empty for an automatic declaration. | integer | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: employee_id refers to employees.id; company_id refers to companies.id; attendance_entry_id refers to attendance_entries.id; created_by_user_id refers to users.id.
13. Prospects (CRM) (CSV/XLSX and JSON)
leads: Prospects: people who phone, walk in, ask for information through the inquiry form or start an online registration without finishing it, and companies that show interest. Only if your organisation switches on the CRM. The Platform automatically closes an open prospect without activity for the number of days your organisation sets (crm.auto_close_days, default 30; 0 = never) as lost with the reason no response (closed_automatically), unless an automatic follow-up is still running; it stays in the figures and can be reopened. Prospects that have been closed for longer than the set number of months (crm.retention_months, default 24) are anonymised by the Platform daily: name, company name, contact details, date of birth, VAT number, question, notes and click IDs are removed, as is the whole history of the prospect; channel, origin, campaign, stage, status, reasons, interest and dates stay for the figures. The same happens on a request for erasure. A won prospect points to the customer, who keeps their own data. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
branch_id | Preferred branch (key from branches); empty = the whole organisation. | integer | No |
kind | Type of prospect. Allowed values: private (private person (becomes a student or trainee)), company (company (becomes a business customer)). | text, max. 8 characters | Yes |
stage_id | Stage on the board (key from lead_stages). | integer | No |
status | Status of the prospect. Allowed values: open, won (won: registered or converted to a customer), lost. | text, max. 8 characters | Yes |
won_at | Time the prospect was won. | date and time | No |
lost_at | Time the prospect was lost. | date and time | No |
lost_reason_id | Reason for loss (key from lead_lost_reasons). | integer | No |
lost_note | Explanation of the loss. Erased on anonymisation. | text | No |
closed_automatically | Closed automatically after the set number of days without activity. | yes/no | Yes |
pending_reason_id | Why an open prospect has not registered yet (key from lead_pending_reasons); emptied once it is won or lost. | integer | No |
first_name | First name. Erased on anonymisation. | text, max. 128 characters | No |
last_name | Last name. Erased on anonymisation. | text, max. 128 characters | No |
email | Email address, in lower case. Erased on anonymisation. | text, max. 180 characters | No |
phone | Phone number. Erased on anonymisation. | text, max. 32 characters | No |
birth_date | Date of birth. Erased on anonymisation. | date | No |
lang | Language for communication. | text, max. 2 characters | Yes |
organisation_name | Name of the company, for a company as a prospect; replaced by a meaningless sign on anonymisation. | text, max. 255 characters | No |
vat_number | VAT number. Erased on anonymisation. | text, max. 32 characters | No |
interest | Interest. Allowed values: theory, practical, both (theory and practical). | text, max. 12 characters | No |
license_type_id | Category the prospect is interested in (key from license_types). | integer | No |
product_id | Package the prospect asked about (key from products). | integer | No |
message | Question from the prospect, for example from the inquiry form or on the phone. Erased on anonymisation. | text | No |
channel | How the prospect came in. Allowed values: manual (entered manually), phone, walk_in (walk-in), email, inquiry_form (inquiry form (set by the Platform)), registration (online registration (set by the Platform)). | text, max. 16 characters | Yes |
origin_id | How the prospect heard of your organisation (key from lead_origins). | integer | No |
origin_detail | Detail on the origin, for example through whom. Erased on anonymisation. | text, max. 255 characters | No |
utm_source | Campaign data from the link: source (utm_source). | text, max. 128 characters | No |
utm_medium | Campaign data from the link: medium (utm_medium). | text, max. 128 characters | No |
utm_campaign | Campaign data from the link: campaign (utm_campaign). | text, max. 128 characters | No |
utm_content | Campaign data from the link: content (utm_content). | text, max. 128 characters | No |
utm_term | Campaign data from the link: term (utm_term). | text, max. 128 characters | No |
ad_click_ids | Ad click IDs (gclid, gbraid, wbraid, fbclid, fbc, fbp) as they arrived; only passed to an advertising platform with marketing consent. Erased on anonymisation. | JSON structure | No |
ad_platform | Advertising platform the click came from, derived from a click ID or from paid campaign data. Allowed values: google (Google Ads), meta (Meta (Facebook, Instagram)). | text, max. 8 characters | No |
ad_consent | Answer to the cookie banner of the public page the prospect came in through: statistics and marketing (yes or no), version and time. Decides whether a conversion may go to an advertising platform (ad_conversions). | JSON structure | No |
assignee_id | User who follows up the prospect (key from users). | integer | No |
next_follow_up_at | Call-back date. | date | No |
next_follow_up_note | Note for the call-back. Erased on anonymisation. | text, max. 255 characters | No |
first_contact_at | Time of the first contact by your organisation. | date and time | No |
last_activity_at | Time of the last action by a person (your organisation or the prospect); automatic follow-ups do not count. Drives the automatic closing. | date and time | No |
student_id | Customer the prospect became (key from students). | integer | No |
business_account_id | Business customer the prospect became (key from business_accounts). | integer | No |
order_id | Order of the registration (key from sales_orders). | integer | No |
registration_submission_id | Online registration of the prospect (key from registration_submissions). | integer | No |
registration_state | Status of the prospect's online registration. Allowed values: in_progress (in progress), abandoned, completed. | text, max. 12 characters | No |
marketing_consent | The prospect gave marketing consent (for example in the inquiry form). | yes/no | Yes |
consent_at | Time of that consent. | date and time | No |
follow_up_opt_out | The prospect no longer wants automatic follow-up messages (for example through the unsubscribe link under an email). | yes/no | Yes |
opt_out_at | Time of that opt-out. | date and time | No |
anonymised_at | Time the prospect was anonymised. | date and time | No |
created_at | Time the record was created. | date and time | Yes |
updated_at | Time the record was last changed. | date and time | Yes |
Relations: company_id refers to companies.id; branch_id refers to branches.id; stage_id refers to lead_stages.id; lost_reason_id refers to lead_lost_reasons.id; pending_reason_id refers to lead_pending_reasons.id; license_type_id refers to license_types.id; product_id refers to products.id; origin_id refers to lead_origins.id; assignee_id refers to users.id; student_id refers to students.id; business_account_id refers to business_accounts.id; order_id refers to sales_orders.id; registration_submission_id refers to registration_submissions.id.
lead_stages: Stages of the prospects on the board (columns), per organisation. Won and lost are not stages but the status of the prospect. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
names | Name in each language (nl, fr, en and de). | JSON structure | Yes |
sequence | Position in the list and order of the columns on the board. | integer | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
system_key | Code by which the Platform recognises an entry; such an entry can be renamed and switched off but not deleted. Empty for an ordinary entry. | text, max. 32 characters | No |
folded | Narrow column on the board. | yes/no | Yes |
Relations: company_id refers to companies.id.
lead_lost_reasons: Reasons why a prospect is lost, per organisation. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
names | Name in each language (nl, fr, en and de). | JSON structure | Yes |
sequence | Position in the list. | integer | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
system_key | Code by which the Platform recognises an entry; such an entry can be renamed and switched off but not deleted. Empty for an ordinary entry. Allowed values: no_response (no response (used by the automatic closing)). | text, max. 32 characters | No |
Relations: company_id refers to companies.id.
lead_pending_reasons: Reasons why an open prospect has not registered yet, per organisation. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
names | Name in each language (nl, fr, en and de). | JSON structure | Yes |
sequence | Position in the list. | integer | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
system_key | Code by which the Platform recognises an entry; such an entry can be renamed and switched off but not deleted. Empty for an ordinary entry. | text, max. 32 characters | No |
Relations: company_id refers to companies.id.
lead_origins: Origin: how a prospect heard of your organisation, per organisation. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
names | Name in each language (nl, fr, en and de). | JSON structure | Yes |
sequence | Position in the list. | integer | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
system_key | Code by which the Platform recognises an entry; such an entry can be renamed and switched off but not deleted. Empty for an ordinary entry. Allowed values: google_ads (Google ad), meta_ads (Meta ad (Facebook, Instagram)). | text, max. 32 characters | No |
Relations: company_id refers to companies.id.
lead_follow_up_sequences: Sequences for the automatic follow-up of prospects, per organisation: steps with an email or text message after a waiting time. Of the active sequences that match a new prospect, it gets the most specific one (with channel or origin), then the one with the lowest priority number. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
name | Name. | text, max. 128 characters | Yes |
trigger_key | Trigger that starts the sequence. Allowed values: registration_abandoned (online registration abandoned), inquiry (question through the inquiry form), any_new (new prospect entered by your organisation). | text, max. 32 characters | Yes |
channel | Only for prospects who came in through this channel (as leads.channel); empty = any channel. | text, max. 16 characters | No |
origin_id | Only for prospects with this origin (key from lead_origins); empty = any origin. | integer | No |
priority | Priority: the lowest number goes first. | integer | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
Relations: company_id refers to companies.id; origin_id refers to lead_origins.id.
lead_follow_up_steps: Steps of a follow-up sequence. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
sequence_id | Follow-up sequence (key from lead_follow_up_sequences). | integer | Yes |
position | Order in the sequence. | integer | Yes |
delay_minutes | Waiting time in minutes after the start (first step) or after the previous step; at most 60 days. | integer | Yes |
channel | Type of message. Allowed values: mail (email), sms (text message). | text, max. 8 characters | Yes |
mail_template_id | Email template of your organisation that is sent; empty for a text message. | integer | No |
sms_texts | Text of the text message per language. | JSON structure | No |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
Relations: sequence_id refers to lead_follow_up_sequences.id.
lead_follow_up_runs: The automatic follow-up running for a prospect: at most one per prospect, never restarted. Before each step it stops if the prospect is won or lost, completed the registration, unsubscribed or has no email address or phone number, if the sequence is switched off or, if your organisation sets this, if someone from your organisation made contact. Emails and text messages sent are in the prospect's history. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
lead_id | Prospect (key from leads; one per prospect). | integer | Yes |
sequence_id | Follow-up sequence (key from lead_follow_up_sequences); empty if the sequence was deleted. | integer | No |
next_step | Index of the next active step. | integer | Yes |
next_due_at | Time the next step is due. | date and time | No |
state | Status of the follow-up. Allowed values: running, stopped, finished (all steps sent). | text, max. 12 characters | Yes |
stop_reason | Reason for stopping. Allowed values: won (prospect won), lost (prospect lost), registration_completed (registration completed), staff_contact (contact by your organisation), opted_out (unsubscribed), no_contact_data (no email address or phone number), sequence_disabled (sequence switched off), by_staff (stopped by your organisation). | text, max. 24 characters | No |
sent | Number of steps sent (skipped steps do not count). | integer | Yes |
started_at | Time of the start. | date and time | Yes |
ended_at | Time of the end. | date and time | No |
Relations: lead_id refers to leads.id; sequence_id refers to lead_follow_up_sequences.id.
inquiry_forms: Public inquiry forms of your organisation. A completed form becomes a prospect (leads, channel inquiry_form) or adds to an open prospect with the same email address; this file itself stores no answers. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
code | Code in the public link (unique, does not change). | text, max. 12 characters | Yes |
name | Name. | text, max. 128 characters | Yes |
title | Title of the page; empty = a standard title in the visitor's language. | text, max. 160 characters | No |
license_type_id | Preset category (key from license_types); empty = the visitor chooses. | integer | No |
branch_id | Preset branch (key from branches); empty = the visitor chooses. | integer | No |
ask_interest | Asks about theory or practical. | yes/no | Yes |
ask_origin | Asks how the visitor heard of your organisation. | yes/no | Yes |
ask_message | Has a free field for a question. | yes/no | Yes |
active | Active (yes) or no longer in use (no). | yes/no | Yes |
Relations: company_id refers to companies.id; license_type_id refers to license_types.id; branch_id refers to branches.id.
ad_conversions: Conversions that the Platform sends from the server to Google Ads or Meta (a prospect, a completed registration, or a prospect who later became a customer), only if your organisation sets this up. A conversion only goes out with the visitor's marketing consent; for the platform the prospect's click came from, a row with status skipped is kept even without consent, without visitor data. The prospect's email address, phone number and name are only normalised and hashed with SHA-256 at the time of sending; this file stores no hashed or plain identifiers. IP address, browser and page are only there while the conversion still has to go out: they are erased when it is sent or fails for good, and a daily clean-up erases what is left on older and skipped rows. When the prospect is anonymised, the order number is removed too; platform, moment, status and value stay for the figures. Key: id.
| Field | Description | Type | Required |
|---|---|---|---|
id | Unique key of the record in this file. | integer | Yes |
company_id | Key of the organisation. | integer | Yes |
lead_id | Prospect (key from leads). | integer | No |
platform | Advertising platform. Allowed values: google (Google Ads), meta (Meta (Facebook, Instagram)). | text, max. 8 characters | Yes |
event | Moment that counts as a conversion. Allowed values: lead (new prospect (online registration or inquiry form)), registration (online registration completed), won_later (became a customer later, converted by your organisation). | text, max. 16 characters | Yes |
event_id | Identifier of the moment, the same as in the browser, so that the platform counts it once (unique per platform). | text, max. 64 characters | Yes |
value | Value of the conversion. | decimal number, 2 decimals | No |
currency | Currency, as a three-letter code (ISO 4217), for example EUR. | text, max. 3 characters | No |
occurred_at | Time of the moment. | date and time | Yes |
order_id | Order number behind a registration, otherwise the event_id; erased when the prospect is anonymised. | text, max. 64 characters | No |
client_ip | IP address of the visitor at the moment itself; only with consent and only while the conversion still has to go out. | text, max. 45 characters | No |
user_agent | Browser and device of the visitor (user agent); only with consent and only while the conversion still has to go out. | text, max. 255 characters | No |
source_url | Page on which the moment happened; only with consent and only while the conversion still has to go out. | text, max. 255 characters | No |
status | Status of the sending. Allowed values: queued (ready to send), sent, skipped, failed. | text, max. 10 characters | Yes |
detail | Reason for skipping (no_consent: no consent; not_configured: platform not set up; no_match_key: for Google, no click ID and no email address or phone number) or the error message of the platform. | text, max. 255 characters | No |
attempts | Number of sending attempts (at most 4 automatically). | integer | Yes |
created_at | Time the record was created. | date and time | Yes |
sent_at | Time of sending. | date and time | No |
Relations: company_id refers to companies.id; lead_id refers to leads.id.
Formats and standards used:
| Format | Standard | Use |
|---|---|---|
| CSV | RFC 4180, UTF-8 character encoding | Tables, easy to import into other software |
| XLSX | Office Open XML (ISO/IEC 29500) | Tables for Excel and similar programs |
| JSON | RFC 8259, with a JSON Schema description | Complete structure with relationships, for a switch to other software |
| ISO 32000 | Invoices and generated documents | |
| Dates and times | ISO 8601 (for example 2026-10-01T09:30:00+02:00) | In all export files |
5. Switching to another supplier or stopping
You can switch to another supplier or to your own infrastructure at any time, or ask for your data to be erased. This is how it works:
| Step | Period | What happens |
|---|---|---|
| 1. Termination | Monthly Plan: at the end of the calendar month following the month in which notice is given. Annual Plan: at the end of the current period if notice is given at least 30 days in advance, or mid-term, two months after notice is given | You tell us through your Account or at info@biqsdrive.com that you want to switch or have your data erased |
| 2. Transition period (on request) | Up to 30 days, extendable once | The service continues at the ordinary licence fee for that period; we provide reasonable help with the switch and keep security at the required level |
| 3. Retrieval period | 30 days | You retrieve your full export free of charge, also after termination for non-payment |
| 4. Erasure | After the retrieval period; backups within 35 days after the end of the retrieval period | All Customer Data is erased; on request we confirm this in writing |
If a switch within 30 days is not technically feasible, we will tell you within 14 working days, with an explanation and an alternative period of no more than seven months.
To make a switch go smoothly, include the following in your request: the desired end date, whether you want a transition period, the format or supplier you are switching to, and a contact person.
6. Costs
| What | Cost |
|---|---|
| Standard export (at any time, also during the retrieval period) | Always free |
| Erasure of your data | Always free |
| Switching assistance that we must provide under the Data Act | Up to and including 11 January 2027: no more than the costs directly linked to it, as stated in advance in the Price List. From 12 January 2027: free |
| Additional services you request yourself (such as training, cleaning up data or converting it to the format of a new supplier, custom work) | At the rates in the Price List, after a prior quote |
| Help with a switch to BIQSDRIVE | Free, unless your Order provides otherwise |
| Early termination of an Annual Plan | The annual discount granted for the months that have elapsed becomes payable (Article 4.5 of the Subscription Agreement), never more than the licence fee for the remaining term. Amounts paid in advance for the remaining months are refunded after set-off |
| Licence fee during the notice period and a requested transition period | Payable in accordance with the Price List |
7. What the export does not include
The export contains all the data that your organisation has entered or generated in the Platform. The only exclusions are:
- the source code, the algorithms and the software of the Platform;
- internal logs, security and monitoring data of BIQSDRIVE;
- aggregated, anonymised statistics;
- passwords, keys and other authentication data;
- the internal configuration of the BIQSDRIVE infrastructure;
- data that is only available from a third party, such as Isabel NV, Microsoft (the list of undeliverable addresses), a review or survey service (Tally, Klantenvertellen or Google), Pay. or the systems of a government or an exam centre;
- outgoing and unmatched bank transactions, which the Platform does not store (Annex D.4 of the Subscription Agreement).
These exclusions do not prevent a switch. Your new supplier must set up connections with third parties (such as governments, exam centres or your mail server) again itself.
8. Contact
Questions about your data or a switch: info@biqsdrive.com. Questions about the register of data structures: data@biqsdrive.com. You can also use the support function in the Platform.
Free trial period: you can always make an export during the trial period. If you do not activate after a trial period, we keep your data for 30 days after the end of the agreement. After that we erase it, and the copies in backups no later than 35 days later. During those 30 days you can still request an export at info@biqsdrive.com.
BIQSDRIVE 27 is offered by BIQSDRIVE BV, Kolmen 35 box 1, 3980 Tessenderlo-Ham, enterprise number and VAT BE 1044.893.601, RLE Antwerp, Hasselt division.