I'm in Canada with accounts in a major national bank. I pay a monthly fixed fee for a package of services which includes a certain number of free transactions per month and I rarely exceed that free amount. Among those is free payments, and that includes electronic funds transfer instantly. To do that I have to add the payee to my list, with a recognized name and account number that my bank's system can verify immediately in order to add that payee to my list. Once that's done, I can pay them money instantly any time. I don't know if I could set up myself using an account in a different bank as a payee, but I expect it could be done easily.
Most Canadian banks also have another method. I can send money (another free transaction in my package of services) by e-mail. I just need the e-mail address of someone who has a bank account. I must arrange with the recipient to know a password to receive the funds (not hard to do). Using on-line access to my account I just tell my bank to send $x. to the person's name using their e-mail address, and protected by a password. Then the bank, out of my sight, takes the money from my account, puts in it a temporary place, and sends the recipient an e-mail asking for the password to confirm they are the right recipient, and for their bank account info (bank transit number and account number). When that person provides that info (I never see it), my bank deposits that money into their account instantly. This all happens in minutes, and I pay nothing extra.