Mandates
A mandate is the authority an owner gave an agent to pay: how much, to whom, how often, until when. In AP2 and Mastercard Verifiable Intent it is a signed credential. HalvorAI reads mandates from the evidence on a payment. It does not ask you to enter limits anywhere.
Why limits are never typed in
Section titled “Why limits are never typed in”Spending limits that someone retypes into a monitoring tool drift from the real ones. The network credential is the
source of truth, so HalvorAI consumes it. If a payment arrives with a valid mandate, HalvorAI evaluates the payment
against that mandate. If it arrives without one, the payment is recorded as not_evaluable.
Normalized constraints
Section titled “Normalized constraints”AP2 and Verifiable Intent name the same ideas slightly differently. HalvorAI turns both into one vocabulary:
| Constraint | Checked against |
|---|---|
amount_range (minimum, maximum, currency) | The payment amount |
budget (maximum, currency) | The sum of settled payments under this mandate |
recurrence (frequency, maximum occurrences) | The count and spacing of payments |
allowed_payees, allowed_merchants | The payee id, name or website |
allowed_instruments | The payment instrument |
execution_window (not before, not after) | When the payment happened |
agent_key (key thumbprint) | The agent’s key thumbprint on the event |
reference | The link between the checkout and payment mandates |
Unknown constraint types are recorded and logged, not rejected, because Verifiable Intent is still a draft.
Evaluation results
Section titled “Evaluation results”Each payment with a valid mandate gets one result:
| Result | Meaning |
|---|---|
within | Every constraint holds. |
outside | At least one constraint was broken. This raises a high-severity mandate_breach alert whose explanation names the amount and the limit. |
not_evaluable | There is no valid mandate, or a constraint cannot be checked from the data available. |
For a closed mandate (one payment), HalvorAI also checks that the payee, amount and instrument in the mandate equal those on the event. A difference is a finding.
Reading a mandate
Section titled “Reading a mandate”GET /v1/mandates/{id} returns the normalized mandate, its credential digest and how much of it has been used. The
dashboard shows the mandate next to each payment in the evidence drawer.
What a mandate does not do
Section titled “What a mandate does not do”A mandate is evidence of authority. HalvorAI reports whether a payment stayed within it, but it does not enforce it. Enforcement belongs to the network and your own controls, because HalvorAI is not in the payment path.