prepared privately for American Express · not indexed · not a customer, partner, or endorsement

You already promised to pay
when the agent gets it wrong.
There is no signed record of an agent getting it wrong.

American Express published the commitment in plain terms. If a Card Member authorizes a registered AI agent to make a purchase, and that agent sends American Express the customer's authenticated purchase intent, American Express will protect eligible customers from charges related to AI agent error, per the Amex Agentic Commerce Experiences page. That promise creates a question the rest of the industry has not answered. When you pay out, what is the record that says the agent is the one that erred, and who can check it besides you?

A record of the decisionApprove or decline, the mandate it was measured against, and whether that mandate was live at the instant.
A record of the faultWhich party broke a constraint it had committed to before the loss, recomputed rather than asserted.
Signed by a party that cannot benefitThe role field is fixed at non_party_observer. It cannot be the issuer, the acquirer, the merchant, the network or the agent operator.

There is a second thing worth saying up front. Because you are the network and the issuer in one company, this is a record you are structurally able to put in the authorization path yourself. That argument is the next section.

The rest of this page follows one bad purchase from the moment the Card Member speaks to the moment somebody pays. Nine signed records sit along that path. Each one sits on a leg of your own published eligibility test or on the lifecycle around it, and each one runs in your browser on this page. The map is here.

the structural argument · a neutral fact about card system shape

A signed authorization decision
is a decision you can make inside one company

American Express runs a closed loop. The payments consultancy CMSPI describes that shape plainly: in a three party card network, “a single entity acts as the issuer, acquirer, and network,” and it names American Express as an example, per CMSPI, Card Network Models and Global Card Costs. Your own network site says the same in your own words, offering partners “American Express' experience as a global Issuer, Acquirer and Network,” on the American Express Global Network acquirer page. That is not a marketing distinction here. It changes what it takes to ship a signed record of an authorization decision.

 Four party modelClosed loop model
Who is in the loop“consumers, issuers, merchants and acquirers,” with the network acting as an intermediary between issuer and acquirer, per CMSPI.“a single entity acts as the issuer, acquirer, and network,” per CMSPI.
Who returns the authorization decisionThe issuing institution returns it, and in that model the issuer is a separate company from the network that carries the message, per CMSPI.American Express. The issuer and the network are the same company.
What it takes to put a new signed record in the authorization pathAgreement across the independent issuing institutions that return the decision, since the network does not make it.A decision inside one company.

That table is a description of structure, nothing more. The four party design is deliberate and it does a great deal of useful work, including the intermediary role CMSPI describes. It also means a signed decision record on those rails is a coordination problem across many independent issuing institutions before it is an engineering problem. For Amex it is an engineering problem.

This is exactly what Luke Gebb said was missing. His words: “no one has yet brought the issuer into the equation (or the bank). That's where… you start to have legitimate financial liability for transactions,” in Digital Commerce 360. The step he describes as the unsolved one is the step where the issuer enters the picture. You are already the issuer. Bringing the issuer into the equation is not something you have to convince anyone to do. It is a description of where you already sit.

And you already treat the closed loop as the advantage. Gebb again, on the American Express newsroom: “Being both a network and an issuer gives us a unique, end-to-end perspective,” and “That vantage point provides insights that enable Amex to not only drive commerce but also gives us the ability to reduce chargebacks and confusion for merchants, and reduce fraud, errors and friction for Card Members.” Everything below this section is that same vantage point pointed at the one problem your own engineers wrote down as open. Who is accountable if the agent makes a mistake.

To be precise about what this section does not claim. It says nothing about how quickly American Express would move, whether it wants to, or whether anyone there has looked at this. It says nothing about whether another card system could build the same object, because any of them could. It says only that the number of independent parties who have to agree before a signed decision record can sit in the authorization path is different for you than it is for anyone else.

the open question is yours, in your own words

Your people already wrote down
the thing that has not been figured out

Nothing on this page argues that American Express missed something. Every line below is a public statement by a named person at American Express, and each one describes the same gap.

“If the merchant has made no error and the cardmember has made no error, but the agent has made the error, that's a new paradigm in agentic commerce today and one that has not been figured out.”
Luke Gebb, EVP and Head of Global Innovation, American Express · Digital Commerce 360, April 14, 2026
“no one has yet brought the issuer into the equation (or the bank). That's where… you start to have legitimate financial liability for transactions.”
Luke Gebb, EVP and Head of Global Innovation, American Express · Digital Commerce 360, April 14, 2026
“How can an agent acting on a customer's behalf prove it has the required authority to make purchases? How can guardrails be set for the agent's actions? Who is accountable if the agent makes a mistake?”
Mukund Shankar, VP Engineering, and Sunny Hirani, Engineering Director, American Express · American Express Technology, Building Trust in AI Powered Transactions with Amex Agentic Commerce Experiences
“The liability framework needs to be in place, and needs to be made clear to the customer, in order for them to feel comfortable with that transaction.”
Judy Nguyen, VP enterprise payments, American Express · Payments Dive, April 29, 2026

Read them together and they say one thing. You have taken on the liability, you have asked who is accountable, and you have said the framework has to be legible to the customer. What is left is the evidence object that framework runs on. And as the section above lays out, the second Gebb line is not only a description of the gap. It is a description of why the closed loop is the place the gap can be closed.

the ACE services · and the one artifact nobody publishes

Four things you capture. One thing nobody holds.

American Express publishes the ACE developer kit services on the Agentic Commerce Experiences page. Each one does real work. They have one property in common.

ArtifactWhat it establishesWho holds itWho can check it
Agent RegistrationOnly verified AI agents are authorized to transact on the American Express network.American ExpressAmerican Express
Intent IntelligenceCard Member purchase intent is accurately captured to support authentication, authorization, and disputes.American ExpressAmerican Express
Payment CredentialsVerified AI agents complete payments on behalf of a Card Member using tokenized credentials.American ExpressAmerican Express
Cart ContextCart level detail feeds validation, authorization decisions, and dispute investigations.American ExpressAmerican Express
A record an outside party can recomputeNothing publishes this today, at any issuer or any network.NobodyNobody

Those four are captured by Amex, held by Amex, and signed by Amex if they are signed at all. In a dispute, the party that pays is also the party that holds the only record. That works right up to the moment an agent operator disputes the finding, or a regulator asks to see it. Then the record and the payer are the same institution, and the finding is your word.

Regulation E · why this is not a nice to have

The burden already sits on the institution

