It is understood that neither the pilot nor the crew realised they were heading more than 800km in the wrong direction until they landed.
Those on board only realised the error when the plane landed and the "welcome to Edinburgh" announcement was made.
After the mistake was discovered, the plane was re-sealed and flown to the correct destination.
Passengers experienced a five hour and twenty minute delay, and had to spend two hours on the tarmac at Edinburgh. The trip should have taken just over an hour.
Surprised passengers complained on social media, with Son Tran writing on twitter: "Can you please explain how can my morning flight taking off from LCY to Dusseldorf land in Edinburgh ?
"While an interesting concept, I don't think anyone on board has signed up for this mystery travel lottery..."
Another, Piotr Pomienski, tweeted: "What on earth happened to BA3271 LCY-DUS this morning? The flight went straight to Edinburgh, everyone on the plane wanted to go to Germany, no explanation offered..."
Passenger Peter-James Hamilton added: "I have fallen asleep, missed my stop and woken up at the end of the district line before. This morning I never expected to wake up from my Dusseldorf bound flight...in Edinburgh".
Passenger Sophie Cooke, a 24-year-old management consultant told the BBC that everyone on board initially thought it was a joke when the "Welcome to Edinburgh" announcement played.
She said the pilot then asked passengers to raise their hands if they wanted to go to Dusseldorf, and that everyone raised their hand.
"It became very frustrating. The toilets were blocked and they ran out of snacks. It was also really stuffy," she said.
A BA spokesperson said: "We are working with WDL Aviation, who operated this flight on behalf of British Airways, to establish why the incorrect flight plan was filed.
"We have apologised to customers for this interruption to their journey and will be contacting them all individually."
WDL added that it was "working closely with the authorities to investigate how the obviously unfortunate mix-up of flight schedules could occur".
"At no time has the safety of passengers been compromised. We flew the passengers on the flight with number BA3271 to Düsseldorf after the involuntary stopover in Edinburgh," it said.
London City Airport issued an apology, writing on Twitter: "As pleasant as Edinburgh is this time of year, we're sorry that passengers travelling to Dusseldorf on BA3271, operated by WDL Aviation, initially landed in the Scottish capital, rather than their intended destination. This was due to an incorrect flight plan submitted by WDL."
This article originally appeared on the Daily Telegraph.