You just ran 200 vendor invoices through an extraction tool. The data looks great: invoice numbers, dates, line items, totals all pulled correctly. Then you try to match the extracted vendor names against your master list in Excel, and XLOOKUP returns #N/A on almost every row. "Acme Corp" on the invoice doesn't match "Acme Corporation Inc." in your ERP. "ACME CORP." doesn't match either. Neither does "Acme Co." You're looking at 200 rows of manual cleanup, and this is a monthly process.
This is the gap between extraction and usable data that nobody warns you about. Getting data off the document is only half the problem. The other half is normalizing that data so it actually maps to your existing records. Vendor names are the single worst offender because every invoice spells them slightly differently.
Vendor names vary for three reasons that compound on each other. First, vendors themselves register different legal names versus trade names. The entity on the invoice might be "Acme Corporation Inc." while your AP team originally set them up as "Acme Corp" based on a purchase order. Second, AP clerks abbreviate differently when entering vendors manually, so the same vendor ends up in your master list under two or three slightly different names over time. Third, OCR and extraction tools introduce minor variations: extra spaces between words, missing periods after abbreviations, inconsistent capitalization, and occasional character substitutions where an uppercase "I" becomes a lowercase "l" in certain fonts.
Purchase order numbers have the same problem. "PO-4521" on one document becomes "PO4521" on another and "Purchase Order 4521" on a third. Client names are just as bad. One company we spoke with had "iTool", "iTool Co.", "I-Tool Company", and "i-Tool LLC" all referring to the same client across different documents. XLOOKUP and VLOOKUP only do exact match or numeric range lookup. They have no concept of "close enough." Power Query's fuzzy matching exists but requires manual similarity threshold tuning, and at scale it produces false positives that are just as time-consuming to fix as doing the matching manually.
If you've hit the wall with exact-match lookups, there are four realistic paths forward. They range from free-but-limited to fully automated, and the right choice depends on how many documents you process and whether you need matching to happen once or continuously.
Microsoft Research released a free Fuzzy Lookup add-in for Excel that adds a "Fuzzy Lookup" tab to your ribbon. You select a source table and a reference table, pick the columns to match on, and it returns a similarity score for each pair. It works reasonably well for small, one-off matching jobs, say, cleaning up a list of 50 vendor names against your master list after a quarterly review.
The limitations show up quickly in practice. The add-in only works on Excel desktop for Windows, not Excel for Mac or Excel on the web. The similarity threshold is a single global slider, so you're constantly choosing between too loose (where "Acme Corp" matches "Acorn Corp") and too tight (where "Acme Corp" doesn't match "Acme Corporation Inc."). It provides no integration with any document extraction workflow. You end up exporting extracted data, running the fuzzy lookup as a separate step, reviewing the results manually, and then importing the cleaned data into your system. For a monthly process with hundreds of invoices, this adds hours of work that feel like they shouldn't exist.
Power Query, built into both Excel and Power BI, includes a "fuzzy merge" option when joining tables. This is a clear step up from the Fuzzy Lookup add-in because Power Query handles larger datasets more efficiently and the merge operation can be refreshed automatically when source data changes. You create a merge query, select your two tables, choose the matching columns, and enable the "Use fuzzy matching to perform the merge" option.
The core problem remains threshold tuning. Power Query lets you set a similarity threshold between 0 and 1, and optionally provide a transformation table for known equivalences (like mapping "Corp" to "Corporation"). But finding the right threshold for vendor names is trial and error. Set it at 0.8 and "Acme Corp" matches "Acme Corporation" but "IBM" doesn't match "International Business Machines." Set it at 0.6 and you start getting false positives everywhere. The transformation table helps but requires you to manually list every abbreviation pattern, which defeats the purpose of automated matching. Power Query also produces a separate merged output table rather than matching in place, so your workflow involves an extra data-movement step.
For teams with developer resources, Python libraries like FuzzyWuzzy and its faster successor RapidFuzz provide fine-grained control over string similarity matching. These libraries implement algorithms like Levenshtein distance, Jaro-Winkler similarity, and token-based matching (where word order doesn't matter). You can write a script that reads your extracted data, compares each vendor name against your master list using multiple similarity metrics, and returns the best match above a confidence threshold.
This approach is powerful for one-off data cleaning projects. A 30-line Python script can process thousands of vendor name pairs in seconds. The problem is that it requires someone who can write and maintain that script, which rules out most AP teams and finance departments. It also requires custom logic for each matching scenario. The similarity score that works for vendor names doesn't necessarily work for PO numbers or GL codes. And like the Excel approaches, it operates on data after extraction, adding a separate processing step to your workflow. Every time your vendor master list changes or you encounter a new abbreviation pattern, someone has to update the script.
Lido takes a different approach by solving the matching problem at the extraction step rather than after it. The feature is called Smart Lookup. You upload your vendor master list from a Lido Table, an Excel file, or a Google Sheet as a lookup table. When you then process invoices, Lido extracts the vendor name from each document and simultaneously matches it against your lookup table using one of three matching modes: semantic (AI-powered, meaning-based), trigram (character-level similarity using 3-character sequences), or exact match with optional case sensitivity.
The practical difference is immediate. "Acme Corp" on the invoice gets matched to "Acme Corporation Inc. (Vendor #4521)" from your master list automatically. The extracted output includes both the raw name as it appeared on the invoice and the matched canonical name plus vendor number from your records. The default confidence threshold of 30 (on a 0-100 scale) works out of the box for most vendor matching. If your data needs tighter or looser matching, you adjust the threshold once and it applies to every future extraction. The matched vendor number is ready to import directly into your ERP.
Semantic mode is where Smart Lookup pulls ahead of every other approach on this list. It uses AI to understand meaning, not just character overlap. It knows that "IBM" and "International Business Machines" are the same entity, that "WF" is an abbreviation for "Wells Fargo," and that "J&J" refers to "Johnson & Johnson." No string similarity algorithm will catch these matches at any threshold because the character overlap is too low. Trigram mode is useful when you want character-level fuzzy matching similar to what Excel's Fuzzy Lookup does, but faster and integrated into the extraction pipeline. You can also match on multiple fields simultaneously (vendor name AND address, for example) with weighted scoring that combines the confidence from each field. An optional AI post-processing step can re-rank results using custom natural language instructions for edge cases specific to your data.
Setting up fuzzy matching in Lido takes about five minutes. Here is the workflow from ERP export to matched data ready for import.
Start by exporting your vendor master list from your ERP or accounting system. NetSuite, QuickBooks, SAP, Sage, or a manually maintained spreadsheet all work. The export should include the canonical vendor name and vendor ID at minimum. If your master list includes additional fields like payment terms, default GL codes, or tax IDs, include those too. They will be available as reference data during matching. Upload this file as a lookup table in Lido, either as an Excel file, a Google Sheet, or a Lido Table. This is a one-time setup step per master list. The lookup table data is cached with content hashing, so repeated lookups are fast. Update the file whenever your vendor list changes.
Now process your invoices normally. Upload a batch of invoices in any format. Lido extracts the standard fields (vendor name, invoice number, date, line items, amounts, tax, total). The Smart Lookup node then matches each extracted vendor name against your lookup table automatically. You can configure the output as the best match, all matches above the confidence threshold, or the top N matches. For most AP workflows, best match is the right setting. The output for each invoice includes the raw extracted vendor name, the matched canonical name from your lookup table, and the corresponding vendor ID. If the match confidence falls below your threshold, that row gets flagged for review rather than silently passing through a bad match.
The result is extracted data that's ready to import into your ERP with the correct vendor IDs already populated. No XLOOKUP formulas. No fuzzy merge tables. No Python scripts. One company we worked with, a manufacturing firm processing invoices from over 300 vendors, told us that vendor name mismatches were their single biggest bottleneck after extraction. They were spending four to six hours per week manually matching extracted vendor names to their ERP records. With Smart Lookup, that step disappeared entirely. Scale Marketing had a similar problem with 30-plus client name format variations across incoming documents, where the same client appeared under different names depending on which office or subsidiary sent the paperwork.
Smart Lookup also scales cleanly. You can configure multiple lookup tables for different matching needs: a vendor master list, a GL account code reference, a product SKU mapping table. Each one adds a layer of automatic matching to the extraction process without adding complexity to your workflow. And because the matching happens during extraction rather than after it, there's no separate data pipeline to maintain. Your extracted invoice data lands in Excel or Google Sheets already normalized and matched.
Vendor name matching is the most common pain point, but the same fuzzy matching problem appears everywhere in document processing workflows. Purchase order number matching is a close second. The PO number on an invoice might read "PO-4521" while your system has it as "PO4521" or "Purchase Order 4521" or even just "4521." These variations break exact-match reconciliation and are the primary reason automated PO-to-invoice matching fails without fuzzy logic. Client name normalization is equally painful for accounts receivable teams processing remittance advices, where the payer name on the remittance rarely matches the customer name in your billing system exactly.
GL account code matching comes up when vendors include their own account codes on invoices that need to map to your chart of accounts. Product SKU matching affects procurement teams when a vendor's part number doesn't match your internal SKU for the same item. The most complex scenario is three-way matching, reconciling an invoice against a purchase order and a receiving document, where the line item descriptions almost never match exactly across all three documents. "Widget Type A, Blue, 100ct" on the PO becomes "Blue Widget A - box of 100" on the invoice and "WIDGET-A-BLU x100" on the receiving slip. Without fuzzy matching, three-way matching requires extensive manual intervention on nearly every line item.
No. XLOOKUP supports exact match, next smaller value, next larger value, and wildcard match using asterisks and question marks. Wildcard matching can handle simple variations like "Acme*" catching "Acme Corp" and "Acme Corporation," but it requires you to know the pattern in advance and build a wildcard formula for each vendor. For true fuzzy string matching where "Acme Corp" automatically matches "Acme Corporation Inc." without a predefined pattern, you need either the Fuzzy Lookup add-in, Power Query's fuzzy merge, or an AI-powered tool like Lido that handles matching during document extraction.
For small, one-off matching jobs within Excel, Microsoft's Fuzzy Lookup add-in is free and straightforward. For recurring matching tasks on larger datasets, Power Query's built-in fuzzy merge is more capable and can refresh automatically. Both tools operate on data already in Excel and require manual similarity threshold tuning. For matching extracted document data at scale, where vendor names need to reconcile against a master list as part of an ongoing invoice processing workflow, Lido handles the fuzzy matching during the extraction step itself. The data arrives in Excel already matched to your canonical vendor records.
AI fuzzy matching uses semantic understanding of entities, not just character-level similarity scores. Traditional string similarity algorithms like Levenshtein distance and Jaro-Winkler measure how many characters two strings share. That works well for typos and minor spelling variations but fails on abbreviations, acronyms, and name reordering. "IBM" has almost zero character overlap with "International Business Machines," so no string similarity threshold will match them. AI matching correctly resolves "IBM" to "International Business Machines," "WF" to "Wells Fargo," "J&J" to "Johnson & Johnson," and "MS" to "Microsoft" because it understands what those abbreviations mean rather than just comparing letter sequences. In practice, AI matching eliminates the false-positive and false-negative tradeoff that makes threshold-based string matching so frustrating to tune.
Yes. Lido's AI handles multilingual vendor name matching, including transliterations between scripts and mixed-language documents. This matters for companies with international vendor bases where the same vendor may appear as "Samsung Electronics Co., Ltd." on an English-language invoice and under its Korean name on a document from a different subsidiary. The AI recognizes these as the same entity when your vendor master list contains either version. It also handles common transliteration variations in Latin-script languages, such as German umlauts (Müller vs Mueller) and French accented characters (Société Générale vs Societe Generale).
Export your vendor master list from your ERP or accounting system as a CSV file that includes vendor names and vendor IDs. Upload this file as a Smart Lookup table in Lido (supports Excel files, Google Sheets, or Lido Tables). Then process your invoices through Lido as you normally would. The Smart Lookup node automatically matches each extracted vendor name against your master list and includes the matched canonical name and vendor ID in the output. You can choose semantic, trigram, or exact matching mode depending on your data. The default confidence threshold works for most use cases, but you can adjust it if needed. When you add new vendors to your ERP, simply re-export and re-upload the master list. The entire setup takes under five minutes. For a detailed walkthrough of getting extracted data into your spreadsheet, see our guide on matching document data to Excel.