A public rubric for evaluating assurance layers between AI-agent payment protocols and payment rails. License CC-BY-4.0 — copy, adapt, and cite. Status: draft for public comment.
The agent-payment protocol stack (FIDO AP2, Mastercard Verifiable Intent /
Agent Pay, Visa VIC / Trusted Agent Protocol, OpenAI/Stripe ACP, x402, and
peers) converges on one job: proving a payment was authorized. Signed
mandates, layered SD-JWT selective disclosures, RFC 9421 HTTP message
signatures, checkout hashes, and cnf-bound agent keys answer
"is this transaction validly authorized?" — and current drafts answer it
well.
They do not answer the question every issuer, sponsor bank, and merchant processor actually asks at settlement time: should this validly-authorized payment occur?
A mandate can be cryptographically perfect and still be:
This document names the missing layer — payment assurance — and defines the rubric for evaluating anything that claims to provide it. Requirements use RFC 2119 keywords (MUST/SHOULD/MAY).
An assurance layer sits between an agent-payment protocol surface and a settlement rail. It:
It MUST NOT: custody funds, act as a payment-rail participant, or store end-customer payment credentials (PANs, CVCs, or signing keys it does not own). Storing tenant-scoped sponsor-bank API credentials in encrypted form to actuate verdicts on the tenant's own bank account is inside the boundary; pooling funds or executing on a shared platform bank account is not. If a product takes custody or participates directly on a rail, evaluate it under MSB/processor diligence instead.
Beyond signature validity, the layer MUST evaluate:
active → expired → revoked → superseded → consumed) with
atomic spend/count reservation (SELECT … FOR UPDATE or
equivalent) so a single-use or capped mandate cannot verify twice under
concurrency (AP2 #346).unverifiable (escalate or decline), never silently drop.checkout_hash /
transaction_id, Mastercard Verifiable Intent
L1→L2→L3 sd_hash chain), the layer MUST
recompute the cryptographic binding between the merchant's checkout and
the payment mandate rather than trusting caller-supplied fields
(AP2 #211).exp set and unexpired —
standing/open mandates without exp MUST be treated as an
unverifiable risk signal, not silently approved (AP2 #386).Every transacting agent MUST resolve to a registered identity bound to an accountable human or legal entity (beneficial owner / operator). Registration MUST carry a risk tier that gates transaction limits, rate quotas, and escalation thresholds. Agent status MUST support suspension and revocation with enforcement at decision time — not just at registration.
cnf) or HTTP message signatures (RFC 9421)
MUST resolve to a registered identity or scoped counterparty key
registry (ap2_merchant, vi_issuer,
vic_tap). Self-declared headers (X-Agent-ID)
without cryptographic proof MUST be rejected, and an unknown key is an
unknown agent regardless of signature validity.Authorization checks are point-in-time; assurance requires pattern-in-time across three horizons (CSA ATSF v1 §4, §7):
z-score), counterparty novelty, category, time-of-day, and
protocol.Scores MUST be explainable: a number without the factor breakdown and
retrieved evidence that produced it is a liability, not a control. The
layer SHOULD support a shadow / observation mode
(mode="shadow") and output drift detection so baselines can
be enrolled without live-rail exposure and guarded against gradual
baseline poisoning (OWASP ASI06).
Fail-closed is non-negotiable: scoring or baseline infrastructure failure MUST produce decline-or-escalate, never silent approve.
Every transaction MUST be screened synchronously before execution against sanctions and adverse-entity data (OFAC SDN, EU Consolidated, UN Security Council, FATF high-risk) — and the screen MUST traverse relationships, not just string-match names. A merchant whose beneficial owner or parent entity sits on a list is a hit even when the merchant name is clean.
Every verdict MUST be recorded as a tamper-evident event in a hash chain the assurance layer cannot silently rewrite. Four properties must be separated — they fail independently (AP2 #290, #338):
COMPLIANCE mode, transparency log, or equivalent), on a
defined cadence.Honest limit: all four are guarantees up to the last external seal — a tail cut inside the current window is undetectable until the next anchor lands, so boundary-close commits shrink the exposure to the transition itself. The complementary failure mode — a producer that never records an action at all — is not addressable at the hash layer; it belongs to the signing-trust / counterparty-observation surface (APAF-1, APAF-2).
For dispute and examiner readiness, exported evidence bundles MUST:
Assurance that can only say yes or no will eventually have to say "wait." The layer MUST define an escalation verdict with a binding hold mechanism on parkable rails — funds frozen at the sponsor bank while review runs — and MUST enforce maker-checker: the party that requested or initiated a decision cannot approve its release.
escalated risk verdict MUST fail closed into an immediate
decline (manual_review_required), never a deferred
pass.Escalations on parkable rails MUST resolve to approve (release hold + execute) or reject (release hold + cancel/return) with the full path audited. Timeouts MUST fail closed.
The verdict path MUST be separable from any single rail or provider.
Rails differ (book/ACH/wire/RTP/FedNow, ISO 20022
pacs.008/pain.013/camt.054, card
authorization loops, ACP/AP2/VI/TAP checkout flows); assurance semantics
don't. The layer MUST normalize provider and protocol events into one
verdict model and MUST scope provider credentials per tenant/project so
each deploying customer operates under its own sponsor-bank relationship
(never a shared platform account).
Honesty requirement: the layer MUST NOT claim rail certification, network participation, or settlement capability it doesn't hold. A verification layer verified through a sponsor bank is a different claim — and a stronger one — than claiming to be the rail.
| Level | Name | Meaning |
|---|---|---|
| L0 | Crypto-verification only | Signature + static constraint checks; the raw protocol baseline. Validly-authorized payments execute unscreened. |
| L1 | Static controls | Mandate registry, fixed limits, basic list-match screening. Better than L0; blind to behavioral/session drift, provenance and list-freshness gaps remain. |
| L2 | Behavioral assurance | Three-horizon behavioral monitoring (transaction, session/beneficiary-creep, fleet/Sybil), composite explainable scoring, graph-traversal screening, tamper-evident decision records. The minimum defensible posture for autonomous (HNP) flows. |
| L3 | Continuous assurance | L2 +
WORM-anchored evidence, offline-verifiable JWS bundles with bound
sanctions-list freshness, out-of-band dual-control holds on live
sponsor-bank rails, conformance-tested protocol adapters
(checkout_hash / sd_hash / RFC 9421). The
posture sponsor banks and auditors converge on. |
Self-scoring rule: a level is claimed only when every requirement in each of its domains holds. "Mostly L2 with list-match-only screening" is L1.
To assist bank TPRM teams, compliance officers, and protocol
implementers, the table below maps APAF-1..7 to adjacent
industry standards and regulatory frameworks:
| APAF Domain | Protocol Specs (FIDO AP2 / MC VI / Visa TAP / ACP) | OWASP Agentic Top 10 (2026) & AI Agent Payments Cheat Sheet | CSA ATSF v1 (2026) | PCI DSS v4.0.1 / BSA-AML / SOC 2 |
|---|---|---|---|---|
| APAF-1 Mandate lifecycle & conformance | AP2 checkout_hash (#211), consumption (#346),
open-mandate exp/revocation (#386); MC VI
L1→L2→L3 sd_hash (RFC 9901) |
ASI01 (Goal Hijack), ASI02 (Tool Misuse) | §2 Intent Context Verification (bounded, signed delegation) | PSD2/PSD3 bounded SCA consent; CFPB §1033 verifiable delegation |
| APAF-2 Agent identity & authority | cnf key binding (RFC 7800); Visa TAP HTTP Message
Signatures (RFC 9421) |
Cheat Sheet §1 (Cryptographic Agent Identity), §6 (Trust-Tiered Rate Limiting); ASI03 (Privilege Abuse) | §5.1 Non-Human Identity governance | PCI DSS Req. 7 (least privilege), Req. 8.2.2 (unique non-human ID), Req. 8.6; FinCEN CDD beneficial owner mapping |
| APAF-3 Behavioral risk assessment | — (outside protocol scope; Issue 2 risk-binding hook) | ASI01, ASI06 (Memory/Baseline Poisoning), ASI08 (Cascading Failures), ASI10 (Rogue Agents) | §4 Fraud Detection (shadow enrollment, beneficiary creep), §7 3-tier monitoring | FATF Rec. 1/10 risk-based monitoring; FinCEN AML AI risk assessment |
| APAF-4 Counterparty & operator screening | — (outside protocol scope) | Cheat Sheet §2 (Entity Screening), §3 (Operator Screening), §5 (Fail-Closed Enforcement) | §5.3 Synchronous pre-execution sanctions screening | OFAC Framework for Compliance Commitments; EU/UN/UK sanctions regimes |
| APAF-5 Decision provenance & evidence | AP2 #290 (completeness), #338 (dispute evidence packs) | Cheat Sheet §4 (Signed Hash-Chained Audit), §8 (JCS Canonicalization), §10 (Sanctions-List Freshness in Receipt) | §8 Rollback & Dispute Resolution (immutable session & verdict logs) | PCI DSS Req. 10.2 / 10.5.1 (immutable logs); BSA 5–7 yr retention; SOC 2 PI1 / CC7 |
| APAF-6 Human escalation & dual control | Receipt error/decline taxonomy | ASI07 (Insecure Inter-Agent Comm), ASI09 (Human-Agent Trust), Explainability Fabrications | §3 Multi-Party Authorization (out-of-band confirmation, context isolation) | FFIEC dual-control / maker-checker guidance; DORA ICT incident & oversight controls |
| APAF-7 Rail-agnostic settlement boundary | Multi-protocol normalization (AP2, VI, TAP, ACP, ISO 20022) | Cheat Sheet §7 (Hosted vs. Self-Hosted Boundary & Data Minimization) | §6 Liability Allocation & Rail Reversibility windows | FinCEN non-custodial software boundary; OCC third-party risk management (TPRM) |
This is a living rubric. Corrections, domain proposals, and scoring challenges: contact@paymnts.ai, or the AP2 tracker where they intersect protocol semantics. Cite as:
APAF-1 — Agent Payment Assurance Framework v1.2, Sunhill LLC (paymnts.ai), Oct 2026. CC-BY-4.0.