{"specification":"Mandate Execution Boundary","version":"2.0.0","canonical":"https://mandateshield.com/standard","reason_codes":[{"code":"UNSUPPORTED_PROTOCOL","meaning":"The declared source protocol is not supported.","action":"Normalize the request to a supported protocol or CUSTOM."},{"code":"MISSING_MANDATE_ID","meaning":"No stable identifier links the purchase to user authority.","action":"Provide the identifier of the approved mandate."},{"code":"MISSING_AGENT_ID","meaning":"The acting agent cannot be identified.","action":"Bind the request to a stable agent identity."},{"code":"MISSING_MERCHANT","meaning":"The final seller or payee is absent.","action":"Resolve the final merchant before authorization."},{"code":"INVALID_AMOUNT","meaning":"The proposed amount is missing, zero, negative or malformed.","action":"Provide a positive numeric transaction value."},{"code":"INVALID_CURRENCY","meaning":"The transaction currency is not a three-letter code.","action":"Provide an ISO 4217 currency code."},{"code":"MISSING_SPEND_CAP","meaning":"The user authority has no usable maximum amount.","action":"Add an explicit positive spending ceiling."},{"code":"SPEND_CAP_EXCEEDED","meaning":"The final amount is above the user-approved maximum.","action":"Block execution or obtain new user authority."},{"code":"NO_CURRENCY_SCOPE","meaning":"The mandate does not constrain transaction currency.","action":"Declare one or more approved currencies."},{"code":"CURRENCY_OUT_OF_SCOPE","meaning":"The final currency is outside the approved set.","action":"Block execution or obtain new user authority."},{"code":"NO_MERCHANT_SCOPE","meaning":"The mandate does not constrain the final merchant.","action":"Declare one or more approved merchant identifiers."},{"code":"MERCHANT_OUT_OF_SCOPE","meaning":"The final seller differs from the approved merchant scope.","action":"Block execution or obtain new user authority."},{"code":"MISSING_EXPIRY","meaning":"The authority has no defined expiration.","action":"Add a short, explicit authorization deadline."},{"code":"MANDATE_EXPIRED","meaning":"The user authority is no longer valid.","action":"Block execution and request fresh authority."},{"code":"LONG_EXPIRY_WINDOW","meaning":"The authority window is unusually long.","action":"Shorten the validity period or require review."},{"code":"CONSENT_NOT_PROVEN","meaning":"Explicit user consent is absent.","action":"Block execution until consent is proven."},{"code":"REPLAY_GUARD_MISSING","meaning":"No unique payment-attempt identifier was supplied.","action":"Provide a stable idempotency key."},{"code":"REPLAY_DETECTED","meaning":"The payment-attempt identifier was already consumed.","action":"Block the duplicate execution."},{"code":"CONCURRENT_REPLAY_DETECTED","meaning":"Another request is consuming the same payment attempt.","action":"Block the concurrent duplicate."},{"code":"INTENT_HASH_MISSING","meaning":"The final purchase is not cryptographically bound to intent.","action":"Bind a digest of the approved intent to the envelope."},{"code":"IDENTITY_BINDING_MISSING","meaning":"The agent, merchant or credential chain is not bound.","action":"Provide protocol-native credential binding evidence."},{"code":"CREATION_TIME_MISSING","meaning":"The purchase envelope has no unambiguous creation time.","action":"Add an ISO 8601 creation timestamp."},{"code":"CREATION_TIME_IN_FUTURE","meaning":"The purchase timestamp is outside the accepted clock-skew window.","action":"Block execution and verify the source clock and signature."},{"code":"STALE_PURCHASE_CONTEXT","meaning":"The purchase context is more than 24 hours old.","action":"Refresh the final purchase facts or require review."},{"code":"AMOUNT_PRECISION_INVALID","meaning":"The amount uses more than two decimal places.","action":"Block execution and normalize the amount before retrying."},{"code":"PROMPT_INJECTION_SIGNAL","meaning":"Purchase text contains an instruction-manipulation signal.","action":"Stop automated execution and inspect the source."},{"code":"CRYPTOGRAPHIC_EVIDENCE_REQUIRED","meaning":"The strict profile received no signed authority evidence.","action":"Provide compact JWS, AP2 SD-JWT or TAP message-signature evidence."},{"code":"CRYPTOGRAPHIC_SIGNATURE_INVALID","meaning":"The supplied public key does not verify the authority signature.","action":"Block execution and obtain fresh evidence from a trusted issuer."},{"code":"CRYPTOGRAPHIC_EVIDENCE_EXPIRED","meaning":"The signed authority evidence is no longer current.","action":"Require a freshly issued mandate or message signature."},{"code":"CRYPTOGRAPHIC_AUDIENCE_MISMATCH","meaning":"The signed authority targets a different relying party.","action":"Block relay and obtain evidence addressed to the current merchant."},{"code":"CRYPTOGRAPHIC_NONCE_MISMATCH","meaning":"The evidence is not bound to the current payment attempt.","action":"Block replay and issue a fresh challenge nonce."},{"code":"SIGNED_INPUT_BINDING_MISSING","meaning":"The signed claims omit the canonical purchase digest.","action":"Sign the exact normalized envelope digest before verification."},{"code":"SIGNED_INPUT_BINDING_MISMATCH","meaning":"The signed purchase digest differs from the evaluated envelope.","action":"Block execution because signed authority was altered or substituted."},{"code":"AP2_PAYMENT_AMOUNT_MISMATCH","meaning":"The signed AP2 payment mandate binds another amount or currency.","action":"Block execution and create a mandate for the final payment amount."},{"code":"AP2_PAYMENT_AMOUNT_MISSING","meaning":"The closed AP2 payment mandate does not disclose a final amount.","action":"Fail closed and provide the complete closed payment mandate."},{"code":"AP2_PAYEE_MISMATCH","meaning":"The signed AP2 mandate names another payee.","action":"Block merchant substitution and obtain new authority."},{"code":"AP2_PAYEE_MISSING","meaning":"The closed AP2 payment mandate does not disclose its payee.","action":"Fail closed and provide the complete closed payment mandate."},{"code":"AP2_MANDATE_TYPE_INVALID","meaning":"The evidence is not a supported closed AP2 payment mandate.","action":"Provide a mandate.payment.1 credential at the execution boundary."},{"code":"TAP_SIGNATURE_FRESHNESS_INVALID","meaning":"The TAP message signature is stale, future-dated or valid too long.","action":"Reject the request and require a short-lived fresh signature."},{"code":"TAP_AUTHORITY_MISMATCH","meaning":"The TAP signature is bound to a different merchant authority.","action":"Block relay to the current merchant."},{"code":"COMMUNITY_THREAT_SIGNAL","meaning":"A privacy-preserving merchant fingerprint crossed the independent-account threat threshold.","action":"Block execution and require a newly verified merchant identity."}]}