diff --git a/scripts/create-dev.sql b/scripts/create-dev.sql
index 95b593e70aa96a3926a5193027bd9ace4fdb228c..f73ce2f0c93d04e66b2a6f8d4b347128fe8f45a5 100644
--- a/scripts/create-dev.sql
+++ b/scripts/create-dev.sql
@@ -1,5 +1,7 @@
+DROP TABLE IF EXISTS stocks;
 DROP TABLE IF EXISTS registry;
 DROP TABLE IF EXISTS transaction_types;
+DROP TABLE IF EXISTS accounts;
 DROP TABLE IF EXISTS items;
 DROP TABLE IF EXISTS categories;
 
@@ -13,23 +15,37 @@ CREATE TABLE items (
     name TEXT NOT NULL,
     price REAL NOT NULL,
     subscriberPrice REAL NOT NULL,
-	category INTEGER NOT NULL,
-	FOREIGN KEY (category) REFERENCES categories (id)
+    category INTEGER NOT NULL,
+    FOREIGN KEY (category) REFERENCES categories (id)
 );
 
 CREATE TABLE transaction_types (
     id INTEGER PRIMARY KEY,
-	name TEXT NOT NULL
+    name TEXT NOT NULL
+);
+
+CREATE TABLE accounts (
+    id INTEGER PRIMARY KEY,
+    num INTEGER NOT NULL,
+    name TEXT NOT NULL
 );
 
 CREATE TABLE registry (
     id INTEGER PRIMARY KEY,
-	dt INTEGER NOT NULL,
-	type INTEGER NOT NULL,
-	description TEXT NOT NULL,
-	debit REAL,
-	credit REAL,
-	remarks TEXT
+    dt INTEGER NOT NULL,
+    type INTEGER NOT NULL,
+    account_id INTEGER NOT NULL,
+    debit REAL,
+    credit REAL,
+    remarks TEXT,
+    FOREIGN KEY (account_id) REFERENCES accounts (id)
+);
+
+CREATE TABLE stocks (
+    id INTEGER PRIMARY KEY,
+    item INTEGER NOT NULL,
+    quantity INTEGER NOT NULL,
+    FOREIGN KEY (item) REFERENCES items (ref)
 );
 
 INSERT INTO categories (id, name)
@@ -46,16 +62,32 @@ INSERT INTO transaction_types (id, name)
 	       (2, "REGLEMENT"),
 		   (3, "VENTE"),
 		   (4, "ENCAISSEMENT");