The Consumer Bankers Association put it in one sentence in its January 2026 white paper on agentic AI in payments: “The burden falls on the financial institution to prove that a transfer was authorized.” Source: CBA, Agentic AI Payments, January 2026.

Read that with an agent in the flow. Proving the transfer was authorized now means proving that a delegation existed, that it covered this amount and this acceptor, and that it was still live at the authorization instant. Not live yesterday. Not live in a nightly extract. Live at the instant.

An internal database row can say all of that. It is still the institution's own word about a transaction the institution is a party to. A signed record that any third party can recompute from the same inputs is evidence. The difference is not credibility. Nobody thinks Amex fabricates records. The difference is that one of them can be checked by somebody who was not in the room.

the spine of this page · your published eligibility test, leg by leg

You wrote the test. Here is a signed record for every leg of it.

Amex Agent Purchase Protection has a fence around it, published on the Agentic Commerce Experiences page. The agent has to be registered. You have to receive the Card Member authenticated purchase intent. The error has to be a purchase that deviates from that intent. And the claim can fall outside the protection when the intent was subjective or non verifiable. That is four legs, and around them sits the rest of the lifecycle: cancellation, recovery, the operator's history, and the two sets of books.

Follow one purchase through it. A Card Member tells an agent to book a hotel for a trip. The agent books the wrong hotel. You pay the Card Member, because you said you would. Then the questions start, and every one of them is a question about a record.

LegWhat Amex publishedThe question a month laterThe signed record
1. The agent was registeredThe agent “must be registered with American Express and integrated with the Amex Agentic Commerce Experiences developer kit,” per the ACE terms.Was the agent that transacted the agent that registered?admission.binding
2. You received authenticated intent“American Express must receive the Card Member-authenticated purchase intent from the agent,” per the ACE terms.Is the summary the Card Member confirmed the same summary you received?intent.affirmation
3. The intent was checkableClaims “may not be available in some cases, including where purchase intent is subjective or non-verifiable,” per the ACE terms.Was this intent checkable before the purchase, or only after the loss?intent.verifiability
4. The purchase was inside what was approvedAmex delivers “intent-driven authorizations,” per the 2026 Chairman's Letter.What was decided, against what authority, and was that authority live?authorization.decision and mandate.conformance
5. The agent deviatedEligible errors are “transactions where the purchase deviates from the Card Member-authenticated purchase intent,” per the ACE terms.Whose rule did the facts break, and was that rule written before the loss?fault.attribution
6. The authority was still goodCard Members can look at outstanding intents and “cancel them, essentially eliminating the permission to purchase,” per This Week in Fintech.Did this charge land before the cancellation, or after it had time to reach the agent?authority.revocation
7. Who pays whom afterward“We're taking on that risk to catalyze the ecosystem,” per This Week in Fintech.You paid. What does the agreement with the operator say happens next?recovery.determination
8. The operator's record over time“Understanding the track record of different agent types will be common across the industry, and we are already gearing up for that,” per This Week in Fintech.Is this the first time, or the fifth?conduct.record
9. The books agree“We log and store that data to help us approve the transaction,” per This Week in Fintech.Your file and the operator's file say different things. Now what?ledger.parity

Nine sections follow, in that order. Every one of them runs in your browser against the open verify route, and every one of them says on the page what it does not prove. Leg 3 is the one to read twice. It is the leg your denials rest on, and it is the one leg here that no instrument used to reach.

One thing this page does not do. It does not put a record inside anything ACE already captures, and it needs no card number, no token and no transaction detail to work. Every input is a digest or a commitment. If a receipt needed to read a card number or a cart, it would not be on this page.

leg one · the agent was registered · runnable on this page

admission.binding, the Admission Binding Receipt

Your first condition is registration. The agent “must be registered with American Express and integrated with the Amex Agentic Commerce Experiences developer kit,” per the Amex Agent Purchase Protection terms, and Amex issues the agent an identifier “so we know what agent we're dealing with,” per Digital Commerce 360. A month after the purchase, the question is narrower than registration. It is whether the agent that transacted is the agent that registered.

admission.binding

Tie the agent that acted to the registration it entered under

The receipt takes two things. One admission credential, and one receipt of something the agent did. It checks that both name the same subject, by deriving a commitment from each under a single salt the credential itself already committed to. The gate is SUBJECT_COMMITMENTS_IDENTICAL and it wants the two commitments byte identical. Then TEMPORAL_RELATION checks that the conduct happened at or after the admission and inside a maximum separation that was signed in advance, so a credential cannot be stretched over conduct it was never meant to cover.

Neither identifier appears in the signed body. The subject is carried as a commitment, so the receipt travels to a counterparty or a regulator without naming the agent, the operator or the Card Member. What it gives an agent operator is simple. If a claim turns on which agent was acting, both sides can recompute the same answer from the same two artifacts, and neither side has to open its registration system to the other.

What it does not prove, in plain words. It does not say your credential was validly issued or that you were entitled to admit the agent. That is your act and this receipt does not reach into it. It does not say the conduct happened or that the conduct was allowed. It only ties two artifacts to one subject and puts them in order. The boundary, verbatim from the schema. This receipt attests only that a supplied admission credential and one supplied conduct receipt yield byte identical subject commitments under one disclosed binding salt that the admission credential already commits to, and that the extracted conduct instant is at or after the stated admission instant and within the signed maximum separation. It does not attest that the admission credential is validly issued, that any admitting party is entitled to admit, that either identifier is true, that the subject is a person or entity of any asserted kind, that the conduct occurred, or that the conduct is authorized. It does not decide authenticity beyond the checked signatures and stated verification class, completeness of records, actual knowledge, intent, fault, fraud, contractual effect, legal effect, regulatory effect, eligibility, title, responsibility, liability, or any dispute. It does not authorize admission, access, conduct, a transaction, credential presentation, disclosure, or reliance by any party. It does not establish that either source artifact is complete, exclusive, current, unrevoked, unaltered before receipt, or truthful. It cannot decide whether an absent conduct receipt exists, whether another admission credential exists, whether the admitting party relied on the credential, whether the conduct service observed all conduct, or whether any party knew of the other artifact.

