The energy provider has taken £20m from customers with outstanding credit on their accounts and poured it into its annual accounts over the last year, The Observer said.
A whistleblower told the newspaper that profits from credit - built up when customers use less energy than they are originally billed for - were taken by British Gas when private and business users were overcharged on initial estimates and then changed to another supplier, with outstanding money still owed to them.
The company used to wait six years before using a customer's credit for its own business, it was reported.
But the whistleblower claimed a special team was established to speed up the process so it can claim customers' money quicker, and has taken years of built-up credit to boost its income.
British Gas said it makes "every effort" to track down former customers to return money to them, but said it is unable to locate all those who have left.
While the practice is legal, the company has drawn criticism for boosting its profits in such a way.
"It is simply not acceptable for suppliers to overcharge people on top of the extortionate bills they are already paying.
"When customers are in credit, this should be repaid. If companies can't find customers to repay them, they should use this money to keep bills down or help other vulnerable customers, not boost their profits."
A British Gas spokeswoman said: "We make every effort to track down any customer who has left British Gas and has credit with us so that it can immediately be returned to them.
"If, after every reasonable effort, we are unable to return the credit to them, it is accounted for in our audited accounts as per standard industry processes.
"If a customer subsequently contacts us, we will always issue any credit owing to them.
"At British Gas, we are doing more than ever before to track down the owners of these credit balances and would always honour a customer debt if the customer gets in touch."