Upload Bank Statement for Analysis
Upload a PDF or scanned bank statement to begin automated analysis. Supports statements from all major Indian banks.
curl -X POST "https://production.deepvue.tech/v1/bsa/upload" \
-H "Authorization: Bearer YOUR_API_TOKEN (JWT)" \
-H "x-api-key: YOUR_API_KEY" \
--form files=["example_string"] \
--form entity_name=John Doe \
--form entity_type=example_string \
--form account_number=example_string \
--form account_type=example_string \
--form bank_code=example_string \
--form file_password=example_string \
--form webhook_url=example_string
import requests
import json
url = "https://production.deepvue.tech/v1/bsa/upload"
headers = {
"Authorization": "Bearer YOUR_API_TOKEN (JWT)",
"x-api-key": "YOUR_API_KEY"
}
data = {
"files": "["example_string"]",
"entity_name": "John Doe",
"entity_type": "example_string",
"account_number": "example_string",
"account_type": "example_string",
"bank_code": "example_string",
"file_password": "example_string",
"webhook_url": "example_string"
}
response = requests.post(url, headers=headers, data=data)
print(response.json())
const formData = new FormData();
formData.append("files", "["example_string"]");
formData.append("entity_name", "John Doe");
formData.append("entity_type", "example_string");
formData.append("account_number", "example_string");
formData.append("account_type", "example_string");
formData.append("bank_code", "example_string");
formData.append("file_password", "example_string");
formData.append("webhook_url", "example_string");
const response = await fetch("https://production.deepvue.tech/v1/bsa/upload", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_TOKEN (JWT)",
"x-api-key": "YOUR_API_KEY"
},
body: formData
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"bytes"
"mime/multipart"
)
func main() {
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
writer.WriteField("files", "["example_string"]")
writer.WriteField("entity_name", "John Doe")
writer.WriteField("entity_type", "example_string")
writer.WriteField("account_number", "example_string")
writer.WriteField("account_type", "example_string")
writer.WriteField("bank_code", "example_string")
writer.WriteField("file_password", "example_string")
writer.WriteField("webhook_url", "example_string")
writer.Close()
req, err := http.NewRequest("POST", "https://production.deepvue.tech/v1/bsa/upload", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN (JWT)")
req.Header.Set("x-api-key", "YOUR_API_KEY")
req.Header.Set("Content-Type", writer.FormDataContentType())
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://production.deepvue.tech/v1/bsa/upload')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer YOUR_API_TOKEN (JWT)'
request['x-api-key'] = 'YOUR_API_KEY'
request.set_form([
["files", "["example_string"]"],
["entity_name", "John Doe"],
["entity_type", "example_string"],
["account_number", "example_string"],
["account_type", "example_string"],
["bank_code", "example_string"],
["file_password", "example_string"],
["webhook_url", "example_string"]
], 'multipart/form-data')
response = http.request(request)
puts response.body
{
"code": 201,
"timestamp": 1744185415580,
"transaction_id": "17e04494-b89a-4100-9f6e-a69625363232",
"sub_code": "REQUEST_ACCEPTED",
"message": "File successfully Submitted.",
"data": {
"referenceId": "04b603f0-aa96-4e7b-8123-6b0e494640eb"
}
}
{
"detail": "Inactive client_id"
}
{
"detail": "Not authenticated"
}
{
"detail": "Not a valid token"
}
{
"code": 422,
"timestamp": 1744141306534,
"transaction_id": "8c081864-09f6-44fc-8800-e176940c74f6",
"sub_code": "INCORRECT_PAYLOAD",
"message": "EntityType, AccountNumber, AccountType, and BankCode are mandatory."
}
{
"code": 422,
"timestamp": 1744141306674,
"transaction_id": "9a79832a-9372-4fa7-a246-df175c4117fa",
"sub_code": "INCORRECT_FILE_PASSWORD",
"message": "Incorrect File Password."
}
{
"code": 422,
"timestamp": 1744141306534,
"transaction_id": "e88c84ba-d98e-48ae-afa2-9ac490685054",
"sub_code": "INCORRECT_PAYLOAD_ENTTYPE",
"message": "Invalid Entity Type. Please enter a valid entity type."
}
{
"code": 422,
"timestamp": 1744141306674,
"transaction_id": "63e200b4-2c05-4f16-9eb7-70fcd0bd8978",
"sub_code": "INCORRECT_PAYLOAD_ACCNO",
"message": "Incorrect Account Number."
}
{
"code": 422,
"timestamp": 1744141306534,
"transaction_id": "92179b35-084e-40a4-99c2-33961982dd46",
"sub_code": "INCORRECT_PAYLOAD_ACCTYPE",
"message": "Invalid Account Type. Please enter a valid account type."
}
{
"code": 422,
"timestamp": 1744141306674,
"transaction_id": "5b042f33-4e01-43d1-8db6-59c6ed2afb16",
"sub_code": "INVALID_INPUT_ACCTYPE_NOT_FOUND",
"message": "Account Type not available in file."
}
{
"code": 422,
"timestamp": 1743779806782,
"transaction_id": "f5c9af2e1cea485b8735b084c83074a7",
"sub_code": "INVALID_INPUT_ENTNAME_NOT_FOUND",
"message": "Entity Name not available in file.",
"data": {
"referenceId": "e1ce86a8-2a0b-4eb0-9908-35216c470a74"
}
}
{
"code": 422,
"timestamp": 1743779806782,
"transaction_id": "f5c9af2e1cea485b8735b084c83074a7",
"sub_code": "INVALID_INPUT_ACCNO_NOT_FOUND",
"message": "Account Number not available in file."
}
{
"code": 422,
"timestamp": 1743779806782,
"transaction_id": "44484f9f72e145188f74aea8410f6fab",
"sub_code": "INVALID_INPUT_FILE_FORMAT",
"message": "Invalid file type: Please select a valid file type (PDF/XML)"
}
{
"code": 422,
"timestamp": 1743779806782,
"transaction_id": "af36c045372f4e1e9e3681a0f0051dc7",
"sub_code": "INVALID_INPUT_UNABLE_TO_PROCESS",
"message": "The uploaded file does not meet the criteria. Please upload digital PDF file."
}
{
"code": 422,
"timestamp": 1743779806782,
"transaction_id": "af36c045372f4e1e9e3681a0f0051dc7",
"sub_code": "INVALID_INPUT_FILE_MODIFIED",
"message": "Input files seem to be modified."
}
{
"code": 201,
"timestamp": 1744124038339,
"transaction_id": "4eba4a7b-b2a4-4942-82bd-728459162989",
"sub_code": "INTERNAL_SERVER_ERROR",
"message": "INTERNAL_SERVER_ERROR."
}
{
"detail": "Request to bank statement analysis service timed out. Please try again later."
}
/v1/bsa/upload
ACCESS_TOKEN generated from the authorize endpoint. Should be included in the header as Bearer .
The CLIENT_SECRET provided to you. This header parameter is required for authentication purposes.
The media type of the request body
Upload bank statement files (PDF)
Name of the account holder
Type of entity. Enum values: Individual, Company, Partnership, Sole_Propriotership
Bank account number
Type of account. Enum values: Savings, Current, Cash_Credit, Over_Draft
Bank code as mentioned in the list of supported bank codes
Password for password protected PDFs
Your webhook URL where you wish to receive the analysed report
Request Preview
Response
Response will appear here after sending the request
Authentication
Bearer token (JWT). ACCESS_TOKEN generated from the authorize endpoint. Should be included in the header as Bearer .
API Key for authentication. The CLIENT_SECRET provided to you. This header parameter is required for authentication purposes.
Body
Upload bank statement files (PDF)
Name of the account holder
Type of entity. Enum values: Individual, Company, Partnership, Sole_Propriotership
Bank account number
Type of account. Enum values: Savings, Current, Cash_Credit, Over_Draft
Bank code as mentioned in the list of supported bank codes
Password for password protected PDFs
Your webhook URL where you wish to receive the analysed report
Responses
Overview
This API enables you to upload bank statement data for analysis. The API accepts bank statement files in PDF and XML formats. Password-protected PDFs are supported when you provide the corresponding password parameter.
Required fields include entity name, entity type (Individual, Company, Partnership, Sole_Proprietorship), account number, account type (Savings, Current, Cash_Credit, Over_Draft), and bank code. Optional parameters include file password and webhook URL for asynchronous result delivery.
You must reference the complete list of Bank Codes before uploading statements. Refer to the Bank Codes reference for valid values.
You need an authorized access token to access any of the Platform APIs. One access token is valid for only 24 hours. After expiration, you can renew the token by using the Authorize endpoint to receive a fresh access token.
Last updated 4 weeks ago
Built with Documentation.AI