The attack, which police said was carried out by a suicide bomber on foot, came shortly before 6:00 AM on a main road leading east out of the capital towards the city of Jalalabad.
"As a result 14 foreigners were killed, all Nepalese nationals," the interior ministry said in a statement, adding it "strongly condemns" the attack.
The guards were employed by a company that provides security to Western embassies in Kabul, a security official who asked to remain anonymous told AFP. Nine other people were wounded, including five Nepalese and four Afghans, the ministry said.
More than two dozen ambulances rushed to the scene, an AFP journalist said, with police blocking off the road. Children watched as the yellow, blood-spattered bus was taken away. There was also damage to shops near the explosion site with windows shattered.
Also Read
Taliban spokesman Zabihullah Mujahid claimed responsibility for the attack on social media, saying it was "against the forces of aggression" in Afghanistan.
It was the first attack in the capital since the start of the holy fasting month of Ramadan two weeks ago. The Taliban have rejected the government's call for a ceasefire over the month.
The last attack in the Afghan capital on April 19 left 64 dead and more than 340 wounded, and was also claimed by the Taliban.
The resurgent militants have been fighting against the Western-backed Kabul government since they were ousted from power by a US-led invasion in late 2001.
US forces have been in an advisory role in Afghanistan since the start of 2015 and had only been authorised to hit Taliban targets for defensive reasons, or to protect Afghan soldiers.
The recent changes mean US troops can now work more closely with local fighters in striking the Taliban, who have demanded the departure of all foreign forces.