Resources · Checks
Every check Temlavo runs on an invoice.
Each result lists its checks in validation.checks. These 12 checks cover arithmetic, currency and dates, duplicates, document type, extraction issues, required data, and line-item coverage. Each one is marked with whether your review policy can change it.
On this page
How checks work
- Every check has a
status(pass,failornot_evaluable) and aseverity(info,warningorreview). - A check blocks when its severity is
reviewand its status is notpass. Any blocking check makes the resultneeds_review; warnings leave itcompleted. - When an arithmetic check’s inputs are missing or unclear, it is
not_evaluablewithinfoseverity. A missing amount is never calculated and added to the result. - Money math uses exact decimals, never floating point. Evaluated arithmetic checks return the equation, the calculated value and the difference.
- Field findings list the affected
paths, so you can highlight the exact values in your own review screen.
{
"code": "total_consistency",
"status": "fail",
"severity": "review",
"message": "Subtotal and adjustments do not reconcile with the invoice total.",
"paths": [
"/data/totals/total"
],
"details": {
"equation": "subtotal - discount + shipping + other_charges + tax = total",
"reason": "evaluated",
"actual_total": {
"amount": "1006.80",
"currency": "USD"
},
"calculated_total": {
"amount": "1036.8",
"currency": "USD"
},
"difference": {
"amount": "-30",
"currency": "USD"
}
}
}Branch on status, severity and validation.review_required, not on message text. New check codes may be added over time.
Arithmetic
Recalculates invoice, tax and row equations from the extracted amounts with exact decimal math.
| Check | What it catches | Result |
|---|---|---|
line_item_arithmeticSeverity set by line-item policy | A row’s quantity × unit price does not equal its line total. | Warning under |
tax_arithmeticAlways on | A tax line’s taxable amount × rate does not equal its tax amount. | Requires review. Exact results and the currency’s standard minor-unit rounding are accepted. |
total_consistencyAlways on | The invoice total does not equal subtotal − discount + shipping + other charges + tax, or the same without tax when amounts include it. | Requires review. Additions are exact, with no rounding tolerance. See the Total mismatch sample |
Currency and dates
Catches mixed currencies and dates that cannot both be right.
| Check | What it catches | Result |
|---|---|---|
currency_consistencyAlways on | Amounts, or the invoice currency and its amounts, use different currencies. | Requires review. Amounts are never relabeled or converted. |
date_consistencyAlways on | The due date is earlier than the issue date. | Requires review. Runs when both dates are present. |
Duplicates
Compares each submission with earlier completed or needs-review submissions that had duplicate detection on, in the same account and accounting entity.
| Check | What it catches | Result |
|---|---|---|
exact_document_duplicateOn by default · can be turned off | The same source file was submitted before. | Requires review. Returns the earlier document ID. |
possible_invoice_duplicateOn by default · can be turned off | An earlier invoice has the same supplier name and invoice number, even if it arrived as a different file. | Requires review. Returns the earlier document ID. Matching is not fuzzy and does not use dates or amounts. See the Possible duplicate sample |
Document type
Checks that the upload is one invoice before its data is trusted.
| Check | What it catches | Result |
|---|---|---|
document_classificationAlways on | The upload may not be a single invoice. | Requires review. A clear non-invoice, such as a receipt, or an upload with several invoices fails instead and is not billed. |
Extraction issues
Surfaces values the model found conflicting, ambiguous or unreadable instead of silently picking one.
| Check | What it catches | Result |
|---|---|---|
semantic_issueSeverity depends on policy | The model reports printed values that conflict, or that are ambiguous or unreadable. | Conflicts and unclear values in required fields require review; other unclear values are warnings. Under |
Required data
Requires the fields every invoice needs, plus any fields your workflow depends on.
| Check | What it catches | Result |
|---|---|---|
critical_field_unresolvedAlways on | A field every invoice needs could not be resolved: /data/vendor/name, /data/invoice/number, /data/invoice/issue_date, /data/invoice/currency, /data/totals/total. | Requires review. This baseline cannot be turned off. |
required_field_unresolvedAdded by your policy | A field you required, such as the PO number, due date or customer tax ID, could not be resolved. | Requires review. Choose from 17 supported fields in |
Line-item coverage
Requires usable item rows when your workflow cannot accept a header-only result.
| Check | What it catches | Result |
|---|---|---|
line_items_requirementAdded by your policy | No rows, an item list marked partial or unavailable, or rows missing a line total or with neither a description nor a product code. | Requires review. Runs only when |
What checks do not do
- Checks compare the extracted values with each other. They do not re-read or independently verify the source document, so
completedis not a guarantee of accuracy or approval to pay. - Tax arithmetic checks the math on the invoice, not tax compliance.
- Amount due is not checked against the total, because payments, credits and earlier balances can legitimately change it. Row totals are not summed against the subtotal.
- Review policy changes how some checks affect the outcome; it is not a custom rules engine. Configure review policy.