Skip to main content
POST
/
terminal
/
{cf_terminal_id}
/
docs
Upload Terminal Docs
curl --request POST \
  --url https://sandbox.cashfree.com/pg/terminal/{cf_terminal_id}/docs \
  --header 'Content-Type: application/json' \
  --header 'x-api-version: <x-api-version>' \
  --header 'x-client-id: <api-key>' \
  --header 'x-client-secret: <api-key>' \
  --data '
{
  "doc_type": "PHOTOGRAPH",
  "doc_value": "john",
  "file": null
}
'
import requests

url = "https://sandbox.cashfree.com/pg/terminal/{cf_terminal_id}/docs"

payload = {
    "doc_type": "PHOTOGRAPH",
    "doc_value": "john",
    "file": None
}
headers = {
    "x-api-version": "<x-api-version>",
    "x-client-id": "<api-key>",
    "x-client-secret": "<api-key>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
  method: 'POST',
  headers: {
    'x-api-version': '<x-api-version>',
    'x-client-id': '<api-key>',
    'x-client-secret': '<api-key>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({doc_type: 'PHOTOGRAPH', doc_value: 'john', file: null})
};

fetch('https://sandbox.cashfree.com/pg/terminal/{cf_terminal_id}/docs', 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://sandbox.cashfree.com/pg/terminal/{cf_terminal_id}/docs",
  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([
    'doc_type' => 'PHOTOGRAPH',
    'doc_value' => 'john',
    'file' => null
  ]),
  CURLOPT_HTTPHEADER => [
    "Content-Type: application/json",
    "x-api-version: <x-api-version>",
    "x-client-id: <api-key>",
    "x-client-secret: <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://sandbox.cashfree.com/pg/terminal/{cf_terminal_id}/docs"

	payload := strings.NewReader("{\n  \"doc_type\": \"PHOTOGRAPH\",\n  \"doc_value\": \"john\",\n  \"file\": null\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("x-api-version", "<x-api-version>")
	req.Header.Add("x-client-id", "<api-key>")
	req.Header.Add("x-client-secret", "<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://sandbox.cashfree.com/pg/terminal/{cf_terminal_id}/docs")
  .header("x-api-version", "<x-api-version>")
  .header("x-client-id", "<api-key>")
  .header("x-client-secret", "<api-key>")
  .header("Content-Type", "application/json")
  .body("{\n  \"doc_type\": \"PHOTOGRAPH\",\n  \"doc_value\": \"john\",\n  \"file\": null\n}")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://sandbox.cashfree.com/pg/terminal/{cf_terminal_id}/docs")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-api-version"] = '<x-api-version>'
request["x-client-id"] = '<api-key>'
request["x-client-secret"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"doc_type\": \"PHOTOGRAPH\",\n  \"doc_value\": \"john\",\n  \"file\": null\n}"

response = http.request(request)
puts response.read_body
[
  {
    "cf_terminal_id": 1838,
    "doc_type": "PHOTOGRAPH",
    "doc_value": "docs/20260/1838/ymGCq-GIRphoto1",
    "status": "ACTIVE"
  }
]
{
  "message": "bad URL, please check API documentation",
  "help": "Check latest errors and resolution from Merchant Dashboard API logs: https://bit.ly/4glEd0W Help Document: https://bit.ly/4eeZYO9",
  "code": "request_failed",
  "type": "invalid_request_error"
}
{
  "message": "authentication Failed",
  "code": "request_failed",
  "type": "authentication_error"
}
{
  "message": "something is not found",
  "help": "Check latest errors and resolution from Merchant Dashboard API logs: https://bit.ly/4glEd0W Help Document: https://bit.ly/4eeZYO9",
  "code": "something_not_found",
  "type": "invalid_request_error"
}
{
  "message": "order with same id is already present",
  "help": "Check latest errors and resolution from Merchant Dashboard API logs: https://bit.ly/4glEd0W Help Document: https://bit.ly/4eeZYO9",
  "code": "order_already_exists",
  "type": "invalid_request_error"
}
{
  "message": "something is not found",
  "help": "Check latest errors and resolution from Merchant Dashboard API logs: https://bit.ly/4glEd0W Help Document: https://bit.ly/4eeZYO9",
  "code": "request_invalid",
  "type": "idempotency_error"
}
{
  "message": "Too many requests from IP. Check headers",
  "code": "request_failed",
  "type": "rate_limit_error"
}
{
  "message": "internal Server Error",
  "help": "Check latest errors and resolution from Merchant Dashboard API logs: https://bit.ly/4glEd0W Help Document: https://bit.ly/4eeZYO9",
  "code": "internal_error",
  "type": "api_error"
}

Authorizations

x-client-id
string
header
required

Client app ID. You can find your app id in the Merchant Dashboard.

x-client-secret
string
header
required

Client secret key. You can find your secret key in the Merchant Dashboard.

Headers

x-api-version
string
default:2025-01-01
required

API version to be used.

x-request-id
string

Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.

x-idempotency-key
string<UUID>

An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions.

Path Parameters

cf_terminal_id
integer
required

Provide the Cashfree terminal ID for which the details have to be updated.

Body

application/json

Request parameters to upload the terminal documents.

doc_type
string
required

Mention the document type you are uploading. Possible values - ADDRESSPROOF, PHOTOGRAPH.

doc_value
string
required

Enter the display name of the uploaded file.

file
string
required

Select the document that should be uploaded or provide the path of that file. You cannot upload a file that is more than 2MB in size.

Response

Success response for uploading the terminal documents.

cf_terminal_id
integer
doc_type
string
doc_value
string
status
string