Michael Schnabel
Apr 10 · 8 min read

regulatory and technical aspects are discussed

During the annual department seminar of the DLT (Distributed Ledger Technology) group from MaibornWolff (a company that offers IT consulting and engineering) we strived to determine, how to make it possible for every employee of the company to receive parts of her/his salary in bitcoin.

Fundamentally two obstacles have to be overcome. First, there are legal concerns which have to be clarified: Are bitcoins legal in Germany? Is is legal to pay with bitcoin? Second: How can we automate the process as much as possible in a way, that everyone can use the solution easily?

If you are interested in the first point, please continue reading section 1. If you are just interested in the technical solution skip section 1 and proceed reading section 2.

1. Regulation of cryptocurrencies in Germany

In Germany, the BaFin (Federal Financial Supervisory Authority: Bundesanstalt für Finanzdienstleistungsaufsicht) is the financial regulatory authority for Germany. The main task of BaFin is the supervision of banks, insurance companies and the trading of securities and ensure the viability, integrity and stability of the German financial system.

1.1 Are cryptocurrencies legal in Germany?

In accordance with BaFin’s legally binding decision on units of account within the meaning of section 1 (11) sentence 1 of the KWG (general guidance notice on authorization: Kreditwesengesetz), Bitcoins are financial instruments. Units of account are comparable to foreign exchange with the difference that they do not refer to a legal tender. Included are also value units which function as private means of payment in barter transactions and any other substitute currency that is used as means of payment in multilateral accounting on the basis of contracts under private law. This legal classification applies in general to all cryptocurrencies. What software they are based on or which encryption technologies they apply is immaterial in this respect. By contrast, cryptocurrencies are not legal tender and so are neither currencies nor foreign notes or coins. They are not e-money either within the meaning of the German Payment Services Supervision Act (Zahlungsdiensteaufsichtsgesetz — ZAG); they do not represent any claims on an issuer, as in their case there is no issuer. The situation is different for digital means of payment which are backed by a central entity that issues and manages the units. Such companies usually carry out e-money [1] business pursuant to section 1a of the ZAG. [2]

Check! Cryptocoins are not a legal tender nor a (foreign) currency.

Using cryptocurrencies as a substitute for cash or deposit money to participate in exchange transactions as part of the economic cycle does not require authorization. A service provider or supplier may receive payment for his or her services in cryptocurrencies without carrying out banking business or financial services. The same applies to the customer. Equally, mining cryptocurrencies in and of itself does not trigger an authorization requirement as the “miner” does not issue or place the cryptocurrencies. The sale of cryptocurrencies, either self-mined or purchased, or their acquisition are generally not subject to authorization.
However, under additional circumstances, a commercial handling of the cryptocurrencies may trigger the authorization requirement under the KWG. Failure to obtain authorization generally constitutes a criminal offense under section 54 of the KWG. [1]

We would like to avoid being required to ask for authorization, as it comes with a lot of duties regarding data recording and reporting. In oder to avoid a lot of paperwork, let’s have a look what BaFin considers required for authorization:

1.2 Requirements for platforms and exchanges

Those buying and selling cryptocurrencies commercially in their own name for the account of others carries out principal broking services which are subject to authorization. The purchase and sale of cryptocurrencies is made for the account of others when the economic advantages and disadvantages of that business affect the principal. In addition, the activity must be similar enough to the broking services within the meaning of the German Commercial Code (Handelsgesetz), although individual rights and obligations may deviate from those typical for broking services. In the case of cryptocurrency platforms, the principal broking services that require authorization exist when: [1]

  • the individual participants are authorised to give instructions to the platforms until the realization of the orders by setting the number and price of the transactions,
  • the individual participants are unaware of their transaction partners and the platform does not act as representative of the participants but rather in its own name,
  • the economic advantages and disadvantages of the transactions affect the participants that transfer money to the platform’s accounts or transfer cryptocurrencies to their addresses, and
  • the platform is obliged to account to the participants for the execution of transactions and to transfer acquired cryptocurrencies.

1.3 Requirements for mining, purchase and sale

Providers that act as “currency exchanges” offering to exchange legal tenders against cryptocurrencies or cryptocurrencies against legal tenders carry out trading for own account. This is the case when cryptocurrencies are not only mined, purchased or sold in order to participate in an existing market, but when a special contribution is made to create or maintain that market. Due to the additional service element, this then constitutes trading for own account that requires authorization. This may be the case, for instance, when a person publicly advertises regular purchases and sales of cryptocurrencies.
Although mining cryptocurrencies in itself does not trigger an authorization requirement, if mining pools offer shares in proceeds from mined and sold cryptocurrencies on a commercial basis, for instance in exchange for computing power of the user, they generally are subject to authorization. [1]

1.4 Conclusion about regulatory compliance

