fixed by adding braces to the if statement,
add_filter('woocommerce_add_cart_item', 'add_donation_item');
function add_donation_item($item) {
if ($item['data']->product_type == 'donation') {
if ( (isset($_POST['donation_amount'])) && (is_numeric($_POST['donation_amount'])) && ($_POST['donation_amount'] > 0) )
$item['donation_amount'] = $_POST['donation_amount']*1;
else
$item['donation_amount'] = 0;
$item['data']->price = $item['donation_amount'];
}
return $item;
}
Example: Amount 5.00 entered on product page, donate button clicked, Item added to cart.
View cart, Amount is 0.00 (suggested amount from settings)