Titan API
Titan is the platform’s compliance, fraud, and risk management module, providing real-time tools to help partners protect their businesses and meet regulatory requirements. Titan combines automated verifications, fraud detection, and financial validation into a single, streamlined solution.
With the Titan API, partners can:
- Perform KYC Compliance Scans
Instantly verify the identities of individuals to meet regulatory and onboarding requirements. - Perform KYB Compliance Scans
Conduct business entity verification (Know Your Business) for ultimate beneficial ownership (UBO) and risk screening. - Perform IDV (Selfie ID Verification)
Authenticate individuals using ID plus selfie face match, with passive liveness testing to prevent fraud such as image spoofing and deepfake attacks. - Manage Fraud
Monitor, detect, and respond to potential fraud activity with configurable rules and workflows. - Monitor Transactions for AML Screening
Automatically screen transactions in real time to detect suspicious activity and meet Anti-Money Laundering (AML) obligations. - Validate Bank Information
Verify Routing Numbers, SWIFT Codes, and IBANs to ensure the accuracy and legitimacy of banking details during onboarding and payment processing.
Titan enables partners to confidently scale operations, safeguard their programs, and stay compliant — all while delivering a seamless user experience.
Key Features:
- Automated KYC, KYB, and IDV verifications
- Real-time transaction fraud monitoring and case management
- AML transaction screening and alerting
- Secure validation of banking information (Routing Number, SWIFT, IBAN)
- Designed for compliance-driven, risk-aware operations
Titan Compliance
Use the compliance service, to perform KYB, KYC, IDV scans. The scans also include sanctions screening, data verification, document authentication.
KYB & KYC Scans
Steps to complete a full compliance scan for a Business Profile:
- 1. Perform a KYB scan on the business
- 2. Perform a KYC scan on each business contact
Steps to complete a full compliance scan for a Personal Profile:
- 1. Perform a KYC scan on each business contact
IDV Scans
Selfie ID Verification (IDV) uses ID plus selfie face match and passive liveness testing to better deter and detect fraud, catch image spoofing, deepfakes etc.
The response will include a link that can be used by your merchant to complete IDV scan. If an email address is included in the request, an automated email will be sent which includes the link to complete the IDV scan.
The IDV scan can only be performed on business contacts and personal contacts.
KYB
The KYB (Know Your Business) Business API initiates an automated scan to swiftly and confidently verify businesses and their Ultimate Beneficial Owners (UBO) using multiple layers of compliance and risk detection.
Rules:
- The scan runs against the business object linked to the merchant's profile.
- This request starts a KYB verification workflow.
- The status of the KYB scan is not returned immediately — instead, the user will receive a webhook notification once the KYB process completes.
- The webhook will indicate whether the business is:
- "PENDING"
- "ACCEPT"
- "DENY"
- "MANUAL_REVIEW"
Endpoint Structure
- Method: POST
- Endpoint:
/v1/compliance/kyb/business/{businessUuid}
Path Parameter
| Type | Description |
|---|---|
| businessUuid | String (UUID) Unique identifier of the business from the merchant profile to scan. |
Example Immediate Response
{
"success": true,
"timestamp": "2023-01-01 00:00:00",
"body": {
"status": "PENDING"
}
}
Expected Webhook Notification (Separate Step)
Once the scan is complete, a webhook will be triggered.
Webhook details will include the updated KYB status:
| Status | Description |
|---|---|
| PENDING | KYB scan is still in progress. |
| ACCEPT | Business passed verification. |
| DENY | Business failed verification. |
| MANUAL_REVIEW | Business requires manual review by compliance team. |
(For more information about setting up webhooks, refer to the Introduction > Settings > Webhooks section in the guide.)
Notes:
- You must monitor webhooks to track the final KYB decision.
- This API only initiates the scan; it does not perform real-time decisioning.
- Make sure that businessUuid corresponds to the business in the merchant profile.
KYC
The KYC (Know Your Customer) API allows to verify the identity of individuals associated with a merchant profile, using:
- Real-time data checks
- Document verification
- Biometric authentication (where applicable)
This improves regulatory compliance, detects financial crime, and reduces onboarding risk.
Rules:
- KYC scans can only be performed on:
- Business Contacts (sub-object of Business Profile)
- Personal Contacts (object of Personal Profile)
- The API initiates the KYC scan.
- The KYC result is delivered later via a webhook notification.
- Possible KYC scan results include:
- "PENDING"
- "ACCEPT"
- "DENY"
- "MANUAL_REVIEW"
Endpoint Structures
| Purpose | Endpoint |
|---|---|
| KYC Business Contact | POST /v1/compliance/kyc/business-contact/{businessContactUuid} |
| KYC Personal Contact | POST /v1/compliance/kyc/personal-contact/{personalContactUuid} |
Path Parameter
| Type | Description |
|---|---|
| businessContactUuid | String (UUID) Unique identifier of the business contact to scan. |
| personalContactUuid | String (UUID) Unique identifier of the personal contact to scan. |
Example Immediate Response
{
"success": true,
"timestamp": "2023-01-01 00:00:00",
"body": {
"status": "PENDING"
}
}
Expected Webhook Notification (Separate Step)
Once the KYC scan is completed, a webhook will deliver the result:
| Status | Description |
|---|---|
| PENDING | KYC scan is still being processed. |
| ACCEPT | Contact passed KYC verification successfully. |
| DENY | Contact failed verification. |
| MANUAL_REVIEW | Contact requires manual compliance review. |
(For webhook configuration, refer to Introduction > Settings > Webhooks.)
Notes:
- Monitor webhooks to retrieve the final KYC status.
- This API only initiates the KYC scan; it does not immediately confirm pass/fail.
- businessContactUuid or personalContactUuid must point to valid contacts.
IDV
The IDV (Selfie Identity Verification) API allows to verify an individual's identity by combining:
- Government-issued ID document scan
- Selfie face match (biometric comparison)
- Passive liveness detection (anti-fraud, anti-deepfake technology)
Rules:
- A verification link is returned in the API response.
- Optionally, an email with the verification link is sent automatically if sendEmail: true.
- IDV can be performed on:
- Business Contacts (sub-object of Business Profile)
- Personal Contacts (object of Personal Profile)
- It is recommended to complete IDV on a mobile device, but computers are also supported.
- A webhook notification is sent once the IDV scan is completed.
Endpoint Structures
| Purpose | Endpoint |
|---|---|
| IDV Business Contact | POST /v1/compliance/idv/business-contact/{businessContactUuid} |
| IDV Personal Contact | POST /v1/compliance/idv/personal-contact/{personalContactUuid} |
Path Parameter
| Type | Description |
|---|---|
| businessContactUuid | String (UUID) Unique identifier of the business contact. (Business Profile) |
| personalContactUuid | String (UUID) Unique identifier of the personal contact. (Personal Profile) |
Request Body Schema
| Field | Type | Description | Required? |
|---|---|---|---|
| sendEmail | Boolean | If true, an automated email is sent to the contact with the IDV link. If false, only the link is returned in the response. | Required |
Example Immediate Response
{
"body": {
"url": "https://{url.com}/idv/person/{IDV-LINK-ID}"
},
"success": true,
"now": "2025-04-20 13:57:41"
}
Field Description for Response
| Field | Type | Description |
|---|---|---|
| body.url | String (URL) | Direct link where the contact must complete the IDV verification. |
| success | Boolean | Indicates if the request to generate the link was successful. |
| now | String (Timestamp) | Timestamp when the IDV link was created. |
Notes:
- If sendEmail: true, the contact receives an email with the IDV link.
- If sendEmail: false, you must manually deliver the url to the contact.
- Completing IDV on a mobile device is recommended for better camera quality and success rate.
- Monitor webhooks to receive updates on IDV completion results (pass, fail, manual review).
Titan Validation
Bank Lookup
The Bank Lookup API allows to validate banking information in real-time by searching against major databases for:
- Routing Numbers (U.S. domestic)
- SWIFT Codes (international)
- IBANs (international)
Rules:
- You must specify the type of lookup: "routingNumber", "swiftCode", or "iban".
- Depending on the type selected, the correct field (routingNumber, swiftCode, or iban) must be provided.
- If validating a Routing Number, you must also specify payType as either "ach" or "wire" to tailor the results.
Endpoint Structure
- Method: POST
- Endpoint:
/v1/validation/bank-lookup
Request Body Schema
| Field | Type | Description | Required? |
|---|---|---|---|
| Type | String | Lookup type: “routingNumber”, “swiftCode”, or “iban”. | Required |
| routingNumber | String | 9-digit U.S. routing number (required if type = “routingNumber”). | Conditionally Required |
| payType | String | “ach” or “wire” (required if type = “routingNumber”). | Conditionally Required |
| swiftCode | String | Valid SWIFT code (required if type = “swiftCode”). | Conditionally Required |
| iban | String | Valid IBAN number (required if type = “iban”). | Conditionally Required |
Example Routing Number Response
{
"body": {
"status": "success",
"data": {
"routingNumber": "121000248",
"paymentType": "ach",
"name": "Wells Fargo Bank, Na",
"addressFull": "255 2nd Ave South, Minneapolis, MN 55479",
"street": "255 2nd Ave South",
"city": "Minneapolis",
"state": "MN",
"zip": "55479",
"phone": "800-745-2426",
"active": "Active",
"lastUpdated": "Mar 25, 2024"
}
},
"success": true,
"now": "2025-04-20 14:34:52"
}
Example Swift Code Response
{
"body": {
"valid": true,
"swift": "WFBIUS6S",
"swift_data": {
"bank": "WFBI",
"country_code": "US",
"location_code": "6S",
"code_status": true,
"branch_code": ""
},
"bank_data": {
"bank_code": "",
"name": "WELLS FARGO BANK, N.A.",
"zip": "",
"city": "ANCHORAGE,AK",
"branch": "WELLS FARGO BANK, N.A., ANCHORAGE,AK",
"address": "",
"country": "United States",
"country_code": "US"
}
},
"success": true,
"now": "2025-04-20 14:36:00"
}
Example IBAN Response
{
"body": {
"valid": true,
"message": "IBAN number is valid.",
"iban": "DE89370400440532013000",
"iban_data": {
"country": "Germany",
"country_code": "DE",
"sepa_country": true,
"checksum": "89",
"BBAN": "370400440532013000",
"bank_code": "37040044",
"account_number": "0532013000",
"branch": "",
"national_checksum": "",
"country_iban_format_as_swift": "DE2!n8!n10!n",
"country_iban_format_as_regex": "^DE(\\d{2})(\\d{8})(\\d{10})$"
},
"bank_data": {
"bank_code": "37040044",
"name": "Commerzbank",
"zip": "50447",
"city": "Köln",
"bic": "COBADEFFXXX"
},
"country_iban_example": "DE89370400440532013000"
},
"success": true,
"now": "2025-04-20 14:37:03"
}
Notes:
- For Routing Number Lookups, payType must be specified as "ach" or "wire" to receive the correct payment method details.
- SWIFT Codes and IBANs do not require payType.
- This API validates the bank information only; it does not check account balances.
- Make sure that the inputs are properly formatted depending on the lookup type you select.