---
title: "Mass Import Clients"
description: "Import hundreds of clients (lines) at once from a CSV, TXT or Excel file, check the cost first, and let the import run in the background."
---

> [!NOTE]
> New in Xtream AI 2.5.0.

You are moving from another panel, or a reseller brings you a list of customers. Creating them one by one would take days. **Mass Import** creates many clients (lines) at once from a file or a pasted list. Before it creates anything, it shows you which lines will be imported, which will not, and how much it costs. Then it runs in the background, even if you close the page.

To add a single client, see [Create a Client](/docs/create-a-client).

## Before you start

- Your group needs the **Mass Import Clients** permission. It is on by default for administrators and resellers. See [Member Groups](/docs/member-groups).
- A file with **one client per line**: `.csv`, `.txt` or Excel `.xlsx`. Username and password are required. Expiration date, max connections and a note are optional.
- Most exports from XUI, Xtream Codes, 1-Stream and WHMCS work as they are. Lines like `username:password` and player links (`get.php?username=...&password=...`) also work.
- An Excel `.xlsx` file is read as it is (first sheet). An old `.xls` file must be saved as `.xlsx` or CSV first.
- Resellers need at least one package and enough credits or free slots.

A simple CSV looks like this:

```
username,password,exp_date,max_connections,notes
maria.lopez,Kp7rTq92,2026-12-31,1,Living room TV
john.smith,Wd4mZx18,2027-01-15,2,
```

## Step 1: Upload the list

1. In the menu, open **Clients** > **Mass Import**. You can also click **Mass Import** at the top of **Clients** > **Overview**.
2. Drag your file to **Drop your file here**, click **Choose file**, or open **Or paste the lines** and paste the text. The file is read in your browser. Nothing is created yet. Fully empty rows are skipped.
3. In **Check the columns**, check what the panel detected for each column: **Username**, **Password**, **Expiration date**, **Max connections** or **Notes**. To fix a column, change the list above it, or choose **Ignore column**.
4. If your dates look like `03/10/2026`, choose **day / month / year** or **month / day / year**. An empty date, or `0000-00-00`, means no expiration.
5. Click **Continue to review**.

**What should my file look like?** shows an example you can copy. **Recent imports** lists your previous imports.

> [!NOTE]
> Resellers can start up to 5 imports per day. The counter **Imports today** shows how many you used. Each list you send to review counts as one import.

## Step 2: Review and settings

At the top you see **In your file**, **Will be imported**, **Won't be imported** (duplicates, expired lines or lines to fix) and the cost:

- Resellers with credits see **Credits needed** and, if the balance is not enough, how many are **Missing**. **How is this calculated?** shows the details.
- Resellers with slots see **Active-user slots needed**. Expired lines do not use a slot.
- Administrators import for free, unless they charge a reseller (see **Owner**).

On the left, **Settings for all lines** applies to every line:

- **Owner**: who owns the clients. A reseller picks themselves or one of their sub-resellers. An administrator can **Search a reseller**. The panel then asks **Charge … for this import?**: choose **Yes, charge them** (the reseller pays as if they sold the lines) or **No, it is free**. You must answer before you can import.
- **Package**: resellers must choose one of their packages. It is optional for administrators.
- **Bouquets**: resellers only see the bouquets of the chosen package.
- **Categories to hide**: uncheck the categories these clients should not see.
- **Expiration**: **Keep the date from the file** (best when you migrate: nobody loses days), **Package duration from today**, or **Same date for everyone**. For lines that already expired, choose **Skip them** (default), **Import them as expired** (free, you can renew them later) or **Renew them with the package** (charged).
- **Max connections**: from the package, from the file, or a fixed number (administrators only).
- **Usernames that already exist**: **Skip them**, or **Update them** to replace the password, bouquets and expiration with the ones in the file. A reseller can only update their own clients and the clients of their sub-resellers.
- **Note on each client**: an optional note for all lines.

On the right is the list of lines, with the filters **All**, **Ready**, **Duplicates**, **Expired** and **Needs fix**, a search box, **Show duplicates in All** and **Show passwords**. If some lines need a fix, a box above the list explains why, grouped by reason. Click **Fix** or **Edit** on a line to change the username, the password (**Generate** creates one), the expiration or the note, or to leave the line out.

### How the cost is calculated

When a reseller pays, each line costs the package price for each package period between today and its expiration date, rounded up. Example: with a 1 month package at 1 credit, a line that expires in 2 months and 10 days costs 3 credits. When you update an existing client, only the added time is charged.

If the balance is not enough, **Check only what I can afford** keeps only the lines you can pay for, in the order of the file.

## Step 3: Import

1. Click **Import**. If the button is disabled, it tells you why.
2. In **Start the import?**, check the package, bouquets and expiration, check **I checked the package, bouquets and expiration.** and click **Start import**.
3. The progress bar shows the counters **Created**, **Updated**, **Failed** and **Credits spent** (or **Slots used**), with a log for each line. You can **Pause** and **Resume**, or **Stop here** (what was imported stays).

You can close the page. The import keeps running on the server. To see it again, open **Clients** > **Mass Import** and click it in **Recent imports**.

## What happens next

- **See imported clients** lists the clients created by this import.
- **Download report** downloads a CSV with every line and what happened to it.
- If you stopped the import, **Import the remaining** imports the lines that were left.
- Administrators only: **Undo this import** deletes the clients it created, restores the clients it updated and returns what was charged. It is available for 24 hours. It also removes any change made by hand to those clients after the import.

> [!WARNING]
> Resellers cannot undo an import. Check the summary well before you click **Start import**.

## Common problems

- **"Paused: out of credits"** or **"Paused: no free slots"**: the balance or the slots ran out during the import. What was imported stays. Add credits or free some slots and click **Resume**.
- **"Paused: server busy"**: another import was writing at the same time. Click **Resume** after a few seconds. Nothing is lost.
- **"Interrupted"**: the process stopped, for example after a server restart. Click **Resume**. It continues where it stopped, with no duplicate clients or charges.
- **"The passwords in your file will not be kept."** (reseller): your group does not have **Reseller can modify user pass**, so each client gets a new password. Ask your administrator to turn it on before you import.
- **Passwords shorter than the minimum** (reseller): the import cannot start. Fix the passwords in the file, or ask your administrator to lower **Minimum client password length** in **Settings** > **Resellers**.
- **"Daily import limit reached"** (reseller): you used your 5 imports of the day. The message says when the next one is available.
- **Many lines in Needs fix**: empty username or password, characters that players do not support (`% & ? # / \ +`), a date the panel does not understand, or the same username twice in the file.
- **"Username in use by another account"**: that username belongs to another account of the panel. Rename it with **Fix** to import it as a new client.

## Related

- [Create a Client](/docs/create-a-client)
- [Edit a Client](/docs/edit-a-client)
- [Packages and Bouquets](/docs/packages-and-bouquets)
- [Member Groups](/docs/member-groups)
- [Reseller Credits and Slots](/docs/reseller-credits)
