diff --git a/src/server/server.c b/src/server/server.c
index 76b3b44dbde7e6f57f854705b30a9d647d0d474f..61a0f159c401f58a43cb30fbd72a221f6170018c 100644
--- a/src/server/server.c
+++ b/src/server/server.c
@@ -773,7 +773,8 @@ void Server_int_SendItem(tClient *Client, tItem *Item)
 		}
 	}
 	
-	if( !gbNoCostMode && Item->Price == 0 )
+	// door costs 0 to dispense, which is not an error; other items must have a price
+	if( !gbNoCostMode && Item->Price == 0 && (strcmp(Item->Handler->Name, "door") != 0) )
 		status = "error";
 	// KNOWN HACK: Naming a slot 'dead' disables it
 	if( strcmp(Item->Name, "dead") == 0 )