diff --git a/lib/record_type/enforce.js b/lib/record_type/enforce.js
index <HASH>..<HASH> 100644
--- a/lib/record_type/enforce.js
+++ b/lib/record_type/enforce.js
@@ -112,21 +112,22 @@ module.exports = function enforce (type, record, fields, meta) {
 function checkValue (field, key, value, meta) {
   var language = meta.language
   var check
+  var type = field[typeKey]
 
   // Skip `null` case.
   if (value === null) return
 
   check = find(checkInput, function (pair) {
-    return pair[0] === field[typeKey]
+    return pair[0] === type
   })
   if (check) check = check[1]
-  else check = field[typeKey]
+  else check = type
 
   // Fields may be nullable, but if they're defined, then they must be defined
   // properly.
   if (!check(value)) throw new BadRequestError(
     message(field[isArrayKey] ? 'EnforceValueArray' : 'EnforceValue',
-      language, { key: key, type: field[typeKey].name }))
+      language, { key: key, type: type.displayName || type.name }))
 }
Support 'displayName' property on custom types