Thousands of Greek businesses run on old, proven invoicing software. Programs that have been working reliably for decades, that users know inside out, that cover exactly what they need and not one click more. You know the person I mean, the one who issues an invoice with their eyes closed because they have been doing it their whole working life. Then came myDATA: every invoice must be transmitted electronically to the Greek tax authority (AADE).

For a modern cloud application this is trivial. One button, and the invoice is gone. For a program written in 16bit Clarion 5.5, with no internet capability whatsoever, it looks like a dead end. And the usual “solution” you will hear is always the same one, replacement: throw away the program that works, buy a new one, retrain the users, migrate the data and hope everything goes well. Hope. Lovely engineering, wouldn’t you say?

There is another way. Let us look at it.

Let us look first at what we were up against

My commercial program has been in operation since 2003, used by me and by clients. It is written in Clarion 5.5, a 16bit technology. What does that mean in practice? That it cannot open an internet connection, let alone strike up a conversation with a modern REST API. It is a bit like asking someone without a phone to text you. And because obstacles rarely arrive alone, Greek characters in such old environments are encoded differently from what myDATA expects. So even if it could speak, it would be speaking a different dialect.

And the most important requirement, the one that was never up for negotiation: the user should not have to change anything about the way they work. No second application, no extra window, no manual step. They issue the invoice as always and the program takes care of the rest. Full stop.

The bridge I built between them

I did not try to teach the old program new tricks, because it was never going to learn them. I gave it an interpreter instead. I designed a bridge in Python that sits between the program and the tax authority:

  • The program exports the invoice to an XML file and calls the Python routines.
  • Python normalizes the characters into the form myDATA requires.
  • It transmits the invoice to the myDATA API and receives the MARK (the official registration number) and the URL.
  • It generates the QR code for the printed invoice.
  • It returns everything to the program through files, and the program archives it all automatically.

All of this happens silently. No black window flashing open and shut, no dialog begging for attention, no “please wait” leaving you to wonder whether it froze or is merely thinking. The user never sees another program running: they issue the invoice and the program informs them whether everything went through or there was a problem. Python is invisible. And the best technology, the way I see it, is the kind nobody notices.

So what came of it

The connection has been in production for about 3 years and has transmitted thousands of invoices, for me and for my clients. It keeps up with every change from the tax authority, because changes always come, they are one of the few certainties in life: delivery notes were added recently, and the upcoming connection to an e-invoicing provider is being prepared.

A program from 2003 meets obligations today that did not even exist when it was written, without changing how a single user works. Every time I think about it, I smile a little.

Why it matters in the end

Software that works does not have to be thrown away because the requirements around it changed. With the right bridge, a legacy system can connect to modern services, stay compliant with legislation, and keep doing what it has always done well. The goal was never for the program to be new. The goal was for it to do its job.

So the person who has been issuing invoices their whole working life keeps issuing them exactly as before, eyes closed. Only now, without ever needing to know it, they are also talking to the tax authority.

If your business relies on older software that needs to talk to myDATA, banks, e-shops or any modern service, let’s discuss it. See more about custom web applications and integrations or send me a message through the contact form.