Recently, while working on an Expense Claim application in Power Apps, I noticed one common problem faced by employees and finance teams.
Whenever users submitted an expense claim, they had to manually enter all invoice details, such as:
- Vendor name
- Invoice date
- Tax amount
- Total amount
- Bank details
- Invoice line items
Even though all these details were already available inside the invoice PDF or image, users still had to type everything manually. This process was time-consuming and sometimes led to typing errors or incorrect data entry.
The client wanted a smarter solution.
They asked:
“Can users simply upload the invoice and let the system automatically fill most of the fields?”
That is when I built this Invoice Processing solution using Power Apps, Power Automate, AI Builder, and SharePoint.
In this solution, the user uploads an invoice file, such as a PDF or image, then clicks the Process Invoice button. Power Automate automatically extracts the invoice details using AI Builder and sends the extracted data back to Power Apps.
The best part is that users no longer need to manually enter all invoice details. Most of the fields are automatically populated from the uploaded invoice. Users can simply review the extracted information, make changes if needed, and then save the final data into SharePoint lists.
This not only improves the user experience but also reduces manual effort and helps prevent data entry errors.
Business Requirement
The main requirement is:
A user should be able to upload an invoice file in Power Apps. The invoice can be a PDF, JPG, JPEG, PNG, or GIF file. After clicking the Process Invoice button, Power Automate should extract all invoice details using AI Builder and return them to Power Apps.

The user should then be able to:
- View extracted invoice fields
- Modify extracted values if needed
- Add or edit invoice line items
- Save the final data into SharePoint

Another important aspect of this solution is that the entire application is built with a responsive layout in Power Apps. I used responsive containers, dynamic width and height formulas, and flexible layouts so that the application works properly across desktop, tablet, and mobile devices.
SharePoint Lists Used in This Solution
For this solution, I created two SharePoint lists:
- Extracted Invoice Data
- Invoice Items
1. Extracted Invoice Data SharePoint List
This is the main SharePoint list where invoice header-level details are stored.
| Column Name | Data Type |
|---|---|
| Title | Single line of text |
| Invoice Date | Date and Time |
| Due Date | Date and Time |
| Vendor Name | Single line of text |
| Vendor Address | Multiple lines of text |
| Customer Name | Single line of text |
| Customer Address | Multiple lines of text |
| Subtotal | Single line of text |
| Tax Amount | Single line of text |
| Tax Percentage | Single line of text |
| Total Amount | Single line of text |
| Currency | Single line of text |
| Item Count | Single line of text |
| Bank Name | Single line of text |
| Account Number | Single line of text |
| IFSC Code | Single line of text |
| UPI ID | Single line of text |

The Title column can store the invoice number or a generated invoice reference number.
2. Invoice Items SharePoint List
This list stores the line item details extracted from the invoice.
| Column Name | Data Type |
|---|---|
| Title | Single line of text |
| Name | Single line of text |
| Quantity | Single line of text |
| Rate | Single line of text |
| Amount | Single line of text |
The Title column can be used to store the invoice number or invoice reference ID, so that each item can be connected with the main invoice record.

Create a Power Automate Flow to Extract Data from PDF Invoices
To extract invoice details from the uploaded PDF or image, I created a Power Automate flow. This flow is triggered from Power Apps when the user clicks the Process Invoice button.
In this tutorial, I am not going to explain the complete step-by-step process for creating the AI Builder invoice extraction flow, because I have already explained that in detail in this article:
Extract Data from PDF Invoices Automatically Using Power Automate
In this solution, the flow contains three main actions:
When Power Apps calls a flow (V2)
↓
Run a prompt
↓
Respond to a Power App or flow

The uploaded invoice file is passed from Power Apps to Power Automate. Then, the Run a prompt action reads the invoice content and extracts key details, including the invoice date, vendor name, subtotal, tax amount, total amount, bank details, and line items.
Finally, the extracted values are returned back to Power Apps using the Respond to a Power App or flow action. Once the response is received, all extracted invoice fields are displayed in Power Apps, allowing the user to review and modify them before saving the data to SharePoint.
Build the Power Apps Extracted Invoice Data
After creating the Power Automate flow, I created a Power Apps screen where users can upload the invoice file.
In this screen, I used an Attachment control. This control allows users to select and upload an invoice file from their system. In this application, the user can upload only one invoice file at a time.
The uploaded file can be:
- JPG
- JPEG
- PNG
- GIF
Once the invoice is selected, the file name is displayed inside the attachment control. In my example, I uploaded a PDF invoice named INV-2026-001.pdf.
I also added two buttons:
- Clear
- Process an Invoice
The Clear button is used to remove the selected invoice from the attachment control.
Reset(attachInvoice)
The Process an Invoice button is used to call the Power Automate flow. This button sends the uploaded invoice file to the flow, where the invoice details are extracted and returned back to Power Apps.
This is the Power FX code where I am calling the Power Automate flow:
Set(
varExtractedData,
invoiceProcess.Run(
{
file: {
name: First(attach.Attachments).Name,
contentBytes: First(attach.Attachments).Value
}
}
)
);

