diff --git a/SmartContracts/ProofOfExistence.sol b/SmartContracts/ProofOfExistence.sol
index 7b22d85cc179abf8692bf97057dc0cf101862d73..f9b9069e410d8e2d1cfc54719789fdd3226c7835 100644
--- a/SmartContracts/ProofOfExistence.sol
+++ b/SmartContracts/ProofOfExistence.sol
@@ -8,9 +8,16 @@ contract ProofOfExistence {
     mapping (uint256 => Dato) private hashstore;
 
 
-    function stamp(uint256 ots, uint256 file_hash) public {
-        if ( hashstore[ots] == 0 )
-            hashstore[ots] = Dato({blockNumber: block.number, hash: file_hash});
+    function stamp(uint256[] incoming) public {
+        uint256     len =   incoming.length;
+        uint256     i   =   0;
+        while ( i+1 < len )
+        {
+            uint256 ots         =   incoming[i++];
+            uint256 file_hash   =   incoming[i++];
+            if ( hashstore[ots] == 0 )
+                hashstore[ots] = Dato({blockNumber: block.number, hash: file_hash});
+        }
     }
 
     function verify(uint256 ots, uint256 file_hash) public view returns(bool){
diff --git a/api/app/managers.py b/api/app/managers.py
index 95b78fd0d6f1d6af26c3a09eda6cd0b750c3159e..a11b9910121905098a952f97f72f23384ffa2aee 100644
--- a/api/app/managers.py
+++ b/api/app/managers.py
@@ -52,7 +52,7 @@ class TimestampManager(models.Manager):
     def stamp(ots_hash, file_hash):
 
         contract = TimestampManager.get_current_contract()
-        return contract.functions.stamp(ots_hash, file_hash).transact({'from': Web3.toChecksumAddress(ACCOUNT_ADDRESS)})
+        return contract.functions.stamp([ots_hash, file_hash]).transact({'from': Web3.toChecksumAddress(ACCOUNT_ADDRESS)})
 
     @staticmethod
     def verify(contract_version, ots_hash, file_hash):