Place the oil or butter in a medium a large pot over medium heat and add the onions. Add the achiote, cumin, salt and pepper to taste, and cook until the onions are soft, about 8 minutes. Set aside about ¼ cup of the onions.
Add the water or stock to the pot, reduce heat to low and cook for about 5 more minutes. Add half of the bread slices, then half of the eggs, and finally, half of the cheese, and repeat the layers again, starting with the bread and finishing with the cheese. Add the broth or water, cover and keep cooking over low heat cook for about 15 minutes more without stirring.
To serve, ladle the soup into bowls or cazuelas, add fresh cilantro for garnish and serve warm.