Skip to content
Developer

Importing data

Import members, accounts, SEPA data, memberships, products, offers and bank statements from CSV or Excel, in the interface or via the API.

vynst (inwendo ERP) imports data from spreadsheets without a mapping tool. vynst recognises what a file contains from its file name and its header row, and imports it in the background. This guide shows the most important imports with sample files, and how to automate the same steps via the API.

Every single import with all its columns and an example file to download is described under Imports.

Step What you do
1. Prepare create a table with the matching header row and save it as CSV (UTF-8) or Excel
2. Name name the file so that vynst recognises the import, for example AFS_PERSON_members.csv
3. Upload Settings → Import → Add (Einstellungen → Import → Hinzufügen), or POST /api/dw/import/file.json
4. Check look at the status and the log, correct the error rows, and upload again

Tip: You can repeat an import without risk. Identical numbers update existing records instead of creating duplicates.

Before you start

Rights

To use the Import menu item, you need the Imports access right. In addition, vynst checks the right for the area you import, for example CRM for people, Products for products or Payments for bank statements. Most imports are reserved for administrators.

Backup

An import cannot be undone with one click. Before larger imports, export the affected data under Settings → Export (Einstellungen → Export).

Preparing the file

  • Format: CSV or Excel (.xlsx, .xls). With Excel, each sheet is treated as a separate import.
  • Character set: UTF-8. In Excel: Save as → CSV UTF-8 (comma delimited) (CSV UTF-8 (durch Trennzeichen getrennt)).
  • Delimiter: comma , or semicolon ;. Put texts that contain the delimiter in double quotes "…".
  • First row = header row with the column names from this guide. Keep the spelling exactly, including upper and lower case.
  • Do not place required columns at the very end. At least one more column should follow them.
  • Dates: 2026-03-01 or 01.03.2026.
  • Amounts: 1234.56 or 1.234,56.
  • Yes/No: ja/nein (yes/no), 1/0 or true/false.
  • Size: up to 200 MB. vynst splits large files into batches of 1000 rows.

Numbers are the key

Each row needs a unique number, for example the membership number from your previous program. vynst stores it as the Imported ID (Importierte ID).

  • A later import with the same number updates the record.
  • A new number creates a new record.
  • Later imports (memberships, SEPA data, links) refer to people and accounts by exactly these numbers. Use the same numbers in all files.

Running an import

  1. Open Settings → Import.
  2. Click Add and select the file.
  3. The file appears in the list immediately and is processed in the background. You do not need to reload the page.

Reading the status

Each import has a coloured line on its left:

Line Meaning
Black waiting or running
Green completed
Red aborted, see the log

Below the entry is the log. The most important lines:

Line Meaning What to do
Processed 250 lines / Read: 250 rows this many rows were read nothing
Info: split into 4 files the large file was split; the parts appear as separate entries nothing
Error: skipped … this row was not imported; below it, the row appears as LINE-DATA correct the row and import only these rows again
Warning: … row imported, one value was ignored, for example an unknown product check the value
FAILED: No matching processor found. vynst did not recognise what the file is check the file name and header row
FAILED: not exactly one handler found the file matches several imports choose a unique file name, for example with AFS_PERSON_
FAILED: User missing rights to import. you lack a right for this area ask an administrator

Green does not mean error-free. An import is green even if individual rows were skipped. Always check the log for Error:.

The most important imports

Column names come in two variants: technical (FIRST_NAME) and German (Vorname). Both work. The tables show the German variant and, in brackets, the technical name.

1 Sections  →  2 Products  →  3 People  →  4 Billing accounts  →  5 Link person to account
            →  6 SEPA data  →  7 Memberships  →  8 Locations, rooms and offers

Each step uses the numbers from the previous steps.

1. Sections and categories

File name: any, for example sections.csv Right: CRM

