Awaiting Compliance
curl --request GET \
--url https://{your-domain}.fincode.software/api/v6/services/compliance/awaiting-compliance-requirements \
--header 'X-Auth-Token: <x-auth-token>' \
--header 'platform: <platform>' \
--header 'uuid: <uuid>'import requests
url = "https://{your-domain}.fincode.software/api/v6/services/compliance/awaiting-compliance-requirements"
headers = {
"platform": "<platform>",
"uuid": "<uuid>",
"X-Auth-Token": "<x-auth-token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {platform: '<platform>', uuid: '<uuid>', 'X-Auth-Token': '<x-auth-token>'}
};
fetch('https://{your-domain}.fincode.software/api/v6/services/compliance/awaiting-compliance-requirements', 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/awaiting-compliance-requirements",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://{your-domain}.fincode.software/api/v6/services/compliance/awaiting-compliance-requirements"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("platform", "<platform>")
req.Header.Add("uuid", "<uuid>")
req.Header.Add("X-Auth-Token", "<x-auth-token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{your-domain}.fincode.software/api/v6/services/compliance/awaiting-compliance-requirements")
.header("platform", "<platform>")
.header("uuid", "<uuid>")
.header("X-Auth-Token", "<x-auth-token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{your-domain}.fincode.software/api/v6/services/compliance/awaiting-compliance-requirements")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["platform"] = '<platform>'
request["uuid"] = '<uuid>'
request["X-Auth-Token"] = '<x-auth-token>'
response = http.request(request)
puts response.read_body{
"status": "SUCCESS",
"message": "Awaiting compliance requirements for Jane Smith ( 447700000001 )",
"data": {
"status": "Success",
"awaitingComplianceActions": [
{
"actionType": "THRESHOLD_IDENTIFICATION",
"businessRuleNumber": "90",
"restrictionLevel": "BLOCK",
"docIdType": "ADDRESS_PROOF",
"docTypeCommonName": "Proof of address",
"customerInstruction": "",
"associatedRuleId": "00000000-0000-0000-0000-000000000001",
"dataCollectionFormType": "BASIC_FILE_UPLOAD",
"acceptableDocType": {
"docIdType": "ADDRESS_PROOF",
"docTypeCommonName": "Proof of address"
},
"craDynamicFieldIds": [
"<string>"
],
"ekycProviderId": null,
"apiProvider": "SHUFTI_PRO",
"customerKycRecordId": "00000000-0000-0000-0000-000000000002",
"craDynamicFormId": null,
"complianceScreeningType": "KYC",
"amountFrom": 0,
"amountTo": 0,
"sendingAmount": 0,
"result": "FAIL",
"requestedDocumentUpload": false,
"acceptableDocTypes": [
{
"docIdType": "ADDRESS_PROOF",
"docTypeCommonName": "Proof of address"
}
],
"minimumNumberOfAcceptableDocTypes": 0,
"complianceOn": null
}
]
}
}API Endpoints
Awaiting Compliance Requirements
Returns the outstanding KYC requirements for a customer.
GET
/
compliance
/
awaiting-compliance-requirements
Awaiting Compliance
curl --request GET \
--url https://{your-domain}.fincode.software/api/v6/services/compliance/awaiting-compliance-requirements \
--header 'X-Auth-Token: <x-auth-token>' \
--header 'platform: <platform>' \
--header 'uuid: <uuid>'import requests
url = "https://{your-domain}.fincode.software/api/v6/services/compliance/awaiting-compliance-requirements"
headers = {
"platform": "<platform>",
"uuid": "<uuid>",
"X-Auth-Token": "<x-auth-token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {platform: '<platform>', uuid: '<uuid>', 'X-Auth-Token': '<x-auth-token>'}
};
fetch('https://{your-domain}.fincode.software/api/v6/services/compliance/awaiting-compliance-requirements', 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/awaiting-compliance-requirements",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://{your-domain}.fincode.software/api/v6/services/compliance/awaiting-compliance-requirements"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("platform", "<platform>")
req.Header.Add("uuid", "<uuid>")
req.Header.Add("X-Auth-Token", "<x-auth-token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{your-domain}.fincode.software/api/v6/services/compliance/awaiting-compliance-requirements")
.header("platform", "<platform>")
.header("uuid", "<uuid>")
.header("X-Auth-Token", "<x-auth-token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{your-domain}.fincode.software/api/v6/services/compliance/awaiting-compliance-requirements")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["platform"] = '<platform>'
request["uuid"] = '<uuid>'
request["X-Auth-Token"] = '<x-auth-token>'
response = http.request(request)
puts response.read_body{
"status": "SUCCESS",
"message": "Awaiting compliance requirements for Jane Smith ( 447700000001 )",
"data": {
"status": "Success",
"awaitingComplianceActions": [
{
"actionType": "THRESHOLD_IDENTIFICATION",
"businessRuleNumber": "90",
"restrictionLevel": "BLOCK",
"docIdType": "ADDRESS_PROOF",
"docTypeCommonName": "Proof of address",
"customerInstruction": "",
"associatedRuleId": "00000000-0000-0000-0000-000000000001",
"dataCollectionFormType": "BASIC_FILE_UPLOAD",
"acceptableDocType": {
"docIdType": "ADDRESS_PROOF",
"docTypeCommonName": "Proof of address"
},
"craDynamicFieldIds": [
"<string>"
],
"ekycProviderId": null,
"apiProvider": "SHUFTI_PRO",
"customerKycRecordId": "00000000-0000-0000-0000-000000000002",
"craDynamicFormId": null,
"complianceScreeningType": "KYC",
"amountFrom": 0,
"amountTo": 0,
"sendingAmount": 0,
"result": "FAIL",
"requestedDocumentUpload": false,
"acceptableDocTypes": [
{
"docIdType": "ADDRESS_PROOF",
"docTypeCommonName": "Proof of address"
}
],
"minimumNumberOfAcceptableDocTypes": 0,
"complianceOn": null
}
]
}
}Returns the list of pending compliance actions the customer must complete before they are fully verified. Poll this endpoint after registration to know what the customer still needs to do.
Request Headers
string
required
The JWT Access Token of the authenticated user (agent, cashier, or the customer themselves).
string
The
userId UUID of the customer whose requirements you want to check. Required when the token belongs to an agent or cashier — without it, the endpoint returns requirements for the token holder, not the customer.Must be the customer’s userId UUID (e.g.
550e8400-e29b-41d4-a716-446655440000), not their customer code (e.g. VJJGVE).string
default:"fincode"
required
Platform identifier. Use
fincode.string
default:"200"
required
Unique request identifier.
Query Parameters
string
Alternative way to specify the target customer — the customer’s userId UUID. Either this or
X-CUSTOMER-ID can be used; X-CUSTOMER-ID takes precedence if both are provided.Response
string
SUCCESS or FAILED.object
Show data fields
Show data fields
string
Inner status string —
Success when the call completes.array
List of pending compliance actions the customer must complete. Empty array means the customer is fully compliant.
Show awaitingComplianceActions item
Show awaitingComplianceActions item
string
ID of this compliance record. Pass as the path parameter when calling Initiate Compliance Action.
string
The rule ID to include in
attachedDocument[].associatedRuleId when uploading documents.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. See Action Types below.string
How this requirement restricts the customer. Values:
BLOCK (customer cannot proceed until resolved), WARN (customer can proceed but transaction goes to compliance), ALLOW (customer can proceed if within range).string
Human-readable instruction to display to the customer.
string
The business rule number that triggered this requirement.
string
The screening type. Values:
AML, CRA, KYC, EDD, NONE_APPLICABLE.boolean
true if this action requires a document to be uploaded.array
List of acceptable document types. Each item has
docIdType and docTypeCommonName.integer
Minimum number of documents from
acceptableDocTypes that must be submitted.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 actions.
array
List of dynamic field IDs associated with the CRA form.
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 compliance result. Values:
PASS, WARNING, FAIL.string
Who this compliance action applies to. Values:
CUSTOMER, RECEIVER.string
Legacy field — the document ID type from the first acceptable doc type.
string
Legacy field — the common name of the first acceptable doc type.
object
Legacy field — single
DocIdTypeDTO from the first acceptable doc type.Action Types
| actionType | What it means | What to do |
|---|---|---|
VERIFY_ACCOUNT_VIA_EMAIL | Customer must verify their email | Platform sends a verification email. If doNotForwardEmailVerification is enabled, call Verify Contact with type=EMAIL after verifying on your side. |
VERIFY_ACCOUNT_VIA_PHONE_NUMBER | Customer must verify their phone | Platform sends an OTP via SMS. If doNotForwardPhoneVerification is enabled, call Verify Contact with type=PHONE_NUMBER. |
CUSTOMER_RISK_ASSESSMENT | Customer must fill a compliance risk assessment form | Call Initiate Compliance Action to get the form, then submit via Submit CRA. |
THRESHOLD_IDENTIFICATION | Transaction amount threshold triggered — customer must upload an identity document (Passport, Address Proof, or ID) | Call Initiate Compliance Action, then Submit KYC Documents with the associatedRuleId. |
THRESHOLD_LIMIT | Sending amount limit check | Transaction is blocked until the threshold condition is resolved by the compliance team. |
THRESHOLD_LIMIT_RECEIVING_AMOUNT | Receiving amount limit check | Transaction is blocked until the threshold condition is resolved by the compliance team. |
THRESHOLD_COUNT_TRANSACTION | Transaction count limit check | Transaction is blocked until the threshold condition is resolved. |
LINKED_TRANSACTION | Transaction matches a linked-transaction rule (country, name, DOB match) | Transaction is held pending manual review. |
VERIFY_ACCOUNT_VIA_EKYC | Customer must complete full eKYC identity verification | Call Initiate External KYC Provider. |
VERIFY_ACCOUNT_VIA_EKYC_FACE_PHOTO | Customer must submit a live face photo | Call Initiate External KYC Provider and load the camera SDK. |
VERIFY_ACCOUNT_VIA_EKYC_FACE_VIDEO | Customer must record a live face video | Call Initiate External KYC Provider and load the video SDK. |
VERIFY_ACCOUNT_VIA_IDENTIFICATION_DOCUMENT | Customer must upload an identity document | Call Initiate Compliance Action, then Submit KYC Documents. |
OTHER | Catch-all action type | Follow the customerInstruction field. |
Code Example
cURL
curl -X GET 'https://{your-domain}.fincode.software/api/v6/services/compliance/awaiting-compliance-requirements' \
--header 'X-Auth-Token: YOUR_TOKEN' \
--header 'X-CUSTOMER-ID: 550e8400-e29b-41d4-a716-446655440000' \
--header 'platform: fincode' \
--header 'uuid: 200'
Headers
The customer's userId UUID. Passed by agents or admin users to perform this lookup on behalf of a specific customer.
Query Parameters
Filter compliance requirements by this customer's userId.
