Public OpenAPI spec for eFICA developer portal.
Exchanges authorization code for access token (PKCE required) or refreshes access token using refresh token
| grant_type required | string Enum: "authorization_code" "refresh_token" Grant type (authorization_code or refresh_token) |
| code | string Authorization code received from authorization endpoint (required for authorization_code grant) |
| code_verifier | string PKCE code verifier (required for authorization_code grant) |
| redirect_uri | string Redirect URI (required for authorization_code grant) |
| refresh_token | string Refresh token (required for refresh_token grant) |
| client_id required | string OAuth2 client identifier |
{- "grant_type": "authorization_code",
- "code": "abc123def456",
- "code_verifier": "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk",
- "refresh_token": "eyJhbGciOiJFZERTQSJ9...",
- "client_id": "my-client-id"
}{- "access_token": "eyJhbGciOiJFZERTQSJ9...",
- "refresh_token": "eyJhbGciOiJFZERTQSJ9...",
- "token_type": "Bearer",
- "expires_in": 3600,
- "userID": "123e4567-e89b-12d3-a456-426614174000",
- "partnerID": "123e4567-e89b-12d3-a456-426614174000",
- "scope": "read write"
}Invalidates OAuth2 session by deleting the refresh token from the database. Useful for testing and proper session management.
| refresh_token required | string OAuth2 refresh token to invalidate |
| client_id required | string OAuth2 client identifier |
{- "refresh_token": "eyJhbGciOiJFZERTQSJ9...",
- "client_id": "my-client-id"
}{- "message": "Logged out successfully"
}Retrieves a list of countries with their basic information including ISO codes, names, FATF status, and active status. Countries are used for client onboarding, risk assessment, and compliance. Returns partner-specific settings if configured, otherwise returns default system settings. The FATF flag indicates countries that require enhanced due diligence according to Financial Action Task Force guidelines.
| isActive | boolean Example: isActive=true Filter countries by active status. When set to true, returns only countries available for selection. When set to false, returns only inactive countries. If omitted, returns all countries regardless of status. |
[- {
- "id": 1,
- "code": "ZA",
- "name": "South Africa",
- "fatf": false,
- "active": true
}
]Retrieves a list of employment industries available for individual client onboarding. Each industry includes an ID, description, active status, and a flag indicating whether additional questions are required. Industries are used to categorize client employment and assess risk levels. Returns partner-specific settings if configured, otherwise returns default system settings.
[- {
- "id": 1,
- "name": "Agriculture, forestry and fishing",
- "active": true,
- "additionalQuestions": false
}
]Retrieves a list of employment types available for individual client onboarding. Each type includes an ID, description, active status, and a flag indicating whether additional questions are required. Employment types are used to categorize client employment status (e.g., Employed, Self-Employed, Retired) for risk assessment and compliance. Returns partner-specific settings if configured, otherwise returns default system settings.
[- {
- "id": 1,
- "name": "Employed",
- "active": true,
- "additionalQuestions": false
}
]Retrieves a list of document groups required for individual client onboarding. Document groups are parent categories (e.g., "Identity", "Proof of Address") that contain multiple document types. Each group specifies document requirements for different risk levels (low, medium, high). Use the /individual-doc-types endpoint to get specific document types within each group. Returns partner-specific settings if configured, otherwise returns default system settings.
[- {
- "id": 1,
- "name": "Identity",
- "lowRiskRequired": true,
- "lowRiskDescription": "Copy of ID Document",
- "mediumRiskRequired": true,
- "mediumRiskDescription": "Copy of ID Document",
- "highRiskRequired": true,
- "highRiskDescription": "Copy of ID Document original sighted",
- "description": "ID Number given by Client corresponds to ID number on documentation",
- "active": true
}
]Retrieves all document types available for individual client onboarding. Document types are specific document variants (e.g., "RSA ID Book", "Passport", "Driver's License") that belong to document groups. Use the docID field to link document types to their parent document group from the /individual-docs endpoint. Returns partner-specific settings if configured, otherwise returns default system settings.
[- {
- "id": 1,
- "description": "RSA ID Book",
- "name": "rsaIDBook",
- "docID": 1,
- "active": true
}
]Retrieves a list of transaction types used to classify and categorize client transactions. Transaction types help identify the nature of business transactions (e.g., "Annual Financial Statements", "Cash Deposits", "Wire Transfers") for compliance reporting and risk assessment. Returns partner-specific settings if configured, otherwise returns default system settings.
[- {
- "id": 1,
- "name": "Cash Deposit",
- "active": true
}, - {
- "id": 2,
- "name": "Wire Transfer",
- "active": true
}, - {
- "id": 103,
- "name": "Annual Financial Statements",
- "active": true
}
]Retrieves a list of transaction frequency options used to describe how often transactions occur (e.g., "Monthly", "Quarterly", "Annually", "One-time"). Transaction frequencies are used to assess transaction patterns and support risk analysis. Returns partner-specific settings if configured, otherwise returns default system settings.
[- {
- "id": 1,
- "description": "Monthly",
- "active": true,
- "additionalQuestions": false
}
]Retrieves a list of transaction funding sources used to describe how transactions are funded (e.g., "Bank Transfer", "Cash", "Credit Card"). Funding sources are critical for AML (Anti-Money Laundering) compliance and help identify the origin of funds. Returns partner-specific settings if configured, otherwise returns default system settings.
[- {
- "id": 1,
- "name": "Bank Transfer",
- "active": true,
- "additionalQuestions": true
}
]Retrieves a list of wealth sources used to describe the origin of client wealth (e.g., "Salary", "Inheritance", "Business Income", "Investment Returns"). Wealth sources are critical for Source of Wealth (SOW) and Source of Funds (SOF) compliance, particularly for high-risk clients. Returns partner-specific settings if configured, otherwise returns default system settings.
[- {
- "wealthSourceID": 1,
- "wealthSourceDesc": "Salary",
- "isActive": true,
- "additionalQuestions": false
}
]Retrieves a list of public official types used to identify Politically Exposed Persons (PEPs). PEP identification is critical for enhanced due diligence and AML (Anti-Money Laundering) compliance. Clients identified as PEPs typically require additional screening and documentation. Returns partner-specific settings if configured, otherwise returns default system settings.
[- {
- "PublicOfficialTypeId": 1,
- "PublicOfficialTypeDesc": "Politically Exposed Person",
- "IsActive": true
}
]Retrieves all custom questions configured for the partner's client onboarding process. Custom questions allow partners to collect additional information beyond standard FICA requirements. These questions are partner-specific and can be configured through the partner admin interface. If no custom questions are configured or enabled, the customQuestions array will be empty. This endpoint supports white-labeling and partner customization.
{- "customQuestions": [
- {
- "id": 1,
- "question": "What is your preferred communication method?",
- "type": "select",
- "required": false,
- "options": [
- "Email",
- "SMS",
- "Phone"
], - "enabled": true
}
]
}Retrieves a list of document groups required for entity (company, trust, etc.) client onboarding. Entity document groups are parent categories (e.g., "Identity", "Registration Documents") that contain multiple document types. Each group specifies document requirements for different risk levels (low, medium, high) and includes flags for UBO (Ultimate Beneficial Owner) and trust-related party documentation. Use the /entity-doc-types endpoint to get specific document types within each group. Returns partner-specific settings if configured, otherwise returns default system settings.
[- {
- "entityDocsID": 1,
- "chkbxDocCheckName": "chkbxDocIdentity",
- "docName": "Identity",
- "docRequiredHighRisk": "Copy of ID Document original sighted",
- "docRequiredLowRisk": "Copy of ID Document",
- "docCheckDesc": "ID Number given by Client corresponds to ID number on documentation",
- "selectDocTypeName": "identityDocSelect",
- "highRiskRequired": true,
- "lowRiskRequiredDoc": true,
- "pepRequiredDoc": true,
- "isActive": true,
- "ftrRequiredDoc": false,
- "showUBO": true,
- "showTrustRelatedParty": true,
- "trustRelatedPartyRequired": true,
- "EntityDoc": true,
- "uboIndividualHighRisk": true,
- "uboTrustHighRisk": true,
- "mediumRiskRequiredDoc": true,
- "docRequiredMediumRisk": "Copy of ID Document"
}
]Retrieves all document types available for entity client onboarding. Document types are specific document variants (e.g., "Certificate of Incorporation", "Memorandum of Association", "Trust Deed") that belong to entity document groups. Use the entityDocsID field to link document types to their parent document group from the /entity-docs endpoint. Internal metadata fields are excluded from the response. Returns partner-specific settings if configured, otherwise returns default system settings.
[- {
- "EntityDocTypesID": 1,
- "docTypeDesc": "Certificate of Incorporation",
- "docTypeName": "certificateOfIncorporation",
- "entityDocsID": 1,
- "isActive": true
}
]Retrieves a list of trust related party types used to categorize parties associated with trust entities. Trust related parties include roles such as Beneficiaries, Trustees, Settlors, and Protectors. These types are used during trust onboarding to identify and document all parties involved in the trust structure for compliance purposes.
[- {
- "trustRelatedPartyTypeID": 1,
- "trustRelatedPartyTypeDesc": "Beneficiary",
- "isActive": true
}
]Retrieves a list of document groups required for trust client onboarding. Trust document groups are parent categories (e.g., "Trust Deeds", "Trust Amendments") that contain multiple document types. Each group specifies document requirements for different risk levels (low, medium, high). Trust documents are specific to trust entities and are separate from entity documents. Returns partner-specific settings if configured, otherwise returns default system settings.
[- {
- "trustDocsID": 1,
- "chkbxDocCheckName": null,
- "docName": "Trust Deeds",
- "docRequiredHighRisk": "Certified copy of Trust Deeds and Amendments",
- "docRequiredLowRisk": "Certified copy of Trust Deeds and Amendments",
- "docCheckDesc": "Certified copy of Trust Deeds and Amendments",
- "selectDocTypeName": "trustDeeds",
- "highRiskRequired": true,
- "lowRiskRequiredDoc": true,
- "pepRequiredDoc": null,
- "isActive": true,
- "additionalDocs": false,
- "ftrRequiredDoc": false,
- "showUBO": null,
- "docRequiredMediumRisk": "Certified copy of Trust Deeds and Amendments",
- "mediumRiskRequiredDoc": true
}
]Retrieves a list of users associated with the authenticated partner's account. Users are team members who have access to the partner's eFICA account. The response includes user details such as ID, role, email, name, and active status. Only users belonging to the partner associated with the OAuth2 access token are returned.
[- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "role": "Admin",
- "email": "admin@example.com",
- "firstName": "John",
- "lastName": "Doe",
- "active": true
}
]Returns the partner available balance (sum of non-pending/non-cancelled transactions). External partners can only query their own balance. If the partnerUUID does not match the authenticated partner, the API returns 403 Forbidden.
| partnerUUID required | string Example: 123e4567-e89b-12d3-a456-426614174000 Partner UUID (must match the partner linked to your token) |
{- "balance": 1234.56
}Runs bank account verification for the given individual using details on file (identity) and the bank details supplied in the request body. The result is stored for the eFICA application. Requires OAuth2.
| id required | string <uuid> Example: 123e4567-e89b-12d3-a456-426614174000 FICA individual UUID |
| bankName required | string <= 50 characters Bank identifier as used for bureau verification (e.g. FNB, STANDARDBANK) |
| accountType required | string <= 50 characters Account type code (e.g. CURRENTCHEQUEACCOUNT, SAVINGSACCOUNT) |
| branchCode required | string [ 4 .. 6 ] characters Branch code |
| accountNumber required | string [ 1 .. 13 ] characters Account number |
{- "bankName": "FNB",
- "accountType": "CURRENTCHEQUEACCOUNT",
- "branchCode": "250655",
- "accountNumber": "62000000000"
}{- "success": true,
- "error": null,
- "bankAccountDetails": {
- "accountVerificationResult": { }
}, - "bankName": "FNB",
- "bankAccountType": "CURRENTCHEQUEACCOUNT",
- "bankBranchCode": "250655",
- "bankAccountNumber": "62000000000",
- "transactionDescription": "John Doe Bank Account Verification"
}Returns a paginated list of individuals for the authenticated partner. Supports filtering on multiple fields. Maximum 100 results per page.
| take | number <= 100 Example: take=50 Number of records to return (max 100) |
| skip | number Example: skip=0 Number of records to skip |
| externalUserID | string <= 50 characters Example: externalUserID=EXT-12345 Filter by external user ID |
| clientReference | string <= 50 characters Example: clientReference=REF123456 Filter by client reference |
| firstName | string <= 150 characters Example: firstName=John Filter by first name |
| lastName | string <= 150 characters Example: lastName=Doe Filter by last name |
| ficaStatus | string <= 50 characters Example: ficaStatus=Approved Filter by FICA status |
| identificationNumber | string <= 50 characters Example: identificationNumber=7510315073000 Filter by identification number |
| passportNumber | string <= 100 characters Example: passportNumber=A12345678 Filter by passport number |
| riskDescription | string <= 50 characters Example: riskDescription=Low Risk Filter by risk description |
| approvalDate | string Example: approvalDate=2025-12-01T00:00:00.000Z Filter by approval date (ISO date string) |
| lastUpdated | string Example: lastUpdated=2025-12-01T00:00:00.000Z Filter by last updated date (ISO date string) |
| nextFicaReviewDate | string Example: nextFicaReviewDate=2026-12-01T00:00:00.000Z Filter by next FICA review date (ISO date string) |
{- "data": [
- {
- "ficaIndividualGUID": "123e4567-e89b-12d3-a456-426614174000",
- "externalUserID": "EXT-12345",
- "clientReference": "REF123456",
- "firstName": "John",
- "lastName": "Doe",
- "ficaStatus": "Approved",
- "identificationNumber": "7510315073000",
- "passportNumber": "A12345678",
- "riskDescription": "Low Risk",
- "approvalDate": "2025-12-01T00:00:00.000Z",
- "approvedBy": "John Admin",
- "lastUpdated": "2025-12-01T00:00:00.000Z",
- "nextFicaReviewDate": "2026-12-01T00:00:00.000Z"
}
], - "count": 150,
- "take": 50,
- "skip": 0
}Creates a new individual record in the ficaIndividual table and returns the individual record id as "id".
| externalSystemId | string <= 50 characters External system ID - ID from the external system |
| clientRef | string <= 50 characters Client reference number |
| firstName required | string <= 150 characters First name of the individual |
| lastName required | string <= 150 characters Last name of the individual |
| clientEmail required | string <email> <= 150 characters Client email address |
| telNumber required | string <= 50 characters Client phone number |
| idNumber | string <= 50 characters ID number |
| passportNumber | string <= 100 characters Passport number |
| taxNumber | string <= 50 characters Tax number |
| addressLineOne required | string <= 150 characters Address line one |
| addressLineTwo | string <= 150 characters Address line two |
| townCity required | string <= 150 characters Town/City |
| zipCode required | string <= 50 characters ZIP code |
| employmentStatus required | number The ID of the Employment status |
| occupation | string <= 150 characters Occupation |
| employmentIndustry | number The clients employment industry |
| employerName | string <= 150 characters The clients employer name |
| employerIndustry | string <= 250 characters The industry of the clients employer |
| transactionFrequency required | number The ID of the transaction frequency |
| transactionType required | number The ID of the transaction type |
| transactionFundingSource required | number The ID of the transaction funding source |
| transactionSourceWealth required | number The ID of the transaction source of wealth |
| sourceFundingDescription | string <= 250 characters Source funding description (Required if transactionSourceWealth additional questions is true). |
| sourceWealthDescription | string <= 250 characters Source wealth description (Required if transactionFundingSource additional questions is true) |
| additionalVerification required | boolean Is additional verification required |
| additionalVerificationReason | string <= 250 characters Additional verification reason (Only required if additionalVerification is true). |
| transactionConsistent required | boolean <= 50 characters Is the transaction consistent with your knowledge of the client. |
| transactionInconsistantReason | string <= 250 characters Transaction inconsistent reason (Only required if transactionConsistent is false) |
| customerPermission required | boolean Has the customer given permission for the FICA query. |
| countryResidence required | number The ID of the clients residence country |
| passportCountry required | number The ID of the clients passport country |
| addressCountry required | number Physical address country |
| clientFaceToFace required | boolean Has the client been met Face 2 Face. |
| clientSACitizen required | boolean Is the client a South African Citizen. |
object Custom questions object |
{- "externalSystemId": "EXT-12345",
- "clientRef": "REF123456",
- "firstName": "John",
- "lastName": "Doe",
- "clientEmail": "john.doe@example.com",
- "telNumber": "+27123456789",
- "idNumber": "7510315073000",
- "passportNumber": "A12345678",
- "taxNumber": "1234567890",
- "addressLineOne": "123 Main Street",
- "addressLineTwo": "Apt 4B",
- "townCity": "Cape Town",
- "zipCode": "8001",
- "employmentStatus": 5,
- "occupation": "Software Engineer",
- "employmentIndustry": 1,
- "employerName": "Tech Corp",
- "employerIndustry": "Technology",
- "transactionFrequency": 1,
- "transactionType": 31,
- "transactionFundingSource": 32,
- "transactionSourceWealth": 8,
- "sourceFundingDescription": "Salary",
- "sourceWealthDescription": "Savings",
- "additionalVerification": false,
- "additionalVerificationReason": "High risk client",
- "transactionConsistent": true,
- "transactionInconsistantReason": "Not applicable",
- "customerPermission": true,
- "countryResidence": 2,
- "passportCountry": 0,
- "addressCountry": 0,
- "clientFaceToFace": true,
- "clientSACitizen": true,
- "customQuestions": { }
}{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "ficaStatus": "In Progress",
- "riskDescription": "In Progress"
}Returns individual details from the ficaIndividual table. When client validation data is available, the response includes renderVersion (V1 or V2) so the external system knows how to interpret the payload. V1: consumerDetail, kycResult, consumerEmploymentHistory at root. V2: consumerDetail and consumerAddressHistory at root (and in externalValidationData). Root-level consumerDetail is always populated when validation data exists so the same fields can be read regardless of version.
| id required | string <uuid> Example: 123e4567-e89b-12d3-a456-426614174000 The individual UUID |
{- "riskDescription": "Low Risk"
}Clones an existing individual to renew an individual if their FICA application has expired or if you need to re-FICA a client based off your internal processes. Creates a new FICA record using the source individual as the clone reference.
| id required | string <uuid> Example: 123e4567-e89b-12d3-a456-426614174000 The individual UUID - Clone source UUID |
| externalSystemId | string <= 50 characters External system ID - ID from the external system |
| clientRef | string <= 50 characters Client reference number |
| firstName required | string <= 150 characters First name of the individual |
| lastName required | string <= 150 characters Last name of the individual |
| clientEmail required | string <email> <= 150 characters Client email address |
| telNumber required | string <= 50 characters Client phone number |
| idNumber | string <= 50 characters ID number |
| passportNumber | string <= 100 characters Passport number |
| taxNumber | string <= 50 characters Tax number |
| addressLineOne required | string <= 150 characters Address line one |
| addressLineTwo | string <= 150 characters Address line two |
| townCity required | string <= 150 characters Town/City |
| zipCode required | string <= 50 characters ZIP code |
| employmentStatus required | number The ID of the Employment status |
| occupation | string <= 150 characters Occupation |
| employmentIndustry | number The clients employment industry |
| employerName | string <= 150 characters The clients employer name |
| employerIndustry | string <= 250 characters The industry of the clients employer |
| transactionFrequency required | number The ID of the transaction frequency |
| transactionType required | number The ID of the transaction type |
| transactionFundingSource required | number The ID of the transaction funding source |
| transactionSourceWealth required | number The ID of the transaction source of wealth |
| sourceFundingDescription | string <= 250 characters Source funding description (Required if transactionSourceWealth additional questions is true). |
| sourceWealthDescription | string <= 250 characters Source wealth description (Required if transactionFundingSource additional questions is true) |
| additionalVerification required | boolean Is additional verification required |
| additionalVerificationReason | string <= 250 characters Additional verification reason (Only required if additionalVerification is true). |
| transactionConsistent required | boolean <= 50 characters Is the transaction consistent with your knowledge of the client. |
| transactionInconsistantReason | string <= 250 characters Transaction inconsistent reason (Only required if transactionConsistent is false) |
| customerPermission required | boolean Has the customer given permission for the FICA query. |
| countryResidence required | number The ID of the clients residence country |
| passportCountry required | number The ID of the clients passport country |
| addressCountry required | number Physical address country |
| clientFaceToFace required | boolean Has the client been met Face 2 Face. |
| clientSACitizen required | boolean Is the client a South African Citizen. |
object Custom questions object |
{- "externalSystemId": "EXT-12345",
- "clientRef": "REF123456",
- "firstName": "John",
- "lastName": "Doe",
- "clientEmail": "john.doe@example.com",
- "telNumber": "+27123456789",
- "idNumber": "7510315073000",
- "passportNumber": "A12345678",
- "taxNumber": "1234567890",
- "addressLineOne": "123 Main Street",
- "addressLineTwo": "Apt 4B",
- "townCity": "Cape Town",
- "zipCode": "8001",
- "employmentStatus": 5,
- "occupation": "Software Engineer",
- "employmentIndustry": 1,
- "employerName": "Tech Corp",
- "employerIndustry": "Technology",
- "transactionFrequency": 1,
- "transactionType": 31,
- "transactionFundingSource": 32,
- "transactionSourceWealth": 8,
- "sourceFundingDescription": "Salary",
- "sourceWealthDescription": "Savings",
- "additionalVerification": false,
- "additionalVerificationReason": "High risk client",
- "transactionConsistent": true,
- "transactionInconsistantReason": "Not applicable",
- "customerPermission": true,
- "countryResidence": 2,
- "passportCountry": 0,
- "addressCountry": 0,
- "clientFaceToFace": true,
- "clientSACitizen": true,
- "customQuestions": { }
}{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "ficaStatus": "In Progress",
- "riskDescription": "In Progress"
}Updates individual details based on the individual id.
| id required | string <uuid> Example: 123e4567-e89b-12d3-a456-426614174000 The individual UUID |
| firstName required | string <= 150 characters First name of the individual |
| lastName required | string <= 150 characters Last name of the individual |
| clientEmail required | string <email> <= 150 characters Client email address |
| clientPhone required | string <= 50 characters Client phone number |
| externalSystemId | string External system individual record id |
{- "firstName": "John",
- "lastName": "Doe",
- "clientEmail": "john.doe@example.com",
- "clientPhone": "+27123456789",
- "externalSystemId": "889912d3-xxxx-xxxx-xxx-b77bb61231c1"
}{- "riskDescription": "Low Risk"
}Returns the XDS / face-match profile photo stored for the individual as base64, plus its MIME type. The image exists only after bureau verification has produced and stored a face match photo. Use faceMatchImageDocURL from create or external-validation responses to know that a photo may be available.
| id required | string <uuid> Example: 123e4567-e89b-12d3-a456-426614174000 The individual UUID |
{- "mimeType": "image/jpeg",
- "base64": "string"
}Executes an AML screening search. Uses data from the existing individual record (firstName, lastName, clientEmail).
| id required | string <uuid> Example: 123e4567-e89b-12d3-a456-426614174000 The individual UUID |
{- "matchedNumber": 0,
- "matchedEntities": [ ],
- "webSearchResults": [ ]
}Executes a client validation search using the partner's configured verification type. Returns renderVersion V1 or V2 so the external system knows how to handle the response. V1: consumerDetail, kycResult, consumerEmploymentHistory. V2: consumerDetail, consumerAddressHistory. Validation parameters can be provided in the request body, or data from the existing individual record is used.
| id required | string <uuid> Example: 123e4567-e89b-12d3-a456-426614174000 The individual UUID |
| identificationNumber | string <= 50 characters South African identification number |
| passportNumber | string <= 100 characters Passport number |
| firstName | string <= 150 characters First name |
| lastName | string <= 150 characters Last name |
| residentialLine1 | string <= 150 characters Residential address line 1 |
| residentialLine2 | string <= 150 characters Residential address line 2 |
| residentialLine3 | string <= 150 characters Residential address line 3 |
| residentialZIPCode | string <= 50 characters Residential ZIP code |
{- "identificationNumber": "0101010000081",
- "passportNumber": "A12345678",
- "firstName": "John",
- "lastName": "Doe",
- "residentialLine1": "123 Main Street",
- "residentialLine2": "Apt 4B",
- "residentialLine3": "Suburb",
- "residentialZIPCode": "2000"
}{- "renderVersion": "V1",
- "consumerDetail": {
- "FirstName": "JOHN",
- "SecondName": "JAMES",
- "Surname": "DOE",
- "IDNo": 7510315000081,
- "BirthDate": "1975-10-31T00:00:00+02:00",
- "Gender": "Male",
- "TitleDesc": "MR",
- "MaritalStatusDesc": "Single",
- "Age": 50,
- "PrivacyStatus": "ACCEPTS CONTACTS",
- "HomeTelephoneNo": "0215555555",
- "WorkTelephoneNo": "0216666666",
- "CellularNo": "0723334444",
- "EmailAddress": "johndoe@gmail.com",
- "EmployerDetail": "HAPPY PTY LTD",
- "Nationality": "South African"
}, - "kycResult": {
- "EnquiryDate": "2025-12-01T00:00:00+02:00",
- "ID": "Valid | 7510315000081",
- "ResidentialAddress": "Not Confirmed | 1 2 3 4",
- "Sources": "",
- "IDStatusInd": 1,
- "IDStatusDesc": "ID Validated On Bureau Data",
- "KYCStatusDesc": "No Match Established Within Provided Parameters"
}, - "consumerEmploymentHistory": [
- {
- "EmployerDetail": "HAPPY PTY LTD",
- "Designation": "",
- "LastUpdatedDate": "2023-07-06T22:52:42.527+02:00",
- "IsVerifiedYN": false,
- "FirstReportedDate": "2023-06-21T00:00:00+02:00"
}
], - "faceMatchResult": {
- "IdentityVerificationResult": {
- "IdentityInformation": {
- "VerificationStatus": "Verified",
- "IDNo": "7510315000081"
}
}
}, - "faceMatchImageDocURL": "uuid-key.jpg"
}Updates the PEP and sanctions decision for an individual.
| id required | string <uuid> Example: 123e4567-e89b-12d3-a456-426614174000 The individual UUID |
| pepConfirmReviewed required | boolean Sanctions PEP reviewed decision |
| adverseSearchKYC required | boolean Are there adverse search results? |
| clientForeignOfficial required | boolean Is the client a foreign official? |
| clientForeignOfficialType | number or null The ID of the type of foreign official (Required if clientForeignOfficial is true). |
{- "pepConfirmReviewed": true,
- "adverseSearchKYC": true,
- "clientForeignOfficial": true,
- "clientForeignOfficialType": 7
}{- "riskDescription": "Low Risk"
}Adds a client document and type to the fica record. Requires a file upload. Supports multiple document types and groups with a single file upload (shared document) to save storage space. Use the documents array to explicitly pair document groups (individualDocsID) with their corresponding document types (IndividualDocTypesID). Each entry in the documents array creates a separate document record, all pointing to the same uploaded file. When sending as multipart/form-data, the documents field should be a JSON string that will be automatically parsed.
| id required | string <uuid> Example: 123e4567-e89b-12d3-a456-426614174000 The individual UUID |
| file required | string <binary> Document file to upload (required) |
| documents required | string JSON string array of document group-type pairs. Each entry should have individualDocsID (number) and IndividualDocTypesID (number). Example: [{"individualDocsID": 1, "IndividualDocTypesID": 1}, {"individualDocsID": 7, "IndividualDocTypesID": 19}] |
| additionalFicaDoc | string Additional FICA document flag (optional) |
{- "assignedGroups": [
- {
- "groupId": 1,
- "types": [
- {
- "typeId": 1,
- "ficaIndividualDocsID": 123
}
]
}
], - "documents": [
- {
- "ficaIndividualDocsID": 1,
- "individualDocsID": 1,
- "IndividualDocTypesID": 1,
- "isActive": true
}
], - "count": 2
}Retrieves a client document by FICA Individual Document ID and returns it as a base64 encoded string.
| id required | string <uuid> Example: 123e4567-e89b-12d3-a456-426614174000 The individual UUID |
| ficaIndividualDocsID required | number Example: 123 FICA Individual Document ID |
{- "ficaIndividualDocsID": 123,
- "base64Content": "JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9MZW5ndGggND...",
- "mimeType": "application/pdf",
- "filename": "document.pdf"
}Deletes a client document from the fica record.
| id required | string <uuid> Example: 123e4567-e89b-12d3-a456-426614174000 The individual UUID |
| ficaIndividualDocsID required | number Example: 123 FICA Individual Document ID |
{- "result": {
- "success": true
}
}Marks that documents have been uploaded and reviewed for an individual. Sets docsUploadedReviewed to true.
| id required | string <uuid> Example: 123e4567-e89b-12d3-a456-426614174000 The individual fica application UUID |
| userUUID required | string <uuid> UUID of the user who is confirming the documents |
{- "userUUID": "123e4567-e89b-12d3-a456-426614174000"
}{- "message": "Documents confirmed successfully",
- "docsUploadedReviewed": true
}Updates the onboarding decision for an individual.
| id required | string <uuid> Example: 123e4567-e89b-12d3-a456-426614174000 The individual UUID |
| onboardingDecision required | string <= 50 characters Enum: "Approved" "Declined" "Refer" "In Progress" Client onboarding decision |
| additionalComments | string <= 250 characters Transaction approve, decline, refer reason |
| nextFicaReviewDate | string <= 250 characters Date of fica expiry. |
{- "onboardingDecision": "Approved",
- "additionalComments": "All checks passed",
- "nextFicaReviewDate": "2025-12-02T22:00:00.000Z"
}{- "message": "The client was successfully onboarded."
}Generates the PDF report of the FICA application. By default returns JSON with a base64-encoded string. Use format=binary to receive raw application/pdf bytes (e.g. for large files). The report includes personal information, addresses, employment details, compliance questionnaire, and verification checks.
| id required | string <uuid> Example: 123e4567-e89b-12d3-a456-426614174000 The individual UUID |
| format | string Enum: "json" "binary" Omit or use json for { base64Content, mimeType, filename }. Use binary for raw PDF body. |
{- "base64Content": "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlIC9DYXRhbG9nCi9QYWdlcyAyIDAgUgo+PgplbmRvYmoK...",
- "mimeType": "application/pdf",
- "filename": "fica-report-123e4567-e89b-12d3-a456-426614174000.pdf"
}