Taxer is an automated accountant. At the moment, hundreds of thousands of Ukrainian entrepreneurs use the system. It is an online platform where you can quickly and safely submit tax reports directly to the tax authorities via the internet using your electronic digital signature. Interesting fact. The founder of our organization systems.ingello previously worked at Taxer as technical director and actively participated in the development of this service. This article will describe some publicly known details of automation of this kind. Of course, we will not touch on information that is corporately valuable and confidential for Taxer.
https://taxer.ua

Taxer is the largest Ukrainian project in the field of systematizing and automating the submission of tax reports using a digital signature. It is regularly used by hundreds of thousands of Ukrainian entrepreneurs, enterprises, accountants, and managers. The company took on the task of understanding and simplifying possibly one of the most complex and confusing subject areas, and it succeeded; Taxer is one of the first such services in the country and, as of 2024, the most popular and most convenient. The service allows users to submit tax reports both in a free mode and in a paid mode, where automatic document completion tools are available, which significantly reduces time costs. It also contains tools for bookkeeping, calendars, reminders, and an extensive knowledge base. The company monitors all changes in Ukrainian tax legislation and updates its service and information base.
If you have encountered automation in the field of government and administrative structures, you know what kind of hell it is. If you have not, then perhaps you have had to work with accounting and submit tax reports “manually”, through those paper forms and SFSU offices. So. Automating the submission of tax reports is hundreds of times more difficult.

The thing is that the API (or, more precisely, the state tax gateways) worked and continue to work insufficiently stably, are poorly documented, use unpopular methods of data output and validation, and often operate counterintuitively with excessive or insufficient functions. The rules change often; sometimes reports are not accepted and no clear description of the reason is given, so it has to be found out by indirect and creative methods. Programmers on the government side may roll out new versions without reliably testing the result or entering it into the corresponding documentation. The documentation that exists is a separate and also complex story that does not cover all potential questions and problems.

The tax reporting acceptance system itself is a multi-stage process. It includes a fully automatic check, a semi-automatic one, and a check by a tax inspector personally. All these stages are full of potential errors on both sides, and in these conditions the service must operate while smoothing out the corners of this tricky flow as much as possible.

Of course, the most difficult stage is the automatic mode. The reporting document itself is a fairly complex object (or more precisely, a group of objects, an aggregate) with many interconnected properties. Some documents consist of a composite of sub-documents made up of dozens of blocks, each of which consists of form questionnaires. And even the most ordinary entrepreneur submits several such documents.

To submit a document, it must pass a fairly complex automatic check: validation. The document itself is an XML object (need it be mentioned that this is not the most popular format in modern software interfaces). And the validation is an XSD validator. This is also a complex nested XML object that declares the rules by which the report will be checked. Some rules are declarative. And some are described by special regular expressions, which are much more difficult to work with. Some rules produce fairly clear and understandable errors in their description. Some produce indirect responses that require manually entering the document and analyzing the error, imitating a repeated check with semi-manual means.

Every change, both on the side of the automated system and on the side of the tax gateways, entails the need to make changes that require attentiveness and analytics. In order for hundreds of thousands of users to use the system, it must be as resilient as possible to changes of this kind, and this represents additional requirements for the system architecture and programming standards.
Building such an architecture is the cornerstone of startups. At early stages, a startup must roll out working functionality quickly, and it has neither the financial nor temporal resources to do everything thoughtfully and according to standards. But after some time, the startup becomes a regular, systematic, profitable company and faces the fact that its software must also move to a new architectural level. This is where work appears for the architect: system analysis, modular decomposition, careful component-by-component refactoring, elimination of the intermodule ripple effect, generalization of duplicate functionality, normalization of the object-oriented model, normalization of the database while preserving integrity, building the workflow for delivery and deployment of new versions, systematization of configuration, and much, much more. Specialists have plenty to do at the stage of active growth of a successful startup.

But even if we set aside the technical features of government services and the internal architecture of the service, there are also enough challenges in the subject area of accounting and reporting itself. There are quite a lot of tax reporting forms. And even this in itself is already a big problem. In each form, in addition to the above-described validation, there is embedded
For example, accounting for value-added tax (VAT) requires special attention due to the complexity of calculations and the need to submit declarations on time. Errors in calculations or missed deadlines can lead to serious fines and additional inspections by the tax authorities.
Payroll calculation for employees is also a complex task. It includes not only salary accrual, but also the calculation of taxes, pension and social contributions. Each of these calculations is subject to its own rules and rates, which may change.
If you have dealt with this, you have noticed that there are many rules that connect input fields with each other, and many operations required for completion are a real routine, a group of similar actions.
You may also have noticed that almost all of this routine can be reduced, since all these rules repeat themselves, sometimes simply duplicated without visible meaning, and this means they can be performed automatically; it is only necessary to know some basic figures for the calculation and data about the enterprise. Data about the enterprise or entrepreneur rarely changes. Data on income\expenses changes every accounting cycle. But there is not much of it. The whole point of the paid version of the Taxer online service is that the system takes this headache off your hands. You enter the enterprise data once, and then simply update the figures (your income\expenses\employees, etc.). Taxer will do the rest for you.

Technically, this is achieved by recreating the mathematics of each of the forms. And here, too, there is a large space for engineering thought. The forms are different, but they have many common denominators. And the more successfully a programmer can create a polymorphic form that encapsulates some common functions of forms, the more successfully a programmer can generalize common mathematics by taking it outside a specific form and reducing duplication, the less routine work there will be in the development department and the more the development department will be able to create new useful functions for developing the service. Naturally, there are many interesting technical nuances, but we cannot cover them in this article.

It is important to mention security. The document exchange subsystem in Taxer is in many ways similar to other state electronic signature systems. By the way, courts and private banks use the same kind. Such subsystems have quite strict requirements for encryption and security as such. The first problem you will encounter if you are developing an online service with an EDS is that you legally do not have the right to receive your client's electronic digital signature through the browser and process it on the server. This is illegal. Therefore, various services invent safer processing paths. Some create a certified browser application. Some offer downloading special software. The task is simple: the EDS must be loaded and decrypted according to a special algorithm ON THE CLIENT'S COMPUTER. For example, Taxer used a scheme with a Java applet. The problematic side of this solution is that the user must first install the Java virtual machine on their computer. And there are nuances in this process for different operating systems. Therefore, video installation instructions have to be created, because even an advanced user may encounter various unclear issues here, such as versioning or environment variables.

After everything is successfully installed, the process could not be simpler. You just open this applet developed at Taxer. This applet decrypts the data of your EDS according to a special algorithm. And it synchronizes with the Taxer server through a special Gateway, which is developed using Node JS and establishes a continuous (socket) connection with the Java applet. This works instantly, without any page refreshes, form submissions, or similar annoyances.

Of course, this is far from everything. Taxer is an extremely complex product with a long history and many features of both architecture and infrastructure. The service is constantly developing, new functions are added, and old ones become better and more convenient. All this is achieved through a combination of fighting heterogeneity and high complexity with timely engineering thought. And of course, this is years of immense labor by various specialists: lawyers, designers, programmers, architects, system administrators, and technical support specialists.

If you need to develop a complex project, sign up for a consultation with us; we have extensive experience in management and development. And we have been dealing exclusively with complex systems for many years.
The link to our company presentation is just below.