summaryrefslogtreecommitdiff
path: root/libeufin/nexus-manual.rst
blob: c027e6911ee481140046bca9f20859c23252ab94 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
.. target audience: operator, developer

Nexus Manual
############

.. contents:: Table of Contents

LibEuFin Nexus is an EBICS facilitator.  It offers a command line
interface to setup EBICS access, download banking records, and submit payments.
Future versions will offer a Web API to allow Taler Exchanges to talk to their
banks.

In this manual, we explain how to setup an EBICS subscriber.  We assume that
the bank had already granted EBICS access to the subscriber.

Installing Nexus
================

The following section was tested on an *OpenJDK 17* environment.

Building from source
--------------------

Nexus belongs to the LibEuFin project, and can be downloaded via Git:

.. code-block:: console

  $ git clone git://git.taler.net/libeufin

Note that Kotlin and Gradle should already work on the host system.

Navigate into the *libeufin* local repository, and from top-level run:

.. code-block:: console

  $ ./bootstrap
  $ ./configure --prefix=$PREFIX
  $ make install-nexus 

If the previous steps succeeded, the ``libeufin-nexus`` command should
be found in the $PATH.

Setting up the EBICS subscriber
===============================

The following snippet shows the mandatory configuration values.

.. code-block:: console

  [nexus-ebics]
  CURRENCY = CHF

  # Bank
  HOST_BASE_URL = http://bank.example.com/
  BANK_DIALECT = postfinance

  # EBICS IDs
  HOST_ID = mybank
  USER_ID = myuser
  PARTNER_ID = myorg

  # Key files
  BANK_PUBLIC_KEYS_FILE = ${LIBEUFIN_HOME}/bank-keys.json
  CLIENT_PRIVATE_KEYS_FILE = ${LIBEUFIN_HOME}/subscriber-keys.json

  # Account information
  IBAN = myiban
  BIC = mybic
  NAME = myname

Assuming that the configuration file exists at ``$config_file``, the following
command would start the EBICS setup process.  The files CLIENT_PRIVATE_KEYS_FILE
and BANK_PUBLIC_KEYS_FILE would be created at the CWD.  Adjust their path to your
setup ('$HOME' is currently not supported along paths).

.. code-block:: console

  libeufin-nexus ebics-setup -c $config_file

If the previous command succeeded, the subscriber keys reached the bank, but the setup
**should** fail with an ``EBICS_INVALID_USER_STATE`` error code.  That happens because
the client tries to download the bank keys *before* having confirmed the subscriber keys
via the traditional post service.

To that purpose, the previous run should have left a PDF document that the subscriber can
print, sign, and send to the bank to confirm their subscriber keys.  Look for the message
looking like ``PDF file with keys hex encoding created at: /tmp/libeufin-nexus-keys-$timestamp.pdf``.

Once the bank received and approved such printed document, run the same command again, in
order to download the bank keys and let the user accept them.

.. code-block:: console

  libeufin-nexus ebics-setup -c $config_file

The setup is considered finished once the user accepts the bank keys.