Column Required Content
UNIFIED_CATEGORY_IDENTIFIER yes, as the first column your number for the section
UNIFIED_CATEGORY_NAME yes, directly after it name
PARENT_IDENTIFIER number of the parent section
EXTERNAL_DESCRIPTION description for members
IS_PUBLIC ja if publicly visible
CREATE_ACCESS_TAG ja creates a matching access tag
UNIFIED_CATEGORY_IDENTIFIER,UNIFIED_CATEGORY_NAME,PARENT_IDENTIFIER,IS_PUBLIC
FB,Football,,ja
FB-JUG,Football youth,FB,ja
TUR,Gymnastics,,ja

2. Products (fees, tariffs)

File name: must contain AFS_PRODUCT_, for example AFS_PRODUCT_fees.csv Right: administrator with Products

Column Required Content
Produkt-ID (PRODUCT_IDENTIFIER) yes your number for the product
Produktname (PRODUCT_NAME) yes name on the invoice
Preis (PRICE) yes gross price per billing period
Abrechnungsart (BILLING_TYPE) for example subscription for recurring fees, fixed for one-off charges
Abrechnungsintervall (RECURRENCE) interval as set up in vynst, for example 1 month or 1 year
Sparten-ID (UNIFIED_CATEGORY_IDENTIFIER) section from step 1
Produkt-ID;Produktname;Preis;Abrechnungsart;Abrechnungsintervall;Sparten-ID
ERW;Adults;12,00;subscription;1 month;FB
JUG;Youth;8,00;subscription;1 month;FB-JUG
FAM;Family;25,00;subscription;1 month;

For all fields of a product, use the detailed product import: under Settings → Export (Einstellungen → Export), download the products export (Export der Produkte), edit it and upload it again.

3. People and members

File name: must contain AFS_PERSON_, for example AFS_PERSON_members.csv Right: administrator with CRM

Column Required Also accepted
Mitgliedsnummer (PERSON_IDENTIFIER) yes Mitglieds-Nr., MitgliedID, PERSON_ID
Vorname (FIRST_NAME) yes
Nachname (LAST_NAME) yes Name
Geburtsdatum (BIRTHDAY) Geburtstag
Geschlecht (GENDER)
Titel (TITLE)
Straße (ADDRESS_STREET) Strasse, Straße und Hausnummer
PLZ (ADDRESS_ZIP) Postleitzahl
Ort (ADDRESS_CITY) Wohnort, Stadt
Land (ADDRESS_COUNTRY)
E-Mail (MAIN_EMAIL) E-Mail-Adresse, E-Mail 2
Telefon (MAIN_PHONE) Telefon 2, Mobil, Mobiltelefon
Eintrittsdatum (START_DATE) Beginn, Eintritt
Austrittsdatum (END_DATE) Ende, Austritt
Notiz (NOTE) Bemerkung
BuT-Nummer (FINANCIAL_SUPPORT_NUMBER)
Mitgliedsnummer;Vorname;Nachname;Geburtsdatum;Straße;PLZ;Ort;E-Mail;Eintrittsdatum
1001;Lena;Hartmann;14.05.1988;Jakobistr. 39;30163;Hannover;lena@example.org;01.01.2020
1002;Jonas;Hartmann;02.09.2014;Jakobistr. 39;30163;Hannover;;01.03.2022

Additions in the file name:

Addition Effect
WITH_COMPANY creates a separate billing account for each person straight away
COMPANY_CONTACT only changes the contact data of existing accounts
ohne_mitgliedschaft creates no membership

4. Billing accounts

A billing account is the payer, for example a family or a company.

File name: must contain AFS_ACCOUNT_ Right: administrator with CRM

Column Required Also accepted
Kontonummer (COMPANY_IDENTIFIER) yes ACCOUNT_IDENTIFIER, Abrechnungskontonummer
Firmenname (COMPANY_NAME) or Vorname + Nachname yes Firma, Abrechnungskontenname
Address, email, phone as for people
IBAN, BIC, Mandatsreferenz see step 6
COMPANY_IDENTIFIER;Firmenname;Straße;PLZ;Ort;E-Mail
K-1001;Family Hartmann;Jakobistr. 39;30163;Hannover;lena@example.org

