Bulk import companies
When you are onboarding an existing wholesale book, creating companies one at a time is slow. Import from CSV loads many companies — with their locations, addresses, payment policy, catalog assignment, and buyers — in a single pass, using the same validate-then-commit flow as the rest of Sellerlane’s imports.
You reach it from Companies → Import (there is nothing extra to switch on; it is available whenever wholesale is enabled). The importer validates your file first and shows you exactly what it found — you only commit once it looks right.
How the sheet is shaped
The companies sheet is wide and grouped, the same way the product CSV is grouped by handle — it is not one row per company. Consecutive rows that share a company key describe one company:
- The first row of a group opens the company and its primary location.
- Later rows in the same group add extra locations and buyers to that company.
- A blank cell means “nothing on this row” — it never clears an existing value.
Rows are grouped by company_external_id when you supply one (the preferred,
stable key), otherwise by company_name.
Column schema
Headers are matched loosely — case and spacing are ignored, and common
spellings are accepted (for example state or province for a zone code, zip
for a postal code, payment terms for payment_terms_type). Unknown columns
are ignored, and a mapping step lets you confirm or correct how each header was
read. Only company_name is strictly required.
Company (read from the row that opens a group)
| Column | Notes |
|---|---|
company_external_id | Your stable ID for the company; the preferred group key. Optional. |
company_name | Required — the only mandatory column. |
company_note | Internal note. |
Location (a row with a new location_name / location_external_id opens a new location in the group)
| Column | Notes |
|---|---|
location_name | Name of the location. The first row’s location is the company’s primary location. |
location_external_id | Your stable ID for the location. |
location_tax_id | Tax registration number. |
order_submission | auto (place orders directly) or draft_review (route to you as a draft). Defaults to auto. |
po_number_mode | optional or required. Defaults to optional. |
tax_exempt | true / false — location tax-exempt standing. |
Shipping address for the row’s location: ship_first_name,
ship_last_name, ship_company, ship_address1, ship_address2, ship_city,
ship_zone_code, ship_postal_code, ship_country_code, ship_phone.
Billing address for the row’s location: the same fields with a bill_
prefix.
Payment policy for the row’s location
| Column | Notes |
|---|---|
payment_terms_type | none, net_7 / net_15 / net_30 / net_45 / net_60 / net_90, due_on_fulfillment, or due_on_invoice (due when invoiced). due_on_delivery is not accepted — see below. |
credit_mode | disabled, limited, or unlimited. |
credit_limit_cents | Integer paise, not rupees. Sharma Distributors’ ₹5,00,000 limit is written 50000000. Required — and only used — when credit_mode is limited. |
payment_method_ids | Comma-separated gateway method IDs or display names for the location’s checkout allow-list. |
Deferred terms and a credit posture must arrive on the same row: any
payment_terms_type other than none requires credit_mode of limited or
unlimited on that row, because a deferred schedule is only meaningful with an
enabling credit account.
Catalog for the row’s location: catalog_id, or catalog_name (matched to
an existing catalog).
Buyer for the row’s location
| Column | Notes |
|---|---|
buyer_email | The buyer’s email — this is the identity the access is granted against. |
buyer_first_name, buyer_last_name, buyer_phone | Buyer contact details. |
buyer_role | Buyer (the launch role). |
buyer_company_wide | true grants the buyer every location of the company; otherwise the buyer is scoped to the row’s location. |
Dry run and the error report
Every import validates before it commits:
-
Upload your CSV or XLSX. Sellerlane validates each row and reports the count of rows, the companies it will create, and any issues found.
-
Review the issues. They come in two severities:
- Errors block the affected row. An unresolvable country or (for a zoned country) state/province on an address is an error, because a company address gates B2B checkout — it is never silently dropped. Invalid or unsupported payment terms and deferred terms without a credit posture are also errors.
- Warnings are applied-around, not blocking. An unknown payment method, an unknown or ambiguous catalog, or an invalid buyer email is skipped with a warning while the rest of the row imports.
-
Download the row-error report — a CSV listing each flagged row and the reason — fix your source file, and re-upload. You can repeat this until the file is clean.
-
Commit when you are satisfied. Each company is written through the same services the Companies UI uses, so every policy and address invariant holds.
A company is resilient to a bad detail row: because each company, location, address, buyer, and policy write goes through its own service, a company still imports even if one of its buyer or address or policy rows fails — that one failure is reported as a per-row issue rather than aborting the whole company. A commit that had some skipped rows finishes as Completed with errors, with the same downloadable report.
What can’t be imported
- Cash on Delivery (Company COD).
due_on_deliveryis not accepted as apayment_terms_typeand is a hard row error. Arming COD is a deliberate per-location opt-in that pairs a due-on-delivery term with an eligible COD method — a human decision you make on the company page, not something a spreadsheet turns on. See payment terms & credit. - Deposit percentages. There is no deposit column. A location that should take a percentage upfront needs the Invoice deposits advanced module — off by default — and its Deposit % set by hand afterwards. See payment terms & credit.
- Roles other than Buyer, custom capabilities, and buyer-management — only
the
Buyerrole is set from a sheet. Assign Location Admin afterwards on the company page. - Quotes, credit holds, receivable write-offs, and other after-the-fact account activity — the importer sets up companies; ongoing operations happen in their own surfaces.