Skip to main content

eFICA API - Public API (1.0.0)

Public OpenAPI spec for eFICA developer portal.

OAuth2

OAuth2 Authorization Endpoint

Returns HTML login form for OAuth2 authorization. User logs in and is redirected back with authorization code.

query Parameters
client_id
required
string
Example: client_id=my-client-id

OAuth2 client identifier

code_challenge
required
string
Example: code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM

PKCE code challenge (base64url encoded SHA256 hash)

code_challenge_method
required
string
Value: "S256"

PKCE code challenge method (must be S256)

redirect_uri
required
string
Example: redirect_uri=https://example.com/callback

Redirect URI where authorization code will be sent

state
string
Example: state=random-state-value

Optional state parameter for CSRF protection

response_type
string
Value: "code"
Example: response_type=code

Optional response type (defaults to code)

scope
string
Example: scope=read write

Optional scope (not used in current implementation)

Responses

Response samples

Content type
application/json
{}

Process OAuth2 Login

Processes user login and redirects to redirect_uri with authorization code

Request Body schema: application/json
required
email
required
string <email>

User email address

password
required
string >= 8 characters

User password

client_id
required
string

OAuth2 client identifier

code_challenge
required
string

PKCE code challenge

code_challenge_method
required
string
Value: "S256"

PKCE code challenge method

redirect_uri
required
string

Redirect URI

state
string

Optional state parameter

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "password": "password123",
  • "client_id": "my-client-id",
  • "code_challenge": "E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM",
  • "code_challenge_method": "S256",
  • "redirect_uri": "https://example.com/callback",
  • "state": "random-state-value"
}

Response samples

Content type
application/json
{}

OAuth2 Token Endpoint

Exchanges authorization code for access token (PKCE required) or refreshes access token using refresh token

Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{
  • "grant_type": "authorization_code",
  • "code": "abc123def456",
  • "code_verifier": "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk",
  • "redirect_uri": "https://example.com/callback",
  • "refresh_token": "eyJhbGciOiJFZERTQSJ9...",
  • "client_id": "my-client-id"
}

Response samples

Content type
application/json
{
  • "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"
}

OAuth2 Logout Endpoint

Invalidates OAuth2 session by deleting the refresh token from the database. Useful for testing and proper session management.

Request Body schema: application/json
required
refresh_token
required
string

OAuth2 refresh token to invalidate

client_id
required
string

OAuth2 client identifier

Responses

Request samples

Content type
application/json
{
  • "refresh_token": "eyJhbGciOiJFZERTQSJ9...",
  • "client_id": "my-client-id"
}

Response samples

Content type
application/json
{
  • "message": "Logged out successfully"
}

Health & Status

Check API health status

Returns the current health status of the eFica API. This endpoint is publicly accessible and does not require authentication.

Responses

Response samples

Content type
application/json
{
  • "status": "ok"
}

Settings

Get countries

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.

Authorizations:
bearer
query Parameters
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.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get employment industries

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.

Authorizations:
bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get entity industries

Returns a list of entity industries.

Authorizations:
bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get employment types

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.

Authorizations:
bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get individual document groups

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.

Authorizations:
bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get all individual document types

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.

Authorizations:
bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get transaction types

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.

Authorizations:
bearer

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    }
]

Get transaction frequencies

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.

Authorizations:
bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get transaction funding sources

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.

Authorizations:
bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get wealth sources

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.

Authorizations:
bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get public official types

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.

Authorizations:
bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get custom additional questions (if enabled)

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.

Authorizations:
bearer

Responses

Response samples

Content type
application/json
{
  • "customQuestions": [
    ]
}

Get entity document groups

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.

Authorizations:
bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get all entity document types

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.

Authorizations:
bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get entity types

Returns a list of entity types.

Authorizations:
bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get trust related party types

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.

Authorizations:
bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get trust Masters of the High Court settings

Returns a list of trust Masters of the High Court.

Authorizations:
bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get trust document groups

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.

Authorizations:
bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get partner users

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.

Authorizations:
bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Billing

