Skip to content

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)

ColumnNotes
company_external_idYour stable ID for the company; the preferred group key. Optional.
company_nameRequired — the only mandatory column.
company_noteInternal note.

Location (a row with a new location_name / location_external_id opens a new location in the group)

ColumnNotes
location_nameName of the location. The first row’s location is the company’s primary location.
location_external_idYour stable ID for the location.
location_tax_idTax registration number.
order_submissionauto (place orders directly) or draft_review (route to you as a draft). Defaults to auto.
po_number_modeoptional or required. Defaults to optional.
tax_exempttrue / 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

ColumnNotes
payment_terms_typenone, 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_modedisabled, limited, or unlimited.
credit_limit_centsInteger paise, not rupees. Sharma Distributors’ ₹5,00,000 limit is written 50000000. Required — and only used — when credit_mode is limited.
payment_method_idsComma-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

ColumnNotes
buyer_emailThe buyer’s email — this is the identity the access is granted against.
buyer_first_name, buyer_last_name, buyer_phoneBuyer contact details.
buyer_roleBuyer (the launch role).
buyer_company_widetrue 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:

  1. Upload your CSV or XLSX. Sellerlane validates each row and reports the count of rows, the companies it will create, and any issues found.

  2. 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.
  3. 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.

  4. 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_delivery is not accepted as a payment_terms_type and 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 Buyer role 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.