3D-Secure
Enroll 3DS Programβ
This API allows you to create a new 3D Secure enrollment for a cardholder in the system.
- Endpoint
POST {{baseUrl}}/issuing/api/:version/card/3DS
Description
Creates a new 3D Secure enrollment for a cardholder within the issuing platform. This API captures the cardholderβs authentication preferences and links the card to the 3D Secure system, ensuring that future online transactions are verified for enhanced security.
π Path Parameters
version string required
v1.π© Request Headers
x-api-key string required
x-product-id string required
x-cardholder-id string required
x-wallet-id string required
x-card-id string required
x-client-id string
x-request-id string required
Content-Type string required
application/jsonAuthorization string
π¦ Body Parameters
otp_delivery_method string required
EMAIL, SMS.- π§© Examples
- π§ͺ Try It Out
Request Example
- cURL
- Python
- Java
- NodeJs
curl --location --request POST \
--url '{{baseUrl}}/issuing/api/:version/card/3DS' \
--header 'x-api-key: {{Shared X-API key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-cardholder-id: {{CardholderID}}' \
--header 'x-wallet-id: {{WalletID}}' \
--header 'x-card-id: {{CardID}}' \
--header 'x-client-id: {{ClientID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}' \
--data '{
"otp_delivery_method": "EMAIL"
}'
import requests
import json
url = "{{baseUrl}}/issuing/api/:version/card/3DS"
payload = json.dumps({
"otp_delivery_method": "EMAIL"
})
headers = {
'x-api-key': '{{Shared X-API key}}',
'x-product-id': '{{Shared ProductID}}',
'x-cardholder-id': '{{CardholderID}}',
'x-wallet-id': '{{WalletID}}',
'x-card-id': '{{CardID}}',
'x-client-id': '{{ClientID}}',
'x-request-id': '{{IdempotencyKey}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"otp_delivery_method\": \"EMAIL\"\n}");
Request request = new Request.Builder()
.url("{{baseUrl}}/issuing/api/:version/card/3DS")
.method("POST", body)
.addHeader("x-api-key", "{{Shared X-API key}}")
.addHeader("x-product-id", "{{Shared ProductID}}")
.addHeader("x-cardholder-id", "{{CardholderID}}")
.addHeader("x-wallet-id", "{{WalletID}}")
.addHeader("x-card-id", "{{CardID}}")
.addHeader("x-client-id", "{{ClientID}}")
.addHeader("x-request-id", "{{IdempotencyKey}}")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{AccessToken}}")
.build();
Response response = client.newCall(request).execute();
const axios = require('axios');
let data = JSON.stringify({
"otp_delivery_method": "EMAIL"
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: '{{baseUrl}}/issuing/api/:version/card/3DS',
headers: {
'x-api-key': '{{Shared X-API key}}',
'x-product-id': '{{Shared ProductID}}',
'x-cardholder-id': '{{CardholderID}}',
'x-wallet-id': '{{WalletID}}',
'x-card-id': '{{CardID}}',
'x-client-id': '{{ClientID}}',
'x-request-id': '{{IdempotencyKey}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Response Example
- 200: Success
- 400: Error
{
"status": "Success",
"message": "3DS enrollment successful.",
"code": 200,
"data": []
}
{
"code": 400,
"message": "Error Message",
"status": "error"
}
π‘οΈ Enroll 3DS β Sandbox
π Headers
π Request Body
π» Generated cURL Command
β―Get 3DS Detailsβ
This API is used to retrieve the 3D Secure enrollment details for a cardholder in the system.
- Endpoint
GET {{baseUrl}}/issuing/api/:version/card/3DS
Description
Retrieves the 3D Secure enrollment details for a specific cardholder in the system. This API provides information about the cardholderβs current 3D Secure status, authentication preferences, and enrollment settings. It helps verify whether a card is enrolled for 3D Secure and ensures that the correct authentication parameters are in place for secure online transactions.
π Path Parameters
version string required
v1.π© Request Headers
x-api-key string required
x-product-id string required
x-cardholder-id string required
x-wallet-id string required
x-card-id string required
x-client-id string
x-request-id string required
Content-Type string required
application/jsonAuthorization string
- π§© Examples
- π§ͺ Try It Out
Request Example
- cURL
- Python
- Java
- NodeJs
curl --location --request GET \
--url '{{baseUrl}}/issuing/api/:version/card/3DS' \
--header 'x-api-key: {{Shared X-API key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-cardholder-id: {{CardholderID}}' \
--header 'x-wallet-id: {{WalletID}}' \
--header 'x-card-id: {{CardID}}' \
--header 'x-client-id: {{ClientID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}' \
import requests
import json
url = "{{baseUrl}}/issuing/api/:version/card/3DS"
payload = {}
headers = {
'x-api-key': '{{Shared X-API key}}',
'x-product-id': '{{Shared ProductID}}',
'x-cardholder-id': '{{CardholderID}}',
'x-wallet-id': '{{WalletID}}',
'x-card-id': '{{CardID}}',
'x-client-id': '{{ClientID}}',
'x-request-id': '{{IdempotencyKey}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("{{baseUrl}}/issuing/api/:version/card/3DS")
.method("GET", body)
.addHeader("x-api-key", "{{Shared X-API key}}")
.addHeader("x-product-id", "{{Shared ProductID}}")
.addHeader("x-cardholder-id", "{{CardholderID}}")
.addHeader("x-wallet-id", "{{WalletID}}")
.addHeader("x-card-id", "{{CardID}}")
.addHeader("x-client-id", "{{ClientID}}")
.addHeader("x-request-id", "{{IdempotencyKey}}")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{AccessToken}}")
.build();
Response response = client.newCall(request).execute();
const axios = require('axios');
let config = {
method: 'get',
maxBodyLength: Infinity,
url: '{{baseUrl}}/issuing/api/:version/card/3DS',
headers: {
'x-api-key': '{{Shared X-API key}}',
'x-product-id': '{{Shared ProductID}}',
'x-cardholder-id': '{{CardholderID}}',
'x-wallet-id': '{{WalletID}}',
'x-card-id': '{{CardID}}',
'x-client-id': '{{ClientID}}',
'x-request-id': '{{IdempotencyKey}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
}
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Response Example
- 200: Success
- 400: Error
{
"status": "Success",
"message": "Enroll 3DS details fetched successfully.",
"code": 200,
"data": [
{
"otp_delivery_method": "SMS",
"destination": "+628000110022",
"status": "ACTIVE"
}
]
}
{
"code": 400,
"message": "Error Message",
"status": "error"
}
βΉοΈ Get Enroll 3DS Details β Sandbox
π Headers
π» Generated cURL Command
β―Update 3DS Detailsβ
This API is used to update the 3D Secure enrollment for a cardholder in the system.
- Endpoint
PATCH {{baseUrl}}/issuing/api/:version/card/3DS
Description
Updates the 3D Secure enrollment details for an existing cardholder within the issuing platform. This API allows modification of authentication preferences, such as OTP delivery method, ensuring that the cardholderβs 3D Secure profile remains accurate and up to date.
π Path Parameters
version string required
v1.π© Request Headers
x-api-key string required
x-product-id string required
x-cardholder-id string required
x-wallet-id string required
x-card-id string required
x-client-id string
x-request-id string required
Content-Type string required
application/jsonAuthorization string
π¦ Body Parameters
otp_delivery_method string required
EMAIL, SMS.- π§© Examples
- π§ͺ Try It Out
Request Example
- cURL
- Python
- Java
- NodeJs
curl --location --request PATCH \
--url '{{baseUrl}}/issuing/api/:version/card/3DS' \
--header 'x-api-key: {{Shared X-API key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-cardholder-id: {{CardholderID}}' \
--header 'x-wallet-id: {{WalletID}}' \
--header 'x-card-id: {{CardID}}' \
--header 'x-client-id: {{ClientID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}' \
--data '{
"otp_delivery_method": "SMS"
}'
import requests
import json
url = "{{baseUrl}}/issuing/api/:version/card/3DS"
payload = json.dumps({
"otp_delivery_method": "SMS"
})
headers = {
'x-api-key': '{{Shared X-API key}}',
'x-product-id': '{{Shared ProductID}}',
'x-cardholder-id': '{{CardholderID}}',
'x-wallet-id': '{{WalletID}}',
'x-card-id': '{{CardID}}',
'x-client-id': '{{ClientID}}',
'x-request-id': '{{IdempotencyKey}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
}
response = requests.request("PATCH", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"otp_delivery_method\": \"SMS\"\n}");
Request request = new Request.Builder()
.url("{{baseUrl}}/issuing/api/:version/card/3DS")
.method("PATCH", body)
.addHeader("x-api-key", "{{Shared X-API key}}")
.addHeader("x-product-id", "{{Shared ProductID}}")
.addHeader("x-cardholder-id", "{{CardholderID}}")
.addHeader("x-wallet-id", "{{WalletID}}")
.addHeader("x-card-id", "{{CardID}}")
.addHeader("x-client-id", "{{ClientID}}")
.addHeader("x-request-id", "{{IdempotencyKey}}")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{AccessToken}}")
.build();
Response response = client.newCall(request).execute();
const axios = require('axios');
let data = JSON.stringify({
"otp_delivery_method": "SMS"
});
let config = {
method: 'patch',
maxBodyLength: Infinity,
url: '{{baseUrl}}/issuing/api/:version/card/3DS',
headers: {
'x-api-key': '{{Shared X-API key}}',
'x-product-id': '{{Shared ProductID}}',
'x-cardholder-id': '{{CardholderID}}',
'x-wallet-id': '{{WalletID}}',
'x-card-id': '{{CardID}}',
'x-client-id': '{{ClientID}}',
'x-request-id': '{{IdempotencyKey}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Response Example
- 200: Success
- 400: Error
{
"status": "Success",
"message": "3DS enrollment details updated successfully.",
"code": 200,
"data": []
}
{
"code": 400,
"message": "Error Message",
"status": "error"
}
π Update Enroll 3DS β Sandbox
π Headers
π Request Body
π» Generated cURL Command
β―Unenroll 3DS Programβ
This API is used to unenroll the 3D Secure enrollment for a cardholder in the system.
- Endpoint
DELETE {{baseUrl}}/issuing/api/:version/card/3DS
Description
Removes a cardholderβs enrollment from the 3D Secure program within the system. This API deactivates the cardβs 3D Secure authentication settings, preventing the card from undergoing 3D Secure verification for future online transactions.
π Path Parameters
version string required
v1.π© Request Headers
x-api-key string required
x-product-id string required
x-cardholder-id string required
x-wallet-id string required
x-card-id string required
x-client-id string
x-request-id string required
Content-Type string required
application/jsonAuthorization string
- π§© Examples
- π§ͺ Try It Out
Request Example
- cURL
- Python
- Java
- NodeJs
curl --location --request DELETE \
--url '{{baseUrl}}/issuing/api/:version/card/3DS' \
--header 'x-api-key: {{Shared X-API key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-cardholder-id: {{CardholderID}}' \
--header 'x-wallet-id: {{WalletID}}' \
--header 'x-card-id: {{CardID}}' \
--header 'x-client-id: {{ClientID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}' \
import requests
import json
url = "{{baseUrl}}/issuing/api/:version/card/3DS"
payload = {}
headers = {
'x-api-key': '{{Shared X-API key}}',
'x-product-id': '{{Shared ProductID}}',
'x-cardholder-id': '{{CardholderID}}',
'x-wallet-id': '{{WalletID}}',
'x-card-id': '{{CardID}}',
'x-client-id': '{{ClientID}}',
'x-request-id': '{{IdempotencyKey}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
}
response = requests.request("DELETE", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("{{baseUrl}}/issuing/api/:version/card/3DS")
.method("DELETE", body)
.addHeader("x-api-key", "{{Shared X-API key}}")
.addHeader("x-product-id", "{{Shared ProductID}}")
.addHeader("x-cardholder-id", "{{CardholderID}}")
.addHeader("x-wallet-id", "{{WalletID}}")
.addHeader("x-card-id", "{{CardID}}")
.addHeader("x-client-id", "{{ClientID}}")
.addHeader("x-request-id", "{{IdempotencyKey}}")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{AccessToken}}")
.build();
Response response = client.newCall(request).execute();
const axios = require('axios');
let config = {
method: 'delete',
maxBodyLength: Infinity,
url: '{{baseUrl}}/issuing/api/:version/card/3DS',
headers: {
'x-api-key': '{{Shared X-API key}}',
'x-product-id': '{{Shared ProductID}}',
'x-cardholder-id': '{{CardholderID}}',
'x-wallet-id': '{{WalletID}}',
'x-card-id': '{{CardID}}',
'x-client-id': '{{ClientID}}',
'x-request-id': '{{IdempotencyKey}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
}
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Response Example
- 200: Success
- 400: Error
{
"status": "Success",
"message": "3DS unenrollment completed successfully.",
"code": 200,
"data": []
}
{
"code": 400,
"message": "Error Message",
"status": "error"
}