-		   
-INSERT INTO registry (id, dt, type, description, debit, credit, remarks)
-    VALUES (1,  datetime("2021-09-21 01:00:00"), 4, "101 Capital",       null, 500.0, null),
-	       (2,  datetime("2021-09-21 01:30:00"), 4, "512 Banque",        500.0, null,  null),
-		   (3,  datetime("2021-09-21 02:00:00"), 1, "601 Achat",         152.0, null, "Facture d'achat"),
-		   (4,  datetime("2021-09-21 02:30:00"), 1, "401 Fournisseur",   null, 152.0, "Facture Achat = dette au fournisseur"),
-		   (5,  datetime("2021-09-21 03:00:00"), 2, "401 Fournisseur",   152.0, null, "Règlement de la facture d'achat"),
-		   (6,  datetime("2021-09-21 03:30:00"), 2, "512 Banque",        null, 152.0, "Règlement de la facture d'achat"),
-		   (7,  datetime("2021-09-21 04:00:00"), 3, "706 Vente",         null,  60.0, "Vente"),
-		   (8,  datetime("2021-09-21 04:30:00"), 3, "445 TVA Collectée", null,  12.0, null),
-		   (9,  datetime("2021-09-21 05:00:00"), 3, "411 Client",        72.0,  null, "Facture vente = Dette client"),
-		   (10, datetime("2021-09-21 05:30:00"), 4, "411 Client",        null,  72.0, "Encaissement de l'argent"),
-		   (11, datetime("2021-09-21 06:00:00"), 4, "512 Banque",        72.0,  null, "= La dette du client est soldée");
\ No newline at end of file
+
+
+INSERT INTO accounts (id, num, name)
+    VALUES(1, 101, "Capital"),
+          (2, 512, "Banque"),
+          (3, 601, "Achat"),
+          (4, 401, "Fournisseur"),
+          (5, 706, "Vente"),
+          (6, 445, "TVA Collectée"),
+          (7, 411, "Client");
+    
+
+INSERT INTO registry (id, dt, type, account_id, debit, credit, remarks)
+    VALUES (1,  datetime("2021-09-21 01:00:00"), 4, 1,  null, 500.0, null),
+	       (2,  datetime("2021-09-21 01:30:00"), 4, 2, 500.0,  null, null),
+		   (3,  datetime("2021-09-21 02:00:00"), 1, 3, 152.0,  null, "Facture d'achat"),
+		   (4,  datetime("2021-09-21 02:30:00"), 1, 4,  null, 152.0, "Facture Achat = dette au fournisseur"),
+		   (5,  datetime("2021-09-21 03:00:00"), 2, 4, 152.0,  null, "Règlement de la facture d'achat"),
+		   (6,  datetime("2021-09-21 03:30:00"), 2, 2,  null, 152.0, "Règlement de la facture d'achat"),
+		   (7,  datetime("2021-09-21 04:00:00"), 3, 5,  null,  60.0, "Vente"),
+		   (8,  datetime("2021-09-21 04:30:00"), 3, 6,  null,  12.0, null),
+		   (9,  datetime("2021-09-21 05:00:00"), 3, 7,  72.0,  null, "Facture vente = Dette client"),
+		   (10, datetime("2021-09-21 05:30:00"), 4, 7,  null,  72.0, "Encaissement de l'argent"),
+		   (11, datetime("2021-09-21 06:00:00"), 4, 2,  72.0,  null, "= La dette du client est soldée");
+
+INSERT INTO stocks (id, item, quantity)
+    VALUES(1, 1, 25),
+          (2, 2, 12),
+          (3, 3, 50);
\ No newline at end of file
diff --git a/scripts/generate-dev.sh b/scripts/generate-dev.sh
old mode 100644
new mode 100755
diff --git a/src/main/java/fr/unistra/sil/erp/back/Config.java b/src/main/java/fr/unistra/sil/erp/back/Config.java
index 0fa1b11ac08bda6294b61ed854ee9c844ff4b85e..dd7c0537e53030b395dbeb0d048a3ac6c3cfcb5a 100644
--- a/src/main/java/fr/unistra/sil/erp/back/Config.java
+++ b/src/main/java/fr/unistra/sil/erp/back/Config.java
@@ -22,4 +22,6 @@ public class Config {
     public static final String MAPPING_SUBTRANSAC = URL_PREFIX +
             "/submitTransaction";
     
+    public static final String MAPPING_GETSTOCKS = URL_PREFIX +
+            "/retrieveStocks";
 }
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiSubmitTransactionController.java b/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiSubmitTransactionController.java
deleted file mode 100644
index 761f360c59151607bf1a205ee2341de074803f73..0000000000000000000000000000000000000000
--- a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiSubmitTransactionController.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
- * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
- */
-package fr.unistra.sil.erp.back.api.controller;
-
-import static fr.unistra.sil.erp.back.Config.MAPPING_SUBTRANSAC;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * REST Controller for submitting transactions.
- * @author BEAUVAIS ANTOINE
- */
-@RestController
-public class ApiSubmitTransactionController {
-    
-    @RequestMapping(value=MAPPING_SUBTRANSAC, method = RequestMethod.POST)
-    public ResponseEntity<Object> submitTransaction(HttpServletRequest request,
-            HttpServletResponse response)
-    {
-        throw new UnsupportedOperationException("Not yet supported.");
-    }
-    
-}
diff --git a/src/main/java/fr/unistra/sil/erp/back/controller/IRetrieveCategoriesController.java b/src/main/java/fr/unistra/sil/erp/back/controller/IRetrieveCategoriesController.java
new file mode 100644
index 0000000000000000000000000000000000000000..b719adc667fff08e59b9752826dd4fae8adf7f8b
--- /dev/null
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/IRetrieveCategoriesController.java
@@ -0,0 +1,22 @@
+/*
+ * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
+ * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
+ */
+package fr.unistra.sil.erp.back.controller;
+
+import org.springframework.http.ResponseEntity;
+
+/**
+ * Interface for designing access to categories.
+ * @author BEAUVAIS ANTOINE
+ */
+public interface IRetrieveCategoriesController {
+    
+    /**
+     * Retrieves all categories.
+     * @return the response.
+     * @throws java.lang.Exception when the request cannot be served.
+     */
+    public ResponseEntity<Object> getCategories() throws Exception;
+    
+}
diff --git a/src/main/java/fr/unistra/sil/erp/back/controller/IRetrieveInfoController.java b/src/main/java/fr/unistra/sil/erp/back/controller/IRetrieveInfoController.java
new file mode 100644
index 0000000000000000000000000000000000000000..8ca93af70fb842a4be53501c1c6310e39409683d
--- /dev/null
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/IRetrieveInfoController.java
@@ -0,0 +1,26 @@
+/*
+ * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
+ * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
+ */
+package fr.unistra.sil.erp.back.controller;
+
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * Interface for designing the retrieval of articles.
+ * @author BEAUVAIS ANTOINE
+ */
+public interface IRetrieveInfoController {
+    
+    /**
+     * Retrieves the list of items.
+     * @param cat
+     * @return
+     * @throws Exception 
+     */
+    public ResponseEntity<Object> retrieveInfo(
+            @RequestParam(value = "category", defaultValue = "") String cat
+        ) throws Exception;
+    
+}
diff --git a/src/main/java/fr/unistra/sil/erp/back/controller/IRetrieveStocks.java b/src/main/java/fr/unistra/sil/erp/back/controller/IRetrieveStocks.java
new file mode 100644
index 0000000000000000000000000000000000000000..883ba1d0be2eff2a4bba39ca484c6248f8332f02
--- /dev/null
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/IRetrieveStocks.java
@@ -0,0 +1,20 @@
+/*
+ * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
+ * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
+ */
+package fr.unistra.sil.erp.back.controller;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * Interface for designing stocks access.
+ * @author BEAUVAIS ANTOINE
+ */
+public interface IRetrieveStocks {
+    
+    public ResponseEntity<Object> retrieveStocks(HttpServletRequest request,
+            HttpServletResponse response) throws Exception;
+    
+}
diff --git a/src/main/java/fr/unistra/sil/erp/back/controller/ISubmitTransactionController.java b/src/main/java/fr/unistra/sil/erp/back/controller/ISubmitTransactionController.java
new file mode 100644
index 0000000000000000000000000000000000000000..e71ba5e5a0c0f2b0aa6c0fc7e8a7f25039d00993
--- /dev/null
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/ISubmitTransactionController.java
@@ -0,0 +1,27 @@
+/*
+ * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
+ * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
+ */
+package fr.unistra.sil.erp.back.controller;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * Interface for designing transaction submission.
+ * @author BEAUVAIS ANTOINE
+ */
+public interface ISubmitTransactionController {
+    
+    /**
+     * Submits a transaction to the application.
+     * @param request the HTTP Servlet Request, provided by Spring Web
+     * @param response the HTTP Servlet Response, provided by Spring Web
+     * @return the response served to the user.
+     * @throws java.lang.Exception when the request cannot be served.
+     */
+    public ResponseEntity<Object> submitTransaction(HttpServletRequest request,
+            HttpServletResponse response) throws Exception;
+    
+}
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiBadRequestException.java b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiBadRequestException.java
similarity index 87%
rename from src/main/java/fr/unistra/sil/erp/back/api/controller/ApiBadRequestException.java
rename to src/main/java/fr/unistra/sil/erp/back/controller/api/ApiBadRequestException.java
index 645aa797556509d3b61f76edaa9ca32a415b5d6d..7443d03e099094f3e357ca526c2e9d7d4ed61af0 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiBadRequestException.java
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiBadRequestException.java
@@ -2,7 +2,7 @@
  * 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;
