curl --request POST \
--url https://sandbox.cashfree.com/pg/terminal \
--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 '
{
"terminal_id": "someTerminalID",
"terminal_name": "Jane Doe",
"terminal_email": "john@cashfree.com",
"terminal_meta": null,
"terminal_type": "STOREFRONT",
"terminal_phone_no": "9876543210",
"terminal_note": "POS Vertical",
"terminal_address": "Bangalore"
}
'import requests
url = "https://sandbox.cashfree.com/pg/terminal"
payload = {
"terminal_id": "someTerminalID",
"terminal_name": "Jane Doe",
"terminal_email": "john@cashfree.com",
"terminal_meta": None,
"terminal_type": "STOREFRONT",
"terminal_phone_no": "9876543210",
"terminal_note": "POS Vertical",
"terminal_address": "Bangalore"
}
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({
terminal_id: 'someTerminalID',
terminal_name: 'Jane Doe',
terminal_email: 'john@cashfree.com',
terminal_meta: null,
terminal_type: 'STOREFRONT',
terminal_phone_no: '9876543210',
terminal_note: 'POS Vertical',
terminal_address: 'Bangalore'
})
};
fetch('https://sandbox.cashfree.com/pg/terminal', 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",
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([
'terminal_id' => 'someTerminalID',
'terminal_name' => 'Jane Doe',
'terminal_email' => 'john@cashfree.com',
'terminal_meta' => null,
'terminal_type' => 'STOREFRONT',
'terminal_phone_no' => '9876543210',
'terminal_note' => 'POS Vertical',
'terminal_address' => 'Bangalore'
]),
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"
payload := strings.NewReader("{\n \"terminal_id\": \"someTerminalID\",\n \"terminal_name\": \"Jane Doe\",\n \"terminal_email\": \"john@cashfree.com\",\n \"terminal_meta\": null,\n \"terminal_type\": \"STOREFRONT\",\n \"terminal_phone_no\": \"9876543210\",\n \"terminal_note\": \"POS Vertical\",\n \"terminal_address\": \"Bangalore\"\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")
.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 \"terminal_id\": \"someTerminalID\",\n \"terminal_name\": \"Jane Doe\",\n \"terminal_email\": \"john@cashfree.com\",\n \"terminal_meta\": null,\n \"terminal_type\": \"STOREFRONT\",\n \"terminal_phone_no\": \"9876543210\",\n \"terminal_note\": \"POS Vertical\",\n \"terminal_address\": \"Bangalore\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.cashfree.com/pg/terminal")
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 \"terminal_id\": \"someTerminalID\",\n \"terminal_name\": \"Jane Doe\",\n \"terminal_email\": \"john@cashfree.com\",\n \"terminal_meta\": null,\n \"terminal_type\": \"STOREFRONT\",\n \"terminal_phone_no\": \"9876543210\",\n \"terminal_note\": \"POS Vertical\",\n \"terminal_address\": \"Bangalore\"\n}"
response = http.request(request)
puts response.read_body{
"added_on": "023-10-12T11:12:39+05:30",
"cf_terminal_id": 1838,
"last_updated_on": "023-10-12T11:12:39+05:30",
"terminal_address": "Bangalore",
"terminal_email": "john@cashfree.com",
"terminal_id": "test",
"terminal_meta": {
"terminal_operator": "dev test"
},
"terminal_name": "john doe",
"terminal_note": "POS vertical",
"terminal_phone_no": 9876543214,
"terminal_status": "DOCS_AWAITED",
"terminal_type": "STOREFRONT"
}{
"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"
}Create Terminal
Use this API to create new terminals to use softPOS.
curl --request POST \
--url https://sandbox.cashfree.com/pg/terminal \
--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 '
{
"terminal_id": "someTerminalID",
"terminal_name": "Jane Doe",
"terminal_email": "john@cashfree.com",
"terminal_meta": null,
"terminal_type": "STOREFRONT",
"terminal_phone_no": "9876543210",
"terminal_note": "POS Vertical",
"terminal_address": "Bangalore"
}
'import requests
url = "https://sandbox.cashfree.com/pg/terminal"
payload = {
"terminal_id": "someTerminalID",
"terminal_name": "Jane Doe",
"terminal_email": "john@cashfree.com",
"terminal_meta": None,
"terminal_type": "STOREFRONT",
"terminal_phone_no": "9876543210",
"terminal_note": "POS Vertical",
"terminal_address": "Bangalore"
}
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({
terminal_id: 'someTerminalID',
terminal_name: 'Jane Doe',
terminal_email: 'john@cashfree.com',
terminal_meta: null,
terminal_type: 'STOREFRONT',
terminal_phone_no: '9876543210',
terminal_note: 'POS Vertical',
terminal_address: 'Bangalore'
})
};
fetch('https://sandbox.cashfree.com/pg/terminal', 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",
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([
'terminal_id' => 'someTerminalID',
'terminal_name' => 'Jane Doe',
'terminal_email' => 'john@cashfree.com',
'terminal_meta' => null,
'terminal_type' => 'STOREFRONT',
'terminal_phone_no' => '9876543210',
'terminal_note' => 'POS Vertical',
'terminal_address' => 'Bangalore'
]),
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"
payload := strings.NewReader("{\n \"terminal_id\": \"someTerminalID\",\n \"terminal_name\": \"Jane Doe\",\n \"terminal_email\": \"john@cashfree.com\",\n \"terminal_meta\": null,\n \"terminal_type\": \"STOREFRONT\",\n \"terminal_phone_no\": \"9876543210\",\n \"terminal_note\": \"POS Vertical\",\n \"terminal_address\": \"Bangalore\"\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")
.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 \"terminal_id\": \"someTerminalID\",\n \"terminal_name\": \"Jane Doe\",\n \"terminal_email\": \"john@cashfree.com\",\n \"terminal_meta\": null,\n \"terminal_type\": \"STOREFRONT\",\n \"terminal_phone_no\": \"9876543210\",\n \"terminal_note\": \"POS Vertical\",\n \"terminal_address\": \"Bangalore\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.cashfree.com/pg/terminal")
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 \"terminal_id\": \"someTerminalID\",\n \"terminal_name\": \"Jane Doe\",\n \"terminal_email\": \"john@cashfree.com\",\n \"terminal_meta\": null,\n \"terminal_type\": \"STOREFRONT\",\n \"terminal_phone_no\": \"9876543210\",\n \"terminal_note\": \"POS Vertical\",\n \"terminal_address\": \"Bangalore\"\n}"
response = http.request(request)
puts response.read_body{
"added_on": "023-10-12T11:12:39+05:30",
"cf_terminal_id": 1838,
"last_updated_on": "023-10-12T11:12:39+05:30",
"terminal_address": "Bangalore",
"terminal_email": "john@cashfree.com",
"terminal_id": "test",
"terminal_meta": {
"terminal_operator": "dev test"
},
"terminal_name": "john doe",
"terminal_note": "POS vertical",
"terminal_phone_no": 9876543214,
"terminal_status": "DOCS_AWAITED",
"terminal_type": "STOREFRONT"
}{
"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
Client app ID. You can find your app id in the Merchant Dashboard.
Client secret key. You can find your secret key in the Merchant Dashboard.
Headers
API version to be used.
Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
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.
Body
Request parameters to create new terminals to use softPOS.
merchantās internal terminal id.
3 - 100phone number assigned to the terminal.
10terminal name to be assigned by merchants.
3 - 100terminal email ID of the AGENT/STOREFRONT assigned by merchants.
1 - 100mention the terminal type. possible values - AGENT, STOREFRONT.
1 - 100address of the terminal. required for STOREFRONT.
1 - 100additional note for terminal.
1 - 100terminal metadata. required field for storefront.
Show child attributes
Show child attributes
Response
Success response for creating new terminals to use softPOS.
Terminal metadata, required field for storefront.
Show child attributes
Show child attributes
Was this page helpful?