Design consideration regarding state handling: how to store multiple, variable states for one entity
Using the cross reference table between Transaction and ProcessingRule is going to be a very efficient way of returning Transaction records that need to be processed.

You can get a list of Transactions that need processing by:

USE Test;

CREATE TABLE Transactions
(
    TransactionID INT NOT NULL PRIMARY KEY CLUSTERED IDENTity(1,1)
    --extra Transaction fields here as necessary
);

CREATE TABLE Rules
(
    RuleID INT NOT NULL PRIMARY KEY CLUSTERED IDENTITY(1,1)
    --extra Rules fields here as necessary
);

CREATE TABLE TransactionRuleProcessing
(
    TransactionID INT NOT NULL
    , RuleID INT NOT NULL
);



DECLARE @RuleID INT = 123; --123 is the rule being processed

SELECT T.*
FROM Transactions AS T
    LEFT JOIN (
        SELECT * 
        FROM TransactionRuleProcessing AS TRP1 
        WHERE TRP1.RuleID = @RuleID
    ) AS TRP ON T.TransactionID = TRP.TransactionID
WHERE TRP.TransactionID IS NULL;