This is really a user interface problem. Payment systems have distributed state machines, but the state isn't exposed to the customer and the parties may not be in sync. Banking is a "consistent eventually" system, with delays in days.
The customer should be able to query "what happened with this transaction" from their account and get back a graphic of what's going on. That information is useful to fraudsters, though; some states are more vulnerable than others.
The customer should be able to query "what happened with this transaction" from their account and get back a graphic of what's going on. That information is useful to fraudsters, though; some states are more vulnerable than others.