Starting on 2018-12-01 you should supply your registration code as the product name
in every FinTS dialog initialisation. Starting at 2019-08-01 you must supply your
registration code.

With the latest version of the Subsembly FinTS API you can supply the registration code
by setting the static property FinDialog.ProductRegisterNo.

Also note, that the PSD 2 migration period ends on 2019-09-14. Starting with this day,
it is no longer permitted to use FinTS bank interfaces from third party services. All
third party services must then use the new PSD 2 interfaces that will be provided by
the banks. Yet, it is still possible to directly connect to FinTS interfaces from
traditional client software, such as Windows applications or mobile apps.

If you have any questions concerning FinTS and the new PSD 2 regulations, please feel
free to contact us at any time.

PSD 2 Road Map

A full PSD 2 compliant FinTS implementation was delivered with version 10 of the
Subsembly FinTS API.

In order to comply with PSD 2 several additions to the FinTS 3.0 base protocol have been
specified. Most of all, a dialog initialisation may require the user to enter a TAN after
every 90 days. This, and all the other changes, have been implemented in Version 10 of the
Subsembly FinTS API.

These new PSD 2 requirements break API compatibility of the classes FinService and
FinOnlineBanking. For a smooth transition to the new PSD 2 procedures, they will be
implemented in a new class FinBanking, that will ultimately replace FinService and
FinOnlineBanking. Of course, we will attempt to model FinBanking in a way to make
switching from FinService or FinOnlineBanking to FinBanking as easy as possible.

Top level summary of important changes:

The classes FinService and FinOnlineBanking will never work with servers that require
strong authentication. Hence, these classes will ultimately be removed, as soon as all
servers do require strong authentication.

In order to support FinTS with strong authentication a new top level class FinBanking
is introduced. This new class will also support old server systems during the migration
period.

With PSD 2 only FinTS 3.0 with strong customer authentication will be possible. Therefore
any support for older FinTS or HBCI versions (i.e. 2.0.1, 2.1, 2.2) will be removed
completely.

The term "HBCI" will be removed in most places. If at all, it will only be used with
signature smart cards.

Please be aware, that due to the enormous changes required, the Version 10 of the Subsembly
FinTS API will not be compatible with previous versions.

We are comitted to provide a compact, state of the art Subsembly FinTS API version 10
with long term support to all of our customers.

FinTS Test Server

We are proud to announce that we now operate a fully functional FinTS 3.0 server,
designed as a testing environment. This server already implements all PSD 2 extensions
to FinTS and can be used to test various PSD 2 migration and cutover scenarios.

Please contact us for information on how to get access to the Subsembly FinTS Server.

API Documentation

The Subsembly FinTS API itself is divided into three separate assemblies. It uses several
supporting assemblies that are also included in the package.

The Subsembly.FinTS.SmartCard.dll contains additional classes for supporting HBCI smart
cards. These classes are only supported on Windows and macOS platforms. All classes in this
assemblys are also part of the
Subsembly.FinTS, and
Subsembly.FinTS.HHD namespaces.

The Subsembly.FinTS.Win32.dll contains UI classes for Windows only. These classes require
a true Windows platform with .NET Framework 4.7.2 or later. The classes of this assembly use the
Subsembly.FinTS.Forms namespace.

The supporting assemblies are

The Subsembly SEPA API contained in the Subsembly.Sepa3.dll assembly. Documentation
of these classes can be found with the Subsembly SEPA API.

The SWIFT parser and generator classes contained in the Subsembly.Swift.dll assembly.
Documentation of these classes can be found here.

The private smart card access classes contained in the Subsembly.SmartCard.dll. These
are only needed when HBCI smart cards shall be supported.

The cryptographic algorithms implemented in the Subsembly.Crypto.dll.

Simple CSV utility classes implemented in the Subsembly.Csv.dll.

Simple JSON utility classes implemented in the Subsembly.Json.dll.

A PDF generator for generating Ini-Letters in PDF Format is implemented in
the Subsembly.Printing.dll.

Getting Started

The FinContact holds all the data and information for one particular online banking user at
a bank. For using PIN/TAN based security at a minimum the following properties of the
FinContact must be initialized:

Based on a FinContact a new FinBanking instance can be created. A FinBanking holds the
session context for one or more FinTS dialogs of the online banking user identified by the
given FinContact. A very simple code sequence to send a single order without any error
handling would look something like this:

Of course, real code would have to handle the result of every step. Through the result the
method may request additional information, such as in the case of the result codes
SelectTanProc,
SelectTanMedia, and
NeedTan.

By processing these results your code has full control of the UI. As an alternative
solution a derived or special instance of the class
FinCredentialManager can be
created in order to provide the UI. The Subsembly FinTS API includes a complete
default UI that can be instantiated as follows:

This FinCredentialManager can then be provided to the new FinBanking instance
in order to handle all user interface requests.

Sample Code

The Subsembly FinTS API development kit includes four sample projects with
source code.

FinAdmin A very simple application that launches the FinTS Administrator
contained in the Subsembly FinTS API. You may include this executable with your
product. However, it must be configured through command line parameters in
order to include your FinTS product registration number.