diff --git a/src/main/resources/REST/json/PresentationModifiedField.json b/src/main/resources/REST/json/PresentationModifiedField.json
new file mode 100644
index 0000000000000000000000000000000000000000..2d2545b25597054473a1c8de829c12b4a8df54a2
--- /dev/null
+++ b/src/main/resources/REST/json/PresentationModifiedField.json
@@ -0,0 +1,46 @@
+{
+  "@context": [
+    "https://www.w3.org/2018/credentials/v1",
+    "https://w3id.org/security/suites/jws-2020/v1",
+    "https://www.w3.org/2018/credentials/examples/v1"
+  ],
+  "id": "did:web:gaiax.vereign.com:tsa:policy:policy:example:returnDID:1.0:evaluation",
+  "proof": {
+    "created": "2022-07-21T14:28:09.071187173Z",
+    "jws": "eyJhbGciOiJKc29uV2ViU2lnbmF0dXJlMjAyMCIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..MEQCIFkavr6XpAYbdurBmQXNei-hI8WHAcnEYkZ6J3i4d3FKAiA4BtVCAixsAypaJ5dcBxn96Ju1OGfi7Kw1QRZMlMumhg",
+    "proofPurpose": "assertionMethod",
+    "type": "JsonWebSignature2020",
+    "verificationMethod": "did:web:gaiax.vereign.com:tsa:policy:policy:example:returnDID:1.0:evaluation#key1"
+  },
+  "type": "VerifiablePresentation",
+  "verifiableCredential": [
+    {
+      "@context": [
+        "https://www.w3.org/2018/credentials/v1",
+        "https://w3id.org/security/suites/jws-2020/v1",
+        "https://www.w3.org/2018/credentials/examples/v1"
+      ],
+      "credentialSubject": {
+        "allow": true,
+        "id": "example/examplePolicy/1.0"
+      },
+      "issuanceDate": "2022-07-21T10:24:36.203848291Z",
+      "issuer": "did:web:gaiax.vereign.com:tsa:policy:policy:example:returnDID:1.0:evaluation",
+      "type": "VerifiableCredential"
+    },
+    {
+      "@context": [
+        "https://www.w3.org/2018/credentials/v1",
+        "https://w3id.org/security/suites/jws-2020/v1",
+        "https://www.w3.org/2018/credentials/examples/v1"
+      ],
+      "credentialSubject": {
+        "allow": true,
+        "id": "example/ProofRequestResponse/1.0"
+      },
+      "issuanceDate": "2023-07-21T10:24:36.203861194Z",
+      "issuer": "did:web:gaiax.vereign.com:tsa:policy:policy:example:returnDID:1.0:evaluation",
+      "type": "VerifiableCredential"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/src/test/java/api/test/core/GeneralStepDefinitions.java b/src/test/java/api/test/core/GeneralStepDefinitions.java
index 3ace023c3f4bf6e4ab37c670de6b61fa3e5eaa10..4626ac7da8ba08f04e1943714295727bb45bda47 100644
--- a/src/test/java/api/test/core/GeneralStepDefinitions.java
+++ b/src/test/java/api/test/core/GeneralStepDefinitions.java
@@ -1464,4 +1464,8 @@ public class GeneralStepDefinitions extends BaseStepDefinitions {
         assertEquals("Expected values doesn't match actual: ", expectedResultAsList, actualResultAsString);
     }
 
+    @Then("I get the last response body and load it to the current request body")
+    public void iGetTheLastResponseBodyAndLoadItToTheCurrentRequestBody() {
+        currentRequest.setBody(getLastResponse().getBody());
+    }
 }
\ No newline at end of file
diff --git a/src/test/java/api/test/rest/tsa/signer/SignerStepDefinitions.java b/src/test/java/api/test/rest/tsa/signer/SignerStepDefinitions.java
index 0bdf245d21e958361db839be618e3e4a85194aea..ebdbb8adc250c707012f86a914a236bc59a08c2f 100644
--- a/src/test/java/api/test/rest/tsa/signer/SignerStepDefinitions.java
+++ b/src/test/java/api/test/rest/tsa/signer/SignerStepDefinitions.java
@@ -3,16 +3,25 @@ package api.test.rest.tsa.signer;
 import api.test.core.BaseStepDefinitions;
 import api.test.rest.RestGeneralStepDefinitions;
 import api.test.rest.RestSessionContainer;
+import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
 import core.*;
+import cucumber.api.java.en.And;
 import cucumber.api.java.en.Given;
 import cucumber.api.java.en.When;
+import cucumber.api.java.zh_cn.假如;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
+import java.util.HashMap;
+import java.util.Map;
+
 public class SignerStepDefinitions  extends BaseStepDefinitions {
     private static final Logger logger = LogManager.getLogger(RestGeneralStepDefinitions.class.getSimpleName());
     RestSessionContainer restSessionContainer;
     Request currentRequest;
+    private String body;
 
     public SignerStepDefinitions(RestSessionContainer restSessionContainer, Request currentRequest, DataContainer dataContainer) {
         super(dataContainer);
@@ -59,4 +68,12 @@ public class SignerStepDefinitions  extends BaseStepDefinitions {
         addRequest(currentRequest);
         addResponse(response);
     }
+
+    @When("I verify presentation proof via TSA Signer API")
+    public void iVerifyPresentationProofViaTSASignerAPI() {
+        currentRequest.setPath("/v1/presentation/verify");
+        Response response = RestClient.post(currentRequest);
+        addRequest(currentRequest);
+        addResponse(response);
+    }
 }
diff --git a/src/test/resources/features/tsa/signer/v1/presentation/verify/POST.feature b/src/test/resources/features/tsa/signer/v1/presentation/verify/POST.feature
new file mode 100644
index 0000000000000000000000000000000000000000..4697bf4fa6e38d42c8b1497abf7f29075138ccf0
--- /dev/null
+++ b/src/test/resources/features/tsa/signer/v1/presentation/verify/POST.feature
@@ -0,0 +1,50 @@
+#Copyright (c) 2018 Vereign AG [https://www.vereign.com]
+#
+#This is free software: you can redistribute it and/or modify
+#it under the terms of the GNU Affero General Public License as
+#published by the Free Software Foundation, either version 3 of the
+#License, or (at your option) any later version.
+#
+#This program is distributed in the hope that it will be useful,
+#but WITHOUT ANY WARRANTY; without even the implied warranty of
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#GNU Affero General Public License for more details.
+#
+#You should have received a copy of the GNU Affero General Public License
+#along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+#https://gaiax.vereign.com/tsa/signer/v1/presentation/verify
+#Author: Georgi Michev georgi.michev@vereign.com
+
+@rest @all @tsa @signer
+Feature: API - TSA - Signer presentation verify - v1/presentation/verify POST
+  As user
+  I want to verify a presentation
+  So I know it is valid
+
+  Background:
+    Given we are testing the TSA Signer Api
+
+  Scenario: TSA - verify presentation proof - Positive
+    When I load the request from json {/REST/json/Presentation.json}
+    When I create presentation proof via TSA Signer API
+    And the status code should be {200}
+    And the response is valid according to the {Signer_PresentationProof_schema.json} REST schema
+    And the field {proof.verificationMethod} has the value {did:web:gaiax.vereign.com:tsa:policy:policy:example:returnDID:1.0:evaluation#key1}
+    Then I get the last response body and load it to the current request body
+    And I verify presentation proof via TSA Signer API
+    And the status code should be {200}
+    And the field {valid} has the value {true}
+
+  @negative
+  Scenario: TSA - verify presentation proof with modified field - Negative
+    When I load the request from json {/REST/json/Presentation.json}
+    When I create presentation proof via TSA Signer API
+    And the status code should be {200}
+    And the response is valid according to the {Signer_PresentationProof_schema.json} REST schema
+    And the field {proof.verificationMethod} has the value {did:web:gaiax.vereign.com:tsa:policy:policy:example:returnDID:1.0:evaluation#key1}
+    Then I get the last response body and load it to the current request body
+    When I load the request from json {/REST/json/PresentationModifiedField.json}
+    And I verify presentation proof via TSA Signer API
+    And the status code should be {400}
+    And the field {message} has the value {check embedded proof: check linked data proof: ecdsa: invalid signature}