Computerized invoice record and receipt record matching utilizing best match criteria

Systems, methods, and other embodiments associated with invoice record and receipt record matching utilizing best match criteria are described. In one embodiment, a method includes matching a plurality of invoice records to a plurality of receipt records based on a first set of criteria. When an invoice record matches no more than one receipt record, the invoice record is marked to indicate that the invoice record is matched to the receipt record. When an invoice record matches at least two receipt records based on the first set of criteria, one of the at least two receipt records is selected as a best match receipt record based on a second set of criteria. The invoice record is marked to indicate that the invoice record is matched to the selected receipt record. The invoice records determined to have matching receipt records are transmitted for payment by a financial system.

BACKGROUND

Businesses commonly verify receipt of goods from a supplier prior to paying the supplier's invoice for the goods. This verification process typically involves matching an invoice to one or more receipt records that show that the goods were received by the business. Modern businesses have computerized invoice matching systems that match invoice records to receipt records and automatically approve an invoice for payment when a matching receipt is found.

DETAILED DESCRIPTION

Automated invoice matching systems allow a user to specify baseline matching criteria that define a tolerance level on matching for costs and quantities in invoices and receipt records. The matching system determines whether the cost and quantities in an invoice record and a receipt record are an exact match, a match within the tolerance level, or a potential match that is outside the tolerance level. An invoice record having a receipt record that is an exact match or a match within the tolerance level is automatically, without human intervention, deemed matched to the receipt record and transmitted to a financial system for payment. Potential matches outside the tolerance level must be sent for manual resolution, requiring human intervention which is time consuming and expensive.

In some instances more than one receipt record meets the baseline matching criteria with respect to a given invoice record. When this happens, in the interest of preserving the accuracy of the automatic matching process, typical automated invoice matching systems send the invoice record for manual resolution so that a user may select which receipt, if any, should be matched to the invoice record. Manual matching is performed because usually a vendor has invoiced for a specific shipment or receipt, and finding which match is correct or most appropriate involves looking at additional factors to prioritize and find the best match. When a human user must consider the additional criteria to find the best match, delay and cost are incurred by the automatic matching process.

Systems and methods are described herein that provide a “best matching” process that will automatically look at additional criteria to select a “best match” receipt record from amongst multiple receipt records that meet baseline matching criteria with respect to a given invoice record. In one embodiment, the systems and methods described herein consider several additional criteria in a prioritized manner. For the purposes of this description, a single invoice and a single receipt will be matched. Of course, the techniques described herein are equally applicable when invoices and/or receipt records are capable of aggregation by purchase order and considered in aggregate for matching purposes such that a single invoice may have multiple matching receipt records and vice versa. Further, the techniques described herein can be applied to matching receipt records or credit note requests to credit notes or invoices.

With reference toFIG. 1, one embodiment of a computerized invoice matching system100that performs invoice record and receipt record matching utilizing best match criteria is illustrated. The system100includes invoice matching logic110that controls a processor (not shown, seeFIG. 4) to perform various functions described herein. The invoice matching logic110inputs invoice records and receipt records and matches the invoice records to the receipt records based on some predetermined criteria. Invoice records and receipt records are electronic data structures that store data describing an invoice or receipt transaction. The invoice matching logic110outputs i) invoice records that are marked as matched and ii) invoice records that are marked as having a discrepancy.

In one embodiment, the invoice matching logic110retrieves the inventory records from an inventory database (e.g., by querying the inventory database). The inventory database may have been populated with invoices received from a supplier or suppliers by way of electronic data interchange (EDI) in a predetermined format configured to correspond to the invoice records stored in the invoice database.

In one embodiment, the invoice matching logic110retrieves the receipt records from a receipt database (e.g., by querying the receipt database). The receipt database is populated with the receipt records by the warehouses or stores. In one embodiment, the receipt database is populated by extracting receipt related data used in matching from tables maintained by an inventory system that tracks goods as they are received, stocked, and sold to create the receipt records that are stored in the receipt database. A record for a purchase order (PO) referenced by a receipt may be referenced to determine contracted per unit costs for items, and the per unit cost is recorded in the receipt record. In other embodiments the invoice database and/or the receipt database are populated by way of users entering values from paper documents as records.

