Clean kidneys well by removing the core and soaking in salted water or milk for 30 minutes. Rinse and chop.
Heat oil or butter in a pot and brown the beef cubes in batches. Remove and set aside.
In the same pot, sauté onions until soft and golden.
Add kidneys and cook for a few minutes until lightly browned.
Sprinkle flour over the meat and stir well to coat.
Slowly add beef stock while stirring to avoid lumps.
Add beef back into the pot along with herbs, pepper, salt, bay leaf, and Worcestershire sauce.
Simmer on low heat for 60–90 minutes until meat is tender and gravy is thick. Add carrots if using.
Let the filling cool slightly.
Pour filling into a pie dish, cover with puff pastry, and seal edges.
Brush with beaten egg and cut small slits on top for steam.
Bake at 180°C for 30–40 minutes or until golden brown and crisp.
Rest for 10 minutes before serving.