Bulk import/export is a console-only feature. There is no public API endpoint for CSV imports — use
POST /v3/users/create/ in a loop if you need programmatic bulk creation.Import users from CSV
When to use it
- Day-one migration from another KYC vendor — bring your existing user roster over.
- Bulk onboarding of a partner’s customer list.
- Metadata backfill — update tags, tier, or internal identifiers on many users at once.
Template columns
Download the template from Users → Import → Download template. Columns:| Column | Required | Description |
|---|---|---|
vendor_data | Yes | Your identifier for the user. Must be unique per application. |
display_name | No | Human-readable name shown in the console. |
full_name | No | Legal name. Will be overwritten by verified session data. |
email | No | Known contact email. |
phone | No | Known contact phone (E.164 format). |
country | No | ISO 3166-1 alpha-3 country code. |
status | No | ACTIVE, FLAGGED, or BLOCKED. Defaults to ACTIVE. |
tags | No | Comma-separated tags. |
metadata_json | No | Stringified JSON for custom metadata. |
Running the import
Review the preview
The console validates each row. Invalid rows are highlighted with error reasons (e.g. duplicate
vendor_data, invalid country code).Start the import
Didit processes the rows asynchronously. You can close the tab — progress is tracked in Users → Import history.
Update vs create
- If a
vendor_datadoes not exist, a new User is created. - If a
vendor_dataalready exists, the row updates the existing User (profile fields and metadata). - Aggregate counters and verified fields (
full_name,date_of_birthfrom approved sessions) are never overwritten by imports.
Export users to CSV
When to use it
- Compliance audits — deliver the full user table to auditors.
- Data warehouse sync — periodic dump into your BI tooling.
- SAR / regulator requests — extract filtered subsets of users.
Running an export
- Navigate to Users → Export.
- Apply filters (status, country, date range, search).
- Choose columns (the default is every field; you can drop columns you don’t need).
- Submit. Didit generates the export asynchronously and emails a signed download link to the requesting operator.
Exports include only data your role is allowed to read. COMPLIANCE_OFFICER and above can export the full table; DEVELOPER and READER roles have restricted exports.
Performance characteristics
| Operation | Typical scale | Notes |
|---|---|---|
| Import | Up to 100,000 rows | Larger files are chunked server-side; progress is polled by the UI |
| Export | Up to 1,000,000 rows | Larger exports are streamed to S3 and delivered via signed URL |
Audit trail
Every import and export is logged in the audit log:- The operator who triggered it.
- Row counts (imports) / filter snapshot (exports).
- Timestamps and success/failure state.
Next steps
Create user API
Programmatic creation for scripted imports.
Data retention
How long imported data persists.
Audit logs
Review import/export history.