> ## Documentation Index
> Fetch the complete documentation index at: https://docs.phylax.systems/llms.txt
> Use this file to discover all available pages before exploring further.

# Investigate a Rejected Transaction

> Find an invalidation, read its rejection reason, and compare transaction and assertion traces.

Use the [Phylax platform](https://ethereum.phylax.systems) to identify which policy rejected a transaction and why. Open your project or follow an alert's investigation link.

## 1. Find the Event

Open **All invalidations**, filter by assertion name, and select an event. Check its category:

| Category | Meaning |
| - | - |
| Prevented | Transactions blocked by enforcement. |
| Alert-only | Violations observed without blocking live transactions. |
| Simulated | Simulation results. |

![All invalidations showing no prevented events, two alert-only events, and five simulated events](https://mintcdn.com/phylaxsystems/mPqsEKYktcjMz8lr/images/platform/invalidations.png?fit=max\&auto=format\&n=mPqsEKYktcjMz8lr\&q=85\&s=286dc078517cfefcfd9f4d47951ebe45)

Invalidations are grouped by outcome; this example has alert-only and simulated events

## 2. Read the Rejection Reason

Open the transaction replay. In **Replay overview**, check the transaction, affected contract, assertion, and rejection reason. **What changed** shows transfers and other events from the replay.

![Replay overview showing a withdrawal rejected by TradingVaultOutflowAssertion because the outflow limit was exceeded](https://mintcdn.com/phylaxsystems/mPqsEKYktcjMz8lr/images/platform/invalidation-replay.png?fit=max\&auto=format\&n=mPqsEKYktcjMz8lr\&q=85\&s=f8aee70fa0580c5496c4eb15b51af6cd)

The replay identifies the assertion and its outflow-limit rejection reason

This event is **Alert-only**. The **Transaction rejected** badge describes the replay result, not a live transaction being blocked. An onchain guard revert is a separate event from an assertion rejection.

## 3. Compare Execution Evidence

Expand **Transaction Execution** and **Assertion Evaluation** under **Execution evidence**. Follow the protocol calls, then inspect the assertion that rejected their outcome.

In this example, the withdrawal and token transfer succeed in the replay. `TradingVaultOutflowAssertion` then reads `outflowContext` and `getErc20Transfers` and rejects the result.

![Expanded execution evidence showing successful withdrawal and token transfer calls, followed by TradingVaultOutflowAssertion querying outflow context and ERC20 transfers before rejection](https://mintcdn.com/phylaxsystems/mPqsEKYktcjMz8lr/images/platform/invalidation-execution-expanded.png?fit=max\&auto=format\&n=mPqsEKYktcjMz8lr\&q=85\&s=7d6c0bc730a8d35491c23da9ddb7a2cc)

The protocol calls succeed in the replay; the assertion evaluation rejects their outcome

## 4. Inspect the Raw Traces

Expand **Developer Data**. Compare **Raw Transaction Trace** with **Raw Assertion Trace** to inspect call arguments, return values, storage changes, and the assertion's revert reason.

The assertion trace below ends with `TradingVault: outflow limit exceeded`. Use the copy button to share the relevant trace with your FDE.

![Developer Data showing a successful withdrawal transaction trace and an assertion trace ending in Revert: TradingVault: outflow limit exceeded](https://mintcdn.com/phylaxsystems/mPqsEKYktcjMz8lr/images/platform/invalidation-raw-traces.png?fit=max\&auto=format\&n=mPqsEKYktcjMz8lr\&q=85\&s=fada8c48be193c3cd6a7b4247bb9f244)

The raw assertion trace ends with the outflow-limit rejection

## 5. Review the Outcome

Compare the rejection with the approved policy. If it blocked intended behavior, review the event with your FDE and add a regression test before [replacing the release](https://docs.phylax.systems/credible/managing-your-circuit-breakers.md#replace-or-remove-a-release). Include the policies you intend to retain; assertions cannot be removed individually from an active release.

To receive invalidation notifications in Slack, follow [Setting Up Alerting](https://docs.phylax.systems/credible/setting-up-alerting.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.