In your example "He said that I was right", "that I was right" is the direct object ("say" is a transitive verb).
What it true is that this verb can be followed by an indirect object (which may or may not be a pronoun) only if we use "to" before the object:
"He said to John that I was right."
"to John" is the indirect object; "that I was right" is still the direct object.
"Tell", on the other hand, accepts indirect objects with or without "to", depending on the position of the object:
1. If the indirect object follows "tell" immediately, then "to" is not used --> "He told John/me that he'd be late for the meeting."
2. If the indirect object follows the direct object, then "to" introduced the indirect object -->
"He told a lie to John/ to me."
' 'Money' is DO, 'them' is IO. Both this and 'we paid them the money' are natural English. 'We are cooking for them a soup' is not, but should be recast as 'we are cooking a soup for them' or 'we are cooking them a soup'.
New words, one handy idiom, and a 2-minute quiz — delivered to your inbox to keep your streak alive.