Your “bad” solution is actually not a bad one.
Another approach could be a new retrieve with an XPath using not(), yet, yours will probably turn out to be quicker.
These days you can also use the filter action “filter by expression”. Here you should be able to make a simple comparison with $currentObject/TranType != ‘YourString’
However, for something like a transaction type where you have a fixed list of options, I would suggest either using an enumeration or an object (if the transaction types need to be changed in the runtime), which is usually easier to work with than strings.