[FEATURE]: Vereinfacht accounting software API #431

Closed
opened 2026-02-18 19:50:16 +01:00 by moritz · 0 comments
Owner

Description

Integrate with the Vereinfacht accounting software API to automatically synchronize members as finance contacts. When a member is created or updated in Mila, a corresponding finance contact should be created or updated via the Vereinfacht API. This enables matching membership fee cycles with actual transactions in the accounting system.

Acceptance criteria

  • ENV variables VEREINFACHT_API_URL, VEREINFACHT_API_KEY, VEREINFACHT_CLUB_ID can be used to configure the integration
  • Same settings are available in the global settings UI; fields are grayed out with a hint when ENV variables are set
  • Creating a member automatically creates a finance contact via POST /finance-contacts and stores the returned ID as vereinfacht_contact_id
  • Updating a member automatically updates the corresponding finance contact via PATCH /finance-contacts/{id}
  • API errors do not block member operations (member is saved, error is logged, user sees a flash message)
  • Members without vereinfacht_contact_id can be bulk-synced via an admin action (for initial setup and retry after failures)
  • The membership fees view shows a link to the Vereinfacht contact using the stored contact ID
  • Integration is skipped gracefully when Vereinfacht is not configured

External or internal Dependencies

  • Vereinfacht API (https://api.verein.visuel.dev/docs/#/Finance-contacts) — JSON:API format, Bearer token auth, multi-tenancy via club relationship
  • Req HTTP client library (to be added as dependency if not already available)
  • Test API token and club ID 2 for development/testing
## Description Integrate with the Vereinfacht accounting software API to automatically synchronize members as finance contacts. When a member is created or updated in Mila, a corresponding finance contact should be created or updated via the Vereinfacht API. This enables matching membership fee cycles with actual transactions in the accounting system. ## Acceptance criteria - [x] ENV variables `VEREINFACHT_API_URL`, `VEREINFACHT_API_KEY`, `VEREINFACHT_CLUB_ID` can be used to configure the integration - [x] Same settings are available in the global settings UI; fields are grayed out with a hint when ENV variables are set - [x] Creating a member automatically creates a finance contact via `POST /finance-contacts` and stores the returned ID as `vereinfacht_contact_id` - [x] Updating a member automatically updates the corresponding finance contact via `PATCH /finance-contacts/{id}` - [x] API errors do not block member operations (member is saved, error is logged, user sees a flash message) - [x] Members without `vereinfacht_contact_id` can be bulk-synced via an admin action (for initial setup and retry after failures) - [x] The membership fees view shows a link to the Vereinfacht contact using the stored contact ID - [x] Integration is skipped gracefully when Vereinfacht is not configured ## External or internal Dependencies - Vereinfacht API (https://api.verein.visuel.dev/docs/#/Finance-contacts) — JSON:API format, Bearer token auth, multi-tenancy via club relationship - `Req` HTTP client library (to be added as dependency if not already available) - Test API token and club ID 2 for development/testing
moritz added this to the Import transactions via vereinfacht API milestone 2026-02-18 19:50:16 +01:00
moritz added the
L
label 2026-02-18 19:50:16 +01:00
moritz self-assigned this 2026-02-18 19:50:17 +01:00
moritz added this to the Sprint 13: 19.02-26.02 project 2026-02-18 19:50:17 +01:00
Sign in to join this conversation.
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: local-it/mitgliederverwaltung#431
No description provided.