diff --git a/src/lua/uuid.lua b/src/lua/uuid.lua
index cc91363c029e322a656c7af45a11c407c3f66681..956ad6e36e6bcccc2b8525b90e3ec9240b18cc03 100644
--- a/src/lua/uuid.lua
+++ b/src/lua/uuid.lua
@@ -36,6 +36,9 @@ local UUID_LEN = ffi.sizeof(uuid_t)
 local uuidbuf = ffi.new(uuid_t)
 
 local uuid_tostring = function(uu)
+    if not ffi.istype(uuid_t, uu) then
+        return error('Usage: uuid:str()')
+    end
     return ffi.string(builtin.tt_uuid_str(uu), UUID_STR_LEN)
 end
 
@@ -62,6 +65,9 @@ local need_bswap = function(order)
 end
 
 local uuid_tobin = function(uu, byteorder)
+    if not ffi.istype(uuid_t, uu) then
+        return error('Usage: uuid:bin([byteorder])')
+    end
     if need_bswap(byteorder) then
         if uu ~= uuidbuf then
             ffi.copy(uuidbuf, uu, UUID_LEN)
@@ -85,6 +91,9 @@ local uuid_frombin = function(bin, byteorder)
 end
 
 local uuid_isnil = function(uu)
+    if not ffi.istype(uuid_t, uu) then
+        return error('Usage: uuid:isnil()')
+    end
     return builtin.tt_uuid_is_nil(uu)
 end
 
@@ -92,6 +101,9 @@ local uuid_eq = function(lhs, rhs)
     if not ffi.istype(uuid_t, rhs) then
         return false
     end
+    if not ffi.istype(uuid_t, lhs) then
+        return error('Usage: uuid == var')
+    end
     return builtin.tt_uuid_is_equal(lhs, rhs)
 end
 
diff --git a/test/box/uuid.result b/test/box/uuid.result
index eb5fba13da12238466bf9c828d3d4984bb90b9ea..0713614c68788e6049cb87b8989ed3f18d6c918e 100644
--- a/test/box/uuid.result
+++ b/test/box/uuid.result
@@ -106,7 +106,7 @@ uu.node[5]
 -- invalid values
 uuid.fromstr(nil)
 ---
-- error: 'builtin/uuid.lua:44: fromstr(str)'
+- error: 'builtin/uuid.lua:47: fromstr(str)'
 ...
 uuid.fromstr('')
 ---
@@ -244,6 +244,27 @@ uu == "blablabla"
 ---
 - false
 ...
+--
+-- invalid usage
+--
+uu = uuid.new()
+---
+...
+uu.isnil()
+---
+- error: 'Usage: uuid:isnil()'
+...
+uu.bin()
+---
+- error: 'Usage: uuid:bin([byteorder])'
+...
+uu.str()
+---
+- error: 'Usage: uuid:str()'
+...
+uu = nil
+---
+...
 uuid = nil
 ---
 ...
diff --git a/test/box/uuid.test.lua b/test/box/uuid.test.lua
index c1c0a8bd9552270114b0687ea19796e68e2534a9..ecb0cc3feb11caa36bc90806329f27706536f18b 100644
--- a/test/box/uuid.test.lua
+++ b/test/box/uuid.test.lua
@@ -85,4 +85,14 @@ uu == nil
 uu == 12345
 uu == "blablabla"
 
+--
+-- invalid usage
+--
+
+uu = uuid.new()
+uu.isnil()
+uu.bin()
+uu.str()
+
+uu = nil
 uuid = nil