In one embodiment, the invoice matching logic110outputs a matched invoice record by recording, in a data field in the invoice record, data that indicates that the invoice has been matched to a receipt. The marked invoice record is stored in a staging table of matched invoices that is accessed by a financial system to identify invoices to be paid. The marked invoice record may also be stored in other databases, including the invoice database, for other purposes. The invoice matching logic110outputs a discrepancy invoice record by recording, in a data field in the invoice record, a discrepancy code that describes the type of discrepancy and storing the marked invoice record in a database accessed by users performing manual matching on invoice records and receipt records. Once the discrepancy invoice record has been matched by hand, the invoice record is marked as matching a receipt and transmitted to memory accessible to the financial system for storage with the other matched invoice records for payment by the financial system. In due course, the financial system accesses the memory that stores matched invoices and pays the invoices.

In one embodiment, the invoice matching logic110is configured to perform matching as a batch process and/or a background process that takes place outside the normal or day to day operations of the supplier invoicing system, the inventory system, and the financial system that pays matched invoices. For example, the matching may be performed as a batch process overnight or during some other period of time during which the invoicing system, the inventory system, and the financial system are not performing their normal operations. Background/batch operation is facilitated because the invoice matching logic110draws the invoice records and receipt records from databases that are populated automatically by other systems as they are received. In this manner, the invoice matching logic110does not affect the operation of the other systems and merely marks invoice records and receipt records as matched in the databases after matching. Likewise, by populating a staging table with the matched invoice records for access by the financial system that pays invoices, the invoices may be paid in due course by the financial system without direct interaction with the invoice matching logic110.

In one embodiment, the invoice matching system100is a computing/data processing system including an application or collection of distributed applications for enterprise organizations. The applications and computing system100may be configured to operate with or be implemented as a cloud-based networking system, a software as a service (SaaS) architecture, or other type of networked computing solution. In one embodiment the invoice matching logic110is a centralized server-side application that provides at least the functions disclosed herein, accesses invoice records and receipt records from many different databases via a network connection, and is accessed by many users via computing devices/terminals communicating with the computing system100(functioning as the server) over a computer network.

The invoice matching logic110includes baseline matching logic120, best match selection logic130, and criteria data. The criteria data describes baseline criteria to be used by the baseline matching logic120to match invoice records and receipt records. The criteria data also describes the best match criteria to be used by the best match selection logic130to select a best match receipt record from among multiple receipt records that match an invoice record according to the baseline criteria.

When the invoice matching logic110is triggered (e.g., as a batch process), the baseline matching logic120accesses the invoice records and the receipt records. In one embodiment, all invoice records and all receipt records having the same i) vendor, ii) purchase order (PO) number, and iii) billing location are retrieved for matching by the invoice matching logic110. One example embodiment of baseline matching will now be described.

First, summary group matching is performed. In summary group matching, the total cost of all the invoice records is compared to the total cost of all the receipt records. The total cost of a receipt record may be calculated by the baseline matching logic120as the per-unit cost of each item taken from the PO for the receipt multiplied by the quantity of items received. The baseline criteria may also require that the total quantities of the invoice records and the total quantities of the receipt records also match. If the sum of the total costs (and optionally the sum of the total quantities) of the invoice records identically matches the sum of the total costs of the receipt records, then all of the invoice records and all of the receipt records are marked as matched and baseline matching ends.

If the sum of the total costs (and optionally the sum of the total quantities) of the invoice records does not identically match the sum of the total costs of the receipt records, then the baseline matching logic120determines if the sum of the total costs (and optionally the sum of the total quantities) matches within a tolerance level specified in the baseline criteria. If the sum of the total costs (and optionally the sum of the total quantities) of the invoice records matches the sum of the total costs of the receipt records within the tolerance level, then all of the invoice records and all of the receipt records are marked as matched and baseline matching ends.

If the sum of the total costs (and optionally the sum of the total quantities) of the invoice records does not match the sum of the total costs of the receipt records within the tolerance level, the invoice records and receipt records are processed further by the baseline matching logic110using one-to-one invoice matching. One-to-one invoice matching attempts to match each invoice record with a single receipt record as described next. First the baseline matching logic110attempts a match between the total cost (and optionally total quantity) of one invoice record and one receipt record. If there is an exact match or a match within the tolerance level, the invoice record and receipt record are marked as matched.

