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
Most finance teams in Poland now have KSeF XMLs landing somewhere, but the actual approval still happens in email, Excel or on paper. You’ve got a legally valid structured invoice, yet your people are screenshotting PDFs and forwarding them around. This walkthrough shows how to wrap a robust, auditable approval process around KSeF invoices using Power Automate, even though there’s no native KSeF connector.
We’ll use one realistic scenario: a mid-sized company where KSeF invoices are downloaded by an integration service into SharePoint or OneDrive, and the finance team wants a clean approval flow with proper routing, comments and status tracking.
From 1 April 2026 KSeF is planned to be mandatory for most companies, and the no‑penalty period is currently announced to end on 31 December 2026. That means from January 2027 your invoices must be in KSeF under the current schedule, but nothing in KSeF itself solves:
Typical symptoms in teams right now:
On top of that:
.p12 certificate, XAdES signing and encrypted sessions, which isn’t supported directly in standard cloud flows.So the realistic architecture is:
The rest of the article assumes you already have step 1 in place: something is reliably saving KSeF XMLs and basic metadata to SharePoint or a similar store.
We’ll build a single core approval flow with three logical layers:
You need a stable place to track invoice metadata and approval state. A SharePoint list works well for most teams; Dataverse is better if you’re already on premium licenses and want deeper integration.
Minimal fields for a SharePoint list KSeF Invoices:
FV 2026/10/123 – Vendor XYour integration layer should populate as many of these columns as possible when it drops a new invoice.
Assume KSeF XMLs are saved into a SharePoint document library KSeF-Invoices with a folder structure like /Incoming/Year/Month. The intake part of the flow does three things:
KSeF Invoices list.Use a cloud flow with the SharePoint trigger:
KSeF-InvoicesThis trigger fires when a file’s properties are created, without loading full content, which is efficient for high volume.
If your integration layer writes metadata into custom columns on the file (e.g. KSeFInvoiceId, VendorName), you can skip XML parsing in Power Automate and simply map those columns into the list.
Core steps in the intake branch:
Initialize variables
Get file properties (SharePoint – Get file properties)
Create item in KSeF Invoices list (SharePoint – Create item)
Set ApprovalStatus = "Pending" and Approver based on routing rules.
Routing can come from a separate list Cost Centers with columns:
Use Get items with a filter query. In the Filter Query box, use an OData expression like:
CostCenter eq '@{triggerOutputs()?['body']['CostCenter']}'
Then set the Approver field on the invoice item from the returned record.
Once the intake creates a list item with ApprovalStatus = Pending and Approver set, you can trigger the approval flow off that list.
Create a second cloud flow:
KSeF InvoicesAdd a Condition immediately:
ApprovalStatus equals PendingCreatedByIntegration equals YesOnly then continue with the approval logic. This avoids loops if someone edits the item manually.
The Approvals connector in Power Automate (Power Automate approvals) is well suited here. For a single approver per invoice:
Action: Create an approval (v2)
Approve/Reject – First to respondKSeF Invoice @{triggerOutputs()?['body']['KSeFInvoiceId']}Approver Email from the list itemAction: Wait for an approval (v2)
After the approval result is available, update the list item:
Approve:
ApprovalStatus = "Approved"Responses Comments.Reject:
ApprovalStatus = "Rejected"This creates a consistent audit trail:
Most approvers live in Microsoft Teams more than in the Power Automate portal. Combine Approvals with Teams notifications:
The Approvals connector already surfaces approvals in Teams, but a custom adaptive card gives you more control over layout and extra actions (e.g. “Request clarification”). Use this path only if you’re comfortable maintaining JSON adaptive card payloads.
Approval flows break down in practice when invoices sit for days without a decision. You want predictable behaviour:
The Approvals connector doesn’t auto‑expire approvals, but your flow can enforce a policy.
Pattern:
After Create an approval (v2), run Parallel branches:
P2D for two days), then check whether the item is still Pending.In Branch B, after Delay:
KSeF Invoices list.ApprovalStatus = "Pending", send a reminder email or Teams message to the approver.If you want escalation after more days, chain another Delay and Condition and update Approver to an escalation approver, then create a new approval.
For invoices above a threshold (e.g. 100k PLN), you may require two approvals:
Implementation:
TotalGross.TotalGross is above threshold, set ApprovalStatus = "Pending – Level1".Pending – Level1, assign to cost center owner, run approval.Pending – Level2 and set Approver to finance manager.Pending – Level2 and runs the same pattern.Keep status values explicit (Pending – Level1, Pending – Level2) so finance can see where an invoice is stuck.
The approval flow is only useful if its result drives downstream behaviour.
Common patterns:
ApprovalStatus = "Approved" and calls an ERP API endpoint to create a posting document.If you use the HTTP connector to call ERP APIs:
PostingStatus, PostingErrorMessage).A simple but powerful addition: build a Power BI report on top of the KSeF Invoices list.
Useful visuals:
ApprovalStatus and CostCenter.Created and time of status change to Approved).Pending invoices.This gives finance and management a clear view of bottlenecks and helps justify process changes (e.g. more approvers in some cost centers).
KSeF itself has strong cryptographic requirements, but by the time Power Automate sees the data, the critical part is protecting invoice content and metadata.
Key points:
If you’re in a regulated environment, work with your security team to validate that the integration layer handling .p12 and XAdES is appropriately hardened and audited. Power Automate should not be used to directly manage KSeF cryptographic operations.
Before KSeF becomes fully mandatory for your organisation, make sure you have a single, structured approval flow for KSeF invoices, even if your KSeF integration is still evolving. Get the basics in place: a tracking list, a standard Approvals‑based flow, clear status values and simple routing. You can refine XML parsing and ERP integration later, but a clean approval trail is the part your finance team is missing right now.
This article reflects how Polish finance and IT teams are wrapping structured, mandatory KSeF invoice data in pragmatic Power Automate approval flows once a separate integration layer handles the cryptography and connectivity.
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