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.

Error reference · Checks