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",
"code": "request_failed",
"type": "invalid_request_error"
}{
"message": "authentication Failed",
"code": "request_failed",
"type": "authentication_error"
}{
"message": "something is not found",
"code": "somethind_not_found",
"type": "invalid_request_error"
}{
"message": "order with same id is already present",
"code": "order_already_exists",
"type": "invalid_request_error"
}{
"message": "something is not found",
"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",
"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",
"code": "request_failed",
"type": "invalid_request_error"
}{
"message": "authentication Failed",
"code": "request_failed",
"type": "authentication_error"
}{
"message": "something is not found",
"code": "somethind_not_found",
"type": "invalid_request_error"
}{
"message": "order with same id is already present",
"code": "order_already_exists",
"type": "invalid_request_error"
}{
"message": "something is not found",
"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",
"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 Body to Create Terminal for SPOS
Request body to create a terminal
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
Terminal created
Create terminal response object
Was this page helpful?