Migrate Users Without Wallets (CSV)
Migrates users from a CSV file upload; wallets are generated asynchronously per row. Limits and response shape mirror the Bulk JSON endpoint: up to 500 rows, maximum file size 5 MB, per-row results.
Request
POST /v2/users/users/migrate/without-wallet/csv
Headers
| Name | Description |
|---|---|
Authorization | Required. Bearer token for authentication |
Content-Type | Required. Must be multipart/form-data |
Form Fields
| Name | Description |
|---|---|
file | Required. The CSV file. The first row is interpreted as the header. |
CSV Format
The first row is the header. No column is required at the header level — per-row validation in the handler enforces that at least one of email or external_id is present.
| Column | Type | Required | Notes |
|---|---|---|---|
external_id | string | No | Required if email is absent. Whitespace trimmed. |
email | string | No | Required if external_id is absent. |
name | string | No | Stored as null if absent or empty. |
surname | string | No | Stored as null if absent or empty. |
kyc_sent | boolean | No | Default false. Accepted truthy values: true, 1, yes, y (case-insensitive). |
A UTF-8 BOM at the start of the file is tolerated. Column order does not matter.
Example — Classic mode
email,name,surname,kyc_sent
auto@example.com,Auto,Wallet,false
classic@example.com,Classic,User,true
Example — KVKK mode
external_id,kyc_sent
EXT-9001,true
EXT-9002,false
Example — Mixed
external_id,email,name,surname,kyc_sent
EXT-9001,,,,true
,classic@example.com,Classic,User,false
EXT-9003,hybrid@example.com,,,true
cURL Example
curl --location '{{baseUrl}}/v2/users/users/migrate/without-wallet/csv' \
--header 'Authorization: Bearer <token>' \
--form 'file=@./users.csv'
Response
Identical to the Bulk JSON endpoint: aggregate counts plus a results[] array of per-row outcomes.
Status Codes
| Status Code | Description |
|---|---|
| 200 | Success — per-row results returned. |
| 400 | Bad Request — file missing, file too large, CSV exceeds row limit, or empty file. |
| 401 | Unauthorized — Invalid or missing authentication token. |
| 500 | Internal Server Error. |
Common 400 Error Messages
| Message | Cause |
|---|---|
file is required | The file form field is missing. |
file too large | File exceeds 5 MB. |
csv header is required | First row could not be parsed. |
csv exceeds row limit | More than 500 data rows. |
csv has no rows | Header present but no data rows. |