Skip to main content

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

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

When to Use

SlotUse Case
AUTHORIZE_PRE_ACTION_CONDITIONLet anyone create payments (common for marketplace/e-commerce)
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.

AlwaysTrueCondition vs address(0)

Both allow any caller, but there’s a subtle difference:
address(0)AlwaysTrueCondition
BehaviorSkips condition check entirelyCalls check() which returns true
GasSlightly 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

PayerCondition

Restrict to payer only.

Examples

See configurations using AlwaysTrueCondition.