// the find
firefly-iii/data-importer
The Firefly III Data Importer can import data into Firefly III
A companion app to Firefly III (self-hosted personal finance tracker) that handles the messy job of getting transactions in — via CSV/CAMT file uploads or third-party bank connectors like GoCardless/Nordigen, Salt Edge, and SimpleFIN. It's a separate service by design, kept isolated from the main Firefly III app so a compromised importer doesn't take down your financial data store. Target audience is self-hosters who are comfortable running two Docker containers and configuring API keys.
The provider architecture is well-segmented — each bank connector (Nordigen, EnableBanking, SimpleFIN, Sophtron, LunchFlow) lives in its own namespace with its own Request/Response/Model/Conversion layers, so adding a new one doesn't touch existing code. CAMT.052 and CAMT.053 support is genuinely rare in open-source finance tools and covers a format most European banks actually export. The column mapping and value converter system for CSV is thorough — separate converters for AmountDebit/AmountCredit/AmountNegated/BankDebitCredit covers the baroque ways banks encode transaction direction. CI pipeline runs phpstan, phpmd, php-cs-fixer, and rector, which is more static analysis than most PHP projects bother with.
It's a satellite to Firefly III — useless without the main app running, so the effective setup cost is two services plus a database. The third-party bank connectors all require paid or registration-gated API keys (GoCardless has usage limits, Salt Edge charges), so 'free' bank sync isn't actually free. Duplicate detection logic lives in a controller (`DuplicateCheckController`) rather than at the service layer, which means it's tied to the HTTP flow and hard to reuse or test in isolation. The repo has no tests directory visible in the tree — for a financial data tool that's parsing and transforming money amounts, that's a meaningful gap.