Let's start by converting the escaped string to actual JSON and format it, so we can see the structure.
[{
"id":3,
"tType":"payment",
"referenceNo":"1533",
"date":"2020-03-17T00:00:00",
"amount":100000.00,
"debit":"2205",
"credit":"IN",
"remarks":"TR No 855-1533/76/7-2",
"status":"read count 21"
},
{
"id":4,
"Type":"payment",
"referenceNo":"1579",
"date":"2020-03-17T00:00:00",
"amount":80000.00,
"debit":"50001",
"credit":"IA"
It's now obvious that the string is incomplete.
Also, your contract class is for an object with a property "Id" containing the list of other objects, but there is nothing like that in your JSON. And then you don't use it for deserialization anyway; your code is for deserialization of a single WebApiContract object.