Skip to content
  • Get started
  • Switch to Kinde

Bulk import users to Kinde

Export your users from your existing auth system, prepare a CSV, and import them into Kinde. Users with migrated password hashes can sign in immediately with no password reset required.

If you need to catch new registrations or password changes during the migration window, combine this with the API approach or run a second import after the cutover.

users.csv
email,first_name,last_name,email_verified,hashed_password,hashing_method,external_organization_id
bills@company.com,Bill,Smith,TRUE,$2a$10$examplehash,bcrypt,abc001
carlosg@company.com,Carlos,Garcia,TRUE,$2a$10$examplehash,bcrypt,abc001
lliu@company.com,Lee,Liu,FALSE,,, xyz002

1. Prepare your Kinde business

Link to this section

Configure your Kinde business with the same auth strategies as your existing provider. See before you migrate.

2. Export users from your provider

Link to this section

Export instructions vary by provider. Select yours:

If you are migrating from your own system, prepare the data to match the format described below.

3. Prepare your CSV

Link to this section

Import files must be 49MB or less. This applies to Custom CSV, Auth0 NDJSON, FusionAuth NDJSON, and Custom NDJSON imports. Format your export with the following columns.

Required column:

ColumnNotes
emailMinimum required field

Recommended columns:

ColumnNotes
first_name, last_nameUser’s name
email_verifiedTRUE or FALSE
idYour provider’s user ID — helps match records during re-imports
phoneInternational format, e.g. +61555111555
external_organization_idOrganization ID to import the user into. Comma-separate multiple values
role_keyRole key(s) to assign. Comma-separate multiple values
permission_keyPermission key(s) to assign. Comma-separate multiple values

Password columns:

Include these if you’re migrating hashed passwords:

ColumnNotes
hashed_passwordThe hashed password string
hashing_methodSee supported methods below
saltOptional — extra characters added to strengthen the hash
salt_positionprefix or suffix — required if salt is included
salt_formatFormat of the salt, e.g. hex or string

Supported hashing methods:

MethodSaltSalt position
bcrypt
md5OptionalRequired if salt included
sha256OptionalRequired if salt included
cryptOptional
wordpressOptional

Check for errors before importing:

Review the CSV for missing or duplicate values. Kinde will report errors after import. Records that have already been imported without changes are skipped on re-import.

4. Import users into Kinde

Link to this section
  1. In Kinde, go to Users, then select Import users.

  2. Select your import type:

    • Auth0 — for NDJSON files exported from Auth0
    • FusionAuth — for NDJSON files exported from FusionAuth
    • Custom NDJSON — for NDJSON files exported from other providers
    • Custom CSV — for all other providers

    import users to kinde popup

  3. Follow the on-screen prompts to upload your file.

  4. Review any errors reported after import. Fix the CSV and re-import to resolve them.

For full instructions, see Import or update users in bulk.

After the import

Link to this section

Handling new registrations during the migration window

Link to this section

If users can still register or change their password while you migrate, you’ll miss them. Options:

  • Re-import — run the export and import again after cutover to catch new registrations. Users who registered after your first export will be unable to sign in until this second import completes.
  • Force a password reset — for users who changed their password during the window, use the API to set is_password_reset_requested.
  • Use the API in parallel — push new sign-ups directly to Kinde via API during the migration window. See Create users with the API.

Communicating with users

Link to this section

Kinde does not notify users when they are imported. Plan your own communication, especially if you’re changing their sign-in experience (e.g. adding MFA or moving to passwordless).

Edge cases to watch

Link to this section
  • If a user changes their password after your export and before the migration completes, they will need to reset it.
  • If you add a new authentication method (e.g. passwordless), users will be prompted to use it on next sign-in.
  • Kinde does not check password strength on import — enforce your own policies for users.
  • Adding or removing roles and permissions may change what users can access in your app.

If you need help with your migration, contact Kinde support.