SCHEMAISSUER_KEY_MATCHPAYLOAD_DIGESTENVELOPE_SIGNATUREADMISSION_CREDENTIAL_PRESENTADMISSION_CREDENTIAL_COMMITMENTADMISSION_SALT_PRECOMMITMENTCREDENTIAL_VERIFICATION_CANDOURCONDUCT_RECEIPT_LINKCONDUCT_RECEIPT_INTEGRITYCONDUCT_ACTOR_COMMITMENTSUBJECT_COMMITMENTS_IDENTICALMAXIMUM_SEPARATION_COMMITMENTTEMPORAL_RELATIONFINDING_RECOMPUTEBOUNDARY_MATCH
POST /verify/admission-binding · case bound, the agent is bound to the terms it joined under

Nothing has run yet. Click Run it and the answer below comes back from the verifier, not from this page.

leg two · you received authenticated intent · runnable on this page

intent.affirmation, the Intent Affirmation Receipt

Your second condition is that “American Express must receive the Card Member-authenticated purchase intent from the agent,” per the Amex Agent Purchase Protection terms. Luke Gebb has described what that artifact actually is. It “is based on the words typed or spoken by a human to their agent,” and “We believe these instructions will typically be summarized by the agent back to the human and then shared with us,” per This Week in Fintech. Read that slowly and there are three artifacts and two joins in it. The receipt holds the joins.

intent.affirmation

The summary a person confirmed and the summary you received are the same bytes, in that order

Two opaque records go in, one for what was shown and one for what was sent. The service digests each one separately and compares them at ARTIFACT_EQUALITY_RECOMPUTE, so equality is a real comparison rather than a restatement of a field the caller filled in. Then AFFIRMATION_ORDERING_RECOMPUTE requires the affirmation instant to fall strictly between the presentation instant and the transmission instant. Strictly. An affirmation stamped at the same moment as the presentation fails, and so does one stamped at transmission. The result is an ordering_class of affirmation_bracketed or affirmation_outside_bracket, and the mint path refuses to sign the second one at all.

All three instants are placed against an external time reference the operator declares, with a drift bound. TIME_REFERENCE_INTEGRITY recomputes the digest of that reference and DRIFT_BOUND_SATISFIED fails the receipt when the observed drift runs past the bound the operator itself declared. The channel is recorded too, as interactive_display, voice_playback, messaging_thread or embedded_webview, so a spoken readback and an on screen confirmation are distinguishable a year later.

Here is the honest part, and it is the part worth reading out loud. This receipt says nothing about a person. It fixes bytes and order. What it removes is the gap between the summary a human saw and the summary that arrived, which is the one thing nobody outside the agent operator can currently check.

What it does not prove, in plain words. It does not say a human was there, that anyone read the summary, or that anyone understood it. It does not say the summary was a fair summary of what the person asked for. The channel and the time reference are recorded as declared and are not checked against the world. The boundary, verbatim from the schema. This receipt attests only that the digest of the artifact presented for affirmation equals the digest of the artifact transmitted as the authenticated intent, and that the affirmation instant falls strictly between the presentation instant and the transmission instant, with all three instants placed against a declared external time reference and drift bound. It does not attest that a human was present, that anyone read, understood, or agreed to anything, that the presented summary is a faithful summary of what any person said, that the affirmation was freely given, or that the presented artifact was rendered legibly. The channel and the time reference are recorded as declared and are not verified here.

SCHEMAISSUER_KEY_MATCHPAYLOAD_DIGEST_VALIDSIGNATURE_VALIDRECORD_INSTANT_ORDEREDSALT_BINDINGSUBJECT_BINDINGPRESENTED_ARTIFACT_INTEGRITYTRANSMITTED_ARTIFACT_INTEGRITYARTIFACT_EQUALITY_RECOMPUTEAFFIRMATION_ORDERING_RECOMPUTETIME_REFERENCE_INTEGRITYOBSERVED_DRIFT_RECOMPUTEDRIFT_BOUND_SATISFIEDCHANNEL_CLASS_DECLAREDNO_AFFIRMATION_CONTENT_LEAKINTENTAFFIRMATION_BOUNDARY_PRESENT
POST /verify/intent-affirmation · case display, the affirmation sits between the presentation and the transmission

Nothing has run yet. Click Run it and the answer below comes back from the verifier, not from this page.

leg three · the intent was checkable · runnable on this page

intent.verifiability, the Intent Verifiability Receipt

This is the leg you exclude on. Your own terms say a claim “may not be available in some cases, including where purchase intent is subjective or non-verifiable (e.g. ‘best’ or ‘really nice’),” per the Amex Agent Purchase Protection terms. Three of the four conditions decide who gets paid. This one decides who gets told no. And it gets decided after the loss, about an intent that was fixed before it, by the party that would otherwise pay. Two cases run on the first card and one on the second.

intent.verifiability

Classify whether an intent was checkable at the moment it was fixed, not after the loss

The operator declares the kinds of predicate its committed intent contained. Not the text. Kinds, carried as keyed pseudonyms. The service classifies each kind against a published ruleset and recomputes a verifiability_class of machine_checkable, partially_checkable, subjective or unclassifiable. The class is never accepted from the caller. VERIFIABILITY_CLASS_RECOMPUTE derives it, and mint refuses to sign a body that arrives with the class already filled in.

The gate that makes this worth anything is RULESET_PRECEDENCE. The digest of the classification ruleset has to have been committed at or before the instant the intent was fixed. If the ruleset came later, the receipt gets a precedence_class of ruleset_follows_intent and fails closed, and mint will not sign it. So nobody writes the rule that decides checkability after they know what the purchase turned out to be. That cuts both ways on purpose. It stops an operator claiming a loose intent was checkable, and it stops anyone tightening the ruleset once a claim is on the table.

The service never sees the intent. NO_INTENT_CONTENT_LEAK is a gate, the confidential intent object has to be a digest rather than any text, and the schema will not accept a body carrying words a human said. You keep the intent. The receipt carries the shape of it.

What it does not prove, in plain words. It does not say the intent was reasonable or that the Card Member understood it. It does not say the declared predicate kinds are complete or honestly declared, and it does not say these are the predicates a court or a regulator would think mattered. It decides no claim, either way, and it entitles nobody to rely on the class. The boundary, verbatim from the schema. This receipt attests only that a named observer recomputed a verifiability class from the declared predicate kinds of one committed intent, against a classification ruleset whose digest was committed at or before the intent was fixed. It does not attest that the intent was reasonable, that the Card Member understood it, that the declared predicate kinds are complete or honestly declared, that the predicates are the ones a court or regulator would consider material, that any claim is payable or deniable, or that any party is entitled to rely on the class. This service does not read the intent text and never receives it.

