Index: signup_pay.module
===================================================================
--- signup_pay.module	(revision 116)
+++ signup_pay.module	(working copy)
@@ -625,8 +625,16 @@
       if ($node->signup_pay_enabled) {
         $default_rid = signup_pay_find_user_role($user);
         $pay_roles = signup_pay_get_node_pay_roles($form['nid']['#value']);
+        $amount = $pay_roles[$default_rid]['amount'];
+        
+        // Use module_invoke_all, to allow other modules to adjust the amount. 
+        $adjusted_amounts = module_invoke_all('signup_pay_adjust', $node, $user, $amount);
+        if ($adjusted_amounts) {
+          $amount = array_pop($adjusted_amounts);
+        }
+        
         $form['collapse']['signup_user_form']['payment'] = array(
-          '#value' => t('<div>The price you pay: %amount</div>', array('%amount' => _signup_pay_format_amount($pay_roles[$default_rid]['amount'],$pay_roles[$default_rid]['currency']))),
+          '#value' => t('<div>The price you pay: %amount</div>', array('%amount' => _signup_pay_format_amount($amount,$pay_roles[$default_rid]['currency']))),
         );
         $form['collapse']['signup_user_form']['method'] = array(
           '#type'          => 'radios',
@@ -811,6 +819,12 @@
   $amount = $pay_roles[$signup_rid]['amount'] ? $pay_roles[$signup_rid]['amount'] : variable_get(SIGNUP_PAY_AMOUNT, SIGNUP_PAY_DEFAULT_AMOUNT);
   $currency = $pay_roles[$signup_rid]['currency'] ? $pay_roles[$signup_rid]['currency'] : variable_get(SIGNUP_PAY_CURRENCY, SIGNUP_PAY_DEFAULT_CURRENCY);
 
+  // Use module_invoke_all, to allow other modules to adjust the amount. 
+  $adjusted_amounts = module_invoke_all('signup_pay_adjust', $signup_node, $signup_user, $amount);
+  if ($adjusted_amounts) {
+    $amount = array_pop($adjusted_amounts);
+  }
+  
   $url = simple_paypal_get_url();
   $form['#action'] = $url;
 