File name: must contain AFS_LINK_PERSON_ Right: administrator with CRM

PERSON_IDENTIFIER;COMPANY_IDENTIFIER;Vorname;Nachname
1001;K-1001;Lena;Hartmann
1002;K-1001;Jonas;Hartmann

6. SEPA direct debit data

File name: must contain AFS_SEPA_ Right: administrator with CRM

Column Required Also accepted
Kontonummer (COMPANY_IDENTIFIER) yes
IBAN (PAYMENT_IBAN) yes IBAN
Mandatsreferenz (PAYMENT_MANDATE) yes SEPA-Mandatsreferenz, MandatNr
Mandatsreferenz gültig ab (PAYMENT_MANDATE_SIGN_DATE) Mandatsreferenz gültig ab
BIC (PAYMENT_BIC) BIC
Kontoinhaber (PAYMENT_OWNER) Kontoinhaber
COMPANY_IDENTIFIER;IBAN;Mandatsreferenz;Mandatsreferenz gültig ab;Kontoinhaber
K-1001;DE02120300000000202051;M-1001;01.01.2020;Lena Hartmann

7. Memberships

File name: must contain AFS_MEMBERSHIP_ Right: administrator with CRM

Column Required Content
PERSON_IDENTIFIER yes membership number from step 3
COMPANY_IDENTIFIER yes account from step 4; the person must be linked to that account
Sparten-ID (UNIFIED_CATEGORY_IDENTIFIER) yes section from step 1
Produkt-ID (PRODUCT_IDENTIFIER) yes product from step 2
Eintrittsdatum / Austrittsdatum start and end
Produkt ermäßigt, Ermäßigt ab, Ermäßigt bis reduced fee for a period
Produkt passiv, Passiv ab, Passiv bis passive membership
Produkt beitragsfrei, Frei ab, Frei bis fee-free period
Zahlungsart (PAYMENT_TYPE) for example Lastschrift (direct debit)
PERSON_IDENTIFIER;COMPANY_IDENTIFIER;Sparten-ID;Produkt-ID;Eintrittsdatum
1001;K-1001;FB;ERW;01.01.2020
1002;K-1001;FB-JUG;JUG;01.03.2022

8. Locations, rooms and offers

The easiest way is one Excel file with three sheets named Orte, Räume and Angebote (locations, rooms, offers). vynst imports them in this order. Keep the sheet names exactly as shown.

Right: Events

Orte (locations)

Column Required
LOCATION_IDENTIFIER (Standort-ID) yes
LOCATION_NAME (Standortname) yes
ADDRESS_STREET_LEVEL, ADDRESS_ZIP, ADDRESS_CITY
MAIN_EMAIL, MAIN_PHONE, WEBSITE

Räume (rooms)

Column Required Content
OBJECT_IDENTIFIER (Raumnummer) yes room number
OBJECT_NAME yes room name
LOCATION_IDENTIFIER location the room belongs to

Angebote (offers)

Column Required Content
EVENT_IDENTIFIER (Kurs-ID) yes your number
EVENT_NAME (Kursname) yes name
LOCATION_IDENTIFIER, OBJECT_IDENTIFIER location and room
START_DATE, END_DATE period
WEEKDAYS weekdays
PEOPLE_LIMIT maximum number of participants
MAIN_CONTACT_IDENTIFIER (Trainer) trainer: person number, member number or email
UNIFIED_CATEGORY_IDENTIFIERS several sections separated by |~|, e.g. FB|~|TUR
EXTERNAL_DESCRIPTION description for members
EVENT_IDENTIFIER;EVENT_NAME;LOCATION_IDENTIFIER;START_DATE;END_DATE;PEOPLE_LIMIT;Trainer
K-YOGA;Evening yoga;HALLE1;06.01.2026;30.06.2026;15;trainer@example.org

Bank statements

Import account statements from online banking under Billing → Bank imports → Add (Abrechnung → Bank-Importe → Hinzufügen). vynst then matches the transactions automatically to invoices, direct debits and accounts.

