Guide
Prove what the human authorized before the agent paid
When an AI agent buys something for a person and the purchase is disputed, two questions decide it: what did the person authorize, and was that before the agent paid? This guide shows how to fix the date of a mandate before the agent acts, with a witness that is not the buyer, the seller or the network, and without showing the mandate to anyone.
Why this matters now
- In September 2026, EMVCo published a draft framework for agent card payments. Its central piece, Intent Services, is a shared way to register and look up what the consumer authorized, before, during and after a transaction (EMVCo announcement).
- The Agent Payments Protocol (AP2) carries mandates as cryptographically signed digital credentials, meant to leave an audit trail for disputes (AP2 documentation).
A signed mandate says who agreed to what. What it cannot say by itself, to someone outside the transaction, is when it existed. That is the part an independent timestamp adds.
The recipe
1. Take the mandate exactly as you will show it later: the signed credential as a string, or the file as you store it. Change one byte and the fingerprint changes.
HASH=$(sha256sum mandate.json | cut -d" " -f1)
If the mandate is short or easy to guess ("buy one item, up to $50"), add a random line to it before hashing and keep that line with it: a fingerprint of a short, predictable text can be found by trying candidates.
2. Seal the fingerprint before the agent acts. One call, free, no account:
curl -s https://deusproof.com/api/certifications/hash \
-H "Content-Type: application/json" \
-d "{\"output_hash\": \"$HASH\", \"handle\": \"my-shopping-agent\"}"Keep the id from the reply with the order. Agents that speak MCP can do the same with the notarize_hash tool at https://deusproof.com/mcp/core. Let the system that receives the person's approval make the call, not the agent that will spend the money.
3. Seal the result too. After the purchase, seal the fingerprint of the order confirmation the same way. Two timestamps put the events in order: the mandate first, the purchase after.
How anyone checks it later, without us
In a dispute, you hand over the mandate and the record's id. The other side recomputes the fingerprint, downloads the three receipts and checks them with standard tools, exactly as in the guide to tamper-evident logs:
ID=<the id from the reply> curl -sJO https://deusproof.com/api/anchors/seed/$ID # what was sealed curl -sJO https://deusproof.com/api/anchors/tsr/$ID # RFC 3161 timestamp curl -sJO https://deusproof.com/api/anchors/ots/$ID # Bitcoin anchor openssl ts -verify -in deusproof-$ID.tsr -data deusproof-$ID \ -CAfile cacert.pem -untrusted tsa.crt ots verify deusproof-$ID.ots
Then they compare the time on the timestamp with the time of the purchase.
What this proves, and what it doesn't
- It proves that this exact mandate existed no later than the time on the timestamp, set by parties that are not in the transaction.
- It does not prove that the person approved it, that the purchase matched it, or that no other mandate was issued later. The mandate's own signature, and how you authenticated the person, answer those.
Frequently asked questions
- What is a payment mandate for an AI agent?
- The record of what a person allowed an agent to buy: for example the item, the budget and the time limit. Agent payment protocols carry it as a signed digital credential.
- If the mandate is already signed, why timestamp it?
- A signature proves who signed the mandate. It does not prove, to someone outside the transaction, that the mandate existed before the purchase. An independent timestamp of its fingerprint does, and it does not depend on the buyer, the seller or the network.
- Do I have to send the mandate to DEUSPROOF?
- No. Only its 64-character SHA-256 fingerprint travels. The mandate stays with you, and you show it only to whoever needs to verify it.
- Does this prove the person really approved the purchase?
- No. That is the job of the mandate's own signature and of how you authenticated the person. The timestamp proves when this exact mandate existed.
One call, free, no account. Related: how to prove an agent is the real one and timestamp a file without revealing it.