curl --request POST \
--url https://sandbox.cashfree.com/pg/terminal/transactions \
--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 '
{
"cf_order_id": "12345",
"cf_terminal_id": 54321,
"payment_method": "LINK",
"terminal_phone_no": "9898989898",
"add_invoice": false
}
'import requests
url = "https://sandbox.cashfree.com/pg/terminal/transactions"
payload = {
"cf_order_id": "12345",
"cf_terminal_id": 54321,
"payment_method": "LINK",
"terminal_phone_no": "9898989898",
"add_invoice": False
}
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({
cf_order_id: '12345',
cf_terminal_id: 54321,
payment_method: 'LINK',
terminal_phone_no: '9898989898',
add_invoice: false
})
};
fetch('https://sandbox.cashfree.com/pg/terminal/transactions', 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/transactions",
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([
'cf_order_id' => '12345',
'cf_terminal_id' => 54321,
'payment_method' => 'LINK',
'terminal_phone_no' => '9898989898',
'add_invoice' => false
]),
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/transactions"
payload := strings.NewReader("{\n \"cf_order_id\": \"12345\",\n \"cf_terminal_id\": 54321,\n \"payment_method\": \"LINK\",\n \"terminal_phone_no\": \"9898989898\",\n \"add_invoice\": false\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/transactions")
.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 \"cf_order_id\": \"12345\",\n \"cf_terminal_id\": 54321,\n \"payment_method\": \"LINK\",\n \"terminal_phone_no\": \"9898989898\",\n \"add_invoice\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.cashfree.com/pg/terminal/transactions")
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 \"cf_order_id\": \"12345\",\n \"cf_terminal_id\": 54321,\n \"payment_method\": \"LINK\",\n \"terminal_phone_no\": \"9898989898\",\n \"add_invoice\": false\n}"
response = http.request(request)
puts response.read_body{
"cf_payment_id": 42887,
"payment_amount": 10,
"payment_method": "LINK",
"payment_url": "https://payments-test.cashfree.com/order/#4jWjotaRWEizB1BiCtPf",
"qrcode": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAABlBMVEX///8AAABVwtN+AAACWklEQVR42uyZPY7sIBCEy3JAyBE4Chdb+UfvYhyFIxASINdTNZ6dWc3mNu8NgbWyvw1a3dVdzeBzPue/PBNJHo7wB2LDWoCwl6i3aSCgAlgQyQNgXnyqWEsE4IcCAouAApcapoIq3rHdDnBpLhM5ZwCOexkV0JfUwobI/GuYNwdUUY5zWRxhugDwVnIXA128qfm9xtnK/ld13xvoxyX2+FYmx+29nd4cmCrmspLNb6ooMtWweZLbM5s3AAL8ZhVlFe8tilhD+45iCAANC3rLN/E6VZPjUACAXkx+r33o2rv60PkYwEQ2qUHjIM3cSQv4R4+6AZDnU7cVM1miy1Jw/hoJgMvyD/pWo0Vdw6FcDAWYund9W0lmc0ETiZ/yvxqgDLFakL2WPegtiGUgAC43vwHNBgMPb7GOBshmakN52GayYjr70G0AwGZW6uM37Ke3f86sIYCpgmWt0RRMNdIKeCovaSBABmivscmvWSOFrJDLX89sXg5AqwaZulXr40qPsH030gEAzSxu0oXsTrAwD69GOhIA9dCVJuw050l5WlRRL8m6HDCTYw+o0asT8dC/sQwEQDKgXJrsgfykxPuqi0EA2UwZTrUdAeHwtmylcQDTxWGTl6mFnanHnZ/e/nrgsXebRzB/06fw6xp1f+BxB2LLyZxX5WKXwZ/LSMB5y6q/ure3PLm3u+JrgfN+sotXachGffnhABWTjE22u+xFM+tnmIMA5jphhlPqruHPd0XdAbCK0sZq06sA4UB86VFDAOfvOM33XDCZK8arK74/8Dmf84+dvwEAAP//PizKiw+K9esAAAAASUVORK5CYII=",
"timeout": "300000"
}{
"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 Transaction
Use this API to create a new terminal transaction. To use this API you should first create an order using the Create Order API. Also, you need to enter the terminal details while creating the order and pass the same terminal information while creating a transaction using the below mentioned API.
curl --request POST \
--url https://sandbox.cashfree.com/pg/terminal/transactions \
--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 '
{
"cf_order_id": "12345",
"cf_terminal_id": 54321,
"payment_method": "LINK",
"terminal_phone_no": "9898989898",
"add_invoice": false
}
'import requests
url = "https://sandbox.cashfree.com/pg/terminal/transactions"
payload = {
"cf_order_id": "12345",
"cf_terminal_id": 54321,
"payment_method": "LINK",
"terminal_phone_no": "9898989898",
"add_invoice": False
}
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({
cf_order_id: '12345',
cf_terminal_id: 54321,
payment_method: 'LINK',
terminal_phone_no: '9898989898',
add_invoice: false
})
};
fetch('https://sandbox.cashfree.com/pg/terminal/transactions', 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/transactions",
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([
'cf_order_id' => '12345',
'cf_terminal_id' => 54321,
'payment_method' => 'LINK',
'terminal_phone_no' => '9898989898',
'add_invoice' => false
]),
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/transactions"
payload := strings.NewReader("{\n \"cf_order_id\": \"12345\",\n \"cf_terminal_id\": 54321,\n \"payment_method\": \"LINK\",\n \"terminal_phone_no\": \"9898989898\",\n \"add_invoice\": false\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/transactions")
.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 \"cf_order_id\": \"12345\",\n \"cf_terminal_id\": 54321,\n \"payment_method\": \"LINK\",\n \"terminal_phone_no\": \"9898989898\",\n \"add_invoice\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.cashfree.com/pg/terminal/transactions")
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 \"cf_order_id\": \"12345\",\n \"cf_terminal_id\": 54321,\n \"payment_method\": \"LINK\",\n \"terminal_phone_no\": \"9898989898\",\n \"add_invoice\": false\n}"
response = http.request(request)
puts response.read_body{
"cf_payment_id": 42887,
"payment_amount": 10,
"payment_method": "LINK",
"payment_url": "https://payments-test.cashfree.com/order/#4jWjotaRWEizB1BiCtPf",
"qrcode": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAABlBMVEX///8AAABVwtN+AAACWklEQVR42uyZPY7sIBCEy3JAyBE4Chdb+UfvYhyFIxASINdTNZ6dWc3mNu8NgbWyvw1a3dVdzeBzPue/PBNJHo7wB2LDWoCwl6i3aSCgAlgQyQNgXnyqWEsE4IcCAouAApcapoIq3rHdDnBpLhM5ZwCOexkV0JfUwobI/GuYNwdUUY5zWRxhugDwVnIXA128qfm9xtnK/ld13xvoxyX2+FYmx+29nd4cmCrmspLNb6ooMtWweZLbM5s3AAL8ZhVlFe8tilhD+45iCAANC3rLN/E6VZPjUACAXkx+r33o2rv60PkYwEQ2qUHjIM3cSQv4R4+6AZDnU7cVM1miy1Jw/hoJgMvyD/pWo0Vdw6FcDAWYund9W0lmc0ETiZ/yvxqgDLFakL2WPegtiGUgAC43vwHNBgMPb7GOBshmakN52GayYjr70G0AwGZW6uM37Ke3f86sIYCpgmWt0RRMNdIKeCovaSBABmivscmvWSOFrJDLX89sXg5AqwaZulXr40qPsH030gEAzSxu0oXsTrAwD69GOhIA9dCVJuw050l5WlRRL8m6HDCTYw+o0asT8dC/sQwEQDKgXJrsgfykxPuqi0EA2UwZTrUdAeHwtmylcQDTxWGTl6mFnanHnZ/e/nrgsXebRzB/06fw6xp1f+BxB2LLyZxX5WKXwZ/LSMB5y6q/ure3PLm3u+JrgfN+sotXachGffnhABWTjE22u+xFM+tnmIMA5jphhlPqruHPd0XdAbCK0sZq06sA4UB86VFDAOfvOM33XDCZK8arK74/8Dmf84+dvwEAAP//PizKiw+K9esAAAAASUVORK5CYII=",
"timeout": "300000"
}{
"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 a new terminal transaction.
cashfree order ID that was returned while creating an order.
mention the payment method used for the transaction. possible values - QR_CODE, LINK.
3 - 100Cashfree terminal ID, this is a required parameter when you do not provide the terminal phone number.
agent mobile number assigned to the terminal. this is a required parameter when you do not provide the cf_terminal_id.
10make it true to have request be sent to create a Dynamic GST QR Code.
Was this page helpful?