diff --git a/loanpy/integrationtests/basic_test.py b/loanpy/integrationtests/basic_test.py
index dd3ef494e41df62821a81b7d9312259a33db469e..d34a61f6dfcd51a537ff289d8f607d3d6bbaa50b 100644
--- a/loanpy/integrationtests/basic_test.py
+++ b/loanpy/integrationtests/basic_test.py
@@ -117,7 +117,7 @@ def loan_form_data_single(base_loan_form_data):
 @fixture()
 def loan_form_data_multi(base_loan_form_data):
     base_loan_form_data[F_BOX] = [
-        get_entity_by_name(TESTBOXNUMBER).id,
+        str(get_entity_by_name(TESTBOXNUMBER).id),  # strings are allowed
         get_entity_by_name(TESTBOXNUMBER2).id]
     return base_loan_form_data
 
diff --git a/loanpy/src/loan/accept_return_request.py b/loanpy/src/loan/accept_return_request.py
index 22b0fc5359a5d5c79db9fc2ee74aa36396851b29..d12516cf2044071315d0a045725e94b45a64e76e 100755
--- a/loanpy/src/loan/accept_return_request.py
+++ b/loanpy/src/loan/accept_return_request.py
@@ -26,7 +26,7 @@ from __future__ import absolute_import
 import caosdb as db
 from caosadvancedtools.serverside.helper import get_timestamp, print_success
 
-from .box_loan import (BOX_BORROWED, CONTENT, F_LOAN, RETURN_ACCEPTED, RETURNLOCATION,
+from .box_loan import (BOX, CONTENT, F_LOAN, RETURN_ACCEPTED, RETURNLOCATION,
                        S_RETURN_ACCEPTED, S_RETURN_REQUESTED, get_borrower_names, get_loan, main,
                        set_location_of_borrowed_items, set_property, update_loan_state)
 
@@ -66,7 +66,7 @@ def accept_return_request(data):
                             and config["Misc"]["entity_loan.no_content_updates"]))
     _accept_return_request(loan, location_updates=location_updates)
     fn, ln = get_borrower_names(loan)
-    box_id = loan.get_property(BOX_BORROWED).value
+    box_id = loan.get_property(BOX).value
     if not isinstance(box_id, list):
         box_id = [box_id]
 
diff --git a/loanpy/src/loan/confirm_loan.py b/loanpy/src/loan/confirm_loan.py
index a435b454274f7260d0e2b118e87353b7dcd01d2b..9e5b9825e6de5cdf3f92a7740e18bd9e6e0646b8 100755
--- a/loanpy/src/loan/confirm_loan.py
+++ b/loanpy/src/loan/confirm_loan.py
@@ -70,7 +70,7 @@ def confirm_loan(data):
     loan = _confirm_loan(data)
     fn, ln = get_borrower_names(loan)
     loan = get_loan(data[F_LOAN])
-    box_id = loan.get_property(BOX_BORROWED).value
+    box_id = loan.get_property(BOX).value
 
     if not isinstance(box_id, list):
         box_id = [box_id]
diff --git a/loanpy/src/loan/manual_return.py b/loanpy/src/loan/manual_return.py
index 7e0472339be4d653842d1d5192435f4ee16579ae..a2acab7bcb46a71c5a5419c66b1b604ad90e9047 100755
--- a/loanpy/src/loan/manual_return.py
+++ b/loanpy/src/loan/manual_return.py
@@ -96,12 +96,14 @@ def manual_return(data):
     loan = _manual_return(data)
     fn, ln = get_borrower_names(loan)
     loan = get_loan(data[F_LOAN])
-    box_id = loan.get_property(BOX_BORROWED)
+    box_id = loan.get_property(BOX).value
 
+    if not isinstance(box_id, list):
+        box_id = [box_id]
     print_success('The box borrowed by {fn} {ln} '.format(fn=fn, ln=ln)
                   + 'has been returned and the Box Location has been updated.'
                   '<a href="/Entity/{bid}" title="Reload this page.">Reload</a> '
-                  'to view the new Location.<br>'.format(bid=box_id))
+                  'to view the new Location.<br>'.format(bid="&".join([str(el) for el in box_id])))
 
     return 0
 
diff --git a/loanpy/src/loan/request_loan.py b/loanpy/src/loan/request_loan.py
index 5cb51f263963fde0bb30830e0bcfe9fdc3f8e2ee..15ecf67efd1dd9ba22f379f39c6a84d424802285 100755
--- a/loanpy/src/loan/request_loan.py
+++ b/loanpy/src/loan/request_loan.py
@@ -69,9 +69,17 @@ def _set_defaults(data):
 def _check_data(data):
     for field in _OBLIGATORY:
         assert_key_in_data(data, field)
-    if not (isinstance(data[F_BOX], int) or isinstance(data[F_BOX], list)):
+    items = data[F_BOX]
+    if not isinstance(items, list):
+        items = [items]
+    bad_references = []
+    for item in items:
+        if not (isinstance(item, int) or item.isnumeric()):
+            bad_references.append(item)
+    if bad_references:
         raise ValueError(
-            f"the value of {F_BOX} has the wrong type. It should be int or list of ints")
+                f"The  following value(s) of {F_BOX} has/have the wrong type. It should be "
+                f"integers or string representations thereof.\n{bad_references}")
     assert_date_in_future(
         data[F_EXPECTED_RETURN_DATE],
         ("The expected return date needs to be in the future."
diff --git a/loanpy/unittests/test_request_loan.py b/loanpy/unittests/test_request_loan.py
index 8b41f3042349556d82bcd41d9ad7606b0094b2e5..2b6bcc2748f33f5de6ac1e6b1e556b6127aeccd7 100644
--- a/loanpy/unittests/test_request_loan.py
+++ b/loanpy/unittests/test_request_loan.py
@@ -28,5 +28,3 @@ def test_create_loan():
     assert loan.get_property(EXHAUST_CONTENTS.name).value is False
     assert loan.get_property(COMMENT.name).value == "blablabla"
     assert loan.get_property(DESTINATION.name).value == "my office"
-
-    create_loan(1234, borrower, "2020-03-23", False, "blablabla", "my office")