Memberships
Creates or updates memberships, with person, product, section, period and payment type per row.
- Format
- CSV (semicolon or comma), UTF-8
- Access rights
- Administrator, write access to contacts (CRM)
- Example files
- AFS_MEMBERSHIP_beispiel_technisch.csv (technical column names)
AFS_MEMBERSHIP_beispiel_anwender.csv (German column names)
In short: Each row is a membership: a person with a product in a section, with start and end. A membership with the same details is updated by vynst (inwendo ERP) instead of being created twice.
What you need this for
The membership links a person to their fee and their section. With this file you take over the memberships from your previous system in one pass.
Before you start
- Rights: You need administrator rights and write access for contacts (CRM).
- Imported beforehand: The persons, products and sections must exist in vynst, with the same numbers as in this file. The accounts as well, if you specify an account number.
- Account and section are optional: If the account number is missing in a row, vynst takes the first account of the person. If an account number is given but unknown, vynst skips the row (see
FALLBACK_TO_LINKED_COMPANY). If the section is missing or vynst does not know it, vynst takes the section of the product. - Person must belong to the account: If the person is assigned to a different account, vynst skips the row. See the column
FALLBACK_TO_LINKED_COMPANY.
Prepare the file
- File name: It must contain
AFS_MEMBERSHIP_and.csv, for exampleAFS_MEMBERSHIP_2026.csv. Upper and lower case count. - Header row: The columns for person, account, section and product must be present. The cells may be empty for account and section. None of these four columns may be the last column of the header row.
- Separator: Semicolon or comma. Use the same character throughout the file. vynst does not recognise tabs.
- Date:
01.09.2026or2026-09-01. An empty cell means: no date. - Size: From 9000 rows onwards, vynst splits the file into parts of 3000 rows each. The parts appear as separate import files.
Columns
| Column | Required | Content | Example |
|---|---|---|---|
PERSON_IDENTIFIER (also Mitglieds-Nr., Mitgliedsnummer, MitgliedID) |
yes | Member number of the person | 1001 |
COMPANY_IDENTIFIER (also ACCOUNT_IDENTIFIER, Abrechnungskontonummer) |
no | Account of the membership. If not given, the first account of the person applies. | K-1001 |
UNIFIED_CATEGORY_IDENTIFIER (also Sparten-ID, Sparten ID, Kategorie ID) |
no | Section. If not given or if the number is unknown, the section of the product applies. | FB |
PRODUCT_IDENTIFIER (also Produkt ID, Produkt-ID, Produkt) |
yes | Product, as assigned during the products import | ERW |
START_DATE (also Eintrittsdatum, Beitrittsdatum, Beginn) |
no | Start of the membership | 01.01.2020 |
END_DATE (also Austrittsdatum, Enddatum, Ende) |
no | End of the membership | 31.12.2026 |
LAST_PAYMENT_DATE (also Zahlungsdatum, Letzte Sollstellung) |
no | Date of the last billing. It is one of the details by which vynst recognises an already imported membership. | 01.01.2026 |
EXTERNAL_DESCRIPTION (also Externe Beschreibung, Beschreibung) |
no | Text for the membership. The entry is prefixed with the word “Importiert” (Imported). | Jugendbeitrag |
PAYMENT_TYPE (also Zahlungsart, Zahlart) |
no | Payment type as set up in vynst. If not given or the payment type is unknown, the payment type of the account applies. | Lastschrift |
BILLING_PAYMENT_PROFILE (also Zahlungsprofil) |
no | Payment profile as set up in vynst | |
FALLBACK_TO_LINKED_COMPANY |
no | ja: If the account number is unknown, vynst takes the first account of the person and writes a warning to the log. If the person is not assigned to the account, vynst also takes the first account of the person. Default is nein. |
ja |
FORCE_MONTHLY_RECURRENCE_PRODUCTS |
no | ja: The products of this row are billed monthly. A value from the column abweichendes Abrechnungsintervall (deviating billing interval) is stored as an import flag. Default is nein. |
ja |
IMPORT_IDENTIFIER_PREFIX |
no | Prefix of the numbers with which persons and accounts were imported. If not given, AFS_CSV_ applies. An empty cell means: no prefix. |
AFS_CSV_ |
OVERWRITE_PRICE (also abweichender Preis) |
no | Deviating price of the product for this membership. Empty means: product price. | |
OVERWRITE_RECURRENCE (also abweichendes Abrechnungsintervall) |
no | Deviating billing interval. Empty means: interval of the product. | |
PRICE_FORMAT |
no | de if the deviating price is written with a comma. Default is en. |
en |
Additional products: There are separate columns for reduced rate, passive and free membership:
| Addition | Product | Period | Deviating price |
|---|---|---|---|
| Reduced (Ermäßigt) | PRODUCT_IDENTIFIER_DISCOUNT (also Produkt ermäßigt) |
START_DATE_DISCOUNT (also Ermäßigt ab), END_DATE_DISCOUNT (also Ermäßigt bis) |
ermäßigt abweichender Preis |
| Passive (Passiv) | PRODUCT_IDENTIFIER_PASSIVE (also Produkt-ID Passiv) |
START_DATE_PASSIVE (also Passiv ab), END_DATE_PASSIVE (also Passiv bis) |
passiv abweichender Preis |
| Fee-free (Beitragsfrei) | PRODUCT_IDENTIFIER_FREE (also Produkt-ID Frei) |
START_DATE_FREE (also Frei ab), END_DATE_FREE (also Frei bis) |
frei abweichender Preis |
The product columns take a product number like PRODUCT_IDENTIFIER. If the product is not found, the addition remains empty, without a message.
Example
PERSON_IDENTIFIER;COMPANY_IDENTIFIER;UNIFIED_CATEGORY_IDENTIFIER;PRODUCT_IDENTIFIER;START_DATE;END_DATE;LAST_PAYMENT_DATE;EXTERNAL_DESCRIPTION;PAYMENT_TYPE;BILLING_PAYMENT_PROFILE;OVERWRITE_PRICE;PRICE_FORMAT;OVERWRITE_RECURRENCE;PRODUCT_IDENTIFIER_DISCOUNT;START_DATE_DISCOUNT;END_DATE_DISCOUNT;PRODUCT_IDENTIFIER_PASSIVE;START_DATE_PASSIVE;END_DATE_PASSIVE;PRODUCT_IDENTIFIER_FREE;START_DATE_FREE;END_DATE_FREE;FALLBACK_TO_LINKED_COMPANY;FORCE_MONTHLY_RECURRENCE_PRODUCTS;IMPORT_IDENTIFIER_PREFIX
1001;K-1001;FB;ERW;01.01.2020;;;Erwachsenenbeitrag;;;;en;;;;;;;;;;;nein;nein;AFS_CSV_
1002;K-1001;FB-JUG;JUG;01.03.2022;;;Jugendbeitrag;;;;en;;;;;;;;;;;nein;nein;AFS_CSV_
1003;K-1003;TUR;ERW;15.09.2023;;;Erwachsenenbeitrag;;;;en;;;;;;;;;;;nein;nein;AFS_CSV_
Example files: AFS_MEMBERSHIP_beispiel_technisch.csv with the technical column names, AFS_MEMBERSHIP_beispiel_anwender.csv with the German column names.
Lena Hartmann (1001) has been a member in account K-1001 since 01.01.2020 with the product ERW in section FB. Jonas Hartmann (1002) is in the same account with the product JUG in section FB-JUG since 01.03.2022. Anna Beispiel (1003) is in account K-1003 with the product ERW in section TUR. The persons and accounts must be imported beforehand.
How to proceed
- Open Settings → Import (Einstellungen → Import).
- Click Add (Hinzufügen) and select the file.
- Read the log. The line
Processedshows the number of rows. - Correct the rows with errors and import only those again.
Good to know
- Repeated import: If person, product, start, end and last billing date match, vynst updates the existing membership. In the process, account, section, additional products, payment type and description are taken over.
- Changed data: If the start, end, last billing date or the product changes, vynst creates a new membership. The old one remains. Therefore, before a second import, check whether these details have changed.
- Date format:
01.01.2020and2020-01-01count as the same date. A repeated import with either format therefore finds the membership again. For entries from an import before this change, this only works if you write the date as you did the first time. If you use one format throughout for every import, a repeated import finds the memberships again. - Unknown account number: If the number in
COMPANY_IDENTIFIERis not known, vynst skips the row with an error, even if the person is known. Only withFALLBACK_TO_LINKED_COMPANY=jadoes vynst take the first account of the person and write a warning to the log. If the column is empty, vynst takes the first account of the person without a message. Check the account numbers before the import. - Payment type: Unknown payment types are not reported. The membership then takes the payment type of the account.
- Counting: The number in the log covers all rows of the file, including the skipped ones.
- Deviating prices: If the price or the billing interval of a row differs from the product, vynst creates a separate product with this deviation and uses it for the membership.
When something does not work
| Message in the log | Meaning | What to do |
|---|---|---|
Error: skipped missing person / company |
The row has no member number. The row appears below as LINE-DATA. |
Add the member number and import the row again. |
Error: skipped person with import origin id … not found |
The person does not exist in vynst. | Import the persons first, check the number. |
Error: skipped company with import origin id … not found |
The account does not exist, and FALLBACK_TO_LINKED_COMPANY is not ja. Or the person has no account. The row is skipped. |
Import the account, check the number. Or set FALLBACK_TO_LINKED_COMPANY to ja if the first account of the person is the right one. |
Warning: company with import origin id … not found, used first account of person … |
The account does not exist. The row was imported with the first account of the person, because FALLBACK_TO_LINKED_COMPANY is ja. |
Check whether the first account of the person is correct. |
Error: skipped product with import origin id … not found |
The product does not exist. | Import the product, check the number. |
Error: person … not linked with account … |
The person is not assigned to the account. | Create the assignment or set FALLBACK_TO_LINKED_COMPANY to ja. |
Error: skipped empty line |
An empty row was skipped. | Nothing. |
Info: split into … files |
The file was too large and was split. | Check the parts like other import files. |
Processed … lines |
Summary | Nothing. |
Error: less then one line |
No data row | Check the header row and content. |
FAILED: No matching processor found. |
The file name or header row does not match. | Check the file name and header row. |