Get available balance

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.

Authorizations:
bearer
path Parameters
partnerUUID
required
string
Example: 123e4567-e89b-12d3-a456-426614174000

Partner UUID (must match the partner linked to your token)

Responses

Response samples

Content type
application/json
{
  • "balance": 1234.56
}

Additional Services

Verify an individual bank account

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.

Authorizations:
bearer
path Parameters
id
required
string <uuid>
Example: 123e4567-e89b-12d3-a456-426614174000

FICA individual UUID

Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{
  • "bankName": "FNB",
  • "accountType": "CURRENTCHEQUEACCOUNT",
  • "branchCode": "250655",
  • "accountNumber": "62000000000"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "error": null,
  • "bankAccountDetails": {
    },
  • "bankName": "FNB",
  • "bankAccountType": "CURRENTCHEQUEACCOUNT",
  • "bankBranchCode": "250655",
  • "bankAccountNumber": "62000000000",
  • "transactionDescription": "John Doe Bank Account Verification"
}

Individuals

List individuals with pagination and filters

Returns a paginated list of individuals for the authenticated partner. Supports filtering on multiple fields. Maximum 100 results per page.

Authorizations:
bearer
query Parameters
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)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "count": 150,
  • "take": 50,
  • "skip": 0
}

Create new individual record

Creates a new individual record in the ficaIndividual table and returns the individual record id as "id".

Authorizations:
bearer
Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{
  • "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": { }
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "ficaStatus": "In Progress",
  • "riskDescription": "In Progress"
}

Get individual details by UUID

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.

Authorizations:
bearer
path Parameters
id
required
string <uuid>
Example: 123e4567-e89b-12d3-a456-426614174000

The individual UUID

Responses

Response samples

Content type
application/json
{
  • "riskDescription": "Low Risk"
}

Clone an existing individual details, creates new fica record.

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.

Authorizations:
bearer
path Parameters
id
required
string <uuid>
Example: 123e4567-e89b-12d3-a456-426614174000

The individual UUID - Clone source UUID

Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{
  • "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": { }
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "ficaStatus": "In Progress",
  • "riskDescription": "In Progress"
}

Update individual details

Updates individual details based on the individual id.

Authorizations:
bearer
path Parameters
id
required
string <uuid>
Example: 123e4567-e89b-12d3-a456-426614174000

The individual UUID

Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{
  • "firstName": "John",
  • "lastName": "Doe",
  • "clientEmail": "john.doe@example.com",
  • "clientPhone": "+27123456789",
  • "externalSystemId": "889912d3-xxxx-xxxx-xxx-b77bb61231c1"
}

Response samples

Content type
application/json
{
  • "riskDescription": "Low Risk"
}

Get identity verification profile image (base64)

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.

Authorizations:
bearer
path Parameters
id
required
string <uuid>
Example: 123e4567-e89b-12d3-a456-426614174000

The individual UUID

Responses

Response samples

Content type
application/json
{
  • "mimeType": "image/jpeg",
  • "base64": "string"
}

Execute AML screening search

Executes an AML screening search. Uses data from the existing individual record (firstName, lastName, clientEmail).

Authorizations:
bearer
path Parameters
id
required
string <uuid>
Example: 123e4567-e89b-12d3-a456-426614174000

The individual UUID

Responses

Response samples

Content type
application/json
{
  • "matchedNumber": 0,
  • "matchedEntities": [ ],
  • "webSearchResults": [ ]
}

Execute external client validation

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.

Authorizations:
bearer
path Parameters
id
required
string <uuid>
Example: 123e4567-e89b-12d3-a456-426614174000

The individual UUID

Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{
  • "identificationNumber": "0101010000081",
  • "passportNumber": "A12345678",
  • "firstName": "John",
  • "lastName": "Doe",
  • "residentialLine1": "123 Main Street",
  • "residentialLine2": "Apt 4B",
  • "residentialLine3": "Suburb",
  • "residentialZIPCode": "2000"
}

Response samples

