Skip to main content
This guide walks you through integrating Yativo KYC (individual) and KYB (business) verification into your application. You can choose a hosted approach for quick integration or a fully custom API integration for maximum control.

Integration approaches


The simplest integration. You create a customer, then redirect them to Yativo’s hosted verification flow at https://kyc.yativo.com.

Step 1: Keep your API key on your backend

Every call to Yativo is made with your API key (X-Api-Key and X-Api-Secret). Make those calls from your backend only. Your web or mobile app talks to your backend, and your backend talks to Yativo.
Never put your API key or secret in browser or mobile code. Anyone could read it and act on your account. The code samples below that read process.env run on your server.

Step 2: Create a customer

Step 3: Redirect to hosted KYC

Embedding in an iframe

If you prefer to embed verification within your application instead of a full redirect:
The allow="camera; microphone" attribute is required for document capture and selfie steps to work correctly in the iframe.

Step 4: Poll for verification status

After the customer completes the hosted flow, poll the status endpoint to detect when verification is complete.
Instead of polling, consider using webhooks to receive real-time notifications when KYC status changes.

Option B: Custom API integration

Build your own multi-step form that collects customer data and submits it directly to the KYC API.

Step 1: Collect personal information

When nationality is "NG", both bvn and nin (each exactly 11 digits) are required by the API. Show these fields conditionally based on the selected nationality.

Step 2: Upload files via Yativo storage

Before submitting the KYC form, upload document images using Yativo’s storage endpoint. This keeps payloads small and avoids base64 encoding large files.
You can also pass files as base64-encoded strings inline, but the hosted URL approach is recommended for files over ~500 KB.

Step 3: Collect residential address

Step 4: Collect ID document

Step 5: Collect financial information

The values sent to the API are snake_case identifiers, not display labels. Use the exact values below — the API will reject any other values.

Step 6: Submit to the KYC API

The KYC submission endpoint is at https://kyc.yativo.com, not the main API. Send the same API key headers you use for every other request.

Status polling (TypeScript)


Instead of polling, register a webhook to receive real-time notifications:
Then in your webhook handler:

UI/UX best practices

Progress indicators Show a clear multi-step progress bar so customers know where they are in the verification process. For individual KYC: Personal Info → Address & Documents → ID Document → Financial Info → Review & Submit. Clear error messages Display field-level validation errors immediately, not just on submit. Translate API error codes into user-friendly language. The API returns a data object with field-specific error arrays on 422 responses. Document upload previews Always show a preview of uploaded documents before submission. This helps customers catch blurry or incorrectly oriented images before they fail review.
Mobile camera support Use capture="environment" on file inputs to open the rear camera directly on mobile:
Selfie guidance For the selfie step, display on-screen guidelines (oval face outline, lighting tips) before the customer takes their photo to reduce re-submission rates. Retry on rejection When a customer’s KYC is rejected, use the kyc_link from the status response to send them back to the hosted flow for corrections.