Last reviewed 2026-09-05Skill version 0.1.0Provisional
Prove that the money returned to the payment card of the buyer. A PaymentRefund object does not prove that money moved. This level proves the COMPLETED state on the refund and an event that carries it.
How does the evidence correlate with this operation?
Strategy
Assurance
Keys
Required
resource_id
strong
refund_id from $action.result.refund.id
yes
idempotency_key
strong
idempotency_key from $operation.id
no
fingerprint
weak
payment_id from $input.payment_id; amount from $input.amount
no
Which evidence does the contract require?
Minimum evidence level E2. An independent channel is required. Minimum channels: 1.
Channel
Level
Independence
Verifier
Description
refund_readback
E2
provider readback
http
Read the refund from the provider. A condition path is $observed.refund_readback.refund.status.
refund_completed_events
E3
provider event
webhook
The refund events of this refund that carry the status COMPLETED. The webhook verifier returns {events, count, latest, earliest, types, duplicates_dropped}.
refund_created_events
E3
provider event
webhook
The refund.created events for the payment since the operation started. The webhook verifier returns {events, count, latest, earliest, types, duplicates_dropped}. A count above one shows a second refund of the payment.
Which conditions must all hold for VERIFIED?
Condition
Meaning
Path
Operator
Expected
Evidence
refund_status_completed
The refund states the completed state. The money reached the payment card of the buyer.
$observed.refund_readback.refund.status
eq
COMPLETED
refund_readback
refund_amount_matches
The amount of the refund equals the requested amount.