If more than one receipt record is found to match the same invoice record, the invoice record is marked as unresolved and the matching receipt records are provided to the best match selection logic130, which attempts to select a best matching receipt record as will be described below. In one embodiment, if more than one invoice record is found to match the same receipt record, the receipt record and the matching invoice records are provided to the best match logic130. If, after one-to-one matching on all invoice records, no invoice records remain unmatched, baseline matching ends. In one embodiment, baseline matching and the best matching process described below operate independently of one another so that the two matching processes may not be performed in the same sequence or at all in some circumstances.

If more than one invoice record remains unresolved, all remaining invoice records and receipt records are considered to be multi-unresolved, are marked with discrepancy codes, and sent for manual resolution. However, if after one-to-one matching a single invoice records remains unresolved, line level matching is performed by the baseline matching logic120on the remaining invoice record and any remaining receipt records.

In line level matching, the baseline matching logic120attempts to match each line item in the invoice record to receipt record line items for the same item. If all the lines in the invoice are successfully matched to a line item in the receipt records, the invoice record and all of the receipt records that have been matched are marked as matched. For line level matching, both cost and quantity matching are performed. If cost matching fails, quantity matching is still performed in order to route potential quantity discrepancies to the proper user for resolution. Quantity line level matching is made by comparing the quantity in the invoice record and the sum of the quantities received across the receipt records for that item. If a quantity match cannot be obtained, then the invoice record is marked as having a quantity discrepancy in the lines for the item.

Recall that during one-to-one matching (i.e., matching a single invoice to a single receipt), if multiple receipt records match the same invoice record the multiple receipt records and the invoice record are provided to the best match selection logic130so that the best matching receipt record, if any, can be selected and matched to the invoice record. This feature is an improvement over other matching systems that would generate a discrepancy for the invoice record that has multiple potential matching receipt records without considering any additional criteria to “break the tie.”

In one embodiment, the baseline matching logic120provides the invoice record and multiple matching receipt records to the best match selection logic130by storing the records in a predetermined memory location. The baseline matching logic120may mark the records as requiring best match selection in a status field of the records and the best match selection logic130may query a database table for records having data corresponding to the mark in the status field. If a best match receipt records is selected, the best match selection logic130marks the matching receipt record and invoice record as matched and stores the invoice record in the staging table of matched invoices to be processed by the financial system. If a best match record cannot be selected, the best match selection logic130leaves the records as designated unmatched and returns the records to the baseline matching logic120for further processing.

The best match selection logic130considers one or more additional “best match criteria” to attempt to select one of the matching invoices. Examples of best match criteria will be described with reference toFIG. 2, which illustrates operation of the best match selection logic130. In one embodiment, the best match selection feature provided by the best match selection logic130is optional and is enabled by the user. The best match selection logic130receives an invoice record IN2 that matches three different receipt records RE1, RE2, RE3 based on baseline criteria used by the baseline matching logic120. In the example shown inFIG. 2, the baseline criteria are cost within +/−10% and quantity within +/−15%. Of course any tolerance level may be set by the user, and in most cases the threshold level will be much less than those used inFIG. 2(e.g., usually a few percent).

It can be seen that IN1 has a total cost of 2000 and a quantity of 700. All three receipt records have total costs within 10% of 2000 (1980, 2020, and 2020, respectively) and total quantities within 15% of 700 (690, 705, and 710, respectively). Thus, all three receipt records would have been deemed as matching the invoice record by the baseline matching logic120. As will be described now, in one embodiment, the best match selection logic130considers multiple criteria in a prioritized order to select the best match. In other embodiments a single one or combination of the following best match criteria may be considered in any order or other criteria may be used instead of or in addition to the best match criteria described below.

The first best match criteria selects the receipt record with the lowest overall cost variance with respect to the invoice record. The total cost variance with respect to each receipt record is computed and, in the example, all three receipt records have a 10% variance: RE1 is −10% while R2 and RE3 are +10%. Thus, none of the receipt records meet the first best match criteria. The best match selection logic130uses the second best match criteria to attempt to select a best match receipt record.

