GetUser() and GetPayment() strike me as perfectly clear and idiomatic. I’m not sure what you find unclean about them.
Calling .Get() on a struct to return another struct is the thing that strikes me as very odd, unclear, and unidiomatic.
I think this might be a case of just sticking with the idiom and trusting that you’ll get used to it.