{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://ap2-protocol.org/schemas/payment_mandate.json",
  "title": "Payment Mandate",
  "description": "Agreement from a User or an Agent to authorize a particular Payment action.",
  "type": "object",
  "required": [
    "vct",
    "transaction_id",
    "payee",
    "payment_amount",
    "payment_instrument"
  ],
  "properties": {
    "vct": {
      "type": "string",
      "description": "Verifiable Credential Type claim as defined in SD-JWT. MUST be 'mandate.payment'.",
      "const": "mandate.payment.1",
      "default": "mandate.payment.1"
    },
    "transaction_id": {
      "type": "string",
      "description": "base64url-encoded hash of the checkout_jwt field value, uniquely identifying the checkout associated with this. The hash algorithm used MUST be the same as the sd_hash field for this sd-jwt, or sha256 if absent."
    },
    "payee": {
      "description": "The merchant receiving the payment.",
      "$ref": "types/merchant.json"
    },
    "pisp": {
      "description": "The Payment Initiation Service Provider.",
      "$ref": "types/pisp.json"
    },
    "payment_amount": {
      "description": "Transaction amount object containing currency (ISO 4217 code, e.g., \"USD\") and amount (integer minor units per ISO 4217, e.g., 27999 = $279.99). Final value confirmed by the user.",
      "$ref": "types/amount.json"
    },
    "payment_instrument": {
      "description": "The payment instrument used.",
      "$ref": "types/payment_instrument.json"
    },
    "execution_date": {
      "type": "string",
      "description": "ISO8601 date of execution of payment. When absent indicates immediate execution."
    },
    "risk_data": {
      "type": "object",
      "description": "An map of relevant risk signals collected by the trusted surface at time of mandate creation."
    },
    "iat": {
      "type": "integer",
      "description": "The creation timestamp as a Unix epoch."
    },
    "exp": {
      "type": "integer",
      "description": "The expiration timestamp as a Unix epoch."
    }
  }
}
