Integration Flow
Create the user
Create User with
externalUserId, email, and identifierVerify the user (KYC or KYB)
Option A: Generate KYC Link to redirect the user to our providerOption B: Submit KYC Data directly via APIOption C: Generate KYB Link for business users
Get verification status
Poll via Get KYC Details or Get KYB Details, or receive results through Webhooks
Create the User
To onboard a new user into your system, you first need to register them with the Capa API. Hereβs how the process works:-
Send a Request to Create a User
- Make a POST request to the User Endpoint with the necessary user information, such as
externalUserId,email, andidentifier. - The
externalUserIdis your own unique identifier for this user, ensuring we make your user as unique as possible. - The
typedefines the type of user between the following options:INDIVIDUAL,BUSINESS.
- Make a POST request to the User Endpoint with the necessary user information, such as
-
Receive the User ID
- Upon successful creation, Capa will return a unique
userIdfor the newly created user. ThisuserIdis required for generating the KYC verification link in the next step.
- Upon successful creation, Capa will return a unique
-
Store the User ID
- Save the returned
userIdin your system, linking it to your ownexternalUserId. ThisuserIdwill be used whenever you need to perform actions related to this user, such as KYC verification.
- Save the returned
Complete User KYC
For individual users you have two verification options: Generate KYC Verification Link (redirect the user to our provider) or Send KYC Information Directly (submit identity data via API). For business users, use the KYB Verification Link.
Generate KYC Verification Link with our Provider
Once you have successfully created a user, the next step is to generate a KYC verification link. This link allows the user to complete the Know Your Customer (KYC) process, which is required for regulatory compliance.1. Generate Link
-
Prepare the KYC Verification Request
- Use the
userIdobtained from the user creation step. - Determine the
countryin which the user resides or where the verification is needed. Ensure the country code is compliant with the supported countries in the Capa API. - Use the
partnerRedirectUrito determine the redirection after the KYC completion
- Use the
-
Send a Request to Generate the KYC Link
- Make a POST request to the Generate KYC Link Endpoint endpoint with the required parameters (
userId,country, andpartnerRedirectUriif necessary).
- Make a POST request to the Generate KYC Link Endpoint endpoint with the required parameters (
-
Receive the KYC Link
- Upon successful submission, Capa will return a direct
kycLinkfor the user. This link directs the user to a secure Metamap webpage where they can complete the KYC process.
- Upon successful submission, Capa will return a direct
-
Distribute the KYC Link to the User
- Share the
kycLinkwith the user via email, SMS, or within your app. Provide clear instructions on how to use the link to complete the KYC verification.
- Share the
2. Implement the KYC Link on Your Platform
-
Embed the KYC Link in Your User Interface
- Use the
kycLinkin your website or application to create a button or hyperlink that users can click to start their KYC verification. - Example:
- Use the
-
Guide the User Through the KYC Process
- Ensure the user knows they will be redirected to a third-party webpage (Metamap) for KYC verification. Provide any necessary guidance to help them complete the process smoothly.
3. Get KYC Information
To get the KYC Information on demand use the Get KYC Details endpoint to obtain all of the information from the userβs KYC including the status. This is an optional step since you will be able to get the information through the webhook too.4. Handle the Webhook Verification Response
Follow the π£ Webhooks for more information-
Receive the Webhook Notification
- After the user completes the KYC process, Capa will send a verification response to your system via a webhook. This response will contain the result of the KYC process.
-
Process the Webhook Data
- Set up your system to handle incoming webhook notifications. Verify the authenticity of the webhook by checking the signature included in the header and process the KYC status accordingly (e.g., update the userβs verification status in your database).
-
Act on the Verification Result
- Based on the result from the webhook, take appropriate action:
- If Verified: Grant access to features or services that require a verified status.
- If Rejected: Notify the user and provide instructions on how to retry the verification process.
- If Further Review is Needed: Follow up as required to assist the user through any manual review processes.
- Based on the result from the webhook, take appropriate action:
Send KYC Information Directly
For partners who already collect identity documents on their own platform, you can submit KYC data directly to Capa without redirecting the user. This avoids requiring users to go through the verification process a second time. Use the Submit KYC Data endpoint:Required Fields
| Field | Description |
|---|---|
country | ISO 3166-1 alpha-2 country code (e.g., MX, DO, US, or supported EU countries) |
profession | Userβs profession (e.g., EMPLOYEE, ENTREPRENEUR, ENGINEER, STUDENT) |
countryOfBirth | Country of birth (ISO 3166-1 alpha-2 code, e.g., MX, DO, US) |
selfieUrl | Pre-signed URL to the userβs selfie image |
identity | Object containing type, frontIdUrl, and backIdUrl (see identity types below) |
Identity Document Types
Theidentity.type field accepts the following values:
| Type | Description |
|---|---|
GOVERNMENT_ID | Government-issued photo ID (e.g., INE/IFE in Mexico) |
RESIDENT_CARD | Resident or immigration card |
TAX_ID | Tax identification document |
For the direct KYC API (this endpoint), the
identity.type values above (GOVERNMENT_ID, RESIDENT_CARD, TAX_ID) are accepted for all countries. For Mexico, use GOVERNMENT_ID β Capa maps it internally to INE/IFE (Voter ID).
For the KYC link flow (provider-hosted verification via Generate KYC Link), the accepted document types are NATIONAL_ID, VOTER_ID, PASSPORT, and TAX_ID for all countries including Mexico.identity object requires both frontIdUrl and backIdUrl β front and back must be uploaded as separate images, not merged into a single file.
Additional Required Fields for Mexico (MX)
Whencountry is MX, the following fields are also required:
| Field | Description |
|---|---|
taxId | RFC tax identification number (format: ^[A-Z]{4}\d{6}[A-Z0-9]{3}$, e.g., LOZG7802117B9). CURP is not accepted. |
economicActivity | Userβs economic activity (see the API reference for the full list of accepted values) |
documents | Array of documents with ADDRESS_PROOF ({ type: "ADDRESS_PROOF", fileUrl: "..." }). Required only if the ID used is not an INE β if the userβs INE address matches their current address, this can be omitted. |
address | Object with street, city, state, zipCode, country |
Optional Fields
| Field | Description | Availability |
|---|---|---|
phoneNumber | Userβs phone number | All countries |
taxId | Tax identification number | Optional for non-MX (required for MX) |
economicActivity | Userβs economic activity | Optional for non-MX (required for MX) |
documents | Array of additional documents | Optional for non-MX (conditionally required for MX β see above) |
address | Object with street, city, state, zipCode, country | Optional for non-MX (required for MX) |
pep | Politically Exposed Person information (relation, position, period) | MX only |
beneficiaryOwner | Beneficial owner details (if different from the user) | MX only |
resourceProvider | Resource provider details (if different from the user) | MX only |
realOwner | Real owner details (if different from the user) | MX only |
File URL Requirements
| File | Max Size | Allowed Formats |
|---|---|---|
| Selfie | 3 MB | JPEG, JPG, PNG |
| Front ID / Back ID | 5 MB each | JPEG, JPG, PNG, PDF |
| Additional documents (ADDRESS_PROOF) | 10 MB | JPEG, JPG, PNG, PDF |
FAILED_TO_DOWNLOAD_FILE_FROM_PRESIGNED_URL errors. We recommend a minimum TTL of 30 minutes.
Sandbox Behavior
In the staging environment, KYC verification does not perform real identity checks. You can submit random or test data β documents do not need to be real.Example
Verification Flow
Verification is asynchronous. After submitting, results are delivered through:- Webhooks: Receive a
VERIFIED_USER,REJECTED_KYC, orREVIEW_NEEDED_KYCevent (see π£ Webhooks) - Polling: Use Get KYC Details to check the current status
KYB Verification for Business Users
KYB verification is only available for users created with
type: "BUSINESS". Individual users must use KYC verification (link or direct submission).Required Fields
country: ISO 3166-1 alpha-2 country code
Optional Fields
partnerRedirectUri: URL to redirect the user after KYB completion (supports HTTPS and custom mobile URI schemes likemyapp://)
Response
The endpoint returns akybLink that you can redirect the business user to for completing verification: