Changelog

What changed in Temlavo

Changes to the API, SDK, invoice.v1 schema, MCP server and docs that you can notice, newest first. Each one is live when it appears here. Longer write-ups are on the blog.

October 2026

ChangedAPI

Clearer check messages

Each check’s message now uses the same sentence as the Checks page. The two duplicate checks now have a message instead of null. Statuses, severities and review_required are unchanged, and results stored earlier keep their old messages.

message is written for people. Base your code on code and status, never on the message.

AddedAPI

Checks for the amount due and the total tax

amount_due_consistency checks that the amount due equals the total less payments, credits and withholding, plus any earlier balance and rounding. tax_sum_consistency checks that the tax lines add up to the printed total tax, allowing for rounding.

Each runs only when the invoice prints the amounts it needs; otherwise it reports not_evaluable. A failure sends the invoice for review. See Checks.

ChangedAPIinvoice.v1

Placeholders come back as null, identifiers without their labels

A field that only holds a printed placeholder, such as N/A, TBD or a lone dash, is now returned as null. A required field like that now counts as missing instead of filled.

Invoice and PO numbers lose a leading # or №. Tax IDs lose a printed label such as VAT No: when what follows is clearly the ID. Names and addresses lose trailing commas, and dashes in identifiers and postal codes come back as a plain -.

FixedAPI

The tax check accepts tax rounded up or down

tax_arithmetic now accepts the taxable amount × rate rounded to the currency’s smallest unit in either direction, not only to the nearest. Invoices that round tax down, or take tax out of tax-inclusive prices, no longer fail the check. Real mismatches still fail.

AddedAPI

A check that line items add up to the subtotal

line_items_sum_consistency adds up the line items and compares the sum with the subtotal, or with the total when prices include tax. It runs only when the list is complete and every row has an amount, and it allows for display rounding.

Your policy.line_items setting decides what a failure does: a warning under advisory, review under review_on_failure and required. See Checks.