curl --request POST \
--url https://api.casparser.in/v4/generate \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"email": "user@example.com",
"from_date": "2023-01-01",
"to_date": "2023-12-31",
"password": "Abcdefghi12$",
"pan_no": "ABCDE1234F"
}
'import requests
url = "https://api.casparser.in/v4/generate"
payload = {
"email": "user@example.com",
"from_date": "2023-01-01",
"to_date": "2023-12-31",
"password": "Abcdefghi12$",
"pan_no": "ABCDE1234F"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: 'user@example.com',
from_date: '2023-01-01',
to_date: '2023-12-31',
password: 'Abcdefghi12$',
pan_no: 'ABCDE1234F'
})
};
fetch('https://api.casparser.in/v4/generate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.casparser.in/v4/generate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'email' => 'user@example.com',
'from_date' => '2023-01-01',
'to_date' => '2023-12-31',
'password' => 'Abcdefghi12$',
'pan_no' => 'ABCDE1234F'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.casparser.in/v4/generate"
payload := strings.NewReader("{\n \"email\": \"user@example.com\",\n \"from_date\": \"2023-01-01\",\n \"to_date\": \"2023-12-31\",\n \"password\": \"Abcdefghi12$\",\n \"pan_no\": \"ABCDE1234F\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.casparser.in/v4/generate")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"user@example.com\",\n \"from_date\": \"2023-01-01\",\n \"to_date\": \"2023-12-31\",\n \"password\": \"Abcdefghi12$\",\n \"pan_no\": \"ABCDE1234F\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.casparser.in/v4/generate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"user@example.com\",\n \"from_date\": \"2023-01-01\",\n \"to_date\": \"2023-12-31\",\n \"password\": \"Abcdefghi12$\",\n \"pan_no\": \"ABCDE1234F\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"msg": "CAS request submitted. Check email shortly."
}{
"status": "failed",
"msg": "Invalid PDF file or password."
}{
"status": "failed",
"msg": "Authentication failed: API key is missing. Please provide a valid API key in the x-api-key header."
}{
"status": "failed",
"msg": "Invalid PDF file or password."
}CAS Generator (Email Mailback)
Generate a mutual fund CAS statement via email mailback. The CAS PDF will be sent to the investor’s email.
KFintech and CAMS have a mutual partnership for data sharing and consolidation, so this endpoint retrieves mutual fund data from both RTAs, covering all mutual funds in India.
This is an async operation - the investor receives the CAS via email within a few minutes.
By default, a Detailed CAS is generated, which includes the complete transaction history. The parsing layer supports all statement types (Detailed, Summary, etc.), but generation always requests the Detailed variant for maximum data coverage.
curl --request POST \
--url https://api.casparser.in/v4/generate \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"email": "user@example.com",
"from_date": "2023-01-01",
"to_date": "2023-12-31",
"password": "Abcdefghi12$",
"pan_no": "ABCDE1234F"
}
'import requests
url = "https://api.casparser.in/v4/generate"
payload = {
"email": "user@example.com",
"from_date": "2023-01-01",
"to_date": "2023-12-31",
"password": "Abcdefghi12$",
"pan_no": "ABCDE1234F"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: 'user@example.com',
from_date: '2023-01-01',
to_date: '2023-12-31',
password: 'Abcdefghi12$',
pan_no: 'ABCDE1234F'
})
};
fetch('https://api.casparser.in/v4/generate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.casparser.in/v4/generate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'email' => 'user@example.com',
'from_date' => '2023-01-01',
'to_date' => '2023-12-31',
'password' => 'Abcdefghi12$',
'pan_no' => 'ABCDE1234F'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.casparser.in/v4/generate"
payload := strings.NewReader("{\n \"email\": \"user@example.com\",\n \"from_date\": \"2023-01-01\",\n \"to_date\": \"2023-12-31\",\n \"password\": \"Abcdefghi12$\",\n \"pan_no\": \"ABCDE1234F\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.casparser.in/v4/generate")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"user@example.com\",\n \"from_date\": \"2023-01-01\",\n \"to_date\": \"2023-12-31\",\n \"password\": \"Abcdefghi12$\",\n \"pan_no\": \"ABCDE1234F\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.casparser.in/v4/generate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"user@example.com\",\n \"from_date\": \"2023-01-01\",\n \"to_date\": \"2023-12-31\",\n \"password\": \"Abcdefghi12$\",\n \"pan_no\": \"ABCDE1234F\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"msg": "CAS request submitted. Check email shortly."
}{
"status": "failed",
"msg": "Invalid PDF file or password."
}{
"status": "failed",
"msg": "Authentication failed: API key is missing. Please provide a valid API key in the x-api-key header."
}{
"status": "failed",
"msg": "Invalid PDF file or password."
}Authorizations
Your API key for authentication.
Use sandbox-with-json-responses as Sandbox key.
Body
Email address to receive the CAS document
"user@example.com"
Start date (YYYY-MM-DD)
"2023-01-01"
End date (YYYY-MM-DD)
"2023-12-31"
Password for the PDF
"Abcdefghi12$"
PAN number (optional)
"ABCDE1234F"
Was this page helpful?

