Business Professionals
Power BI | Power Pivot | Power Query | DAX
Cloud Flows | RPA | AI Builder | Copilot
60+ Formulas | Data Stories | Advanced Reporting & Modeling
VB Programming | Report Automation |
MS-Office Automation
Techno-Business Professionals
Power BI | Power Query | Advanced DAX | SQL - Query &
Programming
Microsoft Fabric | Power BI | Power Query | Advanced DAX |
SQL - Query & Programming
Power BI | Power Apps | Power Automate | Copilot Studio | Power Pages | Dataverse
Microsoft Power Apps | Microsoft Power Automate
Power BI | Adv. DAX | SQL (Query & Programming) |
VBA | Python | Web Scrapping | API Integration
Power BI | Power Apps | Power Automate |
SQL (Query & Programming)
Power BI | Adv. DAX | Power Apps | Power Automate |
SQL (Query & Programming) | VBA | Python | Web Scrapping | API Integration
Power Apps | Power Automate | SQL | VBA | Python |
Web Scraping | RPA | API Integration
Technology Professionals
Power BI | DAX | SQL | ETL with SSIS | SSAS | VBA | Python
Power BI | SQL | Azure Data Lake | Synapse Analytics |
Data Factory | Databricks | Power Apps | Power Automate |
Azure Analysis Services
Microsoft Fabric | Power BI | SQL | Lakehouse |
Data Factory (Pipelines) | Dataflows Gen2 | KQL | Delta Tables | Power Apps | Power Automate
Power BI | Power Apps | Power Automate | SQL | VBA | Python | API Integration
Power BI | Advanced DAX | Databricks | SQL | Lakehouse Architecture
Business Professionals
Power BI | Power Pivot | Power Query | DAX
Cloud Flows | RPA | AI Builder | Copilot
60+ Formulas | Data Stories | Advanced Reporting & Modeling
VB Programming | Report Automation |
MS-Office Automation
Techno-Business Professionals
Power BI | Power Query | Advanced DAX | SQL - Query &
Programming
Microsoft Fabric | Power BI | Power Query | Advanced DAX |
SQL - Query & Programming
Power BI | Power Apps | Power Automate | Copilot Studio | Power Pages | Dataverse
Microsoft Power Apps | Microsoft Power Automate
Power BI | Adv. DAX | SQL (Query & Programming) |
VBA | Web Scrapping | API Integration
Power BI | Power Apps | Power Automate |
SQL (Query & Programming)
Power BI | Adv. DAX | Power Apps | Power Automate |
SQL (Query & Programming) | VBA | Web Scrapping | API Integration
Power Apps | Power Automate | SQL | VBA |
Web Scraping | RPA | API Integration
Technology Professionals
Power BI | DAX | SQL | ETL with SSIS | SSAS | VBA
Power BI | SQL | Azure Data Lake | Synapse Analytics |
Data Factory | Azure Analysis Services
Microsoft Fabric | Power BI | SQL | Lakehouse |
Data Factory (Pipelines) | Dataflows Gen2 | KQL | Delta Tables
Power BI | Power Apps | Power Automate | SQL | VBA | API Integration
Power BI | Advanced DAX | Databricks | SQL | Lakehouse Architecture
LEARN THIS HANDS ON
Power Apps & Power Automate
If you invoice in Romania, you’ve probably had this happen: finance sends a draft invoice, someone types the CUI wrong, or the client dropped out of the e-Factura register last month, and the invoice now needs fixing in multiple systems. You already know ANAF has public “Verificare CUI” services, but nobody wants to check each partner manually.
This article walks through a practical, end-to-end flow in Power Automate that calls ANAF’s public services once per CUI to get VAT status, VAT-on-collection, inactive flag, and pushes the results back to your invoicing process. We’ll be upfront about licensing: the flow uses the premium HTTP connector.
Important legal note: ANAF does not publish an officially documented, supported public API for CUI verification in the same way commercial APIs are documented. What exists are public web services and downloadable datasets that can be queried programmatically, but their format and availability can change without notice. You must:
- Verify the current ANAF endpoints and formats directly from ANAF’s official site.
- Ensure your usage complies with ANAF’s terms and Romanian legislation.
- Be prepared to update your flow if ANAF changes or removes an endpoint.
You’re working with a small finance/ops team that:
Today’s process:
Pain points:
Target state:
We’ll build that flow step by step.
ANAF exposes public, no-login services that return multiple tax-related flags for a Romanian CUI. For invoicing compliance, the key points are:
ANAF publishes these via HTTP-accessible services that:
From Power Automate’s perspective this is workable: one HTTP call per CUI, no login flow, and you can parse the response into strongly typed fields in your data store.
e-Factura and split VAT: ANAF’s e-Factura register and historical split VAT mechanism are exposed via separate datasets/services, not the basic CUI verification service. If you need e-Factura enrolment or split VAT history, you must:
- Identify the current official ANAF source (e.g., downloadable register files or dedicated endpoints).
- Build separate flows or logic to ingest and join that data to your customer records. The rest of this article focuses on the core CUI verification (VAT and inactivity), which is the stable part of the process.
Power Automate has multiple ways to call web services, but for ANAF’s services you’ll almost always use the HTTP action, which is part of the premium connector set.
Important licensing implications (as of late 2026):
There are workarounds (e.g., Azure Functions or custom connectors managed centrally), but they still consume premium capacity somewhere. For a dedicated invoicing validation flow, budgeting for a premium license is usually simpler.
Before we touch actions, decide on the trigger and the data store.
For the invoicing scenario, common triggers are:
When a row is added, modified or deleted (Dataverse)
When an item is created or modified (SharePoint)
Recurrence (scheduled)
For a high-volume “Verificare CUI” use case, a batch + per-invoice check is often safest:
Regardless of whether you use Dataverse or SharePoint, define fields to store the ANAF data. Typical fields:
CUI (string)ANAF_LastCheckedOn (date/time)ANAF_IsVATRegistered (boolean)ANAF_IsVATOnCollection (boolean)ANAF_IsInactive (boolean)ANAF_RawResponse (text, optional for audit/debug)With this structure, your ERP or invoice app can enforce rules like:
ANAF_IsInactive = true.ANAF_IsVATRegistered = true.ANAF_IsVATOnCollection = true.We’ll assume:
Accounts with a CUI column.In Power Automate, create a Cloud flow.
Choose When a row is added, modified or deleted (Dataverse) as the trigger.
Configure:
Accounts table.Add a Condition after the trigger to avoid unnecessary calls:
CUI is not empty, and ANAF_LastCheckedOn is either empty or older than X days.You can implement the age check using a combination of addDays(utcNow(), -X) and comparison in an expression.
Example pattern for "older than 7 days" (you will adapt this to your actual actions and columns):
@or(
equals(triggerOutputs()?['body/ANAF_LastCheckedOn'], null),
lessOrEquals(triggerOutputs()?['body/ANAF_LastCheckedOn'], addDays(utcNow(), -7))
)
This assumes ANAF_LastCheckedOn is present on the row from the trigger. If you use a separate Get a row by ID action, adjust the expression to reference that action instead.
Add an HTTP action inside the "Yes" branch of the condition.
Configure the HTTP action:
GET or POST depending on the specific ANAF service you target.Content-Type if required (e.g., application/xml or application/json).The exact URI and parameter format depend on ANAF’s current service; you must copy them from ANAF’s official site or documentation. Use dynamic content to insert the CUI from the Dataverse row into the request.
Example pattern (structure only, not a real endpoint):
{
"method": "GET",
"uri": "https://<anaf-endpoint>/verificarecui?cui=@{triggerOutputs()?['body/CUI']}&date=@{utcNow()}"
}
Replace the base URL and parameter names with the actual ANAF values.
ANAF’s response format (JSON vs XML, field names) is defined by ANAF, not Microsoft. Once you know the format, use either:
Assuming JSON, add a Parse JSON action:
@body('HTTP') (or the name of your HTTP action).The schema will expose fields such as (example names only):
isVATRegistered (boolean)isVATOnCollection (boolean)isInactive (boolean)You must align these with the actual ANAF field names.
If the response is XML, first convert it to JSON or extract the needed nodes using Power Automate’s XML functions, then map them to your Dataverse fields.
Add an Update a row (Dataverse) action to store the ANAF data on the account.
Map fields:
ANAF_LastCheckedOn: utcNow().ANAF_IsVATRegistered: isVATRegistered from Parse JSON (or the equivalent XML-derived value).ANAF_IsVATOnCollection: isVATOnCollection.ANAF_IsInactive: isInactive.ANAF_RawResponse: @string(body('HTTP')) (optional).This gives your downstream systems a single source of truth for ANAF status per CUI.
You don’t want a temporary ANAF outage to block all customer updates.
Add basic error handling:
In the error scope, you can:
ANAF_LastCheckedOn to null or leave unchanged.This keeps your flow resilient while still enforcing validation most of the time.
Once the ANAF flags are stored, you can enforce rules in multiple layers.
If you have a model-driven app or canvas app for invoicing:
Disable the "Issue invoice" button when:
ANAF_IsInactive = true, orANAF_IsVATRegistered = false for customers that should be VAT payers.Show warnings when:
ANAF_IsVATOnCollection = true (adjust payment handling).If you also ingest e-Factura enrolment data from ANAF’s official register via a separate process, you can:
If you generate invoices via flows:
Because you store ANAF_LastCheckedOn and optionally ANAF_RawResponse:
For the finance team, this is a concrete improvement over ad-hoc screenshots and manual notes.
"Verificare CUI" is a high-volume search pattern. A few points to keep your flow healthy:
Avoid duplicate calls
Batch vs real-time
Timeouts and retries
Rate limits
Before your next invoicing cycle, pick one customer table (Dataverse or SharePoint), attach a Power Automate flow with a premium HTTP call to ANAF’s CUI verification service, and write back VAT and inactivity flags per CUI. Once you see those fields driving real conditions in your invoice flow, manual "Verificare CUI" checks will quickly become the exception instead of the rule.
This article reflects the shift from manual ANAF 'Verificare CUI' lookups to automated, API-based validation in Power Automate for teams that issue recurring invoices to Romanian entities and need reliable VAT and e-Factura status at scale.
Professionals who want to apply these patterns to their own data can explore Excelgoodies' Power Automate Course programme - taught live by instructors, with certification awarded once a real project is running at work.
Insights compiled through ongoing industry research and discussions within the Excelgoodies Analytics Community.
Power Automate
New
Next Batches Now Live
Power BI
SQL
Power Apps
Power Automate
Microsoft Fabrics
Azure Data Engineering