diff --git a/loanpy/src/loan/request_loan.py b/loanpy/src/loan/request_loan.py
index 15ecf67efd1dd9ba22f379f39c6a84d424802285..16eb783153a1cf292d81262d5c221a37efe27790 100755
--- a/loanpy/src/loan/request_loan.py
+++ b/loanpy/src/loan/request_loan.py
@@ -24,6 +24,7 @@ from __future__ import absolute_import
 
 import linkahead as db
 from caosadvancedtools.serverside.helper import get_timestamp, print_success
+from linkahead.common.models import get_id_from_versionid, value_matches_versionid
 
 from .box_loan import (BORROWER, BOX, COMMENT, DESTINATION, EXHAUST_CONTENTS, EXPECTED_RETURN,
                        F_BOX, F_COMMENT, F_DESTINATION, F_EMAIL, F_EXHAUST_CONTENTS,
@@ -32,13 +33,17 @@ from .box_loan import (BORROWER, BOX, COMMENT, DESTINATION, EXHAUST_CONTENTS, EX
                        insert_or_update_person, main, send_loan_request_mail)
 
 
-def create_loan(box, borrower, expected_return, exhaust_contents, comment,
-                destination):
+def create_loan(box, borrower, expected_return, exhaust_contents, comment, destination):
     """ Create a new loan record. """
 
+    if isinstance(box, list):
+        ids = [get_id_from_versionid(val) if value_matches_versionid(val) else val for val in box]
+        ids = [str(val) for val in ids]
+        if len(ids) != len(set(ids)):
+            raise ValueError("The loan must not reference the same item twice")
     loan = db.Record().add_parent(LOAN)
-
-    loan.add_property(BOX, box, datatype=(db.LIST(BOX.name) if isinstance(box, list) else BOX.name))
+    loan.add_property(BOX, box, datatype=(
+        db.LIST(BOX.name) if isinstance(box, list) else BOX.name))
     loan.add_property(BORROWER, borrower)
     loan.add_property(EXPECTED_RETURN, expected_return)
     loan.add_property(EXHAUST_CONTENTS, exhaust_contents)