Content type
application/json
{
  • "renderVersion": "V1",
  • "consumerDetail": {
    },
  • "kycResult": {
    },
  • "consumerEmploymentHistory": [
    ],
  • "faceMatchResult": {
    },
  • "faceMatchImageDocURL": "uuid-key.jpg"
}

Update PEP and sanctions decision

Updates the PEP and sanctions decision for an individual.

Authorizations:
bearer
path Parameters
id
required
string <uuid>
Example: 123e4567-e89b-12d3-a456-426614174000

The individual UUID

Request Body schema: application/json
required
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).

Responses

Request samples

Content type
application/json
{
  • "pepConfirmReviewed": true,
  • "adverseSearchKYC": true,
  • "clientForeignOfficial": true,
  • "clientForeignOfficialType": 7
}

Response samples

Content type
application/json
{
  • "riskDescription": "Low Risk"
}

Add client document to individual record

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.

Authorizations:
bearer
path Parameters
id
required
string <uuid>
Example: 123e4567-e89b-12d3-a456-426614174000

The individual UUID

Request Body schema: multipart/form-data
required
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)

Responses

Response samples

Content type
application/json
{
  • "assignedGroups": [
    ],
  • "documents": [],
  • "count": 2
}

Get client document as base64

Retrieves a client document by FICA Individual Document ID and returns it as a base64 encoded string.

Authorizations:
bearer
path Parameters
id
required
string <uuid>
Example: 123e4567-e89b-12d3-a456-426614174000

The individual UUID

ficaIndividualDocsID
required
number
Example: 123

FICA Individual Document ID

Responses

Response samples

Content type
application/json
{
  • "ficaIndividualDocsID": 123,
  • "base64Content": "JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9MZW5ndGggND...",
  • "mimeType": "application/pdf",
  • "filename": "document.pdf"
}

Delete client document from individual record

Deletes a client document from the fica record.

Authorizations:
bearer
path Parameters
id
required
string <uuid>
Example: 123e4567-e89b-12d3-a456-426614174000

The individual UUID

ficaIndividualDocsID
required
number
Example: 123

FICA Individual Document ID

Responses

Response samples

Content type
application/json
{
  • "result": {
    }
}

Confirm documents have been uploaded

Marks that documents have been uploaded and reviewed for an individual. Sets docsUploadedReviewed to true.

Authorizations:
bearer
path Parameters
id
required
string <uuid>
Example: 123e4567-e89b-12d3-a456-426614174000

The individual fica application UUID

Request Body schema: application/json
required
userUUID
required
string <uuid>

UUID of the user who is confirming the documents

Responses

Request samples

Content type
application/json
{
  • "userUUID": "123e4567-e89b-12d3-a456-426614174000"
}

Response samples

Content type
application/json
{
  • "message": "Documents confirmed successfully",
  • "docsUploadedReviewed": true
}

Update onboarding decision

Updates the onboarding decision for an individual.

Authorizations:
bearer
path Parameters
id
required
string <uuid>
Example: 123e4567-e89b-12d3-a456-426614174000

The individual UUID

Request Body schema: application/json
required
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.

Responses

Request samples

Content type
application/json
{
  • "onboardingDecision": "Approved",
  • "additionalComments": "All checks passed",
  • "nextFicaReviewDate": "2025-12-02T22:00:00.000Z"
}

Response samples

Content type
application/json
{
  • "message": "The client was successfully onboarded."
}

Get PDF report of FICA application

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.

Authorizations:
bearer
path Parameters
id
required
string <uuid>
Example: 123e4567-e89b-12d3-a456-426614174000

The individual UUID

query Parameters
format
string
Enum: "json" "binary"

Omit or use json for { base64Content, mimeType, filename }. Use binary for raw PDF body.

Responses

Response samples

Content type
{
  • "base64Content": "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlIC9DYXRhbG9nCi9QYWdlcyAyIDAgUgo+PgplbmRvYmoK...",
  • "mimeType": "application/pdf",
  • "filename": "fica-report-123e4567-e89b-12d3-a456-426614174000.pdf"
}