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

# AlwaysTrueCondition

> Allow anyone to call an action with no restrictions

## Overview

AlwaysTrueCondition allows anyone to call the action, no restrictions applied.

**Type:** Singleton, CREATE2 (deployed once, reused by all operators)

**Address (all supported chains):** `0x2ef2A6162aEF9Df1022ff51c011af94D99AB4904`

## Logic

```solidity theme={null}
function check(PaymentInfo calldata payment, uint256, address caller, bytes calldata)
    external pure returns (bool)
{
    return true;
}
```

## When to Use

| Slot                             | Use Case                                                       |
| -------------------------------- | -------------------------------------------------------------- |
| `AUTHORIZE_PRE_ACTION_CONDITION` | Let anyone create payments (common for marketplace/e-commerce) |

<Warning>
  **Use with caution for capture/refund slots.** Setting `CAPTURE_PRE_ACTION_CONDITION` or `VOID_PRE_ACTION_CONDITION` to AlwaysTrueCondition means anyone can capture or refund funds. This matches leaving the slot as `address(0)` (the default behavior), but makes the intent explicit.
</Warning>

## AlwaysTrueCondition vs `address(0)`

Both allow any caller, but there's a subtle difference:

|              | `address(0)`                        | AlwaysTrueCondition                  |
| ------------ | ----------------------------------- | ------------------------------------ |
| **Behavior** | Skips condition check entirely      | Calls `check()` which returns `true` |
| **Gas**      | Slightly cheaper (no external call) | Minimal overhead (\~200 gas)         |
| **Intent**   | "No condition configured"           | "Explicitly open to all"             |

Use `address(0)` when you simply don't need a condition. Use AlwaysTrueCondition when you want to make the "open access" intent explicit in your configuration.

## Gas

**Cost:** Minimal, `pure` function returning a constant.

## Next Steps

<CardGroup cols={2}>
  <Card title="PayerCondition" icon="user" href="/contracts/conditions/payer">
    Restrict to payer only.
  </Card>

  <Card title="Examples" icon="code" href="/contracts/examples">
    See configurations using AlwaysTrueCondition.
  </Card>
</CardGroup>
