I knew you have/had your reason for saying so.
Which verb should I use? Thanks.
However, I think the most natural way of saying it (to me) is "I know you had your reasons/a reason for saying so" for talking about a past incident, or "I know you have your reasons for saying so" talking about the present or in general. When you say "I knew," it stresses that at the time in the past I knew you had reasons - and maybe that's what you intend to say. If you're saying in general that "I understand there are reasons why you said what you said," I think "I know" is more appropriate.
(not a teacher, just a language lover)