Place the onion in a bowl of cold water. Set aside for 10 minutes. Drain. Place on a baking tray lined with paper towel and set aside for 5 minutes. Pat dry with paper towel.
Add oil to a saucepan to reach a depth of 10cm. Heat to 190°C over high heat.
Sift flour, cornflour, baking powder, salt, bicarbonate of soda, white pepper, black pepper and chilli powder in a bowl. Add the water and whisk until just combined. Place the bowl over a bowl filled with iced water.
Dip one-third of the onion, 1 at a time, into the batter to coat. Add to oil. Cook for 1-2 minutes or until golden. Transfer to a tray lined with paper towel. Repeat, in 2 more batches, with the remaining batter and onion, reheating oil between batches. Place the onion on a platter. Top with chilli and shallot.