Транзакционные операции по сети, как?
Сервис А сообщает Б, что пользователь пополнил на стороне А счёт, номер этой транзакции такой-то.
Сервис Б в ответ сообщает, что транзакция обработана, ну или о какой-то ошибке в строгом формате.
Если сервис А не получает такое сообщение, то через некоторое время отправляет сообщение повторно с тем же самым номером транзакции. Если сервис Б находит такую транзакцию у себя - отвечает, что событие уже обработано. Если не находит - обрабатывает штатно как новую транзакцию.
Сервис А ставит операции статус "выполнено" только после получения ответа от Б, пока ответа нет - служебный статус "обрабатывается"
Транзакция проходит на стороне А (платежный агрегатор. пример).
После проведения операции у себя, он шлет данные к Б.
Если Б не отвечает, то А ставит отправку данных к Б в очередь и повторяет данную операцию до тех пор, пока не будет получен Ок от Б.