Do you need to reset other donation values here?  For upsell I had to do all this.

````
  // Reset transaction info.
  $master_donation->data['txn_id'] = '';
  $master_donation->data['remote_id'] = '';
  $master_donation->data['transaction_id'] = '';
  $master_donation->data['status'] = '';
  $master_donation->data['remote_status'] = '';

  // Set the proper order status and amount.
  $master_donation->status = 'pending_future_payment';
  $master_donation->donation['amount'] = $new_amount;
  // Always set the quantity to 1 because the new amount will get multiplied
  // by the quantity.
  $master_donation->donation['quantity'] = 1;