The second best match criteria selects the receipt record with a cost variance that results in an “underbill” meaning that the supplier billed less than was required by the PO (i.e., the invoice record cost is less than the receipt record cost). RE2 and RE3 both have cost 1980 which is less than the invoice cost of 2000. Thus, no single receipt record can be selected using the second best match criteria. The best match selection logic130uses the third best match criteria to attempt to select a best match receipt record.

The third best match criteria, line level cost variances are considered and the receipt record with the fewest number of line level cost variances is selected. All three of the receipt records have a single line with a cost variance with respect to IN2. For example, RE1 Line 1 has a cost of 1200 which matches Line 1 of IN2 but Line 2 has a cost of 780 which is a variance with respect to Line 2 of IN2. RE2 and RE3 each also have a single line at variance with IN2. Thus, the third best match criteria is not met and the best match selection logic130uses the fourth best match criteria to attempt to select a best match receipt record.

The fourth best match criteria selects the single receipt record with the lowest quantity variance. The best match logic130computes the quantity variance for each receipt record with respect to IN2. This best match criteria is met because a single receipt record, RE2, has a quantity variance (5 items) that is less than the quantity variance (10 items in both RE1 and RE2). The best match logic130selects RE2 as the best match receipt record, marks IN2 as matching RE2, and marks RE2 as matching IN2. IN2 is sent to the staging table of matched invoices. Note that manual resolution of the multiple matching receipt records was not necessary due to the best match selection logic130selecting RE2 as the best match receipt for IN2. This save time and cost in the invoice matching process performed by the system100.

RE1 and RE3 are returned to the pool of receipt records being processed by the baseline matching logic120. If no receipt record could be selected as a best match for IN2, IN2, RE1, RE2, and RE3 are marked as having a multiple-unresolved discrepancy and sent for manual resolution.

FIG. 3illustrates one embodiment of a method300associated with invoice record and receipt record matching utilizing best match criteria. The method300may be performed periodically as a batch process or in response to some external event, such as population of the invoice database ofFIG. 1with a new invoice record. The method300may be invoked manually by a user to perform invoice matching. At310, a plurality of invoice records is received. Each invoice record stores data describing an invoice quantity of items and an invoice cost. This step may be performed by the invoice matching logic110ofFIG. 1. In one embodiment, the invoice records are stored in a database table (e.g., the invoice database ofFIG. 1) that can be queried by the invoice matching logic110ofFIG. 1. In one embodiment, the invoice records are stored in registers or memory addresses, the contents of which may be read, input, or transferred into the working memory of the invoice matching logic110.

At320, a plurality of receipt records is received. Each receipt record stores data describing a receipt quantity of items and a receipt cost. This step may be performed by the invoice matching logic110ofFIG. 1. In one embodiment, the receipt records are stored in a database table (e.g., the receipt database ofFIG. 1) that can be queried by the invoice matching logic110ofFIG. 1. In one embodiment, the receipt records are stored in registers or memory addresses, the contents of which may be read, input, or transferred into the working memory of the invoice matching logic110.

At330, a determination is made as to whether another unmatched invoice is available for matching. If not, the method ends. As long as another invoice record remains for matching, at340the next invoice record is matched to the receipt records based on a first set of criteria (e.g., baseline criteria). A given invoice record is deemed to match a given receipt record when the first set of criteria are met. This step may be performed by the baseline matching logic120ofFIGS. 1 and 2as described with reference to “one-to-one” matching. A processor is controlled by the baseline logic120to compute variances between costs and quantities in invoice records and receipt records (seeFIG. 4).

At350, when an invoice record matches no more than one receipt record, the method proceeds to380and the invoice record is marked by recording data in the record that indicates that the invoice record is matched to the receipt record. The marking may be performed by recording data in a status field of the invoice record that indicates that the invoice record has been matched to a receipt and/or is approved for payment. The marked record is transmitted for payment by a financial system. In one embodiment, the invoice record is transmitted by storing the marked invoice record as a new record in a staging table accessed by the financial system to locate invoices to be paid. Steps350and380may be performed by the baseline matching logic120ofFIGS. 1 and 2. The baseline matching logic120may perform query operations on a database table storing the invoice record to mark the record as matched. The method then returns to330and the next invoice record, if any, is matched.