SCHEMAISSUER_KEY_MATCHPAYLOAD_DIGEST_VALIDSIGNATURE_VALIDASSESSMENT_INSTANT_ORDEREDSALT_BINDINGINTENT_REF_INTEGRITYRULESET_REF_INTEGRITYRULESET_PRECEDENCEPREDICATE_KIND_SET_INTEGRITYPREDICATE_CLASSIFICATION_RECOMPUTEVERIFIABILITY_CLASS_RECOMPUTENO_INTENT_CONTENT_LEAKINTENTVERIFIABILITY_BOUNDARY_PRESENT
POST /verify/intent-verifiability · case checkable, every declared predicate kind can be checked by machine

Nothing has run yet. Click Run it and the answer below comes back from the verifier, not from this page.

POST /verify/intent-verifiability · case subjective, nothing in the intent can be checked by machine

Nothing has run yet. Click Run it and the answer below comes back from the verifier, not from this page.

intent.verifiability

Four classes, and the fourth one is the one that keeps you honest

machine_checkable means every declared kind can be evaluated by a machine. Amount, merchant, window, quantity. partially_checkable means some can and some cannot, which is what most real instructions look like. subjective means none can, which is the case your terms already name. Then there is unclassifiable, which fires when the precommitted ruleset never named one of the declared kinds. It is not a hedge. It is the receipt refusing to guess about a predicate nobody had classified in advance, and it is the state a careful reader will look for first.

Run the case below and watch it come back unclassifiable with valid true. A receipt that returns a clean answer for every input is a receipt that is not checking anything. This one has a state for “the rule you committed to does not cover this,” and it uses it.

Where this lands in practice. A denial on subjectivity is currently a judgement, made after the fact, by the payer. With this object the class was fixed when the intent was fixed, against a ruleset published before it, and the operator and the Card Member can recompute the same class from the same commitments. The denial does not become right or wrong. It becomes checkable.

What it does not prove, in plain words. A class is not a claim outcome. Nothing here says a claim is payable or deniable, and nothing here reads the intent text. It does not receive it. The full boundary is printed on the card above and in the canon entry.

POST /verify/intent-verifiability · case unclassified, the precommitted ruleset never named one declared kind

Nothing has run yet. Click Run it and the answer below comes back from the verifier, not from this page.

leg four · the purchase was inside what was approved · runnable on this page

authorization.decision, the Authorization Decision Receipt

This is the record of a single card authorization decision, recomputed rather than asserted. It fixes the verdict, the basis for that verdict, the mandate the decision was measured against, and whether that mandate was live, expired or revoked at the instant the decision was made. Card Member identity, the acceptor, the amount and the constraint terms never enter the signed body. They are committed, and the commitments are what get checked. Three cases run below against the open verify route.

authorization.decision

The signer is not a party to the transaction, and the schema will not let it be

The receipt carries a field called observer_role, and the schema fixes it to the single value non_party_observer. The verifier runs a gate named OBSERVER_ROLE_DECLARED that fails the receipt if the value is anything else. So the signer is not the issuer, not the acquirer, not the merchant, not the network and not the agent operator. That constraint is the whole point. A party that stands to gain from a finding cannot sign that finding and expect it to settle an argument, because the other side reads the signature and reads the incentive at the same time. Amex signing that Amex was right is a statement. A party with nothing at stake signing a recomputation is something an agent operator or a regulator can act on.

The interesting gate is MANDATE_LIVENESS_RECOMPUTE. The verifier does not accept the liveness_class in the receipt. It rederives it from the mandate reference and the revocation snapshot the observer committed to, and it fails if the two disagree. The liveness evaluation also has to fall within 60 seconds of the decision instant, checked by DECISION_INSTANT_ORDERED. That is what turns "the mandate was live" from a claim into an arithmetic result.

The boundary, verbatim from the schema. This receipt attests only that a named observer recomputed the stated authorization decision from the supplied confidential evidence at the stated instant. It does not attest that the underlying goods or services were delivered, that the cardholder intended the purchase, that the merchant is legitimate, that funds settled, that the issuer honored the decision, or that any party outside the named observer agrees with the finding.

SCHEMAISSUER_KEY_MATCHPAYLOAD_DIGEST_VALIDSIGNATURE_VALIDDECISION_INSTANT_ORDEREDSALT_BINDINGMANDATE_REF_INTEGRITYMANDATE_SCOPE_DIGEST_RECOMPUTEMANDATE_LIVENESS_RECOMPUTEAGENT_IDENTITY_BINDINGACCEPTOR_BINDINGAMOUNT_COMMITMENT_RECOMPUTECONSTRAINT_EVALUATION_RECOMPUTEDECISION_BASIS_RECOMPUTEDECISION_RELATION_RECOMPUTEOBSERVER_ROLE_DECLAREDNO_CARDHOLDER_IDENTITY_LEAKAUTHZDECISION_BOUNDARY_PRESENT
POST /verify/authorization-decision · case approved, the authorization stayed inside the live mandate

Nothing has run yet. Click Run it and the answer below comes back from the verifier, not from this page.

POST /verify/authorization-decision · case declined, the authorization asked for more than the mandate allowed

Nothing has run yet. Click Run it and the answer below comes back from the verifier, not from this page.

POST /verify/authorization-decision · case revoked, the mandate had already been pulled when the decision was made

Nothing has run yet. Click Run it and the answer below comes back from the verifier, not from this page.

still leg four · the edges of what was approved · runnable on this page

The case you cannot see, even with the end to end view

The closed loop is the reason a signed decision record is yours to place, and it is also the outer edge of what you can observe. An agent holding one Card Member mandate can spend across acceptors that sit outside it, and those acceptors will not open their books to each other. Cross acceptor is the receipt for that case. No BIN is required and no EMVCo process is required, because it does not touch the rails at all.

mandate.crossacceptor

Prove a spending limit held across acceptors that will not show each other their books

One mandate, several acceptors, each holding a fragment of the total. The usual answer is a reconciliation layer that every side has to trust, which means one party ends up in charge of the count. This removes that. Each acceptor commits blind to what it accepted under a committed window salt, and the verifier recomputes the distinct acceptor count, the dispersion class and whether the combined total stayed inside the mandate. No acceptor learns another acceptor's numbers, and no shared ledger has to exist. For an issuer, this is the aggregate spend view for the portion of agent activity that does not run through your own loop.

What it does not do. It does not disclose the window salt, acceptor identities, the contribution multiset or the accumulated amount. It is not an authorization control and does not prevent, block, reverse, delay, ratify or validate an underlying action. It does not decide whether any action, authority, constraint, report, acceptor or actor is valid, authorized, proper, compliant, enforceable or lawful.

