Skip to main content

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

NameDescription
AuthorizationRequired. Bearer token for authentication
Content-TypeRequired. Must be multipart/form-data

Form Fields

NameDescription
fileRequired. 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.

ColumnTypeRequiredNotes
external_idstringNoRequired if email is absent. Whitespace trimmed.
emailstringNoRequired if external_id is absent.
namestringNoStored as null if absent or empty.
surnamestringNoStored as null if absent or empty.
kyc_sentbooleanNoDefault 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 CodeDescription
200Success — per-row results returned.
400Bad Request — file missing, file too large, CSV exceeds row limit, or empty file.
401Unauthorized — Invalid or missing authentication token.
500Internal Server Error.

Common 400 Error Messages

MessageCause
file is requiredThe file form field is missing.
file too largeFile exceeds 5 MB.
csv header is requiredFirst row could not be parsed.
csv exceeds row limitMore than 500 data rows.
csv has no rowsHeader present but no data rows.