An invoice issued to a misspelt name, a tax identification code with two digits swapped, an out-of-date address: each seems trivial until the document is rejected or has to be reversed. Business partner records are filled in by hand, by different people. An automatic CUI check replaces typing with a lookup: you enter the CUI (the Romanian tax identification code), and the software fetches the details from public sources.
The other half of the problem is time. Details that are correct today can change next month: the company moves its registered office, its VAT status changes or it becomes inactive. Without a mechanism to alert you, you find out when something goes wrong.
An automatic CUI check the moment you add a business partner
The first filter does not even need the internet. The tax identification code has a check digit, calculated from the others, so many typing mistakes can be caught on the spot. Only then does the software query the public source and fill in the record.
For companies in Romania, the usual source is the public web services of ANAF, Romania’s tax authority, which return identification details and information about the company’s tax status, for example relating to registration for VAT purposes. For partners in other member states there is VIES, the European Commission’s system for checking the validity of a VAT number. Which fields are available is something we establish at the outset, from each source’s current documentation.
- Automatic completion: the name and address are fetched from the source, not typed.
- Blocking duplicates: the same tax identification code cannot be entered a second time under a different name.
- Flags on entry: the status found in the registers is displayed prominently, before the first order.
- Lookup history: the response received is saved, with the date and time.
The old records: cleaning up the list of customers and suppliers
The project often begins with a surprise: the same company appears in the database several times, spelt in different ways, some records have no tax identification code, and others have one the registers do not recognise. Before continuous checking is switched on, we run the whole list through the public sources and produce a report of the discrepancies.
Corrections are not applied blindly. Minor differences (an abbreviation, a capital letter) can be updated in bulk, with your agreement. Serious ones go to someone who knows the partner. Merging duplicate records calls for care, because invoices, balances and order history hang on them.
The monitoring that follows: what has changed with your business partners
A scheduled task periodically repeats the check for active partners and compares the new response with the saved one. When a difference appears, the software changes nothing out of sight: it tells you.
You decide how often the check is repeated and who receives the alerts. If you have a few thousand customers, it makes sense to check those with orders in progress often and the others less so, so as not to drown the team in notifications. What happens after an alert depends on your internal procedure and your accountant’s advice.
- Change of name or registered office: the record is updated after confirmation; old documents stay as they were.
- Change in VAT status: a flag goes to accounting, which decides what needs to be done.
- A status that needs attention, for example inactivity: a flag goes to sales, before the next invoice.
- The source does not respond: the check is retried later, and the partner is shown as “not recently verified”.
What the registers say and what they do not
The check shows what appears in the public sources at the time of the lookup. It does not tell you whether the partner pays its invoices, whether it is involved in litigation or who really runs it. For a proper risk assessment you need other sources (financial statements, insolvency information, reports from specialist firms) and a person’s judgement.
There are technical limits too. Public sources update at their own pace, may change the structure of their responses and can be temporarily unavailable. That is why we do not promise that the system catches every problem. Its purpose is more modest and more useful: the basic details go in correctly, and a change visible in the registers does not go unnoticed for months on end.
Where it plugs in: ERP, B2B store, new account form
We build the check as a small, separate service with a REST API (an interface through which your programs send it a code and receive the response in a standard format). The same service can therefore serve the partner record in your ERP or CRM, the registration form of an online store for business customers and the invoicing software.
The service keeps a temporary cache of responses, so that it does not query the source ten times for the same code on the same day, and it respects each source’s usage limits. In a WooCommerce store for business customers, the buyer types in their tax identification code and the billing details fill themselves in.
Frequently asked questions
Where does the data come from and how current is it?
From public sources, mainly ANAF’s web services for companies in Romania and VIES for VAT numbers in the European Union. How fresh it is depends on each source, which is why every response is saved together with the date of the lookup.
Can the system automatically block invoicing to a company with problems?
Technically yes, if you define the rule yourself. We recommend that at first the system only warns, and that blocking is decided by a person. Your accountant will explain what tax consequences each situation has.
Can companies from outside Romania be checked too?
For VAT numbers in the member states there is VIES. For the rest of the world, automatic checking is usually limited or paid for, through specialist providers.
This is a typical project description: it shows how we usually approach this kind of work and does not present a project carried out for a particular client. Every real project starts from your company’s situation, and the stages, timescales and price are agreed after the initial discussion.