curl --request POST \
--url https://ivs.idenfy.com/bank-card/tokens/ \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"expectedName": "<string>",
"expectedLastFour": "<string>",
"lifetime": 3600,
"sessionLength": 30,
"theme": "<string>",
"generateMobileCode": false,
"successUrl": "<string>",
"failUrl": "<string>"
}
'import requests
url = "https://ivs.idenfy.com/bank-card/tokens/"
payload = {
"expectedName": "<string>",
"expectedLastFour": "<string>",
"lifetime": 3600,
"sessionLength": 30,
"theme": "<string>",
"generateMobileCode": False,
"successUrl": "<string>",
"failUrl": "<string>"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
expectedName: '<string>',
expectedLastFour: '<string>',
lifetime: 3600,
sessionLength: 30,
theme: '<string>',
generateMobileCode: false,
successUrl: '<string>',
failUrl: '<string>'
})
};
fetch('https://ivs.idenfy.com/bank-card/tokens/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.post("https://ivs.idenfy.com/bank-card/tokens/")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"expectedName\": \"<string>\",\n \"expectedLastFour\": \"<string>\",\n \"lifetime\": 3600,\n \"sessionLength\": 30,\n \"theme\": \"<string>\",\n \"generateMobileCode\": false,\n \"successUrl\": \"<string>\",\n \"failUrl\": \"<string>\"\n}")
.asString();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://ivs.idenfy.com/bank-card/tokens/",
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([
'expectedName' => '<string>',
'expectedLastFour' => '<string>',
'lifetime' => 3600,
'sessionLength' => 30,
'theme' => '<string>',
'generateMobileCode' => false,
'successUrl' => '<string>',
'failUrl' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://ivs.idenfy.com/bank-card/tokens/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"expectedName\": \"<string>\",\n \"expectedLastFour\": \"<string>\",\n \"lifetime\": 3600,\n \"sessionLength\": 30,\n \"theme\": \"<string>\",\n \"generateMobileCode\": false,\n \"successUrl\": \"<string>\",\n \"failUrl\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyusing RestSharp;
var options = new RestClientOptions("https://ivs.idenfy.com/bank-card/tokens/");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Basic <encoded-value>");
request.AddJsonBody("{\n \"expectedName\": \"<string>\",\n \"expectedLastFour\": \"<string>\",\n \"lifetime\": 3600,\n \"sessionLength\": 30,\n \"theme\": \"<string>\",\n \"generateMobileCode\": false,\n \"successUrl\": \"<string>\",\n \"failUrl\": \"<string>\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://ivs.idenfy.com/bank-card/tokens/"
payload := strings.NewReader("{\n \"expectedName\": \"<string>\",\n \"expectedLastFour\": \"<string>\",\n \"lifetime\": 3600,\n \"sessionLength\": 30,\n \"theme\": \"<string>\",\n \"generateMobileCode\": false,\n \"successUrl\": \"<string>\",\n \"failUrl\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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))
}val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"expectedName\": \"<string>\",\n \"expectedLastFour\": \"<string>\",\n \"lifetime\": 3600,\n \"sessionLength\": 30,\n \"theme\": \"<string>\",\n \"generateMobileCode\": false,\n \"successUrl\": \"<string>\",\n \"failUrl\": \"<string>\"\n}")
val request = Request.Builder()
.url("https://ivs.idenfy.com/bank-card/tokens/")
.post(body)
.addHeader("Authorization", "Basic <encoded-value>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"expectedName": "<string>",
"expectedLastFour": "<string>",
"lifetime": 3600,
"sessionLength": 30,
"theme": "<string>",
"generateMobileCode": false,
"successUrl": "<string>",
"failUrl": "<string>"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://ivs.idenfy.com/bank-card/tokens/")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self)){
"tokenString": "<string>",
"expiration": "2023-11-07T05:31:56Z",
"isValid": true,
"sessionUrl": "<string>",
"mobileCode": "<string>"
}{
"message": "Action not allowed due to lack of funds or exceeded limit.",
"code": "insufficient_finances",
"detail": {
"detail": "<string>",
"missing_limits": [
"<unknown>"
],
"missing_additional_step_limits": [
"<unknown>"
],
"missing_funds": "<unknown>",
"missing_pool_funds": [
{
"fund_pool": "<string>",
"missing": 123
}
],
"expired_expenses": [
"<unknown>"
]
}
}Create session
Creates a standalone bank card verification session. Your finances are pre-checked; insufficient finances reject the request with 402.
curl --request POST \
--url https://ivs.idenfy.com/bank-card/tokens/ \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"expectedName": "<string>",
"expectedLastFour": "<string>",
"lifetime": 3600,
"sessionLength": 30,
"theme": "<string>",
"generateMobileCode": false,
"successUrl": "<string>",
"failUrl": "<string>"
}
'import requests
url = "https://ivs.idenfy.com/bank-card/tokens/"
payload = {
"expectedName": "<string>",
"expectedLastFour": "<string>",
"lifetime": 3600,
"sessionLength": 30,
"theme": "<string>",
"generateMobileCode": False,
"successUrl": "<string>",
"failUrl": "<string>"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
expectedName: '<string>',
expectedLastFour: '<string>',
lifetime: 3600,
sessionLength: 30,
theme: '<string>',
generateMobileCode: false,
successUrl: '<string>',
failUrl: '<string>'
})
};
fetch('https://ivs.idenfy.com/bank-card/tokens/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.post("https://ivs.idenfy.com/bank-card/tokens/")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"expectedName\": \"<string>\",\n \"expectedLastFour\": \"<string>\",\n \"lifetime\": 3600,\n \"sessionLength\": 30,\n \"theme\": \"<string>\",\n \"generateMobileCode\": false,\n \"successUrl\": \"<string>\",\n \"failUrl\": \"<string>\"\n}")
.asString();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://ivs.idenfy.com/bank-card/tokens/",
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([
'expectedName' => '<string>',
'expectedLastFour' => '<string>',
'lifetime' => 3600,
'sessionLength' => 30,
'theme' => '<string>',
'generateMobileCode' => false,
'successUrl' => '<string>',
'failUrl' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://ivs.idenfy.com/bank-card/tokens/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"expectedName\": \"<string>\",\n \"expectedLastFour\": \"<string>\",\n \"lifetime\": 3600,\n \"sessionLength\": 30,\n \"theme\": \"<string>\",\n \"generateMobileCode\": false,\n \"successUrl\": \"<string>\",\n \"failUrl\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyusing RestSharp;
var options = new RestClientOptions("https://ivs.idenfy.com/bank-card/tokens/");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Basic <encoded-value>");
request.AddJsonBody("{\n \"expectedName\": \"<string>\",\n \"expectedLastFour\": \"<string>\",\n \"lifetime\": 3600,\n \"sessionLength\": 30,\n \"theme\": \"<string>\",\n \"generateMobileCode\": false,\n \"successUrl\": \"<string>\",\n \"failUrl\": \"<string>\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://ivs.idenfy.com/bank-card/tokens/"
payload := strings.NewReader("{\n \"expectedName\": \"<string>\",\n \"expectedLastFour\": \"<string>\",\n \"lifetime\": 3600,\n \"sessionLength\": 30,\n \"theme\": \"<string>\",\n \"generateMobileCode\": false,\n \"successUrl\": \"<string>\",\n \"failUrl\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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))
}val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"expectedName\": \"<string>\",\n \"expectedLastFour\": \"<string>\",\n \"lifetime\": 3600,\n \"sessionLength\": 30,\n \"theme\": \"<string>\",\n \"generateMobileCode\": false,\n \"successUrl\": \"<string>\",\n \"failUrl\": \"<string>\"\n}")
val request = Request.Builder()
.url("https://ivs.idenfy.com/bank-card/tokens/")
.post(body)
.addHeader("Authorization", "Basic <encoded-value>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"expectedName": "<string>",
"expectedLastFour": "<string>",
"lifetime": 3600,
"sessionLength": 30,
"theme": "<string>",
"generateMobileCode": false,
"successUrl": "<string>",
"failUrl": "<string>"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://ivs.idenfy.com/bank-card/tokens/")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self)){
"tokenString": "<string>",
"expiration": "2023-11-07T05:31:56Z",
"isValid": true,
"sessionUrl": "<string>",
"mobileCode": "<string>"
}{
"message": "Action not allowed due to lack of funds or exceeded limit.",
"code": "insufficient_finances",
"detail": {
"detail": "<string>",
"missing_limits": [
"<unknown>"
],
"missing_additional_step_limits": [
"<unknown>"
],
"missing_funds": "<unknown>",
"missing_pool_funds": [
{
"fund_pool": "<string>",
"missing": 123
}
],
"expired_expenses": [
"<unknown>"
]
}
}Authorizations
The request must contain basic auth headers where username is API key and password is API secret.
In order for you to start using our API you will need an API key and API secret.
Both can be retrieved by contacting iDenfy's support or iDenfy's sales team.
Body
The cardholder name the card is compared against.
The expected last four digits of the card number. When omitted, only the cardholder name is compared.
4The duration in seconds of bank card verification token validity. This clock starts when the session is created.
0 <= x <= 2592000The capture countdown in minutes. This clock is independent of lifetime and starts at the capture step, not when the link is opened.
1 <= x <= 60Name of a personalisation theme configured on your account.
When true, the response includes a mobileCode the end user can enter in the iDenfy mobile app.
Where the end user is redirected after a successful check.
Where the end user is redirected after an unsuccessful check. An expired session never redirects.
Response
Token string identifying the bank card verification session.
Date and time when this token will become expired.
Indicates whether this token is valid.
The URL to send your end user to in order to complete the card check.
Eight-digit code the end user can enter in the iDenfy mobile app to open this session. Returned only when generateMobileCode was set.
Related topics
Create sessionCreating a KYB SessionIdentity Verification API (KYC)Sole Proprietorship Workflow StepCreate a SessionWas this page helpful?