POST /verify/cross-acceptor · case within, spend across rival acceptors stayed inside the mandate

Nothing has run yet. Click Run it and the answer below comes back from the verifier, not from this page.

POST /verify/cross-acceptor · case breached, spend across rival acceptors went past the mandate

Nothing has run yet. Click Run it and the answer below comes back from the verifier, not from this page.

mandate.conformance

Check one transaction against the delegated authority that was signed before it

Cross acceptor answers the aggregate question. This answers the single transaction question underneath it. The amount, the currency, the timing and the scope of one transaction are compared against the constraints of one delegated authority receipt that was signed before the transaction was authorised, and the outcome is recomputed by the service rather than supplied by the caller. It is the narrow, per transaction check that sits below the decision receipt, and it is the one your dispute analysts would reach for first because it answers a question with one right answer.

What it does not do. It does not attest that the Card Member granted the delegation, that the declared agent identity is genuine, or that the transaction was authorised or settled by any network. It is not a payment authorisation and carries no cardholder credential. It does not deny, resolve, adjudicate or affect any dispute, and it does not limit any right a consumer holds under Regulation E, Regulation Z, or any equivalent rule. It evaluates one transaction against a per transaction constraint and does not evaluate cumulative spend, velocity, or any aggregate limit.

POST /verify/mandate-conformance · case pass, the payment stays inside the approved mandate

Nothing has run yet. Click Run it and the answer below comes back from the verifier, not from this page.

POST /verify/mandate-conformance · case fail, the breach is caught at the mandate limit

Nothing has run yet. Click Run it and the answer below comes back from the verifier, not from this page.

Every run above posts a verified request body from this domain to the open verify route and prints what came back. The example receipts are signed with published example keys, so verify reports key_trust example_registry. That is on purpose. Nothing on this page is a production issuance, a customer record, or an endorsement. Patent Pending.

leg five · the agent deviated · runnable on this page

fault.attribution, the Fault Attribution Receipt

This is the one that pays for itself. It allocates a loss among four roles, principal, agent_operator, acceptor and issuer, by recomputing which party's own precommitted constraint the observations violated. It does not weigh blame and it does not read intent. It checks whose stated rule the facts broke. Three cases run below.

fault.attribution

Every constraint has to be timestamped before the loss, or the receipt refuses to name anyone

The precedence rule is the part to read twice. A precommitment only counts if it was committed strictly before the loss instant. The verifier computes a precedence_class of either all_precommitments_precede_loss or some_precommitments_follow_loss, and it recomputes that from the timestamps rather than trusting the field. Nobody gets to write a rule after the loss and then point at it. That is the single most common way a post incident allocation goes wrong, and this closes it.

The attribution_class comes out as single_party, shared, no_violation_found or indeterminate. Here is the honest part. In the hindsight case below, the precommitments post date the loss, so precedence fails and the receipt returns indeterminate. It names nobody. That is not the tool falling short. A tool that refuses to guess is the only kind you can put in front of a regulator, because the first thing an opposing party does is look for the case where it guessed.

The recovery point. American Express has published a commitment to pay when a registered agent errs, on the Agentic Commerce Experiences page, and has not published a mechanism for recovering that payment from the agent developer. A recovery clause has to be written against something. Fault attribution is the object it gets written against. The receipt says which role's precommitment the observations broke, and the contract says what follows from that.

The boundary, verbatim from the schema. This receipt attests only that a named observer recomputed which precommitted constraints the supplied observations violated, and which parties had made those precommitments before the loss instant. It does not attest that the loss occurred, that the observations are complete, that any party acted with intent, that any legal duty was breached, or that any amount is owed.

SCHEMAISSUER_KEY_MATCHPAYLOAD_DIGEST_VALIDSIGNATURE_VALIDSALT_BINDINGLOSS_EVENT_REF_INTEGRITYPARTY_ROLE_UNIQUENESSPARTY_ROLE_DIGEST_RECOMPUTEPRECOMMITMENT_SET_INTEGRITYPRECOMMITMENT_PRECEDENCEOBSERVATION_SET_INTEGRITYVIOLATION_SUBSET_INTEGRITYATTRIBUTION_CLASS_RECOMPUTEATTRIBUTED_ROLE_RECOMPUTENO_PARTY_IDENTITY_LEAKFAULTATTRIBUTION_BOUNDARY_PRESENT
POST /verify/fault-attribution · case single, one party broke its own precommitment

Nothing has run yet. Click Run it and the answer below comes back from the verifier, not from this page.

POST /verify/fault-attribution · case shared, two parties each broke a precommitment

Nothing has run yet. Click Run it and the answer below comes back from the verifier, not from this page.

POST /verify/fault-attribution · case hindsight, a constraint invented after the loss proves nothing

Nothing has run yet. Click Run it and the answer below comes back from the verifier, not from this page.

leg six · the authority was still good, or it had been pulled · runnable on this page

authority.revocation, the Authority Revocation Receipt

You built the cancel button and you have described it. A Card Member can “go into the app, look at those intents, and cancel them, essentially eliminating the permission to purchase,” per This Week in Fintech, and your engineers wrote that access “can be scoped, monitored, and revoked as needed,” in the ACE engineering post. So the charge that lands twenty seconds after a cancellation is a real case with money attached, and it is also the case the CBA white paper flags under the access device exception.

authority.revocation

Place the action against the cancellation and a propagation bound committed in advance

The receipt names an action, a revocation and a propagation bound, and returns a classification of before_revocation, within_propagation_bound, after_propagation_bound or indeterminate. CLASSIFICATION_RECOMPUTE derives that from the instants rather than trusting the field. PRECOMMITMENT_ORDER requires the propagation policy to have been issued strictly before the revocation, using the wide end of each declared clock error, so a bound written to fit a known incident does not survive.

CLOCK_CONSERVATISM is the gate to notice. When the declared clock error on the two instants overlaps enough that the order genuinely cannot be resolved, the receipt has to say indeterminate, and a definite classification fails. Most systems round the ambiguity in favour of whoever is holding the log. This one refuses to.

Notification is recorded separately and honestly, as direct_notification_evidence, publication_evidence or none, checked by NOTIFICATION_EVIDENCE_CANDOUR. That keeps “we published it” and “we told them” from collapsing into the same claim.

