Introduction
Verifow is an enterprise-grade Anti-Money Laundering (AML) and Combating the Financing of Terrorism (CFT) platform built for African financial institutions. Our API enables you to:- Screen transactions through a multi-layer compliance pipeline in under 200ms
- Verify identities via BVN, NIN, and biometric liveness checks
- Onboard businesses with CAC lookup, director verification, and beneficial owner screening
- Monitor compliance via real-time dashboards and webhook notifications
- Authentication
- Transaction Screening
- KYC Verification
- KYB Verification
- Liveness Check
- How Screening Works
- Webhooks
- Error Handling
Authentication
The API supports two authentication methods. All endpoints (except/health) require authentication.
Method 1: Bearer Token (Dashboard Sessions)
Used when calling the API from the dashboard or on behalf of a logged-in user.POST /api/v1/auth/login with email and password.
Method 2: API Key (Backend Integrations)
Used for server-to-server integrations from your core banking system.Transaction Screening
Screen Transaction
POST /api/v1/transactions/screen
Submit a single transaction for real-time AML/CFT screening. The response includes the final outcome, risk breakdown per engine, triggered rules, and recommended actions.
Request Body
Example Request — Individual Transaction
Business Transactions (KYB)
For corporate senders, setmetadata.entityType to "BUSINESS" and provide the company’s CAC registration number in metadata.senderRcNumber. The platform runs the transaction through the KYB identity-risk engine in addition to KYC and sanctions screening.
If your bank has already verified the business outside of Verifow, send senderKybStatus: "VERIFIED" to bypass the Verifow KYB lookup. You should still send the sender’s KYC fields (senderKycStatus, senderKycTier, senderKycVerifiedAt, senderKycExternalRef) when available, because authorized signatories and directors may still be evaluated under individual KYC rules.
Example Request — Business Transaction
Regulatory transparency: When you assert
senderKycStatus or senderKybStatus in the payload, you are attesting that your bank has independently verified the customer or business. Verifow will rely on these assertions instead of performing its own lookup when the tenant is configured for HYBRID or EXTERNAL mode.If
senderKybStatus is omitted for a business transaction, Verifow will attempt a local KYB lookup using metadata.senderRcNumber. If no KYB record exists, the transaction will be scored as high risk.Example Response — 200 OK (REVIEW)
Idempotency: Sending the same
externalId twice returns the cached
verdict without re-screening. This makes retries safe.List Transactions
GET /api/v1/transactions
Retrieve a paginated list of all screened transactions in your tenant.
Query Parameters
Example Response — 200 OK
Get Transaction Detail
GET /api/v1/transactions/:id
Retrieve the full screening result for a single transaction, including the complete verdict with engine breakdowns.
Path Parameters
Example Response — 200 OK
KYC Verification
KYC (Know Your Customer) verification validates individual customer identities through BVN, NIN, and biometric liveness checks against national identity providers.KYC Application Statuses
Submit KYC Application
POST /api/v1/kyc/applications
Create a new KYC application for an individual customer.
Request Body
Example Request
List KYC Applications
GET /api/v1/kyc/applications
Query Parameters
Get KYC Application
GET /api/v1/kyc/applications/:id
Retrieve a KYC application with full verification results and uploaded documents.
Example Response — 200 OK
Verify BVN
POST /api/v1/kyc/applications/:id/verify-bvn
Verify the applicant’s BVN against the configured identity provider (embedded or BYOL).
Path Parameters
Request Body
Example Request
Verify NIN
POST /api/v1/kyc/applications/:id/verify-nin
Verify the applicant’s NIN against the configured identity provider.
Request Body
Example Response — 200 OK
Liveness Check
POST /api/v1/kyc/applications/:id/liveness-check
Run a biometric liveness detection and face-match check. This verifies that the applicant is a real person (not a photo or video spoof) and optionally matches their selfie against an uploaded ID document.
How It Works
- Liveness Detection: The provider analyzes a selfie image to detect presentation attacks (printed photos, screens, masks, deepfakes).
- Face Match (optional): If a document image is provided, the system compares the selfie face against the document photo.
- Status Update: On success, the application status advances to
LIVENESS_PASSED.
When to Use
Path Parameters
Request Body-
Example Request
-
A failed liveness check does not automatically reject the application. The status remains
PENDING(or its previous state) so a compliance officer can review and decide whether to request a retry or reject.
Approve KYC Application
PATCH /api/v1/kyc/applications/:id/approve
Final approval of a KYC application. Requires BANK_ADMIN or COMPLIANCE_OFFICER role.
Example Response — 200 OK
-
Approving a KYC application updates the customer’s risk profile. Future transactions from this customer will reflect the
APPROVEDstatus (score 0, no KYC-related risk).
Reject KYC Application
PATCH /api/v1/kyc/applications/:id/reject
Reject a KYC application that fails verification. Requires BANK_ADMIN or COMPLIANCE_OFFICER role.
Request Body
Example Response — 200 OK
KYB Verification
KYB (Know Your Business) verifies corporate entities before they transact. It integrates with the Corporate Affairs Commission (CAC) to validate company registration, verify directors through KYC identity checks, and screen beneficial owners against global sanctions lists.KYB Application Statuses
KYB Screening Trigger
KYB checks run automatically during transaction screening when the transaction metadata indicates a business entity:Submit KYB Application
POST /api/v1/kyc/kyb/applications
Create a new KYB application for a corporate entity.
Request Body
Example Request-
Verify CAC
POST /api/v1/kyc/kyb/applications/:id/verify-cac
Run a CAC lookup by RC number to fetch company details, directors, and beneficial owners.
Request Body
Example Response — 200 OK
Verify Directors
POST /api/v1/kyc/kyb/applications/:id/verify-directors
Verify each director’s identity via BVN/NIN against identity providers.
Request Body
Example Response — 200 OK
Screen Beneficial Owners
POST /api/v1/kyc/kyb/applications/:id/screen-beneficial-owners
Screen beneficial owners against global sanctions and PEP watchlists.
Request Body
Example Response — 200 OK
Approve KYB Application
PATCH /api/v1/kyc/kyb/applications/:id/approve
Requires BANK_ADMIN or COMPLIANCE_OFFICER role.
Example Response — 200 OK
Reject KYB Application
PATCH /api/v1/kyc/kyb/applications/:id/reject
Requires BANK_ADMIN or COMPLIANCE_OFFICER role.
Request Body
Example Response — 200 OK
How Screening Works
Every transaction passes through multiple screening layers in sequence. The entire pipeline completes in 80–200ms (p95).The Pipeline
Mandatory Regulatory Rules
These 9 rules are always active and cannot be disabled:Identity Risk Scoring
Individual (KYC)
Business (KYB)
KYC Trust Modes
Tenants can configure how KYC status is resolved during transaction screening:
Set the mode via
PATCH /api/v1/tenants/me with kycTrustMode.
Score Aggregation
Score Floor Guarantee:
Final Score = MAX(weighted_average, max_engine_score × 0.8)
The highest-severity outcome from any engine becomes the final decision.
Webhooks
Verifow sends real-time notifications to your backend when a compliance officer resolves a case linked to one of your transactions.Setup: Configure your
Webhook URL and Webhook Secret in the
Developer Webhooks section of the API Keys page in your Dashboard.Events
Payload
Delivery Guarantees
Signature Verification
Every webhook includes anX-Signature header — an HMAC-SHA256 hash of the raw JSON body, signed with your Webhook Secret.
Error Handling
Standard HTTP status codes indicate success or failure:Fail-Open Policy: If the Sanctions or Behavioral engines experience
upstream downtime, Verifow implements a fail-open policy — your legitimate
transactions continue processing without interruption, while partial
screenings are logged for retroactive review.
Verifow — Enterprise-grade AML/CFT compliance for African financial institutions. For support, contact adams@bevars.com.