According to this whitepaper, a typical medium-sized organization loses $300,000 per year because of invoices that are paid twice. Most ERP systems try to prevent this by not letting you enter the same invoice reference twice for the same vendor.
What if the vendor exists twice in the master data with a slightly different name? Or a typo is made when entering the invoice? Or your OCR software reads a 7 as a 1?
For a lot of organizations this means you’re out of luck, and unless the accounting department manually finds out the invoice is a duplicate, you might be paying twice.
In this blog post I will show you how to use fuzzy matching to find duplicates using the Celonis Intelligent Business Cloud (IBC) and Python. If you have your Accounts Payable process in the IBC, this becomes very easy by just following these five steps:
1. Filter out irrelevant invoices
Using Process Analytics, we can quickly select the most relevant invoices. In the image below, you could select the activity “Pay Invoice,” so that invoices that are still being processed are ignored. Furthermore, we can select invoices with a value >€100, since we still need to do some manual work to verify whether results are true duplicates. (We only want to check them if the manual work is worth it.)
To narrow down further, we can remove things like:
Reference numbers that occur often (e.g., invoices from a specific system sometimes receive the same reference number)
Invoices that have been refunded
2. Choose relevant data
In the Duplicate Invoices analysis from the Celonis App Store, we specify what data we want to use to find duplicates:
The left four columns start with an underscore. This tells our Python package that these columns contain the unique identifier of the data we want to check. The other columns contain the invoice data that we want to check: vendor name, reference number, posting date and invoice value.
3. Run the duplicate checker in Python
Finding the duplicates using default settings is as simple as running nine lines of Python code:
Anyone who knows the basics of Python can use this package. To give a brief overview of what happens:
Lines 1-2: Import the functions we need to connect to the IBC and to find duplicates.
Lines 5-6: Get the data from the table we created in the previous section.
Lines 9-12: Find potential duplicates.
Line 15: Adds potential duplicates to the data model.
3b. (Optional): Specify search patterns and similarity algorithms
This piece is a bit more technical; feel free to skip it!
By default, the duplicate checker finds duplicates by:
Finding exact matches
Finding invoices where 3 out of 4 columns match exactly, then fuzzy matching the 4th.
Fuzzy matching can be done using various similarity algorithms. By default, the duplicate checker uses Jaro-Winkler Similarity (for text columns). To fine-tune duplicate checking, we can specify whether we want to use a different search pattern (e.g., exact match for posting date and invoice value, fuzzy match for vendor and reference), or a different similarity algorithm (e.g., Soundex for vendor names).
4. Check whether results are really duplicates
After running and fine-tuning the duplicate checker in Python, it’s time to verify and act on true duplicates. In Celonis Process Analytics, we can analyze the groups of potential duplicates, find cases with a high potential savings value and either drill down or directly go into the ERP to take action.
5. Take action
Using the Celonis Action Engine, relevant accounting employees can be notified directly of a potential duplicate in their business area. From there, they can be linked to the relevant transaction in the ERP to reject the invoice—preventing the duplicate payment from happening before it takes place. They can also mark it as a false duplicate. After doing this for a while we can use this information to make the duplicate checker more accurate.
Celonis customers have already saved millions by taking action on duplicate invoices. If you are an existing Celonis customer and interested in using the Celonis Duplicate Checker, please contact your customer success manager. If you are new to Celonis and interested in seeing how the IBC and Duplicate Checker can benefit you, please get in touch today!
Simon develops apps that extend the capabilities of Celonis’ process mining technology using Python and Machine Learning. With a history in solution engineering, he makes sure that these apps are not just cool technology, but also usable by less technical users, focusing on providing business value.