reason is user_declined, amount_mismatch (with expected_cents, actual_cents), intent_not_confirmable (with intent_status), processor_refused (with psp_error_code), processor_declined (the processor declined a purchase Agentcard paid without asking; the event then carries execution_mode: "autopilot" and the grant_id of the permission or rule that paid), merchant_request_aborted, or the code of a rule on one of your attached presets that refused the purchase right before the card was sent (merchant_denied, currency_denied, spend_rate_exceeded, and the others listed there; with preset, attachment, rule, message, stage: "verify", and refusals, every preset that refused). replay_attempted says whether a device may already have sent the card.
Razorpay processor refusals can include processor_error with bounded reason, source, step, payment_id, and order_id identifiers. Generic codes such as BAD_REQUEST_ERROR do not establish issuer decline or prove that nothing was charged. Reconcile the merchant payment before another attempt. The event never includes the raw processor response or free-form description; older records may lack structured details.