A-Comm Evidence Protocol (AEP) v1.1.0
A cryptographically verifiable evidence standard for agentic commerce transactions — from AI-driven discovery through payment authorization and fulfillment.
Abstract
The A-Comm Evidence Protocol (AEP) defines a standard for generating, storing, and verifying cryptographic evidence of agentic commerce transactions. As AI agents increasingly drive product discovery and purchase decisions, merchants and payment processors require a dispute-grade audit trail that can demonstrate the provenance of any transaction — from the AI platform that surfaced the product through to payment authorization and fulfillment.
AEP specifies a sequential hash chain of typed artifacts, each immutably linked to its predecessor via SHA-256. The chain spans eight defined layers: discovery, referral, intent, delegation, policy, consent, authorization, and fulfillment. Any insertion, deletion, or modification of an artifact is cryptographically detectable at every subsequent node in the chain. The protocol is designed to be implementable by any PSP, commerce platform, or merchant independently of A-Comm Inc.'s infrastructure.
Status of This Document
A-Comm Inc. maintains the reference implementation. The protocol itself is open and implementable by any party without restriction, royalty, or permission from A-Comm Inc.
License
Copyright 2025 A-Comm Inc. Licensed under the Apache License, Version 2.0 (the "License"). You may not use this specification except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0.
Unless required by applicable law or agreed to in writing, materials distributed under the License are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1. Introduction
1.1 Problem Statement
AI-mediated commerce is growing rapidly. Consumers increasingly discover and purchase products through AI chat interfaces — ChatGPT, Google Gemini, Perplexity, Microsoft Copilot — where product recommendations drive real transactions. This creates a new class of dispute risk:
- The consumer interacted with an AI agent, not a human or traditional web UI
- No browser-native referrer chain is reliable across AI platforms
- The authorization trail exists, but the intent trail — what was asked, what was recommended, what was confirmed — is typically absent from PSP evidence
- The delegation trail — what the consumer authorized the agent to do, within what limits, and at which merchants — is not captured by any existing payment infrastructure
- Merchants cannot prove to card networks that a consumer explicitly authorized an agentic transaction
Payment networks are responding with enforcement-layer solutions: Visa Intelligent Commerce (TAP + Payment Instructions + AI-Ready Cards + Verifi) provides agent identity verification, spending limits, and category restrictions enforced at VisaNet. Mastercard Agent Pay (Verifiable Intent + Agent Pay program + Ethoca) captures identity and action-level intent with real-time dispute data sharing. These are valuable prevention systems within their respective networks.
However, enforcement-layer solutions face structural limitations in the dispute context:
- Network-bound: Visa IC operates on the Visa rail only; MC Agent Pay on the Mastercard rail only. Neither produces evidence usable in a cross-network dispute.
- Enforcement, not evidence: Payment Instructions are rules loaded into VisaNet. When enforcement fails — misconfiguration, agent circumvention, or a transaction that processes on a different rail — there is no hash-chained evidence artifact proving the rules existed.
- Category-level, not semantic: Payment Instructions capture "electronics under $200." They cannot capture "wireless noise-canceling headphones" — the semantic detail that agent-mediated disputes actually turn on.
- No fulfillment attestation: Both systems' scope ends at authorization. Neither produces a post-authorization delivery proof artifact.
AEP solves this by defining a tamper-evident, cross-network evidence chain that captures every step from AI-driven discovery through order fulfillment, producing a dispute-grade artifact bundle that merchants can submit to PSPs and card network reviewers. AEP is designed to complement network enforcement systems — not replace them. When prevention succeeds, the dispute never happens. When prevention fails or the transaction crosses rails, AEP provides the post-hoc evidence layer.
1.2 Design Goals
- Tamper-evident: Any modification to any artifact in the chain is detectable at all subsequent nodes without requiring a trusted third party.
- Dispute-grade: The evidence bundle maps directly to Stripe, Adyen, and card network representment evidence fields.
- Cross-network: Evidence bundles are usable in disputes on any payment rail — Visa, Mastercard, Amex, ACH, or emerging rails. AEP is not bound to any single network's infrastructure.
- Network-complementary: Designed to work alongside network enforcement systems (Visa Intelligent Commerce, Mastercard Agent Pay) — not replace them. AEP captures the evidence layer that enforcement systems do not produce.
- Semantic-resolution: Captures consumer intent at the natural-language level ("wireless noise-canceling headphones under $200"), not category-level ("electronics") — the resolution at which agent-mediated disputes are adjudicated.
- PII-minimal: Consumer identifiers are pseudonymized. No raw card data, no PAN, no personal identifiers in any artifact payload.
- Platform-agnostic: Works across Shopify, WooCommerce, BigCommerce, Magento, and any PSP.
- Open: Apache 2.0. Any implementation can generate and verify AEP chains without dependency on A-Comm Inc.
- Attribution-aware: Bridges AI platform citation events (ChatGPT, Gemini, Perplexity, Copilot) into the cryptographic chain as a first-class artifact type.
2. Data Model
An AEP commerce journey is modeled as a single transaction chain — an ordered sequence of immutable artifacts. Each artifact records one event in the consumer's journey and is cryptographically linked to its predecessor.
2.1 Commerce Journey Layers
A complete agentic commerce transaction spans up to eight artifact layers. The first two (discovery and referral) are present only when the consumer arrived via an external AI platform. The delegation layer is present only when an AI agent acts on behalf of a consumer:
Captures the AI platform citation event — the moment a product was surfaced in a ChatGPT, Gemini, Perplexity, or Copilot response. Records the platform, the consumer's query, the product URL cited, and the attribution method used to link the AI citation to the inbound session.
- Actor type:
agent(AI platform) ormerchant(tracked link) - Key payload fields:
platform,query,referral_url,citation_position,attribution_method
Records the inbound session that originated from the AI citation — the click from the AI platform to the merchant's site, including session token, referral event ID, and the product that was cited.
Records the consumer's (or their agent's) explicit purchase intent: the product selected, quantity, variant, and the actor responsible. This is the earliest layer present for all transaction types.
- Key payload fields:
product_id,product_name,quantity,variant,query
Records the consumer's delegation of authority to an AI agent — the scope, constraints, and limits within which the agent is authorized to act. This is the artifact that proves the consumer said "$150 maximum" or "only from Sephora or Ulta" before the agent transacted. Present only when an AI agent acts on behalf of a consumer.
- Key payload fields:
delegatee_agent_id,scope,spending_limit,allowed_actions,merchant_restrictions,time_window - This is the primary artifact for agent-mediated delegation disputes — spending limit violations, unauthorized merchants, and scope exceedances are deterministically provable from this artifact combined with the authorization artifact
Records the outcome of the merchant's policy engine evaluation — whether the transaction was permitted or blocked, which rules were evaluated, and the evaluation result. Required on all transaction types. The policy check must occur before authorization.
Records the consumer's explicit confirmation of the specific items, quantities, and total price before checkout. In agent-mediated transactions, this is the artifact that binds the consumer's approval to the exact products the agent selected — not just the delegation scope, but the specific fulfillment of that scope. Replaces the v1.0 "Cart" artifact with expanded semantics.
- Key payload fields:
confirmed(boolean),items(array withproduct_id,product_name,quantity,unit_price),total_amount,currency,consent_method - The
consent_methodfield distinguishes:explicit(consumer reviewed and confirmed each item),delegated(agent confirmed within delegation scope), orimplicit(standard storefront checkout)
Records the PSP payment authorization result. The current_hash of this artifact becomes the sealed_bundle_hash — the immutable seal of the transaction. Post-seal, only fulfillment artifacts may be appended.
- Actor type:
psp - Key payload fields:
payment_token_reference(never raw card data),psp,authorization_code,amount_authorized,currency
Records the fulfillment provider's response: carrier, tracking number, shipping status, and delivery confirmation. May arrive asynchronously after the chain is sealed. Implementors must support a late-arrival append path that does not require breaking the seal.
- Actor type:
fulfillment_provider - Key payload fields:
carrier,tracking_number,status,shipped_at,delivered_at
2.2 Transaction Type Matrix
Transactions are classified on two orthogonal axes: how the consumer arrived (AI referral vs. direct) and how they purchased (via merchant agent vs. standard storefront checkout). This produces a 2×2 matrix. The delegation artifact is present only for agent-mediated purchase paths:
| Type | Arrival | Purchase Path | Expected Artifacts | Notes |
|---|---|---|---|---|
ai_referral_agent_session |
External AI (ChatGPT, Gemini, etc.) | Merchant voice/chat agent | 8 | All layers present. Full discovery + referral + delegation + agent interaction trail. |
ai_referral_standard_checkout |
External AI referral | Standard storefront checkout (Shopify, WooCommerce, etc.) | 7 | Discovery + referral present; no delegation (consumer checked out directly). Consent and auth sourced from platform webhook. |
agent_session_only |
Direct (no AI referral) | Merchant voice/chat agent | 6 | No discovery or referral artifacts. Delegation present. Starts at intent. |
direct_web |
Direct | Standard storefront checkout | 5 | No discovery, referral, or delegation artifacts. Starts at intent. |
8 for ai_referral_agent_session, 7 for ai_referral_standard_checkout, 6 for agent_session_only, and 5 for direct_web. A chain with fewer artifacts than expected is marked chain_complete: false but remains valid if all present artifacts verify correctly.
2.3 Sequential Hash Chain Model
AEP uses a sequential previous-hash model where previous_hash is included inside the hash input of every artifact. This is distinct from reference-pointer hash chain models:
| Model | Formula | Chain break detection |
|---|---|---|
| AEP (sequential) | current_hash = SHA256(canonical({...all_fields, previous_hash})) |
Any insertion, deletion, or mutation is detectable at every subsequent artifact |
| Reference-pointer model | current_hash = SHA256(payload) + separate chained_from pointer |
Only detects breaks if the pointer is verified separately — pointer can be silently remapped |
Because previous_hash is inside the hash input, any reordering or insertion in the sequence invalidates the hash of every subsequent artifact. Verification does not require a trusted third party — anyone with the artifact sequence can independently verify integrity.
2.4 Actors
Every artifact is attributed to a specific actor — the entity responsible for that event in the commerce journey:
| Actor Type | Description | Typical Artifact Layers | ID Format |
|---|---|---|---|
user |
Human consumer | intent, cart | HMAC-SHA256 pseudonym (see §8.2) |
agent |
AI agent (merchant chat/voice agent, or external AI platform) | discovery, intent, cart | agent_name[:version] or platform slug |
merchant |
Merchant system (referral tracking, policy engine) | referral, policy | Merchant account ID |
psp |
Payment service provider | authorization | PSP name + transaction ID (tokenized) |
fulfillment_provider |
Shipping/logistics provider | fulfillment | Provider name + fulfillment ID |
interaction_channel field: voice, text_chat, or voice_and_text. This field is null for non-agent actors (psp, fulfillment_provider, direct_web layers).
2.5 Sealing Model
The chain is sealed at the authorization layer. Sealing means:
- The
current_hashof the authorization artifact is stored assealed_bundle_hashon the transaction chain record sealed_bundle_hashis immutable once set — no update path exists- Only
fulfillmentartifacts may be appended post-seal, via the async late-arrival append path - The fulfillment artifact includes the sealed authorization hash in its chain, so any post-seal fulfillment record is still cryptographically bound to the sealed chain
3. Artifact Types
Each artifact type defines the required and optional payload fields, the permitted actor types, and the position in the commerce journey sequence.
3.1 Discovery Artifact
The discovery artifact bridges the citation monitoring system into the evidence chain. It records the moment an AI platform surfaced a merchant product in a consumer-facing response — before any click, referral, or purchase event.
Payload Schema
{
"platform": "chatgpt" | "gemini" | "perplexity" | "copilot" | "meta",
// at least one of platform or referral_url is required
"query": "string — the consumer's query to the AI platform (optional)",
"referral_url": "string — URL cited by the AI platform (optional)",
"citation_position": "number — rank of product in AI response (optional)",
"attribution_method": "referral_param" | "merchant_tracked_link"
| "referrer_header" | "behavioral_heuristic" (optional),
"confidence_score": "number 0.0–1.0 (optional)"
}
// Note: at least one of `platform` or `referral_url` must be present.
// Unknown fields are stripped by the reference implementation (strict validation).
AI Platform Coverage
The discovery artifact captures product citations from all major AI chat platforms that drive agentic commerce traffic. Platform-specific notes:
| Platform | Referrer Signal | Primary Attribution | Reliability |
|---|---|---|---|
| ChatGPT | Inconsistent — often stripped by OpenAI | referral_param (tracked URL), behavioral_heuristic |
Medium. Referrer unreliable; behavioral matching required. |
| Google Gemini | May pass google.com referrer |
referrer_header, referral_param |
High when referrer is present; supplement with behavioral signals. |
| Perplexity | Typically passes referrer header | referrer_header, referral_param |
High. Perplexity referrer signals are more consistent than ChatGPT. |
| Microsoft Copilot | May pass bing.com referrer |
referral_param, referrer_header |
Medium. Bing Shopping integration improves signal when active. |
Actor Constraints
Permitted actor types for discovery artifacts: agent (when the AI platform citation is detected via synthetic monitoring or the citation system), merchant (when the discovery event is triggered via a merchant-controlled tracked link).
3.2 Referral Artifact
Records the inbound session event — the consumer clicking through from the AI platform citation to the merchant's site. Links the discovery artifact to the on-site session.
Payload Schema
{
"referral_event_id": "string — ID of the agentic_referral_event row (required)",
"session_token": "string — signed, merchant-scoped session token (required)",
"product_id": "string — product cited in the AI response (required)",
"agent": "string — AI agent slug: chatgpt | gemini | perplexity | copilot | meta (required)",
"consent_given": "boolean — whether GPC / acomm_consent signal was clear (optional)"
}
Actor type: user. The consumer's actor ID is HMAC-SHA256(consumer_ip, per-merchant-salt) — a pseudonymized identifier that cannot be reversed to a real IP address. The referral tracking system records this event on the backend; the actor type represents the consumer whose session originated from the AI citation.
3.3 Intent Artifact
Records the consumer's or agent's explicit purchase intent — the specific product selected and configured before cart addition.
Payload Schema
{
"product_id": "string (required)",
"product_name": "string (required)",
"quantity": "number, integer ≥ 1 (required)",
"variant": "string — size/color/SKU (optional)",
"query": "string — consumer's request if agent-mediated (optional)",
"unit_price": "string — price at time of intent, avoids float precision (optional)",
"currency": "string — ISO 4217, e.g. 'USD' (optional)"
}
Permitted actor types: user, agent.
3.4 Delegation Artifact
Records the consumer's delegation of authority to an AI agent — the scope, constraints, and limits within which the agent is authorized to act. This artifact is the primary evidence layer for agent-mediated delegation disputes: spending limit violations, unauthorized merchant purchases, and scope exceedances are deterministically provable by comparing the delegation artifact against the authorization artifact.
Payload Schema
{
"delegatee_agent_id": "string — agent identifier (required)",
"delegatee_agent_name": "string — human-readable agent name (required)",
"scope": "full" | "limited" (required),
"spending_limit": {
"value": "string — decimal amount (required if scope=limited)",
"currency": "string — ISO 4217 (required if scope=limited)"
},
"allowed_actions": ["string"] (required),
"merchant_restrictions": {
"type": "allowlist" | "blocklist" | "category" | "none" (required),
"values": ["string"] (optional)
},
"time_window": {
"start": "ISO8601 UTC (optional)",
"end": "ISO8601 UTC (optional)"
},
"authentication_method": "string — how consumer authorized delegation (required)"
}
Permitted actor types: user. The delegation artifact always records the consumer's action — the consumer is the delegator.
Present only in agent-mediated transaction types (ai_referral_agent_session, agent_session_only). Absent in standard checkout types.
3.5 Policy Artifact
Records the outcome of the merchant's policy engine evaluation. The policy check must occur after intent and before authorization. Implementors must never authorize a transaction without a preceding policy artifact.
Payload Schema
{
"policy_version": "string (required)",
"evaluation_result": "approved" | "blocked" | "escalated" (required),
"rules_evaluated": ["string"] (optional),
"reason": "string — required if blocked or escalated (optional)"
}
Actor type: merchant. In pilot deployments without a full policy engine, this artifact is auto-generated by the reference implementation with evaluation_result: "approved" and policy_version: "default-v1".
3.6 Consent Artifact
Records the consumer's explicit confirmation of the specific items, quantities, and total price before checkout. In agent-mediated transactions, this is the artifact that binds the consumer's approval to the exact products the agent selected — proving not just that the consumer authorized a purchase, but that they confirmed these specific items at this specific price.
Payload Schema
{
"confirmed": true,
"consent_method": "explicit" | "delegated" | "implicit" (required),
"items": [
{
"product_id": "string",
"product_name": "string",
"quantity": "number",
"unit_price": "string",
"variant": "string (optional)"
}
],
"total_amount": "string",
"currency": "string (ISO 4217)"
}
The consent_method field is critical for dispute adjudication:
explicit— consumer reviewed and confirmed each item individually (strongest evidence)delegated— agent confirmed items within delegation scope on consumer's behalf (delegation artifact must be present)implicit— standard storefront checkout with cart review (traditional e-commerce model)
Permitted actor types: user, agent.
cart artifact is interpreted as a consent artifact with consent_method: "implicit". The cart artifact type is accepted but deprecated in v1.1+.
3.8 Fulfillment Artifact
Records the fulfillment provider's shipping and delivery data. This artifact may arrive asynchronously after the chain is sealed and must be accepted via the late-arrival append path.
Payload Schema
{
"carrier": "string (required)",
"status": "pending" | "in_transit" | "delivered" | "failed" | "returned" (required),
"tracking_number": "string (optional)",
"tracking_url": "string — publicly accessible URL (optional)",
"shipped_at": "ISO8601 UTC timestamp (optional)",
"delivered_at": "ISO8601 UTC timestamp (optional)",
"destination_address": "string — city/state/country only; no street address (optional)",
"platform_order_id": "string — platform-native order ID, e.g. Shopify GID (optional)"
}
Actor type: fulfillment_provider.
3.9 Artifact Type Reference
| Type | Seq. | Transaction Types | Permitted Actors | Seal point? | Post-seal? |
|---|---|---|---|---|---|
discovery |
1 | ai_referral_* | agent, merchant | No | No |
referral |
2 | ai_referral_* | user | No | No |
intent |
3 or 1 | all | user, agent | No | No |
delegation |
4 or 2 | agent-mediated only | user | No | No |
policy |
5 or 3 | all | merchant | No | No |
consent |
6 or 4 | all | user, agent | No | No |
authorization |
7 or 5 | all | psp | Yes | No |
fulfillment |
8 or 6 | all | fulfillment_provider | No | Yes |
4. Cryptographic Hash Chain
4.1 Hash Formula
The current_hash of every artifact is computed as SHA-256 over the canonical JSON representation of the artifact's hash input. All fields that contribute to the hash are listed below:
current_hash = SHA256(canonical_json({
actor_id, // normalized actor identifier
actor_type, // 'user' | 'agent' | 'merchant' | 'psp' | 'fulfillment_provider'
artifact_type, // 'discovery' | 'referral' | 'intent' | 'delegation' | 'policy' | 'consent' | 'authorization' | 'fulfillment'
interaction_channel, // 'voice' | 'text_chat' | 'voice_and_text' | null
metadata, // {protocol, sdk_version, merchant_id, session_id, ...} | null
payload, // type-specific payload object
previous_hash, // SHA256 of preceding artifact | null (genesis only)
timestamp // ISO8601 UTC — RFC3339 'Z' format enforced
}))
The hash is output as a hex-prefixed string: sha256:<64-character lowercase hex>.
previous_hash field must be included inside the hash input object — not treated as a side reference. This is what makes the chain sequential and tamper-evident. Any implementation that computes the hash without previous_hash in the input is non-conformant and produces an undetectable chain break vulnerability.
Hash Output Format
sha256:a3f1c8b0e2d4f6a1b3c5e7f9a1b3c5e7f9a1b3c5e7f9a1b3c5e7f9a1b3c5e7f9
4.2 Genesis Artifact
The first artifact in any chain is the genesis artifact. Its distinguishing property is that previous_hash is null. All subsequent artifacts must have a non-null previous_hash equal to the current_hash of the immediately preceding artifact.
| Property | Genesis (seq = 1) | Non-genesis (seq > 1) |
|---|---|---|
sequence_number |
1 | N (monotonically increasing) |
previous_hash |
null |
Required — current_hash of artifact at seq N-1 |
| Chain link verification | N/A — no predecessor | Must verify previous_hash == preceding.current_hash |
4.3 Ed25519 Server Signature
Every artifact carries a required Ed25519 server signature over its current_hash. The signature is stored as a separate field (server_signature) on the artifact record and is never included in the hash input itself.
server_signature = Ed25519Sign(private_key, current_hash)
The corresponding Ed25519 public key is published by the implementing party (A-Comm Inc. or any independent implementor) to allow third-party verification without access to the private key.
Verification Steps (per artifact)
- Recompute
current_hashfrom the artifact's hash input fields - Assert recomputed hash equals stored
current_hash(constant-time comparison) - Verify Ed25519
server_signatureagainst the storedcurrent_hashusing the published public key - Verify
previous_hashequalscurrent_hashof the preceding artifact (except genesis)
5. Verification
Full chain verification produces a structured result with four independent sub-checks:
| Check | Field | How verified | Failure meaning |
|---|---|---|---|
| Hash chain integrity | hash_chain_intact |
For every artifact (seq > 1): current_artifact.previous_hash == preceding.current_hash |
An artifact was inserted, deleted, or reordered |
| Hash recomputation | part of valid |
For every artifact: recompute hash from fields and compare to stored current_hash |
An artifact's content was modified after creation |
| Signature validity | signatures_valid |
For every artifact: verify Ed25519 signature against current_hash using published public key |
Artifact was not signed by the claimed authority, or key mismatch |
| Chain completeness | chain_complete |
total_artifacts == expectedArtifactCount(transaction_type) |
Expected artifact layers are missing (chain may still be valid) |
Verification Result Schema
{
"valid": boolean, // true only if hash_chain_intact AND signatures_valid AND all hashes verify
"hash_chain_intact": boolean,
"signatures_valid": boolean,
"chain_complete": boolean, // expected artifact count met
"artifacts_verified": number, // count of successfully verified artifacts
"errors": ["string"] // human-readable error messages if valid = false
}
valid: true and chain_complete: false simultaneously — this occurs when not all expected artifact layers have been appended yet (e.g., a fulfillment artifact has not arrived). Verification is a point-in-time check. The chain remains valid even if not all layers are present.
6. Dispute Evidence Export
An AEP dispute bundle (DisputeBundle) is the complete export of a transaction chain for representment submission. It contains the full artifact sequence, verification result, merchant context, and export timestamp.
6.1 DisputeBundle Schema
{
"transaction": {
"id": "string",
"transactionType": "ai_referral_agent_session" | ...,
"status": "string",
"interactionChannel": "voice" | "text_chat" | "voice_and_text" | null,
"createdAt": "ISO8601",
"completedAt": "ISO8601 | null",
"sealedBundleHash": "sha256:... | null"
},
"verification": {
"valid": boolean,
"hashChainIntact": boolean,
"signaturesValid": boolean,
"chainComplete": boolean,
"artifactsVerified": number,
"errors": ["string"]
},
"artifacts": [EhcArtifactRecord], // ordered by sequence_number ASC
"merchantContext": {
"merchantId": "string",
"merchantName": "string",
"totalValue": "string | null",
"currency": "string | null"
},
"exportedAt": "ISO8601"
}
6.2 Chain Re-verification on Export
Before generating a dispute bundle, implementations must re-verify the full chain. Any verification failure must be surfaced in the bundle's verification object rather than silently omitted. A dispute bundle with verification.valid = false must be flagged before submission.
7. Discovery Attribution
Because AI platforms do not provide reliable referral signals, AEP uses a layered attribution model combining deterministic and probabilistic methods to identify the AI citation that originated a commerce journey.
7.1 Platform Coverage
AEP natively supports four AI platforms as discovery sources. Each platform has distinct referrer behavior that affects which attribution methods are reliable:
| Platform | Value (platform field) |
Referrer behavior | Recommended primary method |
|---|---|---|---|
| ChatGPT | chatgpt |
Frequently strips referrer header | referral_param or behavioral_heuristic |
| Google Gemini | gemini |
May pass google.com referrer |
referrer_header + referral_param |
| Perplexity | perplexity |
Consistently passes referrer | referrer_header |
| Microsoft Copilot | copilot |
May pass bing.com referrer |
referral_param + referrer_header |
7.2 Attribution Methods
The attribution_method field on the discovery artifact records how the AI citation was linked to the inbound session:
| Method | Description | Confidence | Dispute weight |
|---|---|---|---|
referral_param |
URL parameter (e.g., ?acomm_agent=chatgpt) injected into product URLs distributed via structured data and feeds. Deterministic — the parameter was present in the inbound URL. |
Deterministic | Highest |
merchant_tracked_link |
Merchant-controlled link with signed tracking token. Deterministic. | Deterministic | Highest |
referrer_header |
HTTP Referer header from the AI platform domain. Present when the platform sends referrer data. | High | High |
behavioral_heuristic |
Session behavior pattern (direct landing on product page, no prior navigation, session timing consistent with AI-mediated click). Probabilistic. | Probabilistic | Supporting |
referral_param, merchant_tracked_link) produce the strongest dispute evidence. Probabilistic methods (behavioral_heuristic) are supporting signals that corroborate but cannot independently establish attribution. Include all available signals in the discovery artifact payload — do not discard lower-confidence signals when higher-confidence signals are present.
7.3 Session Linkage Chain
Connecting a discovery artifact to a payment authorization requires the ehc_transaction_id to propagate through the consumer's browser session. The reference implementation uses the following linkage chain:
1. Consumer arrives via AI citation
→ POST /v1/events/referral (referral tracking script)
→ EHC transaction created; discovery + referral artifacts appended
→ Response includes: { ehc_transaction_id: "txn_..." }
→ Store: sessionStorage.setItem("acomm_ehc_transaction_id", id)
+ cookie: acomm_ehc=txn_...; SameSite=None; Secure
2. Consumer adds product to cart
→ Shopify Web Pixel: analytics.subscribe("product_added_to_cart", ...)
→ POST /v1/ehc/artifacts { artifact_type: "intent", ... }
Auth: X-Acomm-Session header (session token, not cookie)
→ Intent artifact appended (seq 3)
3. Consumer proceeds to checkout
→ Shopify Checkout Extension (purchase.checkout.block.render)
→ useCartLines() + useTotalAmount() → cart artifact payload
→ POST /v1/ehc/artifacts { artifact_type: "cart", confirmed: true, ... }
→ Cart artifact appended (seq 5 or 3)
→ Sets Shopify order metafield: acomm_ehc_transaction_id = txn_...
4. Consumer pays
→ Stripe PaymentIntent created with metadata:
{ acls_ehc_transaction_id: "txn_...", acls_account_id: "acc_..." }
→ payment_intent.succeeded webhook fires
→ Authorization artifact appended + chain sealed
The ehc_transaction_id is the single token that ties all four steps together. Implementations must propagate it from the initial referral response through to the Stripe PaymentIntent metadata. Loss of this token at any step results in an incomplete chain.
8. Implementation Notes
8.1 Immutability Enforcement
AEP artifacts must be append-only. The storage layer must enforce immutability at the database level — application-layer enforcement alone is insufficient because it can be bypassed by direct database access or administrative operations.
Recommended PostgreSQL implementation
-- Prevent mutation of immutable fields
CREATE OR REPLACE FUNCTION prevent_ehc_artifact_mutation()
RETURNS TRIGGER AS $$
BEGIN
RAISE EXCEPTION
'ehc_artifacts rows are immutable. Attempted update on id=% field=%',
OLD.id, TG_OP;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER ehc_artifacts_immutability_update
BEFORE UPDATE ON ehc_artifacts
FOR EACH ROW EXECUTE FUNCTION prevent_ehc_artifact_mutation();
-- Prevent deletion
CREATE OR REPLACE FUNCTION prevent_ehc_artifact_delete()
RETURNS TRIGGER AS $$
BEGIN
RAISE EXCEPTION
'ehc_artifacts rows are immutable and cannot be deleted. id=%', OLD.id;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER ehc_artifacts_immutability_delete
BEFORE DELETE ON ehc_artifacts
FOR EACH ROW EXECUTE FUNCTION prevent_ehc_artifact_delete();
Implementors must also ensure that sealed_bundle_hash on the transaction chain record is set once and never updated. Apply a CHECK constraint or trigger on the column to enforce this.
8.2 PII and Privacy
AEP is designed to be PII-minimal. The following rules apply to all artifact payloads:
- Consumer actor IDs must be pseudonymized using HMAC-SHA256 with a per-merchant secret salt:
HMAC-SHA256(user_id, per_merchant_salt). Never store raw user IDs in artifact payloads. - Email addresses, names, and physical addresses must not appear in artifact payloads. Destination addresses in fulfillment artifacts must be redacted to postal code only.
- Session tokens in discovery/referral payloads must be time-limited (maximum 24 hours), merchant-scoped, and verifiable — never raw session identifiers.
- The entire artifact chain must be exportable without exposing any PII that could identify the consumer to a third-party reviewer.
8.3 PCI-DSS Compliance
Authorization artifact payloads must never contain primary account numbers (PANs), CVVs, full magnetic stripe data, or any value that passes the Luhn algorithm.
Luhn check enforcement
Implementations must validate authorization payloads at ingestion using a Luhn check against all digit sequences of 13–19 digits. Any payload field containing a PAN-like pattern must be rejected before the artifact is created:
// PAN detection pattern
const PAN_REGEX = /\b(\d[ -]?){13,19}\b/g;
function passesLuhn(digits: string): boolean {
const d = digits.replace(/\D/g, '');
let sum = 0;
let odd = false;
for (let i = d.length - 1; i >= 0; i--) {
let n = parseInt(d[i], 10);
if (odd) { n *= 2; if (n > 9) n -= 9; }
sum += n;
odd = !odd;
}
return sum % 10 === 0;
}
function containsRawPaymentCredentials(payload: Record<string, unknown>): boolean {
const text = JSON.stringify(payload);
const matches = text.match(PAN_REGEX) ?? [];
return matches.some(m => passesLuhn(m.replace(/\D/g, '')));
}
The only permitted payment credential field is payment_token_reference — an opaque PSP-issued token that references a stored payment method without containing any card data.
8.4 Idempotency
Artifact creation must be idempotent. Implementations must derive idempotency keys deterministically from the artifact's identifying properties, allowing retries without duplicate artifact creation:
idempotency_key = SHA256(
transaction_id + ":" +
artifact_type + ":" +
actor_id + ":" +
floor(timestamp_ms / 60000) // 60-second window
)
The idempotency key must be stored with a UNIQUE constraint on the artifacts table. A duplicate key violation on insert should return the existing artifact rather than raising an error.
8.5 Data Retention
Evidence chain data must be retained long enough to support dispute resolution, audit, and regulatory review. AEP specifies the following retention model:
| Minimum retention | Default retention | Maximum retention | Rationale |
|---|---|---|---|
| 12 months | 24 months | 24 months | Card network chargeback windows (120 days) + appeals (18 months) + SOC2 audit cycles |
The retention_until timestamp is computed when the transaction is closed (completed_at is set): retention_until = completed_at + 730 days. Implementations should schedule automated deletion after this date.
9. Network System Interoperability
AEP is designed to complement — not replace — payment network enforcement systems. This section defines how AEP evidence chains interoperate with Visa Intelligent Commerce and Mastercard Agent Pay, and where AEP produces evidence that network systems structurally cannot.
9.1 Positioning Principle
Payment network systems and AEP operate at different layers of the agentic commerce stack:
- Network enforcement systems (Visa IC, MC Agent Pay) prevent disputes by enforcing rules at authorization time — spending limits, category restrictions, agent identity verification. When enforcement succeeds, the dispute never happens.
- AEP produces evidence for disputes that reach representment — when enforcement fails, when the transaction crosses rails, or when the dispute turns on semantic detail that enforcement cannot capture.
These are complementary, not competing. A merchant using both Visa IC and AEP has stronger protection than either alone: Visa IC prevents most violations in real time; AEP provides the evidence bundle when violations slip through or when the dispute is adjudicated on a non-Visa rail.
9.2 Visa Intelligent Commerce
Visa Intelligent Commerce consists of four components relevant to agentic commerce disputes:
| Component | Function | AEP Relationship |
|---|---|---|
| Trusted Agent Protocol (TAP) | Verifies agent identity via cryptographic signatures (RFC 9421). Answers: "Is this a legitimate AI agent?" | AEP can wrap TAP agent signatures in the intent or delegation artifact's metadata field, preserving the agent verification as part of the evidence chain. |
| Payment Instructions | Consumer-defined spending limits and MCC-level merchant category restrictions, enforced at VisaNet authorization. | AEP's delegation artifact captures the same constraints as hash-chained evidence. When Payment Instructions enforcement fails (misconfiguration, agent circumvention, non-Visa rail), the delegation artifact proves the constraints existed. |
| AI-Ready Cards | Passkey-authenticated consumer identity binding to agent sessions. | AEP's consumer identity (HMAC-SHA256 pseudonymized) is complementary. AI-Ready Card authentication status can be recorded in the delegation artifact's authentication_method field. |
| Verifi | Rapid Dispute Resolution (RDR) auto-resolves disputes; Order Insight shares transaction details with issuers pre-dispute. | Verifi resolves disputes before they reach representment. AEP provides the evidence bundle when disputes escalate beyond what Verifi can auto-resolve. The AEP DisputeBundle can include Verifi interaction data in the merchant_context field. |
Structural limitations (where AEP adds evidence Visa IC cannot produce)
- Visa-only: Payment Instructions and VisaNet enforcement operate on the Visa rail only. AEP evidence is usable in disputes on any payment rail.
- Enforcement, not evidence: Payment Instructions are rules loaded into VisaNet. When enforcement fails, there is no hash-chained evidence artifact proving the rules existed. AEP's delegation artifact is an immutable evidence record.
- Category-level, not semantic: Payment Instructions restrict by MCC code ("electronics") and spending limit. AEP's intent artifact captures "wireless noise-canceling headphones under $200" — the semantic resolution at which agent-mediated disputes are adjudicated.
- No fulfillment attestation: Visa IC's scope ends at authorization. AEP's fulfillment artifact provides post-authorization delivery proof.
- No merchant policy check: Visa IC operates at the network and consumer level. AEP's policy artifact records the merchant's own risk evaluation.
9.3 Mastercard Agent Pay
Mastercard Agent Pay consists of three components relevant to agentic commerce disputes:
| Component | Function | AEP Relationship |
|---|---|---|
| Verifiable Intent | Cryptographically signed object capturing consumer identity, action-level intent ("purchase"), and binding proof. | AEP can wrap the Verifiable Intent object in the intent artifact's metadata field. AEP's intent artifact adds the semantic layer that Verifiable Intent lacks — not just "purchase" but "purchase wireless noise-canceling headphones." |
| Agent Pay Program | Agent registration, delegation context, and partial spending limit capture. | AEP's delegation artifact provides the structured, hash-chained version of delegation constraints. Agent Pay delegation context can be recorded in the delegation artifact's metadata. |
| Ethoca | Real-time dispute data sharing between merchants and issuers. | Ethoca shares dispute signals in real time. AEP provides the hash-chained evidence bundle for representment when disputes proceed to arbitration. The AEP DisputeBundle can include Ethoca alert data in the merchant_context field. |
Structural limitations (where AEP adds evidence MC Agent Pay cannot produce)
- Mastercard-only: Agent Pay and Verifiable Intent operate on the Mastercard rail only. AEP evidence is usable in disputes on any payment rail.
- Action-level, not semantic: Verifiable Intent captures "purchase" as the action. AEP captures the consumer's natural-language request — the semantic detail that determines whether the agent fulfilled the consumer's actual intent.
- No spending limit as structured field: Spending limits are not a native deterministic field in Agent Pay's evidence output. AEP's delegation artifact captures spending limits as a structured, hash-chained field that enables deterministic violation detection.
- No merchant restriction mechanism: Agent Pay has no field for domain-level merchant allowlists. AEP's delegation artifact captures merchant restrictions at the domain level ("sephora.com, ulta.com").
- No fulfillment attestation: MC Agent Pay scope ends at authorization. AEP's fulfillment artifact provides post-authorization delivery proof.
- No cross-layer hash chain: Verifiable Intent has internal cryptographic binding. AEP produces a cross-layer hash chain where every artifact is linked to its predecessor — any insertion, deletion, or mutation is detectable at every subsequent node.
9.4 Cross-Network Evidence Summary
| Evidence Capability | Visa IC | MC Agent Pay | AEP |
|---|---|---|---|
| Consumer identity binding | Passkey (AI-Ready Card) | Verifiable Intent identity | HMAC-SHA256 pseudonymized |
| Agent identity verification | TAP (RFC 9421) | Agent Pay registration | Agent ID in artifacts (can wrap TAP/AP signatures) |
| Semantic intent capture | Category-level (MCC) | Action-level ("purchase") | Natural-language level |
| Delegation constraints | Payment Instructions (enforcement) | Partial (Agent Pay context) | Structured evidence artifact |
| Item-level consent | Category-level (Payment Instruction auth) | Action-level (Verifiable Intent) | Per-item confirmation with consent method |
| Merchant policy check | Not captured | Not captured | Policy artifact (merchant-side evaluation) |
| Fulfillment attestation | Verifi Order Insight (partial) | Not captured | Fulfillment artifact (carrier, tracking, delivery) |
| Hash chain integrity | TAP signatures (per-agent) | Verifiable Intent binding (per-object) | Cross-layer SHA-256 chain + Ed25519 signatures |
| Cross-network usability | Visa only | Mastercard only | Any payment rail |
| Pre-dispute resolution | Verifi RDR + Order Insight | Ethoca real-time data sharing | Not applicable (evidence layer, not enforcement) |
Appendix A — Glossary
| Term | Definition |
|---|---|
| Artifact | An immutable, cryptographically hashed record of a single event in the commerce journey. Eight artifact types are defined: discovery, referral, intent, delegation, policy, consent, authorization, fulfillment. |
| Transaction chain | The ordered, append-only sequence of artifacts representing a single commerce transaction from discovery to fulfillment. |
| Genesis artifact | The first artifact in a chain (sequence_number = 1). Its previous_hash is null. |
| Sealed bundle hash | The current_hash of the authorization artifact, stored on the transaction chain record. Immutable once set. Marks the boundary between pre-seal and post-seal artifact appends. |
| AEP | A-Comm Evidence Protocol. The name "AEP" reflects the protocol's origin in Intentra's evidence protocol specification. The A-Comm reference implementation uses the name AEP throughout the codebase. |
| DisputeBundle | The complete exported artifact sequence plus transaction metadata, verification result, and merchant context. The unit of evidence submitted to PSPs and card networks. |
| canonical_json | A deterministic JSON serialization with lexicographically sorted keys, RFC3339 UTC timestamps, and no whitespace. |
| previous_hash | The current_hash of the immediately preceding artifact in the chain. Included inside the hash input (not as a side reference). null for genesis artifacts only. |
| Interaction channel | The modality of the agent session: voice, text_chat, or voice_and_text. null for non-agent artifact layers. |
| Attribution method | The mechanism used to link an AI platform citation to an inbound session: referral_param, merchant_tracked_link, referrer_header, or behavioral_heuristic. |
| Delegation artifact | Records the consumer's delegation of authority to an AI agent — scope, spending limits, merchant restrictions, allowed actions, and time constraints. Present only in agent-mediated transaction types. Added in v1.1.0. |
| Consent artifact | Records the consumer's explicit confirmation of specific items, quantities, and total price before checkout. Replaces the v1.0 "cart" artifact with expanded semantics including consent_method (explicit, delegated, implicit). Added in v1.1.0. |
| Visa Intelligent Commerce | Visa's suite of agentic commerce capabilities: Trusted Agent Protocol (TAP) for agent identity, Payment Instructions for spending limits and MCC restrictions, AI-Ready Cards for Passkey consumer authentication, and Verifi for pre-dispute resolution. Operates on the Visa rail only. |
| Mastercard Agent Pay | Mastercard's suite of agentic commerce capabilities: Verifiable Intent for identity and action-level intent, Agent Pay program for agent registration and delegation context, and Ethoca for real-time dispute data sharing. Operates on the Mastercard rail only. |
| Cross-network evidence | Evidence that is usable in dispute representment regardless of which payment rail processed the transaction. AEP evidence is cross-network by design; Visa IC and MC Agent Pay evidence is network-specific. |
| Enforcement layer | Systems that prevent disputes by blocking transactions at authorization time (e.g., VisaNet enforcement of Payment Instructions). Distinct from the evidence layer, which produces proof for post-hoc dispute representment. |
| Evidence layer | Systems that produce cryptographic proof for dispute representment after a transaction has been authorized. AEP operates at the evidence layer. Enforcement and evidence are complementary. |
Appendix B — JSON Schema Reference
The following is the TypeScript interface for the artifact hash input, which defines all fields that contribute to current_hash. This interface is the normative reference for hash computation.
interface ArtifactHashInput {
artifact_type: ArtifactType;
actor_type: ActorType;
/**
* Normalized actor identifier.
* Users: HMAC-SHA256(id, per-merchant salt). Agents: name[:version].
*/
actor_id: string;
/**
* null for non-agent artifact layers (psp, fulfillment_provider, direct_web).
*/
interaction_channel: 'voice' | 'text_chat' | 'voice_and_text' | null;
payload: Record<string, unknown>;
metadata: Record<string, unknown> | null;
/**
* null ONLY for genesis artifact (sequence_number = 1).
* Required and non-null for all subsequent artifacts.
*/
previous_hash: string | null;
/** ISO 8601 UTC string — 'Z' suffix required */
timestamp: string;
}
type ArtifactType =
| 'discovery' | 'referral' | 'intent' | 'delegation'
| 'policy' | 'consent' | 'authorization' | 'fulfillment'
| 'cart'; // deprecated alias for 'consent' — accepted for v1.0 backward compatibility
type ActorType =
| 'user' | 'agent' | 'merchant' | 'psp' | 'fulfillment_provider';
type TransactionType =
| 'ai_referral_agent_session'
| 'ai_referral_standard_checkout'
| 'agent_session_only'
| 'direct_web';
/** Expected artifact count for chain_complete verification */
function expectedArtifactCount(type: TransactionType): number {
return (type === 'ai_referral_agent_session' ||
type === 'ai_referral_standard_checkout') ? 7 : 5;
}
Appendix C — Stripe Evidence API Mapping
An AEP DisputeBundle maps directly to Stripe's Dispute Evidence API fields (stripe.com/docs/api/disputes/update). The following mapping is implemented in the reference implementation's stripe-formatter.ts.
| Stripe field | AEP source | Content |
|---|---|---|
customer_communication |
discovery + intent + cart artifacts (forward-chronological) | Discovery artifact first: AI platform, consumer query, referral URL, attribution method, confidence score, hash. Then intent artifact: product, quantity, actor, channel, timestamp, hash. Then cart artifact: confirmed=true, item count, total, currency, hash. Together these form the complete "authorization trail" from AI citation through explicit cart confirmation. |
shipping_documentation |
fulfillment artifact | Carrier, tracking number, tracking URL, fulfillment status, shipped_at, delivered_at, artifact hash and previous hash. "No fulfillment artifact recorded" if the artifact has not yet arrived. |
receipt |
authorization artifact + transaction header | Transaction chain ID, transaction type, chain status at export, authorization timestamp, actor, payment token reference (not PAN), PSP name, authorization code, amount authorized, sealed bundle hash, artifact hash. |
uncategorized_text |
Full chain summary | Chain integrity verification result (valid/intact/signatures/complete/artifacts verified/errors), transaction ID/type/channel/timestamps, and the full artifact sequence table (sequence number, artifact type, actor type, hash prefix). Provides cryptographic context for card network reviewers. |
Sample uncategorized_text output
A-COMM.AI EVIDENCE HASH CHAIN — VERIFICATION SUMMARY
Protocol: A-Comm Evidence Protocol (AEP) v1.1.0 (Apache 2.0)
Exported: 2025-06-15T14:22:07Z
-- CHAIN INTEGRITY --
Chain valid: YES
Hash chain intact: YES
Signatures valid: YES
Chain complete: YES
Artifacts verified: 7
-- TRANSACTION --
ID: txn_01HV4K8QZXMJF2B3C5D7E9FA
Type: ai_referral_agent_session
Channel: text_chat
Created: 2025-06-15T14:01:33Z
Completed: 2025-06-15T14:08:19Z
-- ARTIFACT SEQUENCE --
[1] discovery actor=agent hash=a3f1c8b0e2d4f6a1...
[2] referral actor=user hash=b7d2e9f1a4c6b8d0...
[3] intent actor=agent hash=c1e3f5g7h9i1j3k5...
[4] policy actor=merchant hash=d2f4h6j8l0n2p4r6...
[5] cart actor=agent hash=e3g5i7k9m1o3q5s7...
[6] authorization actor=psp hash=f4h6j8l0n2p4r6t8...
[7] fulfillment actor=fulfillment_provider hash=g5i7k9m1o3q5s7u9...
Appendix D — Changelog
| Version | Date | Changes |
|---|---|---|
| v1.1.0 | 2026-04-10 |
Major update: delegation and consent artifacts, network interoperability. New artifact types: delegation (records consumer delegation of authority to AI agent — scope, spending limits, merchant restrictions, allowed actions); consent (replaces cart — adds consent_method field distinguishing explicit, delegated, and implicit confirmation). Commerce journey: expanded from 7 to 8 layers; transaction type matrix updated (ai_referral_agent_session: 8 artifacts, agent_session_only: 6 artifacts). New section 9: Network System Interoperability — defines how AEP complements Visa Intelligent Commerce (TAP + Payment Instructions + AI-Ready Cards + Verifi) and Mastercard Agent Pay (Verifiable Intent + Agent Pay + Ethoca); cross-network evidence summary table; recommended deployment model. Updated sections: Problem Statement (1.1) acknowledges network enforcement systems and positions AEP as the cross-network evidence layer; Design Goals (1.2) adds cross-network, network-complementary, and semantic-resolution as explicit goals. Backward compatibility: cart artifact type accepted as deprecated alias for consent with consent_method: "implicit". Glossary expanded with delegation, consent, Visa IC, MC Agent Pay, cross-network evidence, enforcement layer, evidence layer.
|
| v1.0.1 | 2026-03-31 |
Reference implementation alignment. Payload schemas: per-artifact Zod validation schemas defined for all 7 artifact types (payload-schemas.ts). Policy artifact: step_up_required → escalated; blocking_rule/step_up_type → reason; added auto-generation note for pilot deployments without a policy engine. Referral artifact: corrected payload schema to match reference implementation (referral_event_id, session_token, product_id, agent, consent_given); corrected actor type from merchant to user (pseudonymized consumer IP). Discovery artifact: removed session_token and model_used fields (strict validation strips unknown fields); added meta to platform enum. Intent artifact: added optional unit_price and currency fields. Fulfillment artifact: updated status enum (pending, in_transit, returned added; processing/shipped consolidated); added platform_order_id. Stripe Appendix C: reordered customer_communication to forward-chronological (discovery → intent → cart). Session linkage: POST /v1/events/referral now returns ehc_transaction_id in response body, enabling session token propagation to Shopify Web Pixel and Checkout Extension. Database: agentic_referral_events.ehc_transaction_id (reverse FK) and transaction_chains.shopify_order_id added (migration 050).
|
| v1.0 | 2025 | Initial public release. Defines: 7-artifact commerce journey (discovery, referral, intent, policy, cart, authorization, fulfillment); 2×2 transaction type matrix; sequential hash chain model with previous_hash inside hash input; Ed25519 server signature on every artifact; sealing model at authorization layer; post-seal fulfillment append path; discovery artifact with AI platform coverage (ChatGPT, Gemini, Perplexity, Copilot); 4-method attribution model; PCI-DSS Luhn enforcement; HMAC-SHA256 actor pseudonymization; idempotency key formula; PostgreSQL append-only trigger patterns; Stripe Evidence API mapping; 4-check verification protocol. |
A-Comm Evidence Protocol (AEP) v1.1.0 — Copyright 2026 A-Comm Inc. — Apache License 2.0 — Published by A-Comm Inc., krystalgracier@gmail.com