Using Drupal 7 and CiviCRM 4.7.22, I am unable to record any contributions unless I use a priceset, i.e. if I use this form: /civicrm/contact/view/contribution?reset=1&action=add&cid=mycid&context=contribution and put in any amount without using a priceset, then the contribution is stored as $0 without showing any errors.
The cause of this symptom was a mis-configured, hidden price set. There is a hidden price set and field (both of id = 1, at least on this site) that are used for non-price-set contributions. On this site, the price set had no financial type configured and the price field was disabled, a fact that was alerted on the System Status page. Setting a valid financial type and enabling the price field was actually kind of tricky (a combination of hacking urls and sql), but it fixed the problem.
I don't know how we ended up with that mis-configuration, an error in the executing code would have been nice.