If a one-to-one match is not found at350, the method proceeds to360where a determination is made as to whether the invoice record matches at least two receipt records based on the first set of criteria. In one embodiment this step may be performed by the baseline matching logic120determining that a plurality of receipt records that meet the baseline criteria with respect to the invoice record. If there are no receipt records that match the invoice record at360the method returns to330and the next invoice record, if any, is matched. In one embodiment, the unmatched invoice record is marked by the invoice matching logic110as having a discrepancy and sent for manual resolution as shown inFIG. 1.

If at least two receipt records match the invoice record using the baseline criteria, at370one of the at least two receipt records is selected as a best match receipt record for the invoice when at least one of a second set of matching criteria (i.e., best match criteria) are met as between the invoice record and a single one of the at least two receipt records. This step may be performed by the best match selection logic130ofFIGS. 1 and 2in a manner described with reference toFIG. 2. A processor is controlled by the best match selection logic130to calculate cost and quantity variances and identify line item cost variances (seeFIG. 4). The best match criteria are different than the baseline criteria.

If no receipt record is selected as a best match using the best match criteria at370the method returns to330and the next invoice record, if any, is matched. In one embodiment, the unmatched invoice record is marked by the invoice matching logic110as having a discrepancy and sent for manual resolution as shown inFIG. 1. At370, if a best match receipt is selected, the method proceeds to380and the invoice record is marked by recording data in the invoice record that indicates that the invoice record is matched to the receipt record. The marking may be performed by recording data in a status field of the invoice record that indicates that the invoice record has been matched to a receipt and/or is approved for payment. The marked record is transmitted for payment by a financial system.

In one embodiment, the invoice record is transmitted by storing the marked invoice record as a new record in a staging table accessed by the financial system to locate invoices to be paid. Steps370and380may be performed by the best match selection logic130ofFIGS. 1 and 2. The best match selection logic130may control a processor to perform query operations on a database table storing the invoice record to mark the record as matched. The method then returns to330and the next invoice record, if any, is matched. When no further invoices remain to be matched, the method ends.

In one embodiment, the method300includes selecting, at370, a single one of the at least two receipt records having a receipt cost that is closest to the invoice cost as the best match receipt record for the invoice record. This step may be performed by the best match selection logic130ofFIGS. 1 and 2controlling a processor to compute variance in the total cost of the invoice record and the receipt records (seeFIG. 4).

In one embodiment, the method includes selecting, at370, a single one of the at least two receipt records having a receipt cost that is more than the invoice cost as the best match receipt record for the invoice record. This step may be performed by the best match selection logic130ofFIGS. 1 and 2controlling a processor to compute variance in the total cost of the invoice record and the receipt records (seeFIG. 4).

In one embodiment, the method includes selecting, at370, a single one of the at least two receipt records having a fewest number of item level variances with respect to the invoice record as the best match receipt record for the invoice record. This step may be performed by the best match selection logic130ofFIGS. 1 and 2controller a processor to identify line item variances in the invoice record and the receipt records (seeFIG. 4).

In one embodiment, the method includes selecting, at370, a single one of the at least two receipt records having a receipt quantity that is closest to the invoice quantity as the best match receipt record for the invoice record. This step may be performed by the best match selection logic130ofFIGS. 1 and 2controlling a processor to compute variance in the total quantity of the invoice record and the receipt records (seeFIG. 4).

It can be seen from the foregoing description that the systems and methods herein automatically consider additional criteria to select a best match receipt record from amongst multiple matching receipt records that meet baseline matching criteria. This saves time and expense by, in many cases, automatically performing the selection without requiring manual resolution by a human operator.

Computing Device Embodiment

FIG. 4illustrates an example computing device that is configured and/or programmed with one or more of the example systems and methods described herein, and/or equivalents. The example computing device may be a computer400that includes a processor402, a memory404, and input/output ports410operably connected by a bus408. In one example, the computer400may include invoice matching logic430configured to perform invoice record and receipt record matching utilizing best match criteria in a manner similar to the invoice matching logic110shown inFIG. 1and further explained inFIG. 2. In different examples, the invoice matching logic430may be implemented in hardware, a non-transitory computer-readable medium with stored instructions, firmware, and/or combinations thereof. While the invoice matching logic430is illustrated as a hardware component attached to the bus408, it is to be appreciated that in other embodiments, the invoice matching logic430could be implemented in the processor402, stored in memory404, or stored in disk406.

