diff --git a/userpoints_node_action.inc b/userpoints_node_action.inc
index 3c08d41..2274789 100644
--- a/userpoints_node_action.inc
+++ b/userpoints_node_action.inc
@@ -451,9 +451,9 @@ function _userpoints_node_action_has_status_changed($nid, $action, $newStatus =
   }
   $node = node_load($nid);
   
-  // Oops? Must be a problem, return true by default;
-  if (empty($action) || empty($node)) {
-    return true;
+  // new nodes are already handled above, so ignore this action
+  if ($action === 'userpoints_node_created') {
+    return false;
   }
   
   // If the statuses are different
diff --git a/userpoints_node_action.module b/userpoints_node_action.module
index 6174b5e..3f55242 100644
--- a/userpoints_node_action.module
+++ b/userpoints_node_action.module
@@ -190,7 +190,7 @@ function userpoints_node_action_node_validate($node, $form) {
   foreach ($options as $actionID => $actionName) {
     if ((!empty($node->$actionID) && $node->$actionID == 1) || ($actionID == USERPOINTS_NODE_ACTION_CREATE)) {
       // Users shouldn't have to pay again if they're just editing the node, and didn't change the action.
-      if (_userpoints_node_action_has_status_changed($node->nid, $actionName)) {
+      if (_userpoints_node_action_has_status_changed($node->nid, $actionID)) {
         $status = _userpoints_node_action_get_status($account, $node->type, $actionID, $totalCost);
         if (!empty($status)) {
           form_set_error('options');
@@ -228,7 +228,7 @@ function userpoints_node_action_node_presave($node) {
   foreach ($options as $actionID => $actionName) {
     if ((!empty($node->$actionID) && $node->$actionID == 1) || ($actionID == USERPOINTS_NODE_ACTION_CREATE)) {
       // But again, users shouldn't pay again if they're just editing the node, and didn't change the action.
-      if (_userpoints_node_action_has_status_changed($node->nid, $actionName)) {
+      if (_userpoints_node_action_has_status_changed($node->nid, $actionID)) {
         $result = _userpoints_node_action_payment($account, $node, $actionID);
         // They should have enough points by now, but we can undo settings if it doesn't work.
         if (!empty($result)) {
