As a condition for his support, Cameron wanted a greater say for Britain on financial regulations within the EU, because they could hurt Britain's key financial services industry.
Cameron argued he was safeguarding Britain's national interests by using his veto but his critics said that this had soured relations with the EU and had achieved nothing.
The decision also angered Cameron's Liberal Democrat coalition partners led by deputy Prime Minister Nick Clegg, who said at the weekend that he was "bitterly disappointed" by the outcome of the summit.
"Satisfactory safeguards were not forthcoming and so I did not agree to the treaty," Cameron told a rowdy parliament on Monday.
Opposition Labour leader Ed Miliband noted the absence of Clegg from the parliamentary session, prompting members of parliament to shout "where's Clegg?".
Cameron said he had been "genuinely looking to reach an agreement" in Brussels.
The safeguards he demanded were "modest, reasonable and relevant," he said, adding he had not been looking to gain unfair advantage for Britain.
The crisis in Europe was having a "chilling effect" on Britain's economy too, and he stressed Britain wanted the euro zone "to sort out its problems".
"The right answer was no treaty. It was not an easy thing to do but it was the right thing to do," Cameron said.