• API Overview
  • EBICS API
  • FinTS API
  • XS2A API
  • SEPA API
Search Results for

    Subsembly FinTS API

    Copyright © 2004-2025 Subsembly GmbH

    The Subsembly FinTS API is a comprehensive class library for FinTS/HBCI online banking clients.

    Release Notes

    The release notes (in German only) can be found here.

    Assemblies

    The Subsembly FinTS API consists of several core assemblies compiled for .NET Standard 2.0 and some optional assemblies compiled for .NET Framework 4.8. See https://docs.microsoft.com/de-de/dotnet/standard/net-standard for a table of .NET Standard 2.0 compatible platforms.

    The following core assemblies were compiled for .NET Standard 2.0 and can be added to any project that targets a .NET Standard 2.0 compatible environment:

    • Subsembly.AppBase.dll
    • Subsembly.Crypto.dll
    • Subsembly.Csv.dll
    • Subsembly.FinTS.Core.dll
    • Subsembly.Json.dll
    • Subsembly.Printing.dll
    • Subsembly.Sepa.dll
    • FinBanks.dat (set Build Action to Content)

    For internationalization the following text resource files are included.

    • en/Subsembly.FinTS.Core.resources.dll
    • en/Subsembly.Sepa.resources.dll
    • fr/Subsembly.FinTS.Core.resources.dll
    • fr/Subsembly.Sepa.resources.dll

    Also, you must add a NuGet reference to System.Text.Encoding.CodePages by Microsoft (see https://www.nuget.org/packages/System.Text.Encoding.CodePages/4.7.1), or add the following files to your installation:

    • System.Runtime.CompilerServices.Unsafe.dll
    • System.Text.Encoding.CodePages.dll

    The following core assemblies were compiled for .NET Standard 2.0 but do only work in a Windows environment:

    • Subsembly.FinTS.SmartCard.dll (only if smart cards are used)
    • en/Subsembly.FinTS.SmartCard.resources.dll (for english texts)
    • fr/Subsembly.FinTS.SmartCard.resources.dll (for french texts)
    • Subsembly.SmartCard.dll (only if smart cards are used)

    The following assemblies are only supported on Windows and have been compiled for .NET Framework 4.8:

    • Subsembly.FinTS.Win32.dll

    The following assemblies are only supported on Windows and have been compiled for .NET 8 for Windows:

    • Subsembly.FinTS.Win32.Net.dll

    In addition the following files should be added to your development environment in order to support the Visual Studio Intellisense:

    • Subsembly.FinTS.Core.xml
    • Subsembly.FinTS.SmartCard.xml
    • Subsembly.FinTS.Win32.xml
    • Subsembly.Json.xml
    • Subsembly.Sepa.xml

    The FinAdmin tool is included with the Subsembly FinTS API for redistribution and should be installed, when neeed.

    • FinAdmin.exe
    • FinAdmin.exe.config

    All of these assemblies and files are contained in the Subsembly FinTS API software development kit.

    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.Core.dll contains the platform neutral base classes. This assembly targets .NET Standard 2.0. All classes in this assembly are part of the following namespaces:
      • Namespace Subsembly.FinTS
      • Namespace Subsembly.FinTS.Online
      • Namespace Subsembly.FinTS.HHD
      • Namespace Subsembly.FinTS.Banks
    • 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 these namespaces:
      • Namespace Subsembly.FinTS
      • Namespace Subsembly.FinTS.HHD
    • The Subsembly.FinTS.Win32.dll contains UI classes for Windows only. These classes require a true Windows platform with .NET Framework 4.8. The classes of this assembly use
      • Namespace Subsembly.FinTS.Forms

    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 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.

    Download

    Please contact Subsembly for your private download link and credentials.

    IMPORTANT: License Token

    In order to use the Subsembly FinTS API you will need a valid license token. The license token may be installed alongside the assemblies using the file name FinLicense.jwt, or the token may be passed to the static method Subsembly.FinTS.FinLicense.SetLicenseToken(System.String).

    You can get a time limited token for evaluation upon request from Subsembly GmbH. With a valid license, you will get an unlimited license token.

    IMPORTANT: Client Registration for PSD 2 compliance

    Because of the new PSD 2 regulations, the Deutsche Kreditwirtschaft (DK) decided that all FinTS clients have to registered with it. For details please read:

    https://www.hbci-zka.de/register/register_faq.htm

    You must supply your application 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.

    IMPORTANT: SWIFT MT-940 transaction data is end-of-life

    At last, the tone old SWIFT MT-940 format for account transaction data is retired. Many banks already started to support download of transaction data in the new CAMT format via segment type HKCAZ. This is already supported by the class FinCamtStatementBuilder and is the preferred method for downloading transaction data, if supported by the bank.

    Starting November 2025 several banks discontinue the support for downloading transaction data in SWIFT MT-940 format via segment type HKKAZ. Hence, your code must be able to handle both scenarios.

    Here an example of the recommended way to determine which way to download account transaction data shall be used.

    using Subsembly.FinTS;
    using Subsembly.FinTS.Online;
    using Subsembly.FinTS.Forms;
    using Subsembly.Sepa;
    
    // FinContact aContact
    // FinAcctInfo aAcctInfo // from UPD
    // SwiftDate tStartDate
    // SwiftDate tEndDate
    // IWin32Window aParentWindow
    
    FinCamtStatementBuilder aCamtBuilder = new FinCamtStatementBuilder(aContact);
    
    if (aCamtBuilder.IsSupported && aAcctInfo.IsAllowed(aCamtBuilder.OrderSegmentType))
    {
        FinCamtStatement aOrder = aCamtBuilder.Build(aAcctInfo.Acct, tStartDate, tEndDate);
        FinScriptSendOrder.Execute(aParentWindow, aContact, aOrder, null);
        // aOrder.BookedCamts -> Booked transactions
        // aOrder.NonbookedCamts -> Pending transactions
    }
    else
    {
        FinAcctMvmtsSpecifiedPeriodBuilder aSwiftBuilder = new FinAcctMvmtsSpecifiedPeriodBuilder(aContact);
    
        if (aSwiftBuilder.IsSupported && aAcctInfo.IsAllowed(aSwiftBuilder.OrderSegmentType))
        {
            FinAcctMvmtsSpecifiedPeriod aOrder = aSwiftBuilder.Build(aAcctInfo.Acct, false, tStartDate, tEndDate, 0, null);
            FinScriptSendOrder.Execute(aParentWindow, aContact, aOrder, null);
            // aOrder.GetBooked() -> Booked transactions
            // aOrder.GetNonbooked() -> Pending transactions
        }
    }
    else
    {
        // Download of transactions is not supported by the bank or account.
    } 
    

    IMPORTANT: Verfication of Payee

    Starting on October, 5th 2025 all remittances are subject to a Verfication of Payee procedure. This means that before a remittance is executed by the bank, it verifies whether the given payee IBAN matches the given payee name, as known be the recipient bank. If there is a mis-match, then the user must explicitly confirm this mis-match, in order to execute the remittance anyway.

    For this confirmation step a new interface Subsembly.FinTS.Forms.IFinVerificationOfPayeeForm was added to the UI components. By providing an implementation of this interface to Subsembly.FinTS.Forms.FinScriptSendOrder, your code can take over control of the Verification of Payee confirmation. If you do not provide an implementation, then the Subsembly.FinTS.Forms.FinVerificationOfPayeeForm will be used.

    If you are not using FinScriptSendOrder, but are working with Subsembly.FinTS.Online.FinBanking, then you have to handle the additional new FinDialogResultCodes Subsembly.FinTS.FinDialogResultCode.NeedContinue and Subsembly.FinTS.FinDialogResultCode.NeedConfirmationOfPayee.

    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 also the complete Verfication of Payee procedure.

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

    Getting Started

    The easiest way to use the Subsembly FinTS API is through the various FinScript derived classes. These, however, are only available on the Windows platform and facilitate their own Windows UI.

    The central class of the Subsembly FinTS API is the FinContact. 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:

    • BankCode
    • UserID
    • CommAddress

    A fully initialized FinContact can be used to send any FinOrder to the bank. Orders are created through FinOrderBuilder derived classes. Here an example of how to create an order that submits a SEPA payment to the bank.

        using Subsembly.FinTS;
        using Subsembly.Sepa;
    
        FinContact aContact = new FinContact("https://fintsurl", "00000000", "UserID");
    
        // SepaDocument aSepaDoc
    
        FinAcct aOrderAcct = aContact.ProduceOrderAcct(FinAcctTypeClass.Giro,
            new SepaIBAN("DE00123456781234567890"), "EUR");
    
        FinSepaOrderBuilder aBuilder = new FinSepaSingRemittBuilder(aContact);
        FinOrder aOrder = aBuilder.Build(aOrderAcct, aSepaDoc);
    

    The class FinScriptSendOrder can now be used to send this order to the bank. Note that this will begin a new FinTS dialog, send the order and finally orderly close the FinTS dialog again.

        using Subsembly.FinTS;
        using Subsembly.FinTS.Forms;
    
        FinDialog.ProductRegisterNo = "YOURFINTSREGISTRATIONNUMBER";
    
        // FinContact aContact
        // FinOrder aOrder
        // IWin32Window aParentWindow
    
        FinScriptSendOrder aScript = FinScriptSendOrder.Execute(aParentWindow, aContact, aOrder, null);
        // aScript.Trace
        // aScript.Result
    

    If you do not want (or can) to use the default UI, then you have to use the class FinBanking for conducting FinTS dialogs and send orders. This is supported by an instance of the class FinCredentialManager, which provides any (or no) user interface for gathering credentials from the user.

    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:

        using Subsembly.FinTS;
        using Subsembly.FinTS.Online;
        using Subsembly.Sepa;
    
        FinDialog.ProductRegisterNo = "YOURFINTSREGISTRATIONNUMBER";
    
        // FinContact aContact
        // FinOrder aOrder
    
        FinCredentialManager aCredentialManager = new FinCredentialManager("YOURPIN");
    
        using (FinBanking aBanking = new FinBanking(aContact, aCredentialManager))
        {
            FinDialogResult aResult = aBanking.BeginDialog();
            aResult = aBanking.SendOrder(aOrder);
            aBanking.TermDialog();
        }
    

    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, NeedTan, NeedDecoupled, NeedContinue, and NeedConfirmationOfPayee.

    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:

        using Subsembly.FinTS;
        using Subsembly.FinTS.Online;
        using Subsembly.FinTS.Forms;
    
    
        FinBankingPinStore aPinStore = new FinBankingPinStore();
        FinCredentialForm aCredentialForm = new FinCredentialForm();
        FinTanProcForm aTanProcForm = new FinTanProcForm();
    
        FinCredentialManager aCredentialManager = new FinCredentialManager(
            aPinStore, aCredentialForm, aTanProcForm, aTanProcForm);
    

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

    An application still must handle the Verfication of Payee responses NeedContinue and NeedConfirmationOfPayee. However, it can do use by leveraging the default Windows implementation FinVerificationOfPayeeForm.

    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.

    • FinPad A simple banking client application that uses the user interface integrated into the Subsembly FinTS API.

    • FinCmd A command line utility that demonstrates how to use the Subsembly FinTS API with a custom unser interface.

    • FinPing A small tool that demonstrates anonymous FinTS dialogs.

    In This Article
    Back to top Copyright 2009-2025 Subsembly GmbH