Essentially this means: If your company just wants to pay salaries in cryptocurrency and does not trade, hold nor mine coins in order to gain any profit you are not subjected to authorization.

In order to not being seen as a bank/financial service authorization, we figured the process to be like this:
Some days before payday you transfer the total amount of the salaries to be paid in Euros to the cryptocurrency exchange (in our case bitstamp, because it offers corporate accounts) via SEPA or any other convenient method that is offered by the exchange. SEPA is the preferred way in Germany because there are very low transaction costs and the transaction is done within several hours (legally the transfer must be executed within 24 hours [3]). The next steps have to be done in a short period in time, in order to minimize the time you posses the cryptocurrency. If you hold crypto for a some time, the exchange rate is changing and the BaFin might consider you offering financial services and holding client funds, which would require authorization.

2. How paying wages in cryptocurrency works technically

To ensure a quick execution, we automated all the steps and trigger them via a simple web frontend. The steps are:

  • trade total amount of EUR (priorly transfered via wire or SEPA) to BTC
  • withdraw all BTC to company’s wallet address
  • wait for transfer to be completed (this can take up to 2 hours)
  • sign and send a multireceiver transaction (multi-receiver to save transaction cost) with your trezor hardware secure wallet

The idea is: During the time between trading EUR to BTC and paying out the BTC to your employees, the exchange rate must not change significantly! If it does, your company might be subjected to regulation as explained above.

The software we have created features a frontend and a backend.

The backend provides the following API endpoints:

/api/company/employees
returns all employees and the correspondig amount in EUR registered.

/api/company/balance
returns the BTC balance of the company’s public wallet address.

/api/bitcoin/outputs
returns a json object with addresses and amounts (BTC) to pay out.

/api/bitstamp/buy
places a buy order on the bitstamp cryptocurrency exchange and returns (error, result).

/api/bitstamp/withdraw
withdraws all BTC from the bitstamp account to the company wallet and returns (error, result).

/api/bitstamp/price
returns the current BTC/EUR price.

/api/bitstamp/balance/eur
returns the EUR account balance from bitstamp.

/api/bitstamp/balance/btc
returns the BTC account balance from bitstamp.

The frontend enables the user to interact via a webpage.

This is how the webpage looks like, if there were not yet funds transfered to the crypto exchange. It shows two main elements: First, a table with employees registered to the service and the corresponding wallet address and the amount they are getting paid in EUR. Secondly, there is an action segment shown with three buttons. Each of the button triggers one of the three major tasks.

main frontend page
  1. As long as there is no money, or not enough money on the cryptocurrency exchange, the first button is inactive (no function), but it shows how much Euros have to be transfered. If there is enough money (this is queried via API from bitstamp, from the backend) the button will show: Buy Bitcoins for xxx€ on Bitstamp
  2. The second button lets you withdraw all Bitcoins from Bitstamp to your company wallet
  3. Lastly, the third button creates a transaction with the correct amount of BTC for each employee and opens a dialog field with the resulting summary. You can either confirm the transaction “Send Tx” or cancel. If you choose to send the transaction, another window will open and encourage you to connect your trezor hardware wallet, in order to sign and send the transaction.
confirm or cancel the transaction
connect your trezor hardware wallet and sign the transaction on the device

3. Conclusion

This article describes the easiest way we could think of to pay your employees with bitcoin. This is achieved, while minimizing the risk to fall under the regulatory supervision of BaFin, because you might be considered an asset manager or trader.

The software was created during a two day group seminar of the Distributed Ledger Technologies department of MaibornWolff GmbH. Please note, that this software must not to be used in production as is and that we do not garantee any functionality. It is rather showcasing the principle of how salaries can be paid in bitcoin. It still provides a very good starting point if your endevors are similar. We hope that you find it useful.

Please download, use, and fork our software at: https://github.com/MaibornWolff/bitcoin.me it comes with a MIT licence and absolutely no warranty :)

References (last visited: 4th April 2019):
[1] https://www.bafin.de/EN/Aufsicht/FinTech/Bezahlverfahren/bezahlverfahren_node_en.html
[2] https://www.bafin.de/EN/Aufsicht/FinTech/VirtualCurrency/virtual_currency_node_en.html
[3] https://www.ecb.europa.eu/paym/retpaym/undpaym/qa/html/index.en.html
[4] https://github.com/MaibornWolff/bitcoin.me

MaibornWolff

Inspiring Stories by Excellent Software Engineers, Dedicated Test Engineers, and Passionate IT Consultants

Michael Schnabel

Written by

Blockchain #BUIDLer and Senior Blockchain Engineer at MaibornWolff GmbH

MaibornWolff

Inspiring Stories by Excellent Software Engineers, Dedicated Test Engineers, and Passionate IT Consultants

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade