That works great.
I've changed the code slightly to truncate to two decimal places to allow to odd amounts when upgrading. Pasted here for others reference.
SELECT TRUNCATE(p.`rate`, 2)
FROM `#__cbsubs_subscriptions` AS s
JOIN `#__cbsubs_payment_items` AS p
ON p.`subscription_id` = s.`id`
WHERE s.`user_id` = '[user_id]'
AND s.`plan_id` = 16
ORDER BY s.`id` DESC
LIMIT 1