A large portion of the banking industry is running dated code that executes things called “batch processing”. This is where they store a lot of the daily actions into a single file or folder and process all the transactions at night. While they show things immediately on your display, it might just be a temporary cache while the actual moving of funds still happens overnight.
As to why this hasn’t changed, it’s because redesigning an entire application takes time, and more importantly, money. Paying the developers to do it isn’t worth it to the bank as they can just make it look that way to you and still use the application written 40 years ago to do the actual work.
There’s also a large amount of regulation around the code and implementation, so having to traverse that causes much more time and work on the development cycle.
The banks use a computation process called batch processing. Some types of repetitive tasks i.e. filtering, sorting, backups, etc. can be resource heavy on the components of a system. So, they take all those transaction requests, store them on a server somewhere, then at 2am, they all process. So when few people are likely to be online and accessing the banks website, servers, etc, the computers just run all the transactions since they have the most computational resources likely available.
If they had to process transaction requests as they came in, the possibility exists that there would be few, if any, resources left to run the rest of the bank and there would be lag elsewhere. Additionally, if too many people tried to process a transaction at once, the bank may inadvertently run into a denial of service attack. Usually this is done purposefully by malicious persons to shut down a system. What happens is too many requests are sent at once and the computer can’t handle it. So it just shuts off or reboots. So again, to avoid this, the bank will have all those transactions process overnight, and will have instructions for the computer to only process as many as it can handle without killing itself. Might take some time to process all those transactions, but hey, we’re all either asleep or partying when it happens.
Edit: some of my answer comes directly from Google. Had to search for a quick refresh and correct verbiage. Used to work in IT.
The main reason is banking laws. There are laws governing how long a bank can “have your money” while they handle/transfer/pay etc with those funds. The laws are so that they can only make money off your money for a max of 3 business’ days. The exceptions being banks that have their main location in Washington state or Maine as they were given permission to have 5 business’ days to handle your money, thus why a lot of banks claim one of those states as their home office so they can make more money from your money. In the modern world with everything being electronic these laws are out dated but I do not think they have been changed yet simply because well money and you know how it really runs everything, and we never change laws to make the wealthy not more wealthy.
For bank transfers specifically, most of that is based off of ACH, which was implemented like 60 years ago. It is pretty archaic and requires more manual intervention than it should, and therefore mostly happens during “business hours”.
However, the Fed recently released [FedNow](https://www.frbservices.org/financial-services/fednow), which allows for basically instant transfers. However, it is opt-in, so your bank and the bank you’re transferring to/from need to have it implemented. That is taking a while for various reasons (costs to implement, competing systems, etc).
Latest Answers