What it does not prove, in plain words. A verdict of within_propagation_bound does not excuse the action and it does not allocate fault. It does not say the revocation was authorized, delivered, valid or effective, and it does not say the action was authorized or wrongful. It puts two moments in order against a bound somebody committed to first. The boundary, verbatim from the schema. This receipt attests only that a named action, a named revocation, and a precommitted propagation bound satisfy the stated deterministic temporal classification procedure. It does not establish that the revocation is authorized, delivered, valid, enforceable, or effective as a matter of contract or law. It does not establish that the action is authorized, unauthorized, excused, ratified, wrongful, binding, or ineffective. A class of within_propagation_bound does not excuse the action and does not allocate risk, fault, responsibility, liability, loss, or remedy. Notification evidence records only the stated evidence class and does not establish that an actor receives, reads, understands, or has actual knowledge of revocation. This receipt does not decide any contractual, statutory, regulatory, evidentiary, or legal consequence, and it does not authorize any action, payment, sanction, denial, or remedy.

SCHEMAISSUER_KEY_MATCHPAYLOAD_DIGESTENVELOPE_SIGNATUREAUTHORITY_REFERENCE_MATCHPROPAGATION_COMMITMENT_MATCHPRIOR_RECEIPT_LINKPRIOR_RECEIPT_POLICY_MATCHPRECOMMITMENT_ORDERACTION_AUTHORITY_MATCHCLOCK_CONSERVATISMCLASSIFICATION_RECOMPUTENOTIFICATION_EVIDENCE_CANDOURBOUNDARY_CONSTANT
POST /verify/authority-revocation · case before, the action ran before the authority was pulled

Nothing has run yet. Click Run it and the answer below comes back from the verifier, not from this page.

leg seven · who pays whom afterward · runnable on this page

recovery.determination, the Recovery Determination Receipt

You have published the commitment to pay. “If those two elements, a Registered Agent and shared intent, are present, we will cover the transaction in the event of an agent error,” and “We're taking on that risk to catalyze the ecosystem,” per This Week in Fintech. No American Express page reviewed for this note describes a mechanism for recovering that payment from the agent developer afterward. A recovery clause has to be written against an object. Fault attribution names the locus and stops there. This is the next step, and it is deliberately a small one.

recovery.determination

A settlement position, looked up in a table that was committed before the loss

Two parties agree an allocation table in advance and commit its digest. Later, one verified fault.attribution receipt gets handed in. The service recomputes an attribution_outcome_key from that receipt, looks the key up in the committed table, and signs the resulting settlement_position of respondent_bears, claimant_bears, shared_position or no_position. The position is a lookup, so a caller cannot supply it, and SETTLEMENT_POSITION_RECOMPUTE is the gate that says so.

ATTRIBUTION_INTEGRITY reverifies the referenced fault attribution receipt in full, every signature and every one of its own gates, on each mint and each verify. That is why this instrument is slower than its neighbours. A recovery position that trusted a handed in attribution would be worth nothing. ALLOCATION_PRECEDENCE then requires the table digest to have been committed strictly before the loss instant, and fails closed otherwise, so a table written once the loss is known produces no position at all.

An indeterminate attribution maps to no_position. The receipt does not fill that silence. Party identifiers stay out of the signed body as keyed pseudonyms, so this object can be handed to an intermediary without naming either side.

What it does not prove, in plain words. It does not say any amount is owed, that anybody will pay, that the table is enforceable, or that a contract exists at all. Whether a position turns into money is decided by the agreement between the parties and by nothing on this page. The boundary, verbatim from the schema. This receipt attests only that a named observer recomputed a settlement position between two named parties from one named fault attribution outcome and a precommitted allocation table whose digest was committed before the loss instant. It does not attest that any amount is owed, that any party will pay, that the allocation table is enforceable, or that any contract exists between the named parties. Whether the recomputed position entitles anyone to payment is decided solely by the parties' own agreement.

SCHEMAISSUER_KEY_MATCHPAYLOAD_DIGEST_VALIDSIGNATURE_VALIDDETERMINATION_INSTANT_ORDEREDSALT_BINDINGATTRIBUTION_LINKATTRIBUTION_INTEGRITYLOSS_EVENT_CONSISTENCYPARTY_BINDINGALLOCATION_TABLE_INTEGRITYALLOCATION_PRECEDENCEOUTCOME_KEY_RECOMPUTEALLOCATION_ENTRY_RECOMPUTESETTLEMENT_POSITION_RECOMPUTENO_PARTY_IDENTITY_LEAKRECOVERYDETERMINATION_BOUNDARY_PRESENT
POST /verify/recovery-determination · case respondent, the precommitted table puts the operator in the respondent position

Nothing has run yet. Click Run it and the answer below comes back from the verifier, not from this page.

leg eight · the operator record over time · runnable on this page

conduct.record, the Conduct Record Receipt

You have said this is coming. “Understanding the track record of different agent types will be common across the industry, and we are already gearing up for that,” per This Week in Fintech. One incident is a credit. A pattern is a price. The awkward part of any track record is that the operators being scored cannot see the arithmetic, and this receipt is the version of the arithmetic that can be shown to them without disclosing anybody.

conduct.record

Count outcomes for one operator over a window, and suppress anything too small to publish

Hand it a set of fault.attribution receipts and a window. It verifies every receipt in the set, keeps the ones naming the same operator pseudonym inside the window, and buckets them by outcome class: single_party, shared, no_violation_found, indeterminate. Every count is recomputed at OUTCOME_BUCKET_RECOMPUTE. The operator is carried as a keyed pseudonym derived per operator per window, so the same operator in two windows does not link, and NO_OPERATOR_IDENTITY_LEAK is a gate rather than a promise.

SMALL_GROUP_SUPPRESSION holds a floor. A bucket below five is not reported at all, only counted into a suppressed total, and the schema refuses a reported bucket under five even if the body declares a lower floor. When nothing clears the floor, the receipt reports nothing and still verifies, which is the correct answer rather than a failure.

coverage_class is a fixed constant, supplied_set_only. The receipt states in its own signed body that it can speak only about the receipts it was handed. That is the honest limit of any track record built from evidence rather than from a private database, and it is written into the object instead of into a footnote.

What it does not prove, in plain words. It does not say the supplied set is complete or that an omitted outcome does not exist. It does not say the operator is well or badly run and it predicts nothing about the next transaction. No registration, pricing or admission decision is justified by it. It discloses no operator identity, no counterparty and no amount. The boundary, verbatim from the schema. This receipt attests only that a named observer verified the supplied fault attribution receipts, counted the ones that name one keyed operator pseudonym inside a committed window, and reported those counts by outcome class with no bucket below the stated floor. It does not attest that the supplied set is complete, that any omitted outcome does not exist, that the operator is well or badly run, that the record predicts anything, or that any registration, pricing, or admission decision is justified by it. It discloses no operator identity, no counterparty, and no amount.