In one embodiment, invoice matching logic430or the computer is a means (e.g., structure: hardware, non-transitory computer-readable medium, firmware) for performing the actions described inFIGS. 1-3. In some embodiments, the computing device may be a server operating in a cloud computing system, a server configured in a Software as a Service (SaaS) architecture, a smart phone, laptop, tablet computing device, and so on.

The means may be implemented, for example, as an application specific integrated circuit (ASIC) programmed to perform the method300ofFIG. 3, as further explained inFIGS. 1 and 2. The means may also be implemented as stored computer executable instructions that are presented to computer400as data416that are temporarily stored in memory404and then executed by a processor402.

Invoice matching logic430may also provide means (e.g., hardware, non-transitory computer-readable medium that stores executable instructions, firmware) for performing the method300ofFIG. 3, as further explained inFIGS. 1 and 2.

Generally describing an example configuration of the computer400, the processor402may be a variety of various processors including dual microprocessor and other multi-processor architectures. A memory404may include volatile memory and/or non-volatile memory. Non-volatile memory may include, for example, read only memory (ROM), programmable ROM (PROM), and so on. Volatile memory may include, for example, random access memory (RAM), synchronous random access memory (SRAM), dynamic random access memory (DRAM), and so on.

A storage disk406may be operably connected to the computer400via, for example, an input/output interface (e.g., card, device)418and an input/output port410. The disk406may be, for example, a magnetic disk drive, a solid state disk drive, a floppy disk drive, a tape drive, a Zip drive, a flash memory card, a memory stick, and so on. Furthermore, the disk406may be a compact disk-read only memory (CD-ROM) drive, a CD recordable (CD-R) drive, a CD read/write (CD-RW) drive, a digital video disc (DVD) ROM, and so on. The memory404can store a process414and/or a data416, for example. The disk406and/or the memory404can store an operating system that controls and allocates resources of the computer400.

The computer400may interact with input/output devices via the i/o interfaces418and the input/output ports410. Input/output devices may be, for example, a keyboard, a microphone, a pointing and selection device, cameras, video cards, displays, the disk406, the network devices420, and so on. The input/output ports410may include, for example, serial ports, parallel ports, and universal serial bus (USB) ports.

The computer400can operate in a network environment and thus may be connected to the network devices420via the I/O interfaces418, and/or the i/o ports410. Through the network devices420, the computer400may interact with a network. Through the network, the computer400may be logically connected to remote computers. Networks with which the computer400may interact include, but are not limited to, a local area network (LAN), a wide area network (WAN), and other networks.

For simplicity sake, throughout the description reference is made to criteria, values, and records. It is to be understood that these terms refer to data or data structures that encode the criteria, values, and records in a manner that is interpretable by a computing device. Likewise, the terms supplier, warehouse, inventory system, financial system, retailer refer to computer systems and components that perform the described functions on the data structures encoding the criteria, values, and records.

Definitions and Other Embodiments

In another embodiment, the described methods and/or their equivalents may be implemented with computer executable instructions. Thus, in one embodiment, a non-transitory computer readable/storage medium is configured with stored computer executable instructions of an algorithm/executable application that when executed by a machine(s) cause the machine(s) (and/or associated components) to perform the method. Example machines include but are not limited to a processor, a computer, a server operating in a cloud computing system, a server configured in a Software as a Service (SaaS) architecture, a smart phone, and so on). In one embodiment, a computing device is implemented with one or more executable algorithms that are configured to perform any of the disclosed methods.

In one or more embodiments, the disclosed methods or their equivalents are performed by either: computer hardware configured to perform the method; or computer instructions embodied in a module stored in a non-transitory computer-readable medium where the instructions are configured as an executable algorithm configured to perform the method when executed by at least a processor of a computing device.

A “data structure”, as used herein, is an organization of data in a computing system that is stored in a memory, a storage device, or other computerized system. A data structure may be any one of, for example, a data field, a data file, a data array, a data record, a database, a data table, a graph, a tree, a linked list, and so on. A data structure may be formed from and contain many other data structures (e.g., a database includes many data records). Other examples of data structures are possible as well, in accordance with other embodiments.