Go to file
dankito d01074e070 Added to fallbacks to find bank name from BIC or IBAN 2022-02-07 00:18:06 +01:00
common Implemented deleting files 2022-02-07 00:18:06 +01:00
docs Extracted interfaces for UI model classes Customer, BankAccount and AccountTransaction. So entities can implement these interfaces directly, there's no need for mapping anymore 2022-02-07 00:18:06 +01:00
fints4k Fixed that when entering TAN is required chunkedResponseHandler got called for same handledResponse multiple time, therefore adding e.g. same transactions multiple times to bookedTransactions 2022-02-07 00:18:06 +01:00
fints4k-jvm Set source compatibility to Java 7 2022-02-07 00:17:53 +01:00
gradle/wrapper Bumped Gradle version to 6.2.1 2020-04-22 12:57:54 +02:00
persistence Implemented IRemitteeSearcher in RoomBankingPersistence 2022-02-07 00:18:06 +01:00
tools Extracted iOSIsRealDevice so that it's easier to switch between iOS Simulator and real device 2022-02-07 00:18:06 +01:00
ui Added to fallbacks to find bank name from BIC or IBAN 2022-02-07 00:18:06 +01:00
.gitignore Fixed that .pbxproj was ignored 2022-02-07 00:17:53 +01:00
LICENSE.md Added license 2022-02-07 00:17:52 +01:00
README.md Renamed BankingAndroidApp package from net.dankito.fints4java.android to net.dankito.banking.ui.android 2022-02-07 00:17:52 +01:00
build.gradle Implemented persisting data with Room 2022-02-07 00:18:06 +01:00
gradle.properties Implemented extracting cash transfer data from PDF files and setting them as preselected values in TransferMoneyDialog 2022-02-07 00:17:53 +01:00
gradlew Initial commit 2019-10-02 19:54:11 +02:00
gradlew.bat Initial commit 2019-10-02 19:54:11 +02:00
settings.gradle Implemented persisting data with Room 2022-02-07 00:18:06 +01:00

README.md

fints4k

fints4k is an implementation of the FinTS 3.0 online banking protocol used by most German banks.

It's fast, easy extendable and running on multiple platforms: JVM, Android, (iOS, JavaScript, Windows, MacOS, Linux).

However it's not a full implementation of FinTS standard but implements all common use cases:

Features

  • Retrieving account information, balances and turnovers (Kontoumsätze und -saldo).
  • Transfer money and instant payments (SEPA Überweisungen und Echtzeitüberweisung).
  • Supports TAN procedures chipTAN manual, Flickercode, QrCode and Photo (Matrix code), pushTAN, smsTAN and appTAN.

Setup

Not uploaded to Maven Central yet, will do this the next few days!

Gradle:

dependencies {
  compile 'net.dankito.banking:fints4k:0.1.0'
}

Maven:

<dependency>
   <groupId>net.dankito.banking</groupId>
   <artifactId>fints4k</artifactId>
   <version>0.1.0</version>
</dependency>

Usage

See e.g. JavaShowcase or FinTsClientTest.

    // Set your bank code (Bankleitzahl) here.
    // BankInfo contains e.g. a bank's FinTS server address, country code and BIC (needed for money transfer)
    List<BankInfo> foundBanks = new InMemoryBankFinder().findBankByNameBankCodeOrCity("<bank code, bank name or city>");

    if (foundBanks.isEmpty() == false) { // please also check if bank supports FinTS 3.0
        BankData bank = new BankDataMapper().mapFromBankInfo(foundBanks.get(0));

        // set your customer data (customerId = username you use to log in; pin = online banking pin / password)
        CustomerData customer = new CustomerData("<customer_id>", "<pin>");

        FinTsClientCallback callback = new SimpleFinTsClientCallback(); // see advanced showcase for configuring callback

        FinTsClient finTsClient = new FinTsClient(callback, new Java8Base64Service());

        AddAccountResponse addAccountResponse = finTsClient.addAccount(bank, customer);

        if (addAccountResponse.isSuccessful()) {
            System.out.println("Successfully added account for " + bank.getBankCode() + " " + customer.getCustomerId());

            if (addAccountResponse.getBookedTransactions().isEmpty() == false) {
                System.out.println("Account transactions of last 90 days:");
                showGetTransactionsResponse(addAccountResponse);
            }
        }
        else {
            System.out.println("Could not add account for " + bank.getBankCode() + " " + customer.getCustomerId() + ":");
            showResponseError(addAccountResponse);
        }

        // see advanced show case what else you can do with this library, e.g. retrieving all account transactions and transferring money
    }

Logging

fints4k uses slf4j as logging facade.

So you can use any logger that supports slf4j, like Logback and log4j, to configure and get fints4k's log output.

License

fints4k is dual licensed as AGPL / commercial software.

AGPL is a free open source software license.

If you want to use it in closed source applications contact us.