SCHEMAISSUER_KEY_MATCHPAYLOAD_DIGEST_VALIDSIGNATURE_VALIDWINDOW_BOUNDS_ORDEREDSALT_BINDINGOPERATOR_PSEUDONYM_BINDINGATTRIBUTION_SET_INTEGRITYWINDOW_MEMBERSHIPRECEIPT_SET_DIGEST_RECOMPUTEOUTCOME_BUCKET_RECOMPUTESMALL_GROUP_SUPPRESSIONCOUNT_COHERENCENO_OPERATOR_IDENTITY_LEAKCONDUCTRECORD_BOUNDARY_PRESENT
POST /verify/conduct-record · case reported, two buckets clear the floor and one is suppressed

Nothing has run yet. Click Run it and the answer below comes back from the verifier, not from this page.

leg nine · the books agree · runnable on this page

ledger.parity, the Ledger Parity Receipt

“We log and store that data to help us approve the transaction,” per This Week in Fintech. The agent operator logs its own version of the same events. When the two files disagree about what the agent was told to do, somebody has to open their books, and neither side wants to. This is the instrument for that afternoon.

ledger.parity

Compare two records without either side handing over its logs

Each side commits a keyed digest over the same declared list of fields, at a named cursor and a named instant, signed by its own registered attestor key. The service recomputes the comparison at COMMITMENT_EQUALITY_RECOMPUTE and returns match, divergence or window_exceeded. No balance, no holder, no account identifier and no field value enters the signed body, enforced by NO_RAW_STATE_LEAK.

ATTESTOR_KEY_DISTINCTNESS refuses the obvious shortcut. One signer cannot produce both attestations, and the key that issues the receipt cannot also be named as an attestor, so nobody vouches for their own half. OBSERVATION_WINDOW_TOLERANCE and TIME_ANCHOR_DRIFT_BOUND then handle the case where the two snapshots were taken too far apart to compare, and the result is window_exceeded rather than a false match.

Now the part that makes it usable between parties who do not trust each other. When the two records diverge, the receipt reports the divergence and refuses to say which one is right. It assigns no fault. Two adversaries can both sign up to an instrument that cannot be pointed at either of them, which is the only reason either of them would.

What it does not prove, in plain words. It does not say either committed digest is a correct digest of the record it names, because checking that needs read access this receipt does not grant. It does not decide which side is right when the two disagree, allocates no fault, and does not settle or reverse anything. A window_exceeded outcome means only that the two observations were too far apart to be decisive. The boundary, verbatim from the schema. This receipt attests that two named records, each observed at a named cursor and at a named instant, and each committed by a distinct registered attestor key to a keyed digest computed over the same declared list of fields, produced the comparison outcome that this service recomputed from those two committed digests and those two instants against the declared window tolerance. It does not disclose any position, balance, holder identity, or account identifier. It does not attest that either committed digest is a correct digest of the record it names, because confirming that requires read access which this receipt does not confer. It does not decide which record is correct when the two records diverge, assigns no fault to either operator, does not decide whether the underlying settlement, transfer, or register update was proper, and does not effect or reverse any settlement. A window_exceeded outcome records only that the two observations were too far apart for the comparison to be decisive.

SCHEMAISSUER_KEY_MATCHBOUNDARY_CONSTANTLEDGER_DISTINCTNESSCURSOR_BINDINGAGREED_FIELDS_DECLARATIONATTESTOR_KEY_DISTINCTNESSATTESTOR_QUORUMATTESTOR_SIGNATURE_VALIDTIME_ANCHOR_DRIFT_BOUNDOBSERVATION_WINDOW_TOLERANCECOMMITMENT_EQUALITY_RECOMPUTEDIVERGENCE_CONSISTENCYMAGNITUDE_CLASS_ENUMNO_RAW_STATE_LEAKCHAIN_LINKAGE_AND_SEQUENCE
POST /verify/ledger-parity · case diverge, the books genuinely disagree and the receipt names no winner

Nothing has run yet. Click Run it and the answer below comes back from the verifier, not from this page.

Every run on this page posts a request body from this domain to the open verify route and prints what came back. The example receipts are signed with published example keys, so verify reports key_trust example_registry. That is on purpose. Nothing here is a production issuance, a customer record, or an endorsement. Patent Pending.

how it drops in · three claims, and you can test all three

Beside the authorization stack. Never inside the money path.

Nine receipts is a lot to read. The install is not. Any one of them, or all of them, goes in the same way, and the way it goes in is the reason this is cheap to try and cheap to stop.

1. It runs as a sidecar

Hive sits next to your existing authorization stack, not inside it. Minting and verifying are ordinary HTTP calls to a service outside your loop, the verifier makes no outbound call of its own, and nothing in it sits between you and an authorization message. The evidence is emitted beside the decision, so the decision never waits on the evidence. The money path stays the one you have.

2. It fails open

If Hive is slow, if Hive is down, or if you rip Hive out, the authorization completes exactly as it does today. Nothing declines because of Hive. A receipt that never got written stays visibly missing rather than getting backfilled later. Receipts you already hold keep verifying offline against the published key, with no call to Hive.

3. Verification is free, offline, and needs no account

Every verify route is open and unauthenticated. No token to request, no signup, no invoice. The envelope form, the canonical bytes and the schemas are all published, so a developer or a regulator holding one receipt can check it on a laptop with an Ed25519 library and no network.

Two kinds of failing, pointed in opposite directions on purpose. The deployment fails open. Nothing about Hive can hold up or turn down a transaction, because Hive is not standing in the way of one. The instrument fails closed. When a constraint was written after the loss, or two declared clocks overlap too much to order, the receipt returns indeterminate or refuses to get signed at all. Scroll back up and you can watch that happen. The hindsight case in leg five names nobody, and the unclassified case in leg three says the committed ruleset does not cover a declared predicate kind. A tool that answers cleanly no matter what you feed it is a tool that is not checking anything.

Taking it out leaves nothing to unwind. There is no shim in the authorization path, no policy to put back, and no settlement dependency to migrate, because Hive never held any of them. What you keep is every receipt you already collected, and those verify without us. That is the honest version of a low switching cost. It cuts against us and it is still the right way to build this.

