I mean you asked…
It’s actually on the server side that the delay is occurring. We run a number of distributed services communicating with each other asynchronously. In terms of a card authorisation, there is the service to connect to MasterCard, the balance service, a push notification service and the service that drives the feed view on your phone (simplified, some other services / DBs are involved as well). The service that connects to MasterCard distributes the relevant updates to the other services in near real time (hence the fast push notification).
In addition to authorising new transactions, at certain times of the day we also get transaction finalisation messages from MasterCard. These arrive down the same interface, but in blocks of many thousands of transactions a minute for a sustained period. They also need sending to your feed, to change the status from ‘pending’ to ‘settled’. During the settlement periods, a queue can build up of changes to propagate to statement. We deliberately throttle the traffic to avoid overloading the statement services (to keep them responsive to the phones). The requests which will add new card transactions onto the feed were then getting stuck in a queue behind tens of thousands of finalisation messages.
Today we’ve split the workers sending finalisation messages from those sending new transactions so they should appear immediately, regardless of other work going on in the system. We are testing it now, and assuming all looks good, should put the change live tomorrow.