+package fr.unistra.sil.erp.back.controller.api;
 
 /**
  * HTTP error 400 Bad Request for the API.
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiErrorHandler.java b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiErrorHandler.java
similarity index 92%
rename from src/main/java/fr/unistra/sil/erp/back/api/controller/ApiErrorHandler.java
rename to src/main/java/fr/unistra/sil/erp/back/controller/api/ApiErrorHandler.java
index 749f936e8f2e83b606bf8154f928ea26c90da2ad..2e85fb611529485eb509262a33e6e22b77bee8cf 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiErrorHandler.java
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiErrorHandler.java
@@ -2,9 +2,9 @@
  * 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;
+package fr.unistra.sil.erp.back.controller.api;
 
-import fr.unistra.sil.erp.back.api.model.ErrorMessage;
+import fr.unistra.sil.erp.back.model.ErrorMessage;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import org.springframework.http.HttpStatus;
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiRetrieveCategoriesController.java b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiRetrieveCategoriesController.java
similarity index 82%
rename from src/main/java/fr/unistra/sil/erp/back/api/controller/ApiRetrieveCategoriesController.java
rename to src/main/java/fr/unistra/sil/erp/back/controller/api/ApiRetrieveCategoriesController.java
index 369679877448f3bbe56689a75e16752c82f05621..977b42ac2a0a98e445380991927cef9d2d34fda0 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiRetrieveCategoriesController.java
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiRetrieveCategoriesController.java
@@ -2,11 +2,13 @@
  * 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;
+package fr.unistra.sil.erp.back.controller.api;
 
 import static fr.unistra.sil.erp.back.Config.MAPPING_GETCATEGORIES;
+import static fr.unistra.sil.erp.back.Config.MAPPING_GETSTOCKS;
 import fr.unistra.sil.erp.back.DatabaseSystem;
-import fr.unistra.sil.erp.back.api.model.Category;
+import fr.unistra.sil.erp.back.controller.IRetrieveCategoriesController;
+import fr.unistra.sil.erp.back.model.Category;
 import fr.unistra.sil.erp.back.db.DatabaseConnectionException;
 import fr.unistra.sil.erp.back.db.DatabaseInterface;
 import java.util.List;
@@ -22,7 +24,8 @@ import org.springframework.web.bind.annotation.RestController;
  * @author BEAUVAIS ANTOINE
  */
 @RestController
