From the IPN Variables reference:
mc_amount3: Amount of payment for regular subscription period, regardless of currency. mc_gross: Full amount of the customer's payment, before transaction fee is subtracted. Equivalent to payment_gross for USD payments. If this amount is negative, it signifies a refund or reversal, and either of those payment statuses can be for the full or partial amount of the original transaction.
As far as the payment_status not being included, that is a variable that should be passed. It is possible that the payment_status is coming back as 'Pending' or 'Processed' instead, causing the script to fail. Try writing out to an error log what the payment_status is.