In this solution, the attachment control is mainly used to pass the uploaded invoice file from Power Apps to Power Automate for invoice extraction.
After processing the invoice, the extracted data is displayed on the Extracted Invoice Data screen.
On this screen, I used a Form control to display the main invoice details. These fields are automatically populated from the uploaded invoice file, such as invoice number, invoice date, due date, vendor details, customer details, subtotal, tax amount, total amount, currency, and bank information.

Below the form, I added an Invoice Items section. For this, I used a repeating table concept in a gallery to display the invoice line items extracted from the invoice. Each row contains the item description, quantity or hours, rate, and amount.

The user can review the extracted data and make changes if required. If the invoice has an extra item, the user can click the plus (+) icon to add a new row. If any item is not required, the user can remove it using the delete icon.

Finally, I added two buttons at the bottom of the screen:
- Submit: Saves the invoice header data into the Extracted Invoice Data SharePoint list and saves the invoice line items into the Invoice Items SharePoint list.
- Clear: Clears the current invoice data and resets the screen for a new invoice.

This is the Submit button Power FX code:
SubmitForm(Form3_2);
ForAll(
galItems_2.AllItems,
Patch(
'Invoice Items',
Defaults('Invoice Items'),
{
Title: First(colInvoiceData).Title,
Name: txtName.Text,
Quantity: Value(numQty.Value),
Rate: Value(numRate.Value),
Amount: Value(numAmount.Value)
}
)
);
Notify(
"Your Order Has Been Submitted Successfully",
NotificationType.Success
);
Clear(colInvoiceData);Clear(colInvoiceItems);
Navigate('Attachment Uplode Screen',ScreenTransition.Cover);
Test the Application
After completing the Power Apps screen and the Power Automate flow, the next step is to test the entire invoice-processing application.
First, upload an invoice file using the attachment control. In this solution, the application supports PDF and image files such as JPG, JPEG, PNG, and GIF.

After selecting the invoice file, click the Process an Invoice button. This button calls the Power Automate flow and sends the uploaded invoice file for processing.
Users can also remove the selected invoice file using the Clear button before processing another invoice.
In this application, only supported invoice file types can be uploaded, such as PDF, JPG, JPEG, PNG, and GIF.
If the user selects an unsupported file type, such as a Word document (.docx), the application displays a notification that the selected file type is not supported.

Once the flow runs successfully, AI Builder extracts the invoice details and returns the response to Power Apps. Then, all extracted invoice fields are automatically populated on the screen.
The user can then:
- Review the extracted invoice details
- Modify incorrect values if required
- Add additional invoice items
- Remove unnecessary invoice items

After verifying the information, click the Submit button to save the data in the SharePoint lists.
The invoice header information is stored in the Extracted Invoice Data list, and all invoice line items are stored in the Invoice Items list.

This way, we can extract the invoice data in Power Automate, modify it in Power Apps, and then store it in a SharePoint list.
Conclusion
In this tutorial, we learned how to build an invoice processing application using Power Apps, Power Automate, AI Builder, and SharePoint.
The user uploads an invoice file from Power Apps, Power Automate extracts the invoice data using AI Builder, and the extracted values are returned to Power Apps. The user can review, edit, and finally submit the invoice data. Once submitted, the invoice header details are saved into the Extracted Invoice Data SharePoint list, and invoice line items are saved into the Invoice Items SharePoint list.
Also, you may like some more Power Automate tutorials:
- Power Automate Multilevel Approvals
- Power Automate Send seven or 14-Day Task Due Reminder Emails
- Expense Reimbursement and Approval using Power Automate
- Create Multiple Sites in SharePoint Online using Power Automate from Excel
- Create SharePoint Online List and Columns from Excel Using Power Automate

Hey! I’m Bijay Kumar, founder of SPGuides.com and a Microsoft Business Applications MVP (Power Automate, Power Apps). I launched this site in 2020 because I truly enjoy working with SharePoint, Power Platform, and SharePoint Framework (SPFx), and wanted to share that passion through step-by-step tutorials, guides, and training videos. My mission is to help you learn these technologies so you can utilize SharePoint, enhance productivity, and potentially build business solutions along the way.