-public class ApiRetrieveCategoriesController {
+public class ApiRetrieveCategoriesController
+        implements IRetrieveCategoriesController {
     
     /**
      * Returns the list of categories in JSON format.
@@ -30,6 +33,7 @@ public class ApiRetrieveCategoriesController {
      * @throws ApiServerErrorException Database failure.
      */
     @GetMapping(MAPPING_GETCATEGORIES)
+    @Override
     public ResponseEntity<Object> getCategories() throws ApiServerErrorException
     {
         DatabaseInterface db;
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiRetrieveInfoController.java b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiRetrieveInfoController.java
similarity index 80%
rename from src/main/java/fr/unistra/sil/erp/back/api/controller/ApiRetrieveInfoController.java
rename to src/main/java/fr/unistra/sil/erp/back/controller/api/ApiRetrieveInfoController.java
index 3593e99a0488eeee4e71cd1edfb45feb5696192b..0b9e426bd58c3bd455aa145c897d04478633b97e 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiRetrieveInfoController.java
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiRetrieveInfoController.java
@@ -2,16 +2,18 @@
  * 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;
+package fr.unistra.sil.erp.back.controller.api;
 
 import static fr.unistra.sil.erp.back.Config.MAPPING_RETRIEVEALL;
 import fr.unistra.sil.erp.back.DatabaseSystem;
-import fr.unistra.sil.erp.back.api.model.Item;
+import fr.unistra.sil.erp.back.controller.IRetrieveInfoController;
+import fr.unistra.sil.erp.back.model.Item;
 import fr.unistra.sil.erp.back.db.DatabaseConnectionException;
 import fr.unistra.sil.erp.back.db.DatabaseInterface;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -20,17 +22,17 @@ import org.springframework.web.bind.annotation.RestController;
 
 /**
  * REST controller for the item list.
- * @author BEAUVAIS ANTOINE <antoine.beauvais@etu.unistra.fr>
+ * @author BEAUVAIS ANTOINE
  */
 @RestController
-public class ApiRetrieveInfoController {
+public class ApiRetrieveInfoController implements IRetrieveInfoController {
     
     /**
      * Returns all products as a JSON response.
      * @param cat an optional category.
      * @return a JSON response.
-     * @throws fr.unistra.sil.erp.back.api.controller.ApiServerErrorException
-     * @throws fr.unistra.sil.erp.back.api.controller.ApiBadRequestException
+     * @throws fr.unistra.sil.erp.back.controller.api.ApiServerErrorException
+     * @throws fr.unistra.sil.erp.back.controller.api.ApiBadRequestException
      */
     @GetMapping(MAPPING_RETRIEVEALL)
     public ResponseEntity<Object> retrieveInfo(
@@ -66,6 +68,8 @@ public class ApiRetrieveInfoController {
         
         if(res == null)
             throw new ApiServerErrorException("Failed to query info.");
+        else if(res.isEmpty())
+            return ResponseEntity.noContent().build();
         
         return new ResponseEntity<>(res, HttpStatus.OK);
     }
diff --git a/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiRetrieveStocks.java b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiRetrieveStocks.java
new file mode 100644
index 0000000000000000000000000000000000000000..0e47d0062cc4dcfdceff438037734fb2815f6fe8
--- /dev/null
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiRetrieveStocks.java
@@ -0,0 +1,57 @@
+/*
+ * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
+ * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
+ */
+package fr.unistra.sil.erp.back.controller.api;
+
+import static fr.unistra.sil.erp.back.Config.MAPPING_GETSTOCKS;
+import fr.unistra.sil.erp.back.DatabaseSystem;
+import fr.unistra.sil.erp.back.controller.IRetrieveStocks;
+import fr.unistra.sil.erp.back.db.DatabaseConnectionException;
+import fr.unistra.sil.erp.back.db.DatabaseInterface;
+import fr.unistra.sil.erp.back.model.Stock;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+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.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * Retrieves stocks in JSON format.
+ * @author BEAUVAIS ANTOINE
+ */
+@RestController
+public class ApiRetrieveStocks implements IRetrieveStocks {
+
+    /**
+     * Sends the stocks as JSON format back to the client.
+     * @param request the HTTP request.
+     * @param response the HTTP response.
+     * @return the response. 
+     * @throws fr.unistra.sil.erp.back.controller.api.ApiServerErrorException 
+     */
+    @GetMapping(MAPPING_GETSTOCKS)
+    @Override
+    public ResponseEntity<Object> retrieveStocks(HttpServletRequest request,
+            HttpServletResponse response) throws ApiServerErrorException {
+        DatabaseInterface db;
+        try {
+            db = DatabaseSystem.getInstance();
+        } catch (DatabaseConnectionException ex) {
+            Logger.getLogger(ApiRetrieveCategoriesController.class.getName())
+                    .log(Level.SEVERE, "Failed to connect to database.", ex);
+            throw new ApiServerErrorException("Database failure.");
+        }
+        
+        List<Stock> res = db.getStocks();
+        if(res == null)
+            throw new ApiServerErrorException("Database failure.");
+        
+        return new ResponseEntity<>(res, HttpStatus.OK);
+    }
+    
+}
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiServerErrorException.java b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiServerErrorException.java
similarity index 88%
rename from src/main/java/fr/unistra/sil/erp/back/api/controller/ApiServerErrorException.java
rename to src/main/java/fr/unistra/sil/erp/back/controller/api/ApiServerErrorException.java
index 235fc9883ec845054c0d6597718c7a772368933e..7cfe6a04e2f1049bfd5c91c077e507196f95a6ba 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiServerErrorException.java
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiServerErrorException.java
@@ -2,7 +2,7 @@
  * 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;
+package fr.unistra.sil.erp.back.controller.api;
 
 /**
  * Returns HTTP 500 error page.
diff --git a/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiSubmitTransactionController.java b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiSubmitTransactionController.java
new file mode 100644
index 0000000000000000000000000000000000000000..37189f0370ae9e38725a92824cdfaffd27dcf65b
--- /dev/null
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiSubmitTransactionController.java
@@ -0,0 +1,72 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package fr.unistra.sil.erp.back.controller.api;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonParseException;
+import static fr.unistra.sil.erp.back.Config.MAPPING_SUBTRANSAC;
+import fr.unistra.sil.erp.back.controller.ISubmitTransactionController;
+import fr.unistra.sil.erp.back.model.Transaction;
+import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+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.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * REST Controller for submitting transactions.
+ * @author BEAUVAIS ANTOINE
+ */
+@RestController
+public class ApiSubmitTransactionController
+        implements ISubmitTransactionController {
+    
+    @RequestMapping(value=MAPPING_SUBTRANSAC, method = RequestMethod.POST)
+    @Override
+    public ResponseEntity<Object> submitTransaction(HttpServletRequest request,
+            HttpServletResponse response) throws ApiBadRequestException
+    {
+        Gson gson = new Gson();
+        String body;
+        try {
+            body = request.getReader().lines()
+                    .collect(Collectors.joining(System.lineSeparator()));
+        } catch (IOException ex) {
+            Logger.getLogger(ApiSubmitTransactionController.class.getName())
+                    .log(Level.SEVERE, "Unparseable body.", ex);
+            throw new ApiBadRequestException("Unparseable body.");
+        }
+        if(body == null)
+            throw new ApiBadRequestException("Missing JSON body.");
+        
+        Transaction t;
+        try
+        {
+            t = gson.fromJson(body, Transaction.class);
+        }
+        catch(JsonParseException ex)
+        {
+            throw new ApiBadRequestException("Invalid JSON: syntax error.");
+        }
+        
+        if(t == null)
+            throw new ApiBadRequestException("Missing JSON body.");
+        
+        if(!t.checkIfValid())
+            throw new ApiBadRequestException("Invalid JSON schema.");
+        
+        System.out.println("Transaction : " + t.getItem() +
+                t.getType() + " " + t.getAmount());
+        
+        return new ResponseEntity<>(t, HttpStatus.CREATED);
+    }
+    
+}
diff --git a/src/main/java/fr/unistra/sil/erp/back/db/DatabaseInterface.java b/src/main/java/fr/unistra/sil/erp/back/db/DatabaseInterface.java
index 4c4b6176528a3e0ed2e2a5c083c7ac63b16d229f..19f0dfa184e3569167a30fda0aa17b2c09ac0709 100644
--- a/src/main/java/fr/unistra/sil/erp/back/db/DatabaseInterface.java
+++ b/src/main/java/fr/unistra/sil/erp/back/db/DatabaseInterface.java
@@ -4,8 +4,9 @@
  */
 package fr.unistra.sil.erp.back.db;
 
-import fr.unistra.sil.erp.back.api.model.Category;
-import fr.unistra.sil.erp.back.api.model.Item;
+import fr.unistra.sil.erp.back.model.Category;
+import fr.unistra.sil.erp.back.model.Item;
+import fr.unistra.sil.erp.back.model.Stock;
 import java.util.List;
 
 /**
@@ -38,4 +39,11 @@ public interface DatabaseInterface {
      */
     public List<Category> getCategories();
     
+    /**
+     * Returns the list of all stocks.
+     * 
+     * @return the list of stocks.
+     */
+    public List<Stock> getStocks();
+    
 }
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 ce99530291f21dd3eb2261e01893e83b111178eb..6ba2ee98f936419de2e1056679f93269a65e6bda 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
@@ -4,8 +4,9 @@
  */
 package fr.unistra.sil.erp.back.db;
 
-import fr.unistra.sil.erp.back.api.model.Category;
-import fr.unistra.sil.erp.back.api.model.Item;
+import fr.unistra.sil.erp.back.model.Category;
+import fr.unistra.sil.erp.back.model.Item;
+import fr.unistra.sil.erp.back.model.Stock;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.PreparedStatement;
@@ -18,7 +19,7 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 
 /**
- *
+ * SQLite implementation of the Database interface.
  * @author BEAUVAIS ANTOINE <antoine.beauvais@etu.unistra.fr>
  */
 public class DatabaseSQLiteImpl implements DatabaseInterface {
@@ -33,6 +34,11 @@ public class DatabaseSQLiteImpl implements DatabaseInterface {
     private static final String SQL_GETCATEGORIES =
             "SELECT id, name FROM categories";
     
+    private static final String SQL_GETSTOCKS = 
+            "SELECT s.id AS id, s.item AS item, " +
+            "i.name AS name, s.quantity AS quantity FROM stocks s " +
+            "INNER JOIN items i ON s.item = i.ref";
+    
     private Connection conn;
     
     public DatabaseSQLiteImpl()
@@ -156,5 +162,29 @@ public class DatabaseSQLiteImpl implements DatabaseInterface {
         
         return res;
     }
+
+    @Override
+    public List<Stock> getStocks() {
+        ResultSet rs = this.query(SQL_GETSTOCKS);
+        if(rs == null)
+            return null;
+        
+        List<Stock> res = new ArrayList<>();
+        try {
+            while(rs.next())
+            {
+                Stock s = new Stock(rs.getInt("id"),
+                        rs.getInt("item"), rs.getString("name"),
+                        rs.getInt("quantity"));
+                res.add(s);
+            }
+        } catch (SQLException ex) {
+            Logger.getLogger(DatabaseSQLiteImpl.class.getName()).log(
+                    Level.SEVERE, "Failed to fetch results.", ex);
+            return null;
+        }
+        
+        return res;
+    }
     
 }
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/model/Category.java b/src/main/java/fr/unistra/sil/erp/back/model/Category.java
similarity index 95%
rename from src/main/java/fr/unistra/sil/erp/back/api/model/Category.java
rename to src/main/java/fr/unistra/sil/erp/back/model/Category.java
index d27c80f355e9293c48179d49d242fe38820c7c9c..9e0fd210faf8a5c5f3938578adcf9d8de04e055d 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/model/Category.java
+++ b/src/main/java/fr/unistra/sil/erp/back/model/Category.java
@@ -2,7 +2,7 @@
  * 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;
+package fr.unistra.sil.erp.back.model;
 
 /**
  * Category entity.
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/model/ErrorMessage.java b/src/main/java/fr/unistra/sil/erp/back/model/ErrorMessage.java
similarity index 90%
rename from src/main/java/fr/unistra/sil/erp/back/api/model/ErrorMessage.java
rename to src/main/java/fr/unistra/sil/erp/back/model/ErrorMessage.java
index b0b869bf2dd8765aedbf3b05b2a770513b76de0a..c7fac546bdce415764dab989a3718df8bcdf7486 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/model/ErrorMessage.java
+++ b/src/main/java/fr/unistra/sil/erp/back/model/ErrorMessage.java
@@ -2,7 +2,7 @@
  * 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;
+package fr.unistra.sil.erp.back.model;
 
 /**
  * JSON error 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/model/Item.java
similarity index 98%
rename from src/main/java/fr/unistra/sil/erp/back/api/model/Item.java
rename to src/main/java/fr/unistra/sil/erp/back/model/Item.java
index 0ff85122062e64fcbe5f0a6df58cc8de7ec16796..b37069dd569ff126f909c26bcde7feda0a1b6ecc 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/model/Item.java
+++ b/src/main/java/fr/unistra/sil/erp/back/model/Item.java
@@ -2,7 +2,7 @@
  * 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;
+package fr.unistra.sil.erp.back.model;
 
 import java.math.BigDecimal;
 
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/model/RegistryEntry.java b/src/main/java/fr/unistra/sil/erp/back/model/RegistryEntry.java
similarity index 82%
rename from src/main/java/fr/unistra/sil/erp/back/api/model/RegistryEntry.java
rename to src/main/java/fr/unistra/sil/erp/back/model/RegistryEntry.java
index 90d7ab7d67a46d8cee9973576cdbff6ebe4e7982..8cb06faaa8db023d4be7aa78248d2d69910e34ed 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/model/RegistryEntry.java
+++ b/src/main/java/fr/unistra/sil/erp/back/model/RegistryEntry.java
@@ -2,7 +2,7 @@
  * 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;
+package fr.unistra.sil.erp.back.model;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
@@ -16,19 +16,19 @@ public class RegistryEntry {
     private final int id;
     private final int transactionId;
     private final LocalDateTime dt;
-    private final String description;
+    private final int accountId;
     private final BigDecimal debit;
     private final BigDecimal credit;
     private final String remarks;
     
     public RegistryEntry(int id, int transactionId, LocalDateTime dt,
-            String description, BigDecimal debit, BigDecimal credit,
+            int accountId, BigDecimal debit, BigDecimal credit,
             String remarks)
     {
         this.id = id;
         this.transactionId = transactionId;
         this.dt = dt;
-        this.description = description;
+        this.accountId = accountId;
         this.debit = debit;
         this.credit = credit;
         this.remarks = remarks;
@@ -49,9 +49,9 @@ public class RegistryEntry {
         return this.dt;
     }
     
-    public String getDescription()
+    public int getAccountId()
     {
-        return this.description;
+        return this.accountId;
     }
     
     public BigDecimal getDebit()
diff --git a/src/main/java/fr/unistra/sil/erp/back/model/Stock.java b/src/main/java/fr/unistra/sil/erp/back/model/Stock.java
new file mode 100644
index 0000000000000000000000000000000000000000..05c950448c5e4a89406c296a2247d2177401cc36
--- /dev/null
+++ b/src/main/java/fr/unistra/sil/erp/back/model/Stock.java
@@ -0,0 +1,48 @@
+/*
+ * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
+ * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
+ */
+package fr.unistra.sil.erp.back.model;
+
+/**
+ * Representation of a stock entry.
+ * @author BEAUVAIS ANTOINE
+ */
+public class Stock {
+    
+    private final int id;
+    
+    private final int itemId;
+    
+    private final String itemName;
+    
+    private final int quantity;
+    
+    public Stock(int id, int itemId, String itemName, int quantity)
+    {
+        this.id = id;
+        this.itemId = itemId;
+        this.itemName = itemName;
+        this.quantity = quantity;
+    }
+    
+    public int getId()
+    {
+        return this.id;
+    }
+    
+    public int getItemId()
+    {
+        return this.itemId;
+    }
+    
+    public String getItemName()
+    {
+        return this.itemName;
+    }
+    
+    public int getQuantity()
+    {
+        return this.quantity;
+    }
+}
diff --git a/src/main/java/fr/unistra/sil/erp/back/model/Transaction.java b/src/main/java/fr/unistra/sil/erp/back/model/Transaction.java
new file mode 100644
index 0000000000000000000000000000000000000000..b4eadecb89526c673987a594a6b23b2c5cf71c3e
--- /dev/null
+++ b/src/main/java/fr/unistra/sil/erp/back/model/Transaction.java
@@ -0,0 +1,58 @@
+/*
+ * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
+ * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
+ */
+package fr.unistra.sil.erp.back.model;
+
+import java.math.BigDecimal;
+
+/**
+ * Representation of a transaction.
+ * @author BEAUVAIS ANTOINE
+ */
+public class Transaction {
+    
+    private final Integer item;
+    
+    private final Integer type;
+    
+    private final BigDecimal amount;
+    
+    private final Integer quantity;
+    
+    public Transaction(Integer item, Integer type, BigDecimal amount,
+            Integer quantity)
+    {
+        this.item = item;
+        this.type = type;
+        this.amount = amount;
+        this.quantity = quantity;
+    }
+    
+    public Integer getItem()
+    {
+        return this.item;
+    }
+    
+    public Integer getType()
+    {
+        return this.type;
+    }
+    
+    public BigDecimal getAmount()
+    {
+        return this.amount;
+    }
+    
+    public Integer getQuantity()
+    {
+        return this.quantity;
+    }
+    
+    public boolean checkIfValid()
+    {
+        return (this.item != null && this.type != null
+                && this.amount != null && this.quantity != null);
+    }
+    
+}