Error reference: Execution receipt
Does the receipt reference exactly this decision and this mandate?
A decision says what was allowed; a receipt shows what happened. This check compares the two: whether the receipt refers to the correct decision and whether action, amount and counterparty in the receipt match decision and mandate.
If a receipt is missing, it is not proven that the action was carried out as decided. The result then cannot reach the higher levels.
A deviation between receipt and decision, by contrast, is a clear finding: execution did not match the permission.
receipt_decision_mismatch
The receipt references a different decision.
Cause: The receipt does not match the decision: action, amount or counterparty differ, or the receipt refers to a different decision.
Fix: Investigate the deviation: execution did not match the permission. Receipts must state the actual values and the correct decision.
receipt_mandate_mismatch
The receipt references a different mandate.
Cause: The receipt does not match the mandate, for example because it records an action outside its limits or refers to a different mandate.
Fix: Check under which mandate the action actually took place and include the matching mandate.
no_receipt
No execution receipt present.
Cause: There is no receipt. It is therefore not proven that the action was carried out as decided.
Fix: Create a signed receipt with a reference to the decision after every execution and include it.
no_decision_reference
The receipt names no decision.
Cause: The receipt refers to no decision. It remains open on which permission execution was based.
Fix: Include in every receipt the identifier of the decision on which execution was based.
Common situations
No receipt: many systems record decisions but write no signed receipt after execution. It is then not proven that the action was carried out as decided. Add a receipt after every execution.
Planned instead of actual values: if a system writes the receipt with the decision's values instead of the actual ones, deviations stay invisible. Receipts belong written with the actual values.
Missing reference: without the decision's identifier, the receipt cannot be attributed to any permission.
How to test this check
The “Tampered receipt chain” example on the verification page shows how a later change to a receipt is detected. For deviations between receipt and decision, the public test vectors contain dedicated cases you can verify with the kya-verify command line. Compare amount and counterparty in the receipt with the values in the decision.