| Internet-Draft | Merchant Identity Assertions | April 2026 |
| Anders | Expires 17 October 2026 | [Page] |
Existing work helps a relying party determine whether an automated client is authorized to initiate a transaction. This document addresses how that client can obtain verifiable merchant identity information about the payee before completing the transaction.¶
Specifically, this document defines a Merchant Identity Assertion (MIA): a JSON document that attests to the verifiable identity of a merchant entity and carries an embedded cryptographic proof. It defines the assertion object structure, required and optional fields, the proof object, key discovery via well-known URIs, validity semantics, and an optional signed Evaluation Result Token for pre-transaction verification.¶
This document is intended to complement, not replace, existing agent identity and payment authorization protocols.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 17 October 2026.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
The rapid growth of autonomous AI agents executing financial transactions on behalf of human principals has created a new class of trust requirements that existing protocols do not fully address.¶
Current work in agent identity -- including IETF Web Bot Auth [WEBBOTAUTH] and payment authorization frameworks such as Visa Trusted Agent Protocol, Mastercard Agent Pay, and the KYAPay Profile [KYAPAY] -- provides mechanisms for a receiving system to verify that an automated client is legitimate and authorized to transact. HTTP Message Signatures [RFC9421] provide the cryptographic foundation on which several of these frameworks build.¶
These mechanisms answer: "Is this agent who it claims to be, and is it authorized to pay?"¶
A complementary question remains unanswered by existing standards: "Is the merchant this agent intends to pay who it claims to be?"¶
In human-mediated commerce, consumers evaluate merchant identity through visual cues, brand recognition, and accumulated reputation. Autonomous agents lack these faculties. Without a machine-readable, cryptographically verifiable merchant identity mechanism, agents must either trust merchant identity claims implicitly -- creating fraud exposure -- or implement proprietary verification mechanisms that are not interoperable.¶
This document defines the Merchant Identity Assertion (MIA): a minimal, interoperable signed JSON document that enables any autonomous agent to verify merchant identity before executing a transaction.¶
The MIA is designed to:¶
This document does not define trust scoring algorithms, merchant ranking systems, payment authorization protocols, or agent identity mechanisms. Those concerns are addressed by other specifications.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
Autonomous agents executing financial transactions face a fundamental asymmetry: agent identity protocols enable merchants to verify agents, but no complementary mechanism enables agents to verify merchants.¶
This asymmetry creates the following risks:¶
Without verifiable merchant identity, an agent may be directed to pay a fraudulent entity impersonating a legitimate merchant. Domain spoofing, homograph attacks, and DNS hijacking all represent realistic attack vectors in autonomous transaction flows.¶
Regulated industries including healthcare, government procurement, and financial services require demonstrable proof that vendor identity was verified before payment. No standardized cryptographic mechanism currently exists to produce this proof in autonomous transaction flows.¶
Human principals delegating transaction authority to autonomous agents may wish to restrict transactions to verified merchant entities. Without a machine-readable merchant identity standard, such policies cannot be enforced consistently across agent implementations.¶
Proprietary merchant verification mechanisms implemented by individual agent platforms are not interoperable. A merchant verified by one platform's mechanism provides no assurance to a different platform. A common standard eliminates this fragmentation.¶
An MIA is a JSON [RFC8259] document served with media type application/merchant-identity+json (Section 12.3). It consists of a Claims Object (Section 5.1 and Section 5.2) and an embedded Proof Object (Section 5.3).¶
The Claims Object is the canonical input to the signing procedure. The Proof Object records the resulting signature and key reference. Both are serialized together as a single JSON document on the wire (Section 5.4).¶
An object identifying the signing entity. MUST contain:¶
The proof field MUST be present in a signed MIA and MUST be a JSON object containing:¶
The keyDirectory URI appears in the assertion payload, which could raise a trust bootstrap concern if a relying party were to trust the payload as the sole source of key discovery information. To avoid this, the relying party MUST derive the authoritative key directory location from proof.verificationMethod and MUST NOT rely on issuer.keyDirectory as the sole key discovery path. Relying parties SHOULD additionally verify that the domain in verificationMethod matches issuer.domain as a consistency check.¶
An MIA is serialized as a single JSON document. The Claims Object fields (Section 5.1 and Section 5.2) and the proof field (Section 5.3) appear at the top level of this JSON document.¶
The document MUST be served over HTTPS with:¶
Content-Type: application/merchant-identity+json¶
Implementations MUST NOT serve or accept MIA documents over plain HTTP.¶
The following is a non-normative example of a complete signed MIA document:¶
{
"version": 1,
"subject": "supplier.example.com",
"legalName": "Example Supply Corporation",
"entityType": "corporation",
"jurisdiction": "US",
"issuedAt": "2026-04-15T00:00:00Z",
"expiresAt": "2027-04-15T00:00:00Z",
"issuer": {
"name": "Example Trust Registry",
"domain": "trust.example.org",
"keyDirectory": "https://trust.example.org/.well-known/jwks.json"
},
"registrationId": "12-3456789",
"evidenceUris": [
"https://www.gleif.org/lei/5493001KJTIIGC8Y1R12"
],
"proof": {
"type": "MerchantIdentityProof-EdDSA-v1",
"created": "2026-04-15T00:00:00Z",
"verificationMethod":
"https://trust.example.org/.well-known/jwks.json#key-01",
"proofValue": "z3FXQjecMBCm...base64url-signature"
}
}¶
A merchant MAY self-issue an MIA and publish it at:¶
https://{subject-domain}/.well-known/merchant-identity.json¶
This resource MUST be served over HTTPS with:¶
Content-Type: application/merchant-identity+json¶
A relying party wishing to obtain an MIA for a given merchant domain SHOULD first attempt retrieval from this well-known URI.¶
For a self-issued MIA, the issuer.domain field MUST equal the subject field, and the issuer.keyDirectory MUST resolve to a Key Directory at the subject domain.¶
Merchants MAY authorize a third-party issuer to publish an MIA on their behalf. Before relying on a third-party MIA, the relying party MUST verify that the issuer is authorized by the subject domain using one of the following mechanisms:¶
a) DNS TXT Authorization Record:¶
The subject domain MUST publish a DNS TXT record at the name _mia-auth.{subject-domain}:¶
_mia-auth.supplier.example.com. IN TXT "v=mia1; issuer=trust.example.org"¶
The issuer value MUST exactly match the issuer.domain field in the MIA.¶
b) HTTP Delegation Document:¶
The subject domain MUST publish a Merchant Identity Delegation Document (MIDD) at:¶
https://{subject-domain}/.well-known/mia-delegation.json¶
An MIDD is a distinct document type from an MIA. It MUST be a JSON object signed using the same proof structure defined in Section 5.3 and MUST contain:¶
The MIDD MUST be served over HTTPS with Content-Type application/json. This document does not define a dedicated media type for MIDD documents. Relying parties MUST verify the MIDD proof using a key hosted at the subject domain before accepting the named issuer as authorized.¶
Relying parties MUST treat an MIA as invalid if neither authorization mechanism is satisfied.¶
All MIA signatures MUST use the Edwards-Curve Digital Signature Algorithm (EdDSA) with the Ed25519 curve [RFC8032]. No other algorithms are defined by this document.¶
Issuers MUST publish a JSON Web Key Set [RFC7517] at the HTTPS URI in the issuer.keyDirectory field. This document is the Key Directory.¶
Key Directory entries used for MIA signing MUST include:¶
The Key Directory MUST be served over HTTPS with appropriate HTTP caching headers. Relying parties SHOULD cache key material per those headers to reduce verification latency and network load.¶
To produce an MIA signature, the issuer MUST:¶
A relying party MUST perform the following steps:¶
A relying party MUST NOT act on an assertion that fails any verification step.¶
Relying parties MUST NOT accept assertions for which the current time is at or after the expiresAt value.¶
Issuers SHOULD limit assertion validity periods. Validity periods of 90 days or less are RECOMMENDED for issuers with automated re-issuance pipelines.¶
Issuers MAY support early revocation by including a revocationUri extension field. If present, this field MUST be an HTTPS URI that resolves to a JSON object with a boolean "revoked" field. Relying parties MAY check this URI before relying on an assertion.¶
Issuers MUST re-issue assertions promptly when material identity information changes (e.g., legal name change, jurisdiction change, loss of business registration).¶
Relying parties in high-stakes or regulated contexts SHOULD retrieve a fresh assertion rather than relying on a cached copy when the cached copy is older than 24 hours, regardless of the expiresAt value.¶
A verification service MAY issue an Evaluation Result Token (ERT) after successfully verifying an MIA. The ERT is a signed JWT [RFC7519] that serves as a portable audit artifact confirming that verification was performed.¶
The ERT is an optional layer. Its issuance does not alter the validity of the underlying MIA.¶
No consumer or agent identity fields SHALL be included in an ERT without explicit principal consent.¶
The ERT MUST be signed as a JWS [RFC7515] using EdDSA with Ed25519 [RFC8032]. The JWS Protected Header MUST include:¶
Implementations MUST follow JWT Best Current Practices [RFC8725], including algorithm validation and rejection of the none algorithm.¶
The following is a non-normative example of a decoded ERT payload:¶
{
"iss": "trust.example.org",
"sub": "supplier.example.com",
"iat": 1744934400,
"exp": 1744934700,
"jti": "f7a2c9e1b4d8",
"mia_verified": true,
"mia_subject": "supplier.example.com",
"mia_issued_at": "2026-04-15T00:00:00Z",
"mia_issuer_domain": "trust.example.org"
}¶
A relying party MAY include the ERT in payment metadata or transaction records to provide downstream parties with a verifiable audit artifact that pre-transaction merchant identity verification occurred.¶
MIA documents MUST NOT include personal data about natural persons except where the subject is a sole proprietor, such disclosure is legally required in the jurisdiction, and the natural person has provided explicit consent.¶
The evidenceUris field, if included, reveals which third-party registries were used to corroborate the merchant's identity. Issuers SHOULD assess the privacy implications of each URI before inclusion.¶
Real-time retrieval of MIAs from well-known URIs or Key Directories reveals which merchants a relying party intends to transact with. Implementations SHOULD use caching and pre-fetching strategies to reduce this correlation risk.¶
ERTs as defined in Section 9 MUST NOT include consumer or agent principal identifiers. Verification services MUST NOT log consumer identifiers in association with merchant verification events without explicit consumer consent.¶
The ERT jti claim provides a unique token identifier. Relying parties MUST maintain a jti cache for at least the duration of the token's validity window (exp - iat) and MUST reject any ERT whose jti has been seen previously. The RECOMMENDED maximum ERT validity of 300 seconds bounds the size of this cache.¶
If an issuer's signing key is compromised, all MIA documents signed with that key MUST be treated as invalid. Issuers MUST maintain key rotation procedures and MUST remove compromised keys from their Key Directory promptly. Relying parties that cache Key Directory material MUST re-fetch on signature verification failure.¶
An MIA is bound to a domain name. Transfer of that domain to a new owner does not automatically invalidate outstanding assertions. Issuers MUST implement procedures to detect domain transfer and revoke or re-evaluate affected assertions without delay.¶
A third-party issuer operating in bad faith may publish false assertions. Relying parties SHOULD NOT treat all issuers as equally trustworthy. Relying parties MAY maintain allowlists of trusted issuer domains and SHOULD treat assertions from unknown issuers with heightened scrutiny. The third-party authorization requirement in Section 6.2 ensures that an issuer cannot publish an MIA for a domain that has not explicitly authorized it, but does not guarantee the issuer itself is trustworthy.¶
Merchant legal standing may change after assertion issuance (e.g., insolvency, license revocation, sanctions designation). Relying parties in regulated industries MUST NOT treat an MIA as sole evidence of current compliance and SHOULD supplement MIA verification with jurisdiction-appropriate checks for high-value or high-risk transactions.¶
An attacker with network access could substitute an older but still-valid MIA for a more recently issued one. Relying parties SHOULD record the issuedAt timestamp of the assertion used in a transaction and SHOULD reject assertions whose issuedAt predates their recency threshold for the transaction context.¶
DNS TXT records (Section 6.2, mechanism a) are susceptible to cache poisoning if DNSSEC is not deployed. Implementations MUST use DNSSEC-validated resolution where available when performing DNS-based third-party authorization checks. HTTP delegation documents (mechanism b) MUST be retrieved over HTTPS with certificate validation; relying parties MUST reject delegation documents served without a valid TLS certificate.¶
Implementations of the ERT (Section 9) MUST comply with JWT Best Current Practices [RFC8725], including:¶
This document requests registration in the "Well-Known URIs" registry [RFC8615]:¶
This document requests registration in the "Well-Known URIs" registry [RFC8615]:¶
This document requests registration of a new media type per [RFC6838]:¶
The author thanks the participants of the IETF web-bot-auth working group for their engagement, and in particular David Schinazi and Rifaat Shekh-Yusef for their guidance in directing this work toward the DISPATCH working group. The author also acknowledges the complementary work in draft-skyfire-kyapayprofile- 01, which addresses agent-side identity in a manner that this document's merchant-side framework is designed to complement.¶