diff --git a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiErrorHandler.java b/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiErrorHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..baac2e559ce444e5184be6da2ff5d44e2865c464
--- /dev/null
+++ b/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiErrorHandler.java
@@ -0,0 +1,30 @@
+/*
+ * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
+ * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
+ */
+package fr.unistra.sil.erp.back.api.controller;
+
+import fr.unistra.sil.erp.back.api.model.ErrorMessage;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+/**
+ * Handles API exceptions.
+ * @author BEAUVAIS ANTOINE
+ */
+@RestControllerAdvice
+public class ApiErrorHandler {
+    
+    @ExceptionHandler(ApiServerErrorException.class)
+    public ResponseEntity<Object> handleServerError(Exception ex,
+            HttpServletRequest request, HttpServletResponse response)
+    {
+        return new ResponseEntity<>(new ErrorMessage(ex.getMessage()),
+                HttpStatus.INTERNAL_SERVER_ERROR);
+    }
+    
+}
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiRetrieveInfoController.java b/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiRetrieveInfoController.java
index 73fcd23cb26e114169c8e1617cc65ad5365a52a0..26a9d9ee29b1bf5929bebf29380e55ee3728875f 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiRetrieveInfoController.java
+++ b/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiRetrieveInfoController.java
@@ -24,9 +24,10 @@ public class ApiRetrieveInfoController {
     /**
      * Returns an Item as a JSON response.
      * @return an Item.
+     * @throws fr.unistra.sil.erp.back.api.controller.ApiServerErrorException
      */
     @GetMapping("/erp-back/api/v1/retrieveInfo")
-    public List<Item> retrieveInfo()
+    public Object retrieveInfo() throws ApiServerErrorException
     {
         DatabaseInterface db;
         try {
@@ -34,12 +35,12 @@ public class ApiRetrieveInfoController {
         } catch (DatabaseConnectionException ex) {
             Logger.getLogger(ApiRetrieveInfoController.class.getName()).log(
                     Level.SEVERE, "Database failure.", ex);
-            throw new ApiServerErrorController("Connection to database failed");
+            throw new ApiServerErrorException("Failed to connect to database.");
         }
         
         List<Item> res = db.getAllItems();
         if(res == null)
-            throw new ApiServerErrorController("Failed to retrieve list.");
+            throw new ApiServerErrorException("Failed to query info.");
         
         return res;
     }
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiServerErrorController.java b/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiServerErrorException.java
similarity index 51%
rename from src/main/java/fr/unistra/sil/erp/back/api/controller/ApiServerErrorController.java
rename to src/main/java/fr/unistra/sil/erp/back/api/controller/ApiServerErrorException.java
index 882f5f27abb7d00c768aa08251dd5c2ec5c2abff..235fc9883ec845054c0d6597718c7a772368933e 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiServerErrorController.java
+++ b/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiServerErrorException.java
@@ -4,19 +4,14 @@
  */
 package fr.unistra.sil.erp.back.api.controller;
 
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
 /**
  * Returns HTTP 500 error page.
  * @author BEAUVAIS ANTOINE <antoine.beauvais@etu.unistra.fr>
  */
-@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
-public class ApiServerErrorController extends RuntimeException {
-    
-    public ApiServerErrorController(String errMsg)
+public class ApiServerErrorException extends Exception {
+
+    public ApiServerErrorException(String errMsg)
     {
         super(errMsg);
     }
-    
 }
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/model/ErrorMessage.java b/src/main/java/fr/unistra/sil/erp/back/api/model/ErrorMessage.java
new file mode 100644
index 0000000000000000000000000000000000000000..b0b869bf2dd8765aedbf3b05b2a770513b76de0a
--- /dev/null
+++ b/src/main/java/fr/unistra/sil/erp/back/api/model/ErrorMessage.java
@@ -0,0 +1,25 @@
+/*
+ * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
+ * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
+ */
+package fr.unistra.sil.erp.back.api.model;
+
+/**
+ * JSON error message.
+ * @author BEAUVAIS ANTOINE
+ */
+public class ErrorMessage {
+    
+    private final String message;
+    
+    public ErrorMessage(String message)
+    {
+        this.message = message;
+    }
+    
+    public String getMessage()
+    {
+        return this.message;
+    }
+    
+}
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/model/Item.java b/src/main/java/fr/unistra/sil/erp/back/api/model/Item.java
index 3657fc41a2fd0926652a667782d24c0414830d0b..6e7fb42acde0156e79be0de0ef7e311a223acbf4 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/model/Item.java
+++ b/src/main/java/fr/unistra/sil/erp/back/api/model/Item.java
@@ -4,6 +4,8 @@
  */
 package fr.unistra.sil.erp.back.api.model;
 
+import java.math.BigDecimal;
+
 /**
  * Item description.
  * @author BEAUVAIS ANTOINE <antoine.beauvais@etu.unistra.fr>
@@ -23,12 +25,12 @@ public class Item {
     /**
      * The product's regular price.
      */
-    private final double price;
+    private final BigDecimal price;
     
     /**
      * The product's price for subscribers.
      */
-    private final double subscriberPrice;
+    private final BigDecimal subscriberPrice;
     
     /**
      * Class constructor.
@@ -37,8 +39,8 @@ public class Item {
      * @param price The item's price.
      * @param subscriberPrice The item's price for subscribers.
      */
-    public Item(int ref, String name, double price,
-            double subscriberPrice)
+    public Item(int ref, String name, BigDecimal price,
+            BigDecimal subscriberPrice)
     {
         this.ref = ref;
         this.name = name;
@@ -68,7 +70,7 @@ public class Item {
      * Returns the current item's price.
      * @return the price.
      */
-    public double getPrice()
+    public BigDecimal getPrice()
     {
         return this.price;
     }
@@ -77,7 +79,7 @@ public class Item {
      * Returns the current item's price for subscribers.
      * @return the price for subscribers.
      */
-    public double getSubscriberPrice()
+    public BigDecimal getSubscriberPrice()
     {
         return this.subscriberPrice;
     }
diff --git a/src/main/java/fr/unistra/sil/erp/back/db/DatabaseSQLiteImpl.java b/src/main/java/fr/unistra/sil/erp/back/db/DatabaseSQLiteImpl.java
index dfdabaf49f300476d1474c1f8c63c19c3607474e..9a00463e9661fdaf51f58cf09d06d46e2dbaa39c 100644
--- a/src/main/java/fr/unistra/sil/erp/back/db/DatabaseSQLiteImpl.java
+++ b/src/main/java/fr/unistra/sil/erp/back/db/DatabaseSQLiteImpl.java
@@ -64,8 +64,8 @@ public class DatabaseSQLiteImpl implements DatabaseInterface {
             while(rs.next())
             {
                 Item item = new Item(rs.getInt("ref"), rs.getString("name"),
-                                     rs.getDouble("price"),
-                                     rs.getDouble("subscriberPrice"));
+                                     rs.getBigDecimal("price"),
+                                     rs.getBigDecimal("subscriberPrice"));
                 res.add(item);
             }
         } catch (SQLException ex) {