Pre-Transaction Compliance Checklist
curl --request PUT \
--url https://{your-domain}.fincode.software/api/v6/services/compliance/customer-compliance-checklist \
--header 'Content-Type: application/json' \
--header 'X-Auth-Token: <x-auth-token>' \
--header 'platform: <platform>' \
--header 'uuid: <uuid>' \
--data '{}'import requests
url = "https://{your-domain}.fincode.software/api/v6/services/compliance/customer-compliance-checklist"
payload = {}
headers = {
"platform": "<platform>",
"uuid": "<uuid>",
"X-Auth-Token": "<x-auth-token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
platform: '<platform>',
uuid: '<uuid>',
'X-Auth-Token': '<x-auth-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({})
};
fetch('https://{your-domain}.fincode.software/api/v6/services/compliance/customer-compliance-checklist', 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://{your-domain}.fincode.software/api/v6/services/compliance/customer-compliance-checklist",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Auth-Token: <x-auth-token>",
"platform: <platform>",
"uuid: <uuid>"
],
]);
$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://{your-domain}.fincode.software/api/v6/services/compliance/customer-compliance-checklist"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("platform", "<platform>")
req.Header.Add("uuid", "<uuid>")
req.Header.Add("X-Auth-Token", "<x-auth-token>")
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.put("https://{your-domain}.fincode.software/api/v6/services/compliance/customer-compliance-checklist")
.header("platform", "<platform>")
.header("uuid", "<uuid>")
.header("X-Auth-Token", "<x-auth-token>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{your-domain}.fincode.software/api/v6/services/compliance/customer-compliance-checklist")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["platform"] = '<platform>'
request["uuid"] = '<uuid>'
request["X-Auth-Token"] = '<x-auth-token>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"status": "SUCCESS",
"data": {
"customerComplianceCheckList": [
{
"actionType": "THRESHOLD_IDENTIFICATION",
"businessRuleNumber": "90",
"restrictionLevel": "BLOCK",
"customerInstruction": "",
"associatedRuleId": "00000000-0000-0000-0000-000000000001",
"dataCollectionFormType": "BASIC_FILE_UPLOAD",
"ekycProviderId": null,
"apiProvider": "SHUFTI_PRO",
"customerKycRecordId": "00000000-0000-0000-0000-000000000002",
"craDynamicFormId": null,
"complianceScreeningType": "KYC",
"amountFrom": 0,
"amountTo": 0,
"sendingAmount": 0,
"requestedDocumentUpload": false,
"acceptableDocTypes": [
{
"docIdType": "ADDRESS_PROOF",
"docTypeCommonName": "Proof of address"
}
],
"minimumNumberOfAcceptableDocTypes": 1,
"customerType": "INDIVIDUAL",
"complianceOn": "CUSTOMER",
"result": "FAIL"
}
]
}
}API Endpoints
Pre-Transaction Compliance Checklist
Returns the compliance checklist a customer must satisfy before a transaction can be booked.
PUT
/
compliance
/
customer-compliance-checklist
Pre-Transaction Compliance Checklist
curl --request PUT \
--url https://{your-domain}.fincode.software/api/v6/services/compliance/customer-compliance-checklist \
--header 'Content-Type: application/json' \
--header 'X-Auth-Token: <x-auth-token>' \
--header 'platform: <platform>' \
--header 'uuid: <uuid>' \
--data '{}'import requests
url = "https://{your-domain}.fincode.software/api/v6/services/compliance/customer-compliance-checklist"
payload = {}
headers = {
"platform": "<platform>",
"uuid": "<uuid>",
"X-Auth-Token": "<x-auth-token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
platform: '<platform>',
uuid: '<uuid>',
'X-Auth-Token': '<x-auth-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({})
};
fetch('https://{your-domain}.fincode.software/api/v6/services/compliance/customer-compliance-checklist', 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://{your-domain}.fincode.software/api/v6/services/compliance/customer-compliance-checklist",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Auth-Token: <x-auth-token>",
"platform: <platform>",
"uuid: <uuid>"
],
]);
$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://{your-domain}.fincode.software/api/v6/services/compliance/customer-compliance-checklist"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("platform", "<platform>")
req.Header.Add("uuid", "<uuid>")
req.Header.Add("X-Auth-Token", "<x-auth-token>")
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.put("https://{your-domain}.fincode.software/api/v6/services/compliance/customer-compliance-checklist")
.header("platform", "<platform>")
.header("uuid", "<uuid>")
.header("X-Auth-Token", "<x-auth-token>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{your-domain}.fincode.software/api/v6/services/compliance/customer-compliance-checklist")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["platform"] = '<platform>'
request["uuid"] = '<uuid>'
request["X-Auth-Token"] = '<x-auth-token>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"status": "SUCCESS",
"data": {
"customerComplianceCheckList": [
{
"actionType": "THRESHOLD_IDENTIFICATION",
"businessRuleNumber": "90",
"restrictionLevel": "BLOCK",
"customerInstruction": "",
"associatedRuleId": "00000000-0000-0000-0000-000000000001",
"dataCollectionFormType": "BASIC_FILE_UPLOAD",
"ekycProviderId": null,
"apiProvider": "SHUFTI_PRO",
"customerKycRecordId": "00000000-0000-0000-0000-000000000002",
"craDynamicFormId": null,
"complianceScreeningType": "KYC",
"amountFrom": 0,
"amountTo": 0,
"sendingAmount": 0,
"requestedDocumentUpload": false,
"acceptableDocTypes": [
{
"docIdType": "ADDRESS_PROOF",
"docTypeCommonName": "Proof of address"
}
],
"minimumNumberOfAcceptableDocTypes": 1,
"customerType": "INDIVIDUAL",
"complianceOn": "CUSTOMER",
"result": "FAIL"
}
]
}
}Call this before
create-transaction to find out exactly what compliance actions are required for the given transaction parameters. The platform evaluates all applicable KYC rules and business transaction rules and returns a checklist of outstanding items.
If transactionQuote is provided, AML checks are also included in the evaluation.
All authenticated user types can call this endpoint.
Request Headers
string
required
JWT Access Token of the authenticated user.
string
The customer’s
userId (UUID). Pass this when an agent or manager is checking on behalf of a customer.string
default:"fincode"
required
Platform identifier. Use
fincode.string
default:"200"
required
Unique request identifier.
Request Body
object
required
The transaction parameters to evaluate compliance against.
Show transactionQuote fields
Show transactionQuote fields
string
required
Which side of the transaction to evaluate. Use
PAYIN when the customer is sending money.PAYIN— evaluate rules on transaction creationPAYOUT— evaluate rules on payoutACCOUNT_CREDITING— evaluate rules on account credit
number
required
The amount the sender intends to send.
string
required
ISO 4217 currency code of the sending currency (e.g.
GBP).string
required
ISO 3166-1 alpha-3 destination country code (e.g.
NGA).string
required
Transaction type / delivery method (e.g.
ACCOUNTPAYMENT, MOBILE_MONEY, CASH_PICKUP).Response
string
SUCCESS or FAILED.object
Show data fields
Show data fields
array
List of compliance actions required before the transaction can proceed. An empty array means the customer is fully compliant and the transaction can be booked immediately.
Show customerComplianceCheckList item
Show customerComplianceCheckList item
string
The type of action required. Possible values:
VERIFY_ACCOUNT_VIA_EMAIL, VERIFY_ACCOUNT_VIA_PHONE_NUMBER, VERIFY_ACCOUNT_VIA_EKYC, VERIFY_ACCOUNT_VIA_EKYC_FACE_PHOTO, VERIFY_ACCOUNT_VIA_EKYC_FACE_VIDEO, VERIFY_ACCOUNT_VIA_IDENTIFICATION_DOCUMENT, CUSTOMER_RISK_ASSESSMENT, THRESHOLD_IDENTIFICATION, THRESHOLD_LIMIT, THRESHOLD_LIMIT_RECEIVING_AMOUNT, THRESHOLD_COUNT_TRANSACTION, LINKED_TRANSACTION, OTHER.string
The compliance rule ID. Pass this as
associatedRuleId when submitting documents via attach-documents.string
The KYC record ID. Used as the path parameter when calling
initiate-compliance-action.string
The business rule that triggered this requirement.
string
How strictly this blocks the transaction. Values:
BLOCK (hard block until resolved), WARN (allow but flag to compliance), ALLOW (allow if within range).string
Human-readable instruction to display to the customer.
boolean
true if the action requires a document to be uploaded.array
List of acceptable document types for this requirement.
integer
Minimum number of documents from
acceptableDocTypes that must be submitted.string
The screening type. Values:
AML, CRA, KYC, EDD, NONE_APPLICABLE.string
The eKYC provider integration ID. Present when
actionType is VERIFY_ACCOUNT_VIA_EKYC.string
The eKYC provider code — e.g.
SHUFTI_PRO, SEON_IDV, SUMSUB.string
Dynamic form ID for CRA (Customer Risk Assessment) actions.
string
The type of data collection form required.
number
Lower bound of the transaction amount range that triggered this rule.
number
Upper bound of the transaction amount range that triggered this rule.
number
The sending amount at the time this rule was evaluated.
string
The customer classification this rule applies to. Values:
INDIVIDUAL, COMPANY.string
Who this compliance action applies to. Values:
CUSTOMER, RECEIVER.string
The compliance result. Values:
PASS, WARNING, FAIL.Code Example
cURL
curl -X PUT 'https://{your-domain}.fincode.software/api/v6/services/compliance/customer-compliance-checklist' \
--header 'X-Auth-Token: YOUR_JWT_ACCESS_TOKEN' \
--header 'X-CUSTOMER-ID: 00000000-0000-0000-0000-000000000001' \
--header 'Content-Type: application/json' \
--header 'platform: fincode' \
--header 'uuid: 200' \
--data '{
"transactionQuote": {
"direction": "PAYIN",
"amountSend": 100.00,
"sendingCurrencyCode": "GBP",
"receivingCountryIso3Code": "NGA",
"devliveryMethod": "ACCOUNTPAYMENT"
}
}'
Node.js
const axios = require('axios');
async function getComplianceChecklist(accessToken, userId, quote) {
const response = await axios.put(
'https://{your-domain}.fincode.software/api/v6/services/compliance/customer-compliance-checklist',
{ transactionQuote: quote },
{
headers: {
'X-Auth-Token': accessToken,
'X-CUSTOMER-ID': userId,
'platform': 'fincode',
'uuid': '200',
'Content-Type': 'application/json',
},
}
);
const checklist = response.data.data.customerComplianceCheckList;
if (checklist.length === 0) {
console.log('Customer is compliant — transaction can proceed.');
} else {
console.log(`${checklist.length} compliance action(s) required:`, checklist);
}
return checklist;
}
// Usage
getComplianceChecklist('YOUR_TOKEN', '00000000-0000-0000-0000-000000000001', {
direction: 'PAYIN',
amountSend: 100.00,
sendingCurrencyCode: 'GBP',
receivingCountryIso3Code: 'NGA',
devliveryMethod: 'ACCOUNTPAYMENT',
});
Headers
The customer's userId UUID. Pass when an agent or manager is checking on behalf of a customer.
Body
application/json
Show child attributes
Show child attributes
