Authorities say D'Angelo was caught in New York City trying to pay $40 for sex with an undercover cop posing as a prostitute.
Police said Monday that the 36-year-old R&B singer was arrested early Saturday while behind the wheel of his Range Rover.
D'Angelo's real name is Michael Archer. He says in a statement that he pleaded not guilty and plans to fight the charge.
The statement says the singer hopes the public will "allow the American justice system to resolve the matter before jumping to any conclusions."