We're arranging UI screens for mobile banks. To perform "transactions", the system needs to communicate with the core bank mainframe.
Sometimes, we don't receive the response after sending a request, thus we don't know the transaction the user did has been successfully processed or not.
This causes a weird situation:
(1) The transaction might be successful, prompting users to do the action again leads to duplicate transactions (eg. transferring their money twice).
(2) The transaction might fail, Optimistically telling users to assume the result is good is sometimes not correct (eg. they thought they've transferred the money however it's not).
What is the best way to handle this situation?