Schedule Payment
An endpoint to schedule recurring payments using the tokenized card of the customer and registration reference generated from the card registration endpoint.
POST /schedule
Send the payment for the transaction
HEADER PARAMETERS
Content-Type
optional
string
Default content type of the API.
Authorization
required
string
Unique identifier of the integrator.
Content-Type
optional
string
Default content type of the API.
Authorization
required
string
Unique identifier of the integrator.
REQUEST BODY SCHEMA: application/json
payload
required
string
Generated JSON Web Token (JWT) from transaction data signed with integrator's secret using HS256 algorithm.
Secret
issued key used for signing the payload data
Transaction Data
is a JSON-formatted data as shown below
payload
required
string
Generated JSON Web Token (JWT) from transaction data signed with integrator's secret using HS256 algorithm.
Secret
issued key used for signing the payload data
Transaction Data
is a JSON-formatted data as shown below
{
"data": {
"credit_card": {
"reference": "d9f51617-0c01-470b-b57e-5ffa3a4b0de9"
},
"schedule": {
"second": "0",
"minute": "*",
"hour": "*",
"day_of_week": "?",
"day_of_month": "*",
"month": "*"
},
"payment": {
"description": "Payment for a product",
"amount": 10,
"currency": "USD",
"merchant_reference_id": "INV-100001_TEST",
"other_references": ["REF1", "REF2"]
},
"route": {
"callback_url": "https://tlpe.io/thankyou",
"notify_user": true
},
"time_offset": "+08:00",
"customer_ip_address": "0.0.0.0"
}
}
See API Reference > Schedule Data and API Reference for a guided requirement.
Request Samples
curl
-X POST "https://test-api.tlpe.io/schedule" \
-H "Content-Type: application/json" \
-H "Authorization: {integratorToken}" \
-d "{
"payload": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjp7InRpbWVfb2Zmc2V0IjoiKzA4OjAwIiwiY3JlZGl0X2NhcmQiOnsicmVmZXJlbmNlIjoiZDk4ZDNkMGUtZjA2Ni00NWYzLWI5MjAtNjBiYTkwNTU5NjllIn0sInNjaGVkdWxlIjp7InNlY29uZCI6IjAiLCJtaW51dGUiOiIwIiwiaG91ciI6IjAiLCJkYXlfb2Zfd2VlayI6Ij8iLCJkYXlfb2ZfbW9udGgiOiIxNyIsIm1vbnRoIjoiKiJ9LCJwYXltZW50Ijp7ImRlc2NyaXB0aW9uIjoiVGVzdCB0cmFuc2FjdGlvbiIsImFtb3VudCI6IjEiLCJjdXJyZW5jeSI6IlBIUCIsIm1lcmNoYW50X3JlZmVyZW5jZV9pZCI6IlRMUEUtMjUzNjQxMTMyNjEtQ1MiLCJvdGhlcl9yZWZlcmVuY2VzIjpbIlJFRjEiLCJSRUYyIl19LCJyb3V0ZSI6eyJjYWxsYmFja191cmwiOiJodHRwczovL3RscGUuaW8vdGhhbmt5b3UiLCJub3RpZnlfdXNlciI6dHJ1ZX19fQ.8nhdm3RLBurapL83sLXR1PLTt2t-xKwOLj4GmBmsC5k"
}"
public Dictionary<string, dynamic> Schedule()
{
Dictionary<string, dynamic> responseData;
string payload = "{\"payload\":\"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjp7InRpbWVfb2Zmc2V0IjoiKzA4OjAwIiwiY3JlZGl0X2NhcmQiOnsicmVmZXJlbmNlIjoiZDk4ZDNkMGUtZjA2Ni00NWYzLWI5MjAtNjBiYTkwNTU5NjllIn0sInNjaGVkdWxlIjp7InNlY29uZCI6IjAiLCJtaW51dGUiOiIwIiwiaG91ciI6IjAiLCJkYXlfb2Zfd2VlayI6Ij8iLCJkYXlfb2ZfbW9udGgiOiIxNyIsIm1vbnRoIjoiKiJ9LCJwYXltZW50Ijp7ImRlc2NyaXB0aW9uIjoiVGVzdCB0cmFuc2FjdGlvbiIsImFtb3VudCI6IjEiLCJjdXJyZW5jeSI6IlBIUCIsIm1lcmNoYW50X3JlZmVyZW5jZV9pZCI6IlRMUEUtMjUzNjQxMTMyNjEtQ1MiLCJvdGhlcl9yZWZlcmVuY2VzIjpbIlJFRjEiLCJSRUYyIl19LCJyb3V0ZSI6eyJjYWxsYmFja191cmwiOiJodHRwczovL3RscGUuaW8vdGhhbmt5b3UiLCJub3RpZnlfdXNlciI6dHJ1ZX19fQ.8nhdm3RLBurapL83sLXR1PLTt2t-xKwOLj4GmBmsC5k\"}";
string url = "https://test-api.tlpe.io/schedule";
byte[] buffer = Encoding.ASCII.GetBytes(payload);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "POST";
request.Headers["Authorization"] = "{integratorToken}";
request.ContentType = "application/json";
Stream PostData = request.GetRequestStream();
PostData.Write(buffer, 0, buffer.Length);
PostData.Close();
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
StringReader sr = new StringReader(reader.ReadToEnd());
JsonReader jreader = new JsonTextReader(sr);
JsonSerializer jss = new JsonSerializer();
responseData = jss.Deserialize<Dictionary<string, dynamic>>(jreader);
reader.Close();
responseStream.Close();
}
return responseData;
}
Public Function Schedule() As Dictionary(Of String, Object)
Dim payload As String = "{""payload"":""eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjp7InRpbWVfb2Zmc2V0IjoiKzA4OjAwIiwiY3JlZGl0X2NhcmQiOnsicmVmZXJlbmNlIjoiZDk4ZDNkMGUtZjA2Ni00NWYzLWI5MjAtNjBiYTkwNTU5NjllIn0sInNjaGVkdWxlIjp7InNlY29uZCI6IjAiLCJtaW51dGUiOiIwIiwiaG91ciI6IjAiLCJkYXlfb2Zfd2VlayI6Ij8iLCJkYXlfb2ZfbW9udGgiOiIxNyIsIm1vbnRoIjoiKiJ9LCJwYXltZW50Ijp7ImRlc2NyaXB0aW9uIjoiVGVzdCB0cmFuc2FjdGlvbiIsImFtb3VudCI6IjEiLCJjdXJyZW5jeSI6IlBIUCIsIm1lcmNoYW50X3JlZmVyZW5jZV9pZCI6IlRMUEUtMjUzNjQxMTMyNjEtQ1MiLCJvdGhlcl9yZWZlcmVuY2VzIjpbIlJFRjEiLCJSRUYyIl19LCJyb3V0ZSI6eyJjYWxsYmFja191cmwiOiJodHRwczovL3RscGUuaW8vdGhhbmt5b3UiLCJub3RpZnlfdXNlciI6dHJ1ZX19fQ.8nhdm3RLBurapL83sLXR1PLTt2t-xKwOLj4GmBmsC5k""}"
Dim url As String = "https://test-api.tlpe.io/schedule"
Dim request As WebRequest = WebRequest.Create(url)
request.Method = "POST"
request.Headers.Add("Authorization", "{integratorToken}")
request.ContentType = "application/json"
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(payload)
request.ContentLength = byteArray.Length
Dim dataStream As Stream = request.GetRequestStream()
dataStream.Write(byteArray, 0, byteArray.Length)
dataStream.Close()
Dim response As WebResponse = request.GetResponse()
Dim responseStream = response.GetResponseStream()
Dim reader As New StreamReader(responseStream)
Dim responseReader As StringReader = New StringReader(reader.ReadToEnd())
Dim jreader As JsonReader = New JsonTextReader(responseReader)
reader.Close()
responseStream.Close()
response.Close()
Dim jss As New JsonSerializer()
Dim responseData As Dictionary(Of String, Object) = jss.Deserialize(Of Dictionary(Of String, Object))(jreader)
Return responseData
End Function
import http.client
import json
conn = http.client.HTTPSConnection('test-api.tlpe.io')
payload = json.dumps({'payload': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjp7InRpbWVfb2Zmc2V0IjoiKzA4OjAwIiwiY3JlZGl0X2NhcmQiOnsicmVmZXJlbmNlIjoiZDk4ZDNkMGUtZjA2Ni00NWYzLWI5MjAtNjBiYTkwNTU5NjllIn0sInNjaGVkdWxlIjp7InNlY29uZCI6IjAiLCJtaW51dGUiOiIwIiwiaG91ciI6IjAiLCJkYXlfb2Zfd2VlayI6Ij8iLCJkYXlfb2ZfbW9udGgiOiIxNyIsIm1vbnRoIjoiKiJ9LCJwYXltZW50Ijp7ImRlc2NyaXB0aW9uIjoiVGVzdCB0cmFuc2FjdGlvbiIsImFtb3VudCI6IjEiLCJjdXJyZW5jeSI6IlBIUCIsIm1lcmNoYW50X3JlZmVyZW5jZV9pZCI6IlRMUEUtMjUzNjQxMTMyNjEtQ1MiLCJvdGhlcl9yZWZlcmVuY2VzIjpbIlJFRjEiLCJSRUYyIl19LCJyb3V0ZSI6eyJjYWxsYmFja191cmwiOiJodHRwczovL3RscGUuaW8vdGhhbmt5b3UiLCJub3RpZnlfdXNlciI6dHJ1ZX19fQ.8nhdm3RLBurapL83sLXR1PLTt2t-xKwOLj4GmBmsC5k'})
headers = {'Authorization': '{integratorToken}',
'Content-Type': 'application/json'}
conn.request('POST', '/schedule', payload, headers)
res = conn.getresponse()
data = res.read()
print data.decode('utf-8')
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://test-api.tlpe.io/schedule',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => '{
"payload":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjp7InRpbWVfb2Zmc2V0IjoiKzA4OjAwIiwiY3JlZGl0X2NhcmQiOnsicmVmZXJlbmNlIjoiZDk4ZDNkMGUtZjA2Ni00NWYzLWI5MjAtNjBiYTkwNTU5NjllIn0sInNjaGVkdWxlIjp7InNlY29uZCI6IjAiLCJtaW51dGUiOiIwIiwiaG91ciI6IjAiLCJkYXlfb2Zfd2VlayI6Ij8iLCJkYXlfb2ZfbW9udGgiOiIxNyIsIm1vbnRoIjoiKiJ9LCJwYXltZW50Ijp7ImRlc2NyaXB0aW9uIjoiVGVzdCB0cmFuc2FjdGlvbiIsImFtb3VudCI6IjEiLCJjdXJyZW5jeSI6IlBIUCIsIm1lcmNoYW50X3JlZmVyZW5jZV9pZCI6IlRMUEUtMjUzNjQxMTMyNjEtQ1MiLCJvdGhlcl9yZWZlcmVuY2VzIjpbIlJFRjEiLCJSRUYyIl19LCJyb3V0ZSI6eyJjYWxsYmFja191cmwiOiJodHRwczovL3RscGUuaW8vdGhhbmt5b3UiLCJub3RpZnlfdXNlciI6dHJ1ZX19fQ.8nhdm3RLBurapL83sLXR1PLTt2t-xKwOLj4GmBmsC5k"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: {integratorToken}'
) ,
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
require 'rest-client'
require 'json'
response = RestClient::Request.execute(
method: :post,
url: "https://test-api.tlpe.io/schedule",
payload: '{"payload": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjp7InRpbWVfb2Zmc2V0IjoiKzA4OjAwIiwiY3JlZGl0X2NhcmQiOnsicmVmZXJlbmNlIjoiZDk4ZDNkMGUtZjA2Ni00NWYzLWI5MjAtNjBiYTkwNTU5NjllIn0sInNjaGVkdWxlIjp7InNlY29uZCI6IjAiLCJtaW51dGUiOiIwIiwiaG91ciI6IjAiLCJkYXlfb2Zfd2VlayI6Ij8iLCJkYXlfb2ZfbW9udGgiOiIxNyIsIm1vbnRoIjoiKiJ9LCJwYXltZW50Ijp7ImRlc2NyaXB0aW9uIjoiVGVzdCB0cmFuc2FjdGlvbiIsImFtb3VudCI6IjEiLCJjdXJyZW5jeSI6IlBIUCIsIm1lcmNoYW50X3JlZmVyZW5jZV9pZCI6IlRMUEUtMjUzNjQxMTMyNjEtQ1MiLCJvdGhlcl9yZWZlcmVuY2VzIjpbIlJFRjEiLCJSRUYyIl19LCJyb3V0ZSI6eyJjYWxsYmFja191cmwiOiJodHRwczovL3RscGUuaW8vdGhhbmt5b3UiLCJub3RpZnlfdXNlciI6dHJ1ZX19fQ.8nhdm3RLBurapL83sLXR1PLTt2t-xKwOLj4GmBmsC5k"}',
headers: { authorization: '{integratorToken}', content_type: 'application/json', accept: 'application/json'}
)
responseJson = JSON.parse(response)
puts JSON.pretty_generate(responseJson)
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://test-api.tlpe.io/schedule',
'headers': {
'Content-Type': 'application/json',
'Authorization': '{integratorToken}'
},
body: JSON.stringify({
"payload": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjp7InRpbWVfb2Zmc2V0IjoiKzA4OjAwIiwiY3JlZGl0X2NhcmQiOnsicmVmZXJlbmNlIjoiZDk4ZDNkMGUtZjA2Ni00NWYzLWI5MjAtNjBiYTkwNTU5NjllIn0sInNjaGVkdWxlIjp7InNlY29uZCI6IjAiLCJtaW51dGUiOiIwIiwiaG91ciI6IjAiLCJkYXlfb2Zfd2VlayI6Ij8iLCJkYXlfb2ZfbW9udGgiOiIxNyIsIm1vbnRoIjoiKiJ9LCJwYXltZW50Ijp7ImRlc2NyaXB0aW9uIjoiVGVzdCB0cmFuc2FjdGlvbiIsImFtb3VudCI6IjEiLCJjdXJyZW5jeSI6IlBIUCIsIm1lcmNoYW50X3JlZmVyZW5jZV9pZCI6IlRMUEUtMjUzNjQxMTMyNjEtQ1MiLCJvdGhlcl9yZWZlcmVuY2VzIjpbIlJFRjEiLCJSRUYyIl19LCJyb3V0ZSI6eyJjYWxsYmFja191cmwiOiJodHRwczovL3RscGUuaW8vdGhhbmt5b3UiLCJub3RpZnlfdXNlciI6dHJ1ZX19fQ.8nhdm3RLBurapL83sLXR1PLTt2t-xKwOLj4GmBmsC5k"
})
};
request(options, function(error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
200 Successful Response
RESPONSE SCHEMA: application/json
timestamp
string
Transaction timestamp
status
string
HTTP status code
message
string
HTTP status code message/description
path
string
Endpoint path used for the transaction
data
object
Contains transaction-related response
reference
string
Reference number of the schedule
status_code
string
API status code
status_description
string
API status code message/description
404 Erroneous Response
RESPONSE SCHEMA: application/json
timestamp
string
Transaction timestamp
status
string
HTTP status code
message
string
HTTP status code message/description
path
string
Endpoint path used for the transaction
data
object
Contains transaction-related response
status_code
string
API status code
status_description
string
API status code message/description
Response Samples
{
"path": "/payment-schedule",
"data": {
"reference": "c277e9b0-0993-4200-8fed-80c2c2340a6a",
"status_description": "Payment scheduling successful",
"status_code": "OK.12.00"
},
"message": "Payment scheduling processed successfully",
"timestamp": "2025-09-25T03:04:33.705+00:00",
"status": 200
}
{
"timestamp": "2025-09-25T03:03:35.121+0000",
"status": 422,
"messages": {
"reference": [
"reference does not exist"
]
},
"path": "/payment-schedule",
"data": {
"status_description": "Invalid client request due to 'invalid parameters'",
"status_code": "ER.02.30"
}
}
See API Reference > Response Messages for a guided reference.
Cancel Schedule
DELETE /schedule
Request Description
HEADER PARAMETERS
Content-Type
optional
string
Default content type of the API.
Authorization
required
string
Unique identifier of the integrator.
Content-Type
optional
string
Default content type of the API.
Authorization
required
string
Unique identifier of the integrator.
REQUEST BODY SCHEMA: application/json
reference
required
string
Generated reference from card registration request
reference
required
string
Generated reference from card registration request
{
"reference": "3dfc4a68-f1be-49a1-9e09-b08167fdeb25 "
}
Request Samples
curl
-X DELETE "https://test-api.tlpe.io/card-registration" \
-H "Content-Type: application/json" \
-H "Authorization: {integratorToken}" \
-d "{
"reference": "3dfc4a68-f1be-49a1-9e09-b08167fdeb25"
}"
public Dictionary<string, dynamic> DeleteCardRegistration()
{
Dictionary<string, dynamic> responseData;
string payload = "{\"reference\":\"{reference}\"}";
string url = "https://test-api.tlpe.io/card-registration";
byte[] buffer = Encoding.ASCII.GetBytes(payload);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "DELETE";
request.Headers["Authorization"] = "{integratorToken}";
request.ContentType = "application/json";
Stream PostData = request.GetRequestStream();
PostData.Write(buffer, 0, buffer.Length);
PostData.Close();
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
StringReader sr = new StringReader(reader.ReadToEnd());
JsonReader jreader = new JsonTextReader(sr);
JsonSerializer jss = new JsonSerializer();
responseData = jss.Deserialize<Dictionary<string, dynamic>>(jreader);
reader.Close();
responseStream.Close();
}
return responseData;
}
Public Function DeleteCardRegistration() As Dictionary(Of String, Object)
Dim payload As String = "{""reference"":""{reference}""}"
Dim url As String = "https://test-api.tlpe.io/card-registration"
Dim request As WebRequest = WebRequest.Create(url)
request.Method = "DELETE"
request.Headers.Add("Authorization", "{ingtegratorToken}")
request.ContentType = "application/json"
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(payload)
request.ContentLength = byteArray.Length
Dim dataStream As Stream = request.GetRequestStream()
dataStream.Write(byteArray, 0, byteArray.Length)
dataStream.Close()
Dim response As WebResponse = request.GetResponse()
Dim responseStream = response.GetResponseStream()
Dim reader As New StreamReader(responseStream)
Dim responseReader As StringReader = New StringReader(reader.ReadToEnd())
Dim jreader As JsonReader = New JsonTextReader(responseReader)
reader.Close()
responseStream.Close()
response.Close()
Dim jss As New JsonSerializer()
Dim responseData As Dictionary(Of String, Object) = jss.Deserialize(Of Dictionary(Of String, Object))(jreader)
Return responseData
End Function
import http.client
import json
conn = http.client.HTTPSConnection('test-api.tlpe.io')
payload = json.dumps({'reference': '{reference}})
headers = {'Content-Type': 'application/json',
'Authorization': '{integratorToken}'}
conn.request('DELETE', '/card-registration', payload, headers)
res = conn.getresponse()
data = res.read()
print data.decode('utf-8'))
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://test-api.tlpe.io/card-registration',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_POSTFIELDS => '{
"reference":"{reference}"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: {integratorToken}'
) ,
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
require 'rest-client'
require 'json'
response = RestClient::Request.execute(
method: :delete,
url: "https://test-api.tlpe.io/card-registration",
payload: '{
"reference":"{reference}"
}',
headers: { authorization: '{integratorToken}', content_type: 'application/json', accept: 'application/json'}
)
responseJson = JSON.parse(response)
puts JSON.pretty_generate(responseJson)
var request = require('request');
var options = {
'method': 'DELETE',
'url': 'https://test-api.tlpe.io/card-registration',
'headers': {
'Content-Type': 'application/json',
'Authorization': '{integratorToken}'
},
body: JSON.stringify({
"reference": "{reference}"
})
};
request(options, function(error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
Response Description
200 Successful Response
RESPONSE SCHEMA: application/json
timestamp
string
Transaction timestamp
status
string
HTTP status code
message
string
HTTP status code message/description
path
string
Endpoint path used for the transaction
data
object
Contains transaction-related response
status_code
string
API status code
status_description
string
API status code message/description
422 Erroneous Response
RESPONSE SCHEMA: application/json
timestamp
string
Transaction timestamp
status
string
HTTP status code
message
string
HTTP status code message/description
path
string
Endpoint path used for the transaction
data
object
Contains transaction-related response
status_code
string
API status code
status_description
string
API status code message/description
Response Samples
{
"timestamp":"2020-07-14T09:29:49.843+0000",
"status":200,
"message": "Request processed successfully",
"path": "/card-registration",
"data": {
"status_description": "Card registration deletion successful",
"status_code": "OK.11.20",
"timestamp": "2025-09-25T01:52:44.876+0000",
}
}
{
"timestamp":"2020-07-14T09:29:49.843+0000",
"status":404,
"messages":"Not found",
"path":"/card-registration",
"data":{
"status_description":"Invalid client request due to 'invalid parameters'",
"status_code":"ER.02.30"
}
}
See API Reference > Response Messages for a guided reference.