The White House had lobbied hard for the entire package to be passed as a grant, but the Republican-dominated Senate decided otherwise, delivering a severe embarrassment to the Bush administration.
Senate Democratic leader Tom Daschle said that in adopting the amendment, the Senate "sent a strong bipartisan message to his administration. It must do more to ensure that America's troops and taxpayers don’t have to go on shouldering this costly burden virtually alone."
In arguing for the package as a grant, Bush-aides had said loans would worsen Iraq's debts and fuel Arab suspicion about US intentions in Iraq.
But the Senate adopted the amendment by a 51 to 47 vote, following a long and impassioned debate.
The $20 billion package is part of the additional $87 billion that Bush has asked for in financing US operations in Iraq and Afghanistan.
The Senate however had no problem approving the remaining $67 billion, largely to finance military forces in the region.
"It (Bush Administration) must do more to ensure that America's troops and taxpayers don’t have to go on shouldering this costly burden virtually alone"
Senate Democrat leader
One of the amendment supporters, Michigan Democrat Carl Levin, said that Iraq "has the right to be treated as a partner," and therefore "can help finance its own reconstruction, which is a tiny contribution for a country with a trillion dollars in liquid gold."
Another Republican, Susan Collins of Maine agreed, saying "we have an obligation toward the American tax payers that their loan will be repaid in the future when Iraq will be again a prosperous nation."
The Senate amendment, submitted by Democrat Evan Bayh of Indiana, allows the US to forgive the $10 billion debt if other Iraqi creditors - especially Russia, Saudi Arabia, Germany and France - forgive repayment of 90% of their outstanding loans.
Bayh earlier said he didn’t want US taxpayers to grant money to Iraq so it could turn around and pay money owed to countries like France and Russia.