diff --git a/lib/transflow/transaction.rb b/lib/transflow/transaction.rb
index <HASH>..<HASH> 100644
--- a/lib/transflow/transaction.rb
+++ b/lib/transflow/transaction.rb
@@ -62,7 +62,7 @@ module Transflow
     alias_method :[], :call
 
     def to_s
-      "Transaction(#{steps.keys.join(' => ')})"
+      "Transaction(#{steps.keys.reverse.join(' => ')})"
     end
 
     def fn(obj)
diff --git a/spec/unit/transaction_spec.rb b/spec/unit/transaction_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/unit/transaction_spec.rb
+++ b/spec/unit/transaction_spec.rb
@@ -50,4 +50,12 @@ RSpec.describe Transflow::Transaction do
       end
     end
   end
+
+  describe '#to_s' do
+    it 'returns a string representation of a transaction' do
+      transaction = Transflow::Transaction.new(three: proc {}, two: proc {}, one: proc {})
+
+      expect(transaction.to_s).to eql('Transaction(one => two => three)')
+    end
+  end
 end
Fix order of steps in Transaction#to_s