The Fraud Detection Service by Veryfi supplements the core data extraction API. Its purpose is to detect potential fraudulent documents submitted for data extraction. Utilizing Signals (listed below), it scrutinizes each submission and employs Triggers to flag the JSON response. To visualize the JSON response format, please refer to the example provided in the Appendix. For more advanced detection capabilities, such as velocity tracking, additional add-ons like Veryfi Lens are necessary.
Triggers
JSON Key | Purpose |
meta.fraud.color | If potentialFraud was detected. You should trigger an investigation / automated workflows when the color is not green. Color responses:
|
meta.fraud.score | Predicted probability of document being fraudulent. The answer is between 0 and 1, where <0.5 results in meta.fraud.color Green, 0.51-0.75 - Yellow, >0.75 - Red. |
meta.fraud.attribution | A summary explanation to help human reviewers understand what happened when fraud was detected.
Here is an example of all the fraud checks getting triggered. This will be used to decode the signals.
"attribution": "High velocity, Critical Velocity, Handwritten characters, LCD photo, Not a document, Digital background, Duplicate receipt, Similar documents" |
meta.warnings | Warnings are calculations that failed eg. line items do not add up to the subtotal value. There could be a good reason for it so treat it as a warning only. This is an optional value add. See Appendix - List of Possible Warnings. |
Determining whether to initiate an investigation or human review can be as straightforward as implementing the following pseudocode for every processed JSON:
if meta.fraud.color != green and len(meta.fraud.attribution) > 0 then
route to human user for review
display meta.fraud.attribution (friendly human readable text)
endif
Signals
Veryfi's AI scans for signs of potential fraudulent activity. These signs act as flags, indicating specific issues. For instance, if a duplicate signal is triggered, its corresponding flag (value) will be set to True (1).
Below is the current list of signals. If you require additional signals that are not in our list then please reach out to your account manager.
JSON Key | Purpose |
meta.fraud.submissions | A dictionary with volume of times this user submitted this document eg. last week, month, 2 weeks, day and 6 minutes. |
meta.handwritten_fields | A list of areas (using dot notation) where the handwriting occurred. Eg. line_items.1.total means line item 1 the total was manipulated.
You can also do a len(meta.handwritten_fields)>0 check to understand whether there are hand written fields. |
meta.duplicates | A list of duplicates found in the system that match this document.
You can also do a len(meta.duplicates)>0 check to understand whether there are any duplicates. |
meta.fraud.pages | Contains information whether a page was taken from a LCD screen. Fraudsters often manipulate documents in Photoshop then take photos of the screen. This is that check.
Loop through meta.pages and if .lcd.value is true then the x is the position where the picture is of lcd. |
meta.fraud.images | Deprecated in favor of meta.fraud.pages. |
Appendix
JSON Object Example:
"meta": {
"duplicates": [
{
"id": 191347946,
"score": 1,
"url": "https://scdn.veryfi.com/receipts/…"
}
],
"fraud": {
"attribution": "High velocity, Handwritten characters, LCD photo, Digital background, Duplicate receipt",
"color": "red",
"decision": "Fraud",
"images": [
{
"is_lcd": true,
"score": 0.96
}
],
"pages": [
{
"is_lcd": {
"score": 0.96,
"value": true
}
}
],
"score": 1,
"submissions": {
"last_2_weeks": 52,
"last_day": 32,
"last_minutes": 2,
"last_month": 67,
"last_week": 38
},
},
"handwritten_fields": [
"line_items.0.total",
"line_items.1.total"
],
"warnings": [
{
"message": "Line item #14 has a problem. Quantity x Price != Total",
"type": "line_item_amount_missmatch"
},
{
"message": "Line item Description \"Aldi UK\nMixed BQ BQN\nAL0650\" repeats on lines 7, 8, 9",
"type": "line_item_repeats"
},
{
"message": "Subtotal for Line Items 23619.11 doesn't match subtotal on document 11857.19",
"type": "totals_missmatch"
}
]
},
List of Possible Warnings
Key | Definition |
line_item_amount_missmatch | Line item totals x quantity do not add up to the subtotal value. |
line_item_repeats | A duplicate line item was detected. |
tax_rate_missmatch | When Tax Rate x Subtotal != Tax Amount |
item_counts_missmatch | When number of products on line items doesn't match Number of Items Sold value |
totals_missmatch | When subtotal from line items doesn't match subtotal on the document |
barcode_decoding_issue | When barcode is present on the document but is not decodable |
logo_vendor_missmatch | When vendor name from logo doesn't match vendor name output from model |
barcode_code_missing_in_ocr | Decoded Barcode numbers were not found on the document |
malware | Supplied pdf file contains executable javascript code or eicar malware |
List of Possible Attributions
Name | Definition |
High velocity | High amount of submissions from a specific device_id for several time periods. Results in Yellow color. Values (amount of submission per period to consider as High velocity) can be configured. Time intervals that are being used to calculate amount of submissions:
|
Critical velocity | Same thing as High velocity, but with higher values and results in Red color. By default it is turned off. Values can be configured. |
Handwritten characters | Handwriting was detected in specific fields in the submitted document. List of fields that are being checked by handwriting detection:
|
LCD photo | Document was classified as a photo of a monitor/screen (desktop/tablet/phone). |
Not a document | Submitted image is probably not a document. This is an extension of is_document field specifically for fraud detection purposes. |
Digital background | Submitted document is likely not paper based, but created digitally (like screenshots). |
Duplicate receipt | Submitted document is probably a duplicate of a previously submitted one. Algorithm is based on image similarity and text. Uses meta.is_duplicate field. |
Similar documents | Submitted document’s text has a high similarity with previously submitted document. Uses meta.duplicates field. |
Need Help?
Speak to a human
SLA Customers: if you have a dedicated 1:1 Slack channel setup between Veryfi and your company to speak with your account manager / technical contacts.
Email: support@veryfi.com
Self-Serve
API Docs: https://docs.veryfi.com/
NOTE: For the most current schema including descriptions and values, please visit: https://docs.veryfi.com/api/receipts-invoices/