Class for Stripe transactions
Since it seems you only need the transactions value once, you might as well just make an attribute reader that does the work:

  def transactions
    external_card_balance.all
  end


No real need to break in down into "fetch and store" and "read from store and iterate", when you can just say "fetch and iterate".

If you're going to be using the transactions collection multiple times, you can either memoize it:

  def transactions
    @transactions ||= external_card_balance.all
  end


Or you can simply pass the transactions as a constructor argument. The latter moves the responsibility for fetching transactions to the user of the class, rather than the class itself, which may make more sense - or it may not. Your call.