Format File Where to upload
CAMT.052 / .053 / .054 .xml Bank imports
CSV export (CAMT format, for example Sparkasse) .csv Bank imports
Other bank CSV .csv, file name starts with Bank, Zahlungen or Transaktionen Bank imports
MT940 .sta or .txt Settings → Import

vynst recognises transactions that are already imported and skips them. You can therefore upload overlapping periods.

For a general bank CSV, vynst understands these columns: Buchungstag, Valutadatum, Betrag, Verwendungszweck, Buchungstext, Beguenstigter/Zahlungspflichtiger (or Name), Kontonummer/IBAN, BIC (SWIFT-Code), Mandatsreferenz, Kundenreferenz (End-to-End).

Small helpers

The helpers work on people who are already in vynst. PERSON_IDENTIFIER holds the person number with its prefix as vynst shows it (for example M-1001) or the imported ID (for example AFS_CSV_1001 for member number 1001 from the person import). vynst reads a plain number as its internal record ID.

Change one field for many people

PERSON_IDENTIFIER,UPDATE_SINGLE_FIELD_NAME,FIELD_VALUE
AFS_CSV_1001,Newsletter,ja
AFS_CSV_1002,Notiz,Pays cash

Possible fields: Vorname, Nachname, Newsletter, Magazin, Notiz, Mitglied seit, Mitglied bis, BuT, BuT-Nummer. Use SET_IW_EMPTY to clear a field.

Enable logins for members

PERSON_IDENTIFIER,TRIGGER_ACTIVATE_PERSON_LOGIN
AFS_CSV_1001,ja
AFS_CSV_1002,ja

Vouchers from a legacy system

Vouchers are imported with a separate file. The inwendo team helps with the transfer.

Roles and functions

Roles and functions (board, trainers, instructors) are also created with a file. The inwendo team helps with the transfer.

Editing an export and importing it again

Some exports have exactly the header row of an import. Download such an export, edit it and upload it like any other import:

  1. Under Settings → Export (Einstellungen → Export), download for example the product export.
  2. Edit the file in Excel. Do not change the header row or the number column.
  3. Upload it again under Settings → Import (Einstellungen → Import).

This is how you change, for example, the prices of many products at once.

A few exports, currently the DOSB member export, also offer More options → Re-import data (Mehr Optionen → Daten reimportieren). vynst then remembers which export the file came from.

Importing via the API

Everything the interface can do is also available via the API. For writing, the token needs the Imports right (dwi), plus the right for the area, for example contacts (crm) for people.

Upload a file:

curl --request POST https://your-instance.iw-erp.de/api/dw/import/file.json \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --form 'data[file]=@AFS_PERSON_members.csv'

Check the status:

curl 'https://your-instance.iw-erp.de/api/dw/import/file.json?filename=AFS_PERSON_members.csv&pageSize=5' \
  --header 'x-iw-jwt-token: <TOKEN>'
processing processed success Status
0 0 n/a waiting
1 0 n/a running
0 1 1 successful
0 1 0 error

vynst processes one file after another. Upload dependent files (people first, then memberships) one at a time, and wait for processed = 1 each time. Even with success = 1, individual rows may have been skipped. Search the log for Error:.

The endpoints are listed under System and settings, under ImportFile. AI assistants can propose imports through the MCP server.

Frequently asked questions

The import is red and the log says “No matching processor found”. The file name or header row does not match any import. Check the spelling of the columns and the file name (AFS_PERSON_…).

Umlauts (ä, ö, ü) look broken. The file was not saved as UTF-8. In Excel, choose “CSV UTF-8”.

People appear twice. The numbers changed between two imports. Always keep the same membership number for each person.

A membership was skipped with “person … not linked with account”. Import step 5 (link person to account) first, then the memberships.

Can I undo an import? Not with one click. Correct the file and import it again, or re-import the export you saved beforehand.

Who can help? When switching from other programs (for example SPG-Verein, MAC, VEWA or Champ), the inwendo team takes care of the data transfer. Write to us at vynst.de/kontakt.