nexus-dialects.rst (4101B)
1 .. 2 This file is part of GNU TALER. 3 Copyright (C) 2025 Taler Systems SA 4 5 TALER is free software; you can redistribute it and/or modify it under the 6 terms of the GNU Affero General Public License as published by the Free Software 7 Foundation; either version 2.1, or (at your option) any later version. 8 9 TALER is distributed in the hope that it will be useful, but WITHOUT ANY 10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 11 A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 12 13 You should have received a copy of the GNU Affero General Public License along with 14 TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> 15 16 @author Antoine d'Aligny 17 18 .. target audience: operator, developer 19 20 Nexus bank dialects 21 ################### 22 23 LibEuFin Nexus is an EBICS facilitator. It offers a command line interface to 24 setup EBICS access, download banking records, and submit payments. LibEuFin Nexus is not a generic EBICS client but a Taler specific one. 25 26 Today, the LibEuFin implementation supports EBICS 3.0 and has been 27 tested with Postfinance (CHF), GLS (EUR) and Maerki Baumann (CHF). Please note 28 that banks tend to have their own dialects of finance messages and thus other 29 retail banks may or may not work. Contact us if you need support for another 30 bank or core banking protocol. 31 32 .. contents:: Table of Contents 33 :local: 34 35 EBICS 36 ===== 37 38 Protocol versions 39 ----------------- 40 41 The following protocol versions are supported: 42 - V2.5 H004 43 - v3.0 H005 44 45 We use V3.0 for all file related operations and V2.5 for key management for *gls* dialect until GLS correctly support it. We plan to drop V2.5 support in 2026. 46 47 Administrative Orders 48 --------------------- 49 50 We use the following EBICS orders: HEV, INI, HIA, HPB, HKD, HAA, BTU, BTD. 51 HAA and HKD are optional orders but are required for LibEuFin Nexus to work. 52 53 ISO20022 54 ======== 55 56 CAMT files 57 ---------- 58 59 In ISO 20022 specifications, most fields are optional and the same information 60 can be written several times in different places. For LibEuFin, we're only 61 interested in a subset of the available values that can be found in both camt. 62 052, camt.053 and camt.054. We only parse payment transactions (transaction domain code PMNT) and ignore all others. This mean we ignore some debits that could originate from you banks for fees or taxes. 63 64 - postfinance & valiant 65 66 - BTD PSR CH pain.002 10 ZIP 67 - BTD STM CH camt.052 08 ZIP 68 - BTD EOP CH camt.053 08 ZIP 69 - BTD REP CH camt.054 08 ZIP 70 71 - gls 72 73 - BTD REP DE pain.002 ZIP SCI 74 - BTD REP DE pain.002 ZIP SCT 75 - BTD STM DE camt.052 ZIP 76 - BTD EOP DE camt.053 ZIP 77 - BTD STM DE camt.054 ZIP 78 - BTD STM DE camt.054 ZIP SCI 79 80 If older versions of files are advertised as being present, we will also fetch them. 81 82 As the ISO20022 standard does not provide a perfect transaction identifier we use a combinaison of the ``UETR`` (unique end-to-end transaction reference), which is a universal identifier, the ``TxId`` (TransactionIdentification), assigned by the first instructing agent and the ``AcctSvcrRef`` (AccountServicerReference) assigned by the account servicing institution. 83 Those three identifiers are optional in the standard and sometimes mandatory in local standards. Combining the three we can track transactions across different files. 84 85 PAIN files 86 ---------- 87 88 Direct debits will use the following orders 89 - postfinance & valiant: BTU MCT CH pain.001 09 90 - gls: BTU SCT pain.001 91 92 Instant direct debits will use the following orders 93 - gls: BTU SCI DE pain.001 94 95 Instant direct debits are always tried first if they are supported, and LibEuFin fall back on ordinary direct debits in case of failure. If you do not want LibEuFin to send instant direct debit you can disable the order for LibEuFin's specific subscriber at your bank. 96 97 The following pain.001 format are used: 98 99 - postfinance & maerki_baumann & valiant: pain.001.001.09.ch.03 with the default service level this will only work between swiss accounts 100 - gls: pain.001.001.09 with the SEPA service level this works with any other SEPA account