Skip to main content

Import Customers in Bulk

Why Import Customers?

Instead of adding customers one by one, you can upload a file containing all your customers at once. Paymely supports:

  • CSV files (.csv)
  • Excel files (.xlsx)
  • Google Sheets (public URL)

Start an Import

  1. In the sidebar, click Directory
  2. Make sure you are on the Holding tab
  3. Click Import a List (button in the top right)
  4. The 4-step import wizard opens

Note: Imported customers arrive in the Holding tab of the directory. To start collection, select them and click Activate to move them to the Active Customers page.


Step 1 — Upload Your File

Drag and drop or browse

Drag a CSV or Excel file into the drop zone, or click to browse your computer.

Limits:

  • Maximum file size: 4 MB
  • Maximum rows: 2,000
  • Accepted formats: .csv, .xlsx

Import from Google Sheets

Alternatively, paste a public Google Sheets URL and click Import. The sheet must be publicly accessible (Share → Anyone with the link).

Download a Template

If you don't have a file ready, download a pre-formatted template:

  • CSV template — bilingual headers with an example row
  • Excel template — same content in .xlsx format

Step 2 — Map Columns

Paymely automatically detects your column headers and maps them to the correct fields. If a column is not recognized, it defaults to Ignore. You can manually change any column's mapping.

For each column, you can choose:

Target FieldDescription
First NameCustomer's first name (required)
Last NameCustomer's last name (required)
NameCombined full name — auto-split into first/last (use instead of separate name columns)
EmailEmail address (required if no phone)
PhonePhone number (required if no email)
Amount DueOutstanding balance ($)
Amount PaidAmount already paid ($)
Due DatePayment due date (auto-normalized)
StatusCustomer status: active, inactive, paid, or overdue
ProvinceCanadian province (auto-normalized, e.g., QC, ON)
LanguagePreferred language: en or fr
CommentsNotes about the customer account
Payment frequencyWeekly, biweekly, semi_monthly, or monthly
Installment amountAmount per payment cycle (requires frequency)
Custom fieldStored as a custom field on the customer profile
IgnoreColumn is skipped during import (default for unrecognized columns)

Tip: Paymely recognizes bilingual column headers — both English ("First Name") and French ("Prénom") are auto-detected.

Required Mappings

Before proceeding, you must map:

  • A name field (First Name, or combined Name)
  • At least one contact method (Email or Phone)

Step 3 — Preview and Validate

Before importing, Paymely validates every row and shows you a preview:

Row Status

  • Valid rows (green badge) — will be imported
  • Error rows (red badge) — contain validation errors and will be skipped

Error rows are highlighted in red. Hover over a flagged field to see the specific error (e.g., "Invalid email", "Language is required").

Exclude Rows

You can exclude individual rows without re-uploading your file. Click the X button on any row to exclude it from the import. Click again to re-include it. The import count updates automatically.

Validation Rules

  • First name and last name are required
  • At least one of email or phone must be provided
  • Language is required (en or fr)
  • Email must be valid format if provided
  • Amounts must be numeric — both English ($1,234.56) and French (1 234,56) formats are accepted
  • Dates are auto-normalized to YYYY-MM-DD
  • Statuses accept French values: "Non payé" → active, "Payé" → paid, "En retard" → overdue, "Inactif" → inactive. Leave empty for active.
  • Payment frequency accepts French: "Hebdomadaire", "Bihebdomadaire", "Mensuel", "Bimensuel", or day-based: "7 jours", "14 jours", "30 jours"

Duplicate Handling

Choose how to handle customers that already exist (matched by email or phone):

ModeBehavior
Skip duplicatesExisting customers are left unchanged (default)
Update — overwriteAll non-empty fields in the file replace existing values
Update — fill emptyOnly empty/missing fields on existing records are filled in

Customer Quota

Your subscription tier limits the number of active customers. The preview shows your remaining capacity. If the import would exceed your limit, you must reduce the file or choose a higher tier in Settings - Billing.


Step 4 — Results

After the import completes, you see a summary:

MetricDescription
ImportedNew customers created
UpdatedExisting customers updated (overwrite or fill modes)
SkippedDuplicates that were skipped
ErrorsRows that failed validation

From here, you can:

  • Import another file
  • View customers to see the imported records

Import History

Recent imports are tracked and visible from the customer list. Click Show history to see:

  • Date and time of each import
  • File name
  • Import mode used
  • Number of rows: total, imported, updated, skipped, errors
  • Status (completed, partial, failed)

Frequently Asked Questions

Can I import customers with custom fields? Yes — any column not mapped to a standard field is automatically stored as a custom field.

What date formats are accepted? Paymely auto-normalizes common formats: YYYY-MM-DD, DD/MM/YYYY, MM/DD/YYYY, January 15, 2026, etc.

What happens if I import the same file twice? By default (Skip duplicates mode), existing customers matched by email or phone are skipped — no duplicates are created.

Can I fix errors and re-import? Yes — click Fix and re-upload on the preview step to go back to step 1 with a corrected file. You can also exclude individual rows directly from the preview.

What languages are accepted for the Language field? Paymely accepts: en, english, anglais, fr, french, français, francais.

What status values are accepted? English: active, inactive, paid, overdue. French: Non payé, Payé, En retard, Inactif, Actif, Impayé. Empty defaults to active.

What frequency values are accepted? English: weekly, biweekly, semi_monthly, monthly. French: Hebdomadaire, Bihebdomadaire, Bimensuel, Mensuel. Day-based: 7 jours, 14 jours, 15 jours, 30 jours.

What happens to unrecognized columns? Unrecognized columns default to Ignore. You can manually change any column to a Paymely field or custom field in the mapping step.