What this section does not claim. It describes where the software sits and how it behaves when it is absent. It says nothing about anything American Express has built, bought or deployed, and it is not a claim that any of this is running anywhere near you.

where it sits

Underneath the standards work, not beside it

American Express is already in every room where this gets decided. Nothing here replaces any of that work, and none of it is in competition with a receipt.

x402 Foundation

American Express is a premier member of the x402 Foundation, which the Linux Foundation declared operational on July 14, 2026. x402 standardises how a machine pays. It does not decide who was at fault when the payment was wrong.

AP2

Amex is a contributor to Google's Agent Payments Protocol, per Matthew Robinson, EVP Payment Network and Acquiring Solutions. AP2 carries signed Mandates as verifiable proof of a user's instructions. A signed mandate says what was permitted. It names no arbiter to rule on what happened.

Cloudflare Web Bot Auth

Amex announced it is working with Cloudflare to use the Web Bot Auth Protocol within its agentic commerce program, in the same post. Web Bot Auth answers which agent is calling. It does not answer what that agent then did with the authority it held.

EMVCo

As a member of EMVCo, Amex will be actively engaged in EMVCo's agentic commerce efforts, per the same post. Specification work sets the shape of the message. The evidence object that survives a dispute is a separate question.

The ACE developer kit

Registration, intent, credentials and cart context are captured and enforced by Amex, per the Agentic Commerce Experiences page. Hive signs nothing that ACE already signs. It signs the recomputation, from an outside role that no party in the transaction can hold.

Hive

An independent verification layer that the protocols above deliberately leave open, because a protocol cannot appoint its own referee. The receipt is a small object with a fixed signer role and a published boundary. Free to verify, offline, against a published key, with no account.

One question, that is all

When Amex Agent Purchase Protection pays out on a registered agent error, is there room for a signed record of that error that the agent operator can recompute for themselves? Not instead of anything you have built. A separate object, signed from a role no party to the transaction can hold, so the finding does not rest on your word alone.

Two things left. Why this earns its keep before agent traffic is material, and then the one thing being asked for.

reach · the burden is already here, on transactions with no agent in them

This is not an agent bet

The line is already on this page. “The burden falls on the financial institution to prove that a transfer was authorized,” per CBA, Agentic AI Payments, January 2026. That burden is not waiting for agent volume. It sits on ordinary transactions today, and it has for years. Five of the nine receipts above run on that flow with no agent anywhere near it, and the reason is in the schemas rather than in the pitch. Not one of the five requires an agent field or a mandate field in its signed body.

ReceiptWhat it does on an ordinary transactionWhy the schema allows it
intent.affirmationAny checkout where what the customer saw has to match what got transmitted. The order summary on the screen and the order that reached you are compared as bytes, and the confirmation has to fall strictly between the two.The signed body carries a subject pseudonym, two opaque artifacts and three instants. There is no agent field and no mandate field. The channel enum already covers interactive_display and embedded_webview, which is an ordinary web checkout.
ledger.parityOrdinary settlement. Your file and a counterparty's file are compared at a named cursor and a named instant, and neither side opens its books to do it.The subject is a financial instrument and the record kinds are book entry registers, transfer agent registers, custodial subledgers, internal ledgers and distributed ledgers. Nothing in the schema mentions an agent.
fault.attributionAn ordinary dispute. A loss is placed against whichever party broke a rule it had committed to before the loss, and the parties can be the cardholder, the merchant and you, with no agent among them.Its four roles are principal, agent_operator, acceptor and issuer, each allowed at most once and none of them required. A set of two parties verifies fine. The verifier recomputes the attributed role from which party's precommitment the observations broke.
recovery.determinationOrdinary loss allocation. Two parties who committed a table in advance find out which one carries a loss, by lookup rather than by argument.Its outcome keys include single_party:principal, single_party:acceptor and single_party:issuer. The fault attribution it reads can name any of four roles, and agent_operator is one option rather than a requirement.
authority.revocationAny credential. A standing instruction, a card on file or an access key gets cancelled, and the charge that lands twenty seconds later is placed against the cancellation and a propagation bound committed before it.The signed body names an authority commitment, an action, a revocation, a bound and the notification evidence class. No agent, no mandate, no card data.

Those are the questions a dispute already asks. Did the amount the Card Member saw match the amount that got sent. Do the two sides of the book agree. Who carried the loss and under what rule. Same receipts, running on volume you already have. So it earns its keep before agent traffic is material, and it is already sitting there when it is.

The other four, and why each one is off the list. authorization.decision requires an agent identity commitment in every signed body, so it is an agent instrument and it stays one. conduct.record counts only the attributions that name a party in the agent_operator role, and that role is a fixed constant in the verifier rather than a parameter, so it is an agent instrument too. admission.binding and intent.verifiability carry no agent field either, and they are left off anyway, because the ordinary transaction case for them is thinner than the five above and a short list is worth more than a long one. mandate.conformance and mandate.crossacceptor sit inside leg four rather than on the nine, and both are built on a delegated authority.

The ask, and it is a small one

Point one ACE sandbox agent at it. Shadow mode, nothing in the money path, your keys, whatever traffic you are comfortable with. Then hold the receipts up against your own logs and see if they survive it.

If they don't, you lost a sprint. If they do, American Express is the only issuer that can hand a developer or a regulator a record of agent fault that nobody has to take your word for, and that stays true for as long as agents keep buying things.

Nothing in the money path. Nothing to unwind if you stop. Every receipt you collect stays yours and stays checkable either way.

Steve Rotzin · Founder, Hive Civilization Inc.
[email protected] · 925-699-7807
Private overview prepared for American Express · noindex / nofollow / noarchive · this page does not state or imply that American Express is a customer, partner, pilot, or endorser, and it does not imply that any conversation has taken place · every quotation is a public statement attributed to the named person, linked to its source, and reproduced without alteration · American Express product facts referenced are public and source reported as of April 2026 and should be re-verified before external use · Amex Agentic Commerce Experiences and Amex Agent Purchase Protection are American Express marks · Hive proves what was recomputed from committed evidence; a signed record is not a statement of legal or regulatory compliance and does not resolve or affect any dispute or any right a consumer holds under Regulation E or Regulation Z · the example receipts on this page are signed with published example keys and verify reports key_trust example_registry · verification is free, works offline against the Hive public key, and requires no account · all Hive methods Patent Pending · prepared by Steve Rotzin, Founder, Hive Civilization Inc. · Wyoming, USA