How to use HBCI / FinTS within a Ruby on Rails application?

FinTS 3.0 is actually a remaining of HBCI 2.2, and is meant to be the successor of HBCI that way. The technical details do not deviate that much, so that it can be expected that HBCI open source implementations will integrate FinTS in the future.

For the best discussion about this that I found so far, see this: http://www.ruby-forum.com/topic/177210

There seems to be only two (or two major) open source HBCI implementations: HBCI4Java and AqBanking. Of these two, AqBanking seems to be the preferrable one (yet without respect to Ruby integration). Reasons:

  • AqBanking is behind several major HBCI open source applications: AqFinance, QBankManager, GnuCash, KMyMoney, AqBanking-CLI (source), while HBCI4Java is behind Hibiscus (source).
  • AqBanking is in active development as of 2010-08, while HBCI4Java’s latest version is from mid 2009. (As of 2010-08.)
  • AqBanking offers HBCI, OFX and PayPal in the open source version, while HBCI4Java offers HBCI (source).
  • Both are cross-platform compatible for Linux, Mac OS X and Windows.
  • AqBanking is twice as popular as HBCI4Java (40,000 vs. 18,000 Google search results).

Also, the integration into Ruby is simpler. One can either use exec() with the command line client coming with AqBanking as the simplest solution, or use the Ruby C bindings with the AqBanking library, which is written in C (see here). With HBCI4Java, one could either use Ruby Java bindings (like they do in the POI project), port the application to JRuby, or use the GUI tool Hibiscus and XML-RPC (example), which is however quite clumsy when it should be used on a server (as it’s a GUI tool).

Result: I recommend to use AqBanking with CLI based or Ruby extension based integration.


Posted

in

,

by

Tags:

Comments

5 responses to “How to use HBCI / FinTS within a Ruby on Rails application?”

  1. Sven Weißbach

    Hallo Matthias,

    Ich vermute, Du hast keinen der beiden Autoren von AqBanking bzw. HBCI4Java kontaktiert, richtig? Denn wenn dem so wäre, wüsstest Du, dass viele Deiner Aussagen falsch sind.

    Wie auch immer, weiterhin viel Erfolg bei Deinen schlechten Recherchen

  2. Hello Sven, you’re right that I derived my personal decision between these products from publicly available information.

    If you have details or experiences to correct this article, you’re welcome to provide them.

  3. Sven Weißbach

    Ok, here some more details:

    > AqBanking is behind several major HBCI open source applications: …, while HBCI4Java is behind Hibiscus

    AFAIK the author of AqBanking is also the (co-) author of most of the applications you’ve mentioned. Just because the author of a library also creates a handful of applications using this library, this is not an indicator for being “more popular”.

    On the other side, HBCI4Java is very often used “under the hood” in server based applications. Most users will never ever see which software is working there. I know that for example kontoblick.de is using HBCI4Java. Many companies (we are one of them) use HBCI4Java based tools internally to automate business processing.

    You can not base your understanding of “popularity” just on the fact how many homebanking applications use a library – there are much more use cases for HBCI libraries than just writing a homebanking application based on them.

    > AqBanking is in active development as of 2010-08, while HBCI4Java’s latest version is from mid 2009

    According to the HBCI4Java mailing list the author currently works on a bigger major release. AFAIK there are still maintenance releases for the current version (currently maybe only via SVN).

    > AqBanking offers HBCI, OFX and PayPal in the open source version, while HBCI4Java offers HBCI

    This is correct, but you loose the focus 🙂 HBCI4Java is meant to be an HBCI(!) library, while AqBanking wants to be a general library for banking(!) (including a HBCI module). So if you want to compare two HBCI libraries, you should compare HBCI4Java .vs. the HBCI-module of AqBanking. To say “AqBanking is the better HBCI library because it also supports other protocols than HBCI” is a little bit weird, isn’t it?

    > AqBanking is twice as popular as HBCI4Java (40,000 vs. 18,000 Google search results).

    Maybe, maybe not. Maybe all those 22,000 pages which AqBanking “has more” are just stuff like “how can I use AqBanking?”, “there is a problem with my AqBanking installation”, …? If there are a lot of pages with this type of content, having more pages would be an indicator for a bad software/documentation quality of AqBanking, because there are not much of these basic questions open for HBCI4Java 🙂

    Furthermore, AqBanking is part of some linux distributions, while HBCI4Java is not. Many google search results for AqBanking just point to software listings of linux distributions. So being part of a linux distribution may be an indicator for “popularity” (in the sense of how many users have this software on their PCs without knowing it), but it is definitively not an indicator for quality if you have to decide which software to use for a certain project.

    -stefan-

  4. Sven Weißbach

    > Also, the integration into Ruby is simpler. One can either use exec() with the command line client coming with AqBanking as the simplest solution

    HBCI4Java has a command line tool, too.

  5. Sven, thanks for the comments. Seems like my standard indicators for quickly evaluating software applications (developer community, release schedule, feature set, user base) fail for highly specialized “niche” applications like these, where we have just two alternatives.

    These indicators worked out well for choosing CMS, CRM and webshop applications before, but here it seems one cannot get around an internal evaluation. (So if you, Sven, or anybody else has used both and can give some hints as to software quality and architecture, that would be great.)

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.