Help · Products & Assortment · Import & Export

Import and Export via CSV and Excel

With the CSV Porter, you can transfer products, prices, inventory, attributes, customers, and orders as CSV or Excel files: either once in the backend or regularly via a link for inventory management and pricing portals. This guide shows you how to create a Porter, map columns, interpret the import report, and avoid common errors.

At a Glance

  • Where: under Tools → xoPort CSV Import/Export Manager. A Porter is a saved routine consisting of a category, columns, and settings. The same Porter is used for both exporting and importing.
  • Default Porters: These are preconfigured by default but are protected and disabled. Duplicate the appropriate Porter and work with the copy.
  • Formats: CSV, TXT, XLS, XLSX, and ODS. For working in Excel, XLSX or CSV in UTF-8 is the safest option.
  • Import: Writes data immediately; there is no test run. First, export the same columns as a backup and test with just a few rows. The import report lists every rejected row.
  • Automated: Export and import links for price portals, inventory management systems, and cron jobs. Customer and order data are stored in a protected directory with password and IP filtering.

In this guide


How the Porter Works

A Porter specifies which data to transfer, in which columns, and in which file format. Exporting and importing use the same column mapping. An exported file can therefore be edited and reimported using the same Porter.

Category

The category determines which data the Porter recognizes: products, product options, customer group prices, customer data, order data, and more. It determines the available columns and the type of import or export.

Columns

Under “Edit Columns,” you can enable the fields that should appear in the file and assign a “column name” to each column. During import, the store maps the file’s columns to these names in the header.

Settings

Field and text delimiters, output format, character set, Porter language, and filters for export. For automatic import, you’ll also need to specify a directory from which Porter reads files.

The overview under Tools → xoPort CSV Import/Export Manager organizes the Porters into the tabs “Product Data,” “Price Portals,” “Customer and Order Data,” and “Miscellaneous.” A Porter’s action menu offers “Info and Links,” “Edit Columns,” “Settings,” “Import Data into Store,” “Export Data from Store,” “Duplicate Export Routine,” and “Delete.” Default Porters (marked with a lock) do not have “Edit Columns” or “Delete”; to make changes, duplicate them. The toggle in the “Porter Status” column enables the export and import links. Importing and exporting in the backend work even when the Porter is disabled.

xoPort CSV Import/Export Manager, Product Data tab: List of porters with a lock icon next to the default porters, columns: Number of Columns, Category, Language, and Porter Status (all inactive), and the open action menu for the “Sample Store Inventory Reconciliation” porter, featuring the options Edit Columns, Settings, Import Data into Store, Export Data from Store, Duplicate Export Routine, and Delete

The Porter Overview: Standard Porters are marked with a lock; the arrow menu next to “Info and Links” leads to Columns, Settings, Import, Export, Duplicate, and Delete. Click to enlarge.

The Default Porters

Every store comes with these Porters. They are protected: Their columns cannot be changed, and they cannot be deleted. They are disabled by default.

PorterContent
Products (complete)All product fields; works well as a template for your own product Porter
ProductsThe most important product fields: text, status, categories, inventory, weight, prices, tax, special price
Price UpdateProduct ID, Item Number, Name, Status, Inventory, Prices, Tax, Special Price, MSRP, and Base Price
Category update, manufacturer update, image updateCategory Descriptions and SEO Information, Manufacturer Data, Product Images with Descriptions
Product Options (Attributes)Features and values per item with surcharges, item number, EAN, and inventory
Tiered pricing (customer groups)Prices and tiers by customer group
Customer dataCustomers with addresses and customer groups
Order export Part 1 and Part 2, each with “(No.)” and “(Status)”Orders in two files: Order Data and Order Line Items
“Desktop Enterprise …”Pre-configured ports for the Desktop Enterprise inventory management system
“Price Portals” tabPre-configured exports for price comparisons, with notes on the provider in the export dialog

“Prices,” “Inventory,” and “Categories” are not separate sections, but rather field groups within the “Products” section. The standard Porters “Price Update” and “Category Update” demonstrate how to build streamlined Porters for a specific task from these groups.


Creating a Porter

The quickest way is to duplicate a standard porter that closely matches your task. Alternatively, create a new porter and select the columns yourself.

  1. For a suitable porter, select “Duplicate Export Routine” from the action menu. The copy is named, for example, “Price Update (Copy 1)” and is not protected. To create a completely new porter, click “Create New Porter.”
  2. Under “Settings,” assign a descriptive “Name of the xoPort Routine,” check the “Category” and separator, and save. After clicking “Next,” a new Porter takes you directly to the columns.
  3. Under “Edit Columns,” enable only the fields you actually want to transfer, then save.
  4. Export the Porter once using “Export Data from Shop.” The file shows you the exact structure and serves as a template for the import.
  5. Only enable the “Porter Status” when the export or import link is needed.
A Porter created via “Create New Porter” is enabled immediately. Keep the “Porter Status” disabled until the Porter is fully configured and needed externally. A copy inherits the status of its template, so a copy of a standard Porter is disabled by default.
Porters "Sample Store Inventory Reconciliation" settings: Name, field separator semicolon, text separator quotation marks, empty mask character, output format xlsx, output character set UTF-8, CSV quoting PHP standard, "Products" section, "Product Data" grouping, and—after omitting the category and manufacturer filters—"Extra Fields," "No Inactive Products," "Product Copies," "Export," "Minimum Stock Level," Porter language "German," "Quick Export" category, and "Auto Import Directory" "musterladen"

The settings for a custom Porter; category and manufacturer filters are omitted from the image. Click to enlarge.

Settings at a Glance

FieldFunction
“Field Separator,” “Text Separator”Characters between fields (default: ;, tab as \t) and around field contents (default: "). These apply to both export and import.
“Non-standard Delimiter”Leave blank. In a standard CSV file, the text separator masks itself.
“Output Format”csv, txt, xls, xlsx, or ods. For Excel formats, the store generates a true spreadsheet file.
“Output Character Set”UTF-8 (default) or ANSI. Applies only to export. Select ANSI only if the target system does not support UTF-8.
“CSV Quoting”When the text delimiter is applied: “PHP Standard (fputcsv)” (default), “Always (all fields)”, or “Minimal (only for special characters)”
“Category,” “Grouping”Which data the Porter recognizes and in which tab of the overview it appears
“Export Filter,” “Category Filter,” “Manufacturer Filter,” “Minimum Stock Level,” “Export”These options restrict the export, for example, to specific categories or items with inventory and a price. They do not apply to imports.
“No inactive products (export)”, individual, master, and slave productswhich items the export contains
“Product Copies (Links)”Export: one row per category of the item. Import: Add category assignments instead of replacing them (see Importing).
“Extra Fields (Columns)”Number of additional product fields, such as for information from a price comparison site
“Portal Language”Language of all language-dependent fields, such as name, description, and category name
“Quick Export of Category in Product Management”Displays the Porter in Product Management next to the Quick Search. It then exports the currently displayed category along with its subcategories.
“Auto-Import Directory”Folder for files that the import link reads (see “Automatically via Link”)

Sections and Fields

The category also determines where the export is located. Product and marketplace data are intended for price comparison sites and are accessible via an open link. All other categories are located in the protected directory.

CategoryContentExport Link
ProductsMaster data and texts, status, categories, manufacturers including addresses for product safety (GPSR), suppliers, warehousing and shipping, prices and taxes, base price, special price, tiered pricing, images, videos, page titles and search terms, bonus and free items, custom fieldsOpen
Product OptionsAttributes and values per item: Name or ID, surcharge, order, item number, EAN, inventory, image, weight, status, preselectionopen
Customer Group PricesPrices, price scales, and special prices per customer group, as well as individual customer pricesRestricted
Product tabs, product tab templates, product tab assignmentsProduct page tabs with names and content for each language, templates, and their assignment to categoriesprotected
Downloads/Uploads, CMS pagesFiles associated with products and content on CMS pagesRestricted
Customer dataCustomers, addresses, customer groups, settings, and order metrics per customerProtected
Newsletter subscribersSubscribers to the store newsletterProtected
Order data (general), order data (products)Orders with addresses, payment details, and totals, as well as their line items; only tracking numbers can be importedProtected
Marketplaces, marketplace dataApproval per marketplace, as well as net or gross marketplace price, store prices, special prices, and inventoryopen
Bundles from 4.10Bundles with their components, quantities, attribute selection, and settingsprotected

Attributes

You manage attributes, values, and variants using the “Product Options (Attributes)” Porter. The Product Attributes guide explains how attributes are structured and what the REST API offers in this regard.

Export Only

The store calculates some fields and only outputs them:

  • “Tiered prices in a single field” with the entire price ladder in one column (1:0.89 50:0.79), for example, for procurement catalogs
  • “Content (Quantity with Unit)” such as 0.5 l for price information in feed data from 4.9.135

Additional Guides

The columns for bonus and free items are described in Bonus Points & Free Products, and the fields for the EU warranty label are described in EU Warranty Label.


Columns and Options

Under “Edit Columns,” the field in the shop is on the left, and the column in the file is on the right. The arrows in the middle indicate whether a field can be imported, exported, or both.

SectionEffect
Toggle switch in front of the fieldadds the field to the Porter. “Set all columns to active” and “Remove all active columns” toggle everything at once.
"Import Options"convert the value during import, such as chg=,-->. for decimal commas
"Sorting"Order of the columns in the export
"Column Name"Header in the file. When importing, it must appear exactly as shown in the header, including uppercase and lowercase letters.
“Export Options”Convert the value during export. The button with the “i” icon opens the “Help for Xoport Options” with all options and examples.

Each category requires key fields so that the store can map the rows. For products, this is the “Product ID” or the “Item Number (Model)”; for customers, it is the customer ID, the individual customer number, or the email address; and for orders, it is the order number. If these are missing, the store will refuse to save the columns. Columns with “ %u ” in their names—such as Categorie %u or Image %u —will be numbered sequentially: Categorie 1, Categorie 2, and so on.

Edit Columns for the "Sample Store Inventory Reconciliation" Porter: Header row with import options, sorting, column name, and export options with the "i" button; The following are enabled: Product ID, Item Number (Model), and Stock Level with the column name “Quantity,” the import option “chg=,-->,” and the export option “chg=.-->,”

In “Edit Columns,” you can enable fields and assign column names to the file; for inventory levels, chg=,--> converts a decimal comma during import. Click to enlarge.

The most important options

OptionEffectExample
chg=alt-->neuReplaces text; multiple occurrences are separated by semicolonschg=,-->. converts 2.99 to 2.99
clc=Performs calculations with numbers: *, /, +, -clc=/100 converts cents to euros
rnd=rounds to decimal placesrnd=2
set=, alt=fixed value for all rows or a placeholder for empty cellsalt=3-5 Werktage
date=, datetime=file date formatdate=d.m.Y
nohtml=removes HTML during export; use 1, 2, or 3 to specify how line breaks are handlednohtml=2
path=abs, path=catchExport: full image URL. Import: Load image from a URL and save it in the store—currently always in the product images folder, so use only for product images.path=catch_if_not_exists Loads only missing images
skipAs a standalone import option: Skip this column during import. As an export option with a value: Omit rows containing this value.skip= Omit rows with an empty field
filter=Export: Keep only rows with this valuefilter=1
implode=Delimiter for combined columns such as category path or attributes; default is “ > ”implode= ::

Separate multiple options with a semicolon, for example, rnd=2;chg=.-->,.

An empty cell remains empty with ` clc ` and no longer causes the export toabort.from 4.9.85


Preparing the file

Most import errors originate in the file: incorrect delimiters, a renamed column header, or numbers that the spreadsheet program has reformatted.

Header Row and Delimiters

The first row contains the Porter’s column names. The file’s field and text delimiters must match the settings. If the field separator appears within text—such as a semicolon in a description—the text must be enclosed in text delimiters. Otherwise, the number of values will not match the header row, and the shop will skip the row.

Character Set

Save CSV files in UTF-8; in Excel, use “CSV UTF-8 (comma-separated).”

The store automatically recognizes files from Windows programs using Western European or Central European character sets. If any characters are lost during this process, the import report will indicate this.from 4.9.26

Excel Files

Porter imports XLS, XLSX, and ODS files directly. It reads the worksheet that was active when the file was saved, including formulas and their results. For editing in Excel, it’s best to export as XLSX: Item numbers, EANs, and ZIP codes will then appear as text in the file and won’t lose any leading zeros, while prices and quantities will be stored as actual numbers.

Numbers, Dates, Images

The import function reads prices and weights using a decimal comma or period; newly enabled number columns additionally use the format chg=,-->.. Thousand separators are not allowed; quantities must be whole numbers. Enter data in the format specified by the column option, usually 10.09.2026. Specify images as filenames relative to the image folder, or as a URL to a JPG, PNG, GIF, or WebP file using path=catch.


Export Data

An export copies data from the store to a file. Nothing changes in the store during this process.

  1. Select “Export Data from Store” from the Actions menu. The “Data Export” tab opens.
  2. Select a save location: “Server (keep export file on the server)” or “Local (delete export file after download).”
  3. Narrow down by category: for products, by categories and manufacturers; for customers, by “Changes since” a specific date; for orders, by a specific date or a range of order numbers. For products, attributes, and customer group prices, also select the “Porto language.”
  4. Click“Start Export.” When finished, the store will display the message “… data rows plus header row written” and begin the download.
The "Data Export" tab in Porter's "Sample Store Inventory Reconciliation" module, with the options "Server" or "Local," "All" or "the following" categories, "All" or "the following" manufacturers, Porter language set to German, and the "Start Export" and "Cancel" buttons

During the export, select the save location and filter products by category and manufacturer. Click to enlarge.

If you select “Server,” the file remains at xoport_<ID>.<Format>; for product and marketplace categories, it’s in the public folder xoport/; for everything else, it’s in xoport/secure/. The exact path is shown under “Info and Links.” If you select “Local,” the store deletes the file after the download; this always happens when Porter is turned off. For one-time exports that no one from outside should access, “Local” is the better choice.


Importing Data

The import immediately writes every valid row to the shop. First, export the same columns as a backup, and test new Porters with just a few rows.

  1. Select “Import Data into Shop” from the Actions menu. The “Data Import” tab opens.
  2. Select a source: “File upload from your computer (csv, txt, xls, xlsx, or ods),” an existing “File on Server,” or the files in the auto-import directory.
  3. Check the “Porter language” for products, attributes, and customer group prices.
  4. Click“Start Import” and wait until the progress bar indicates that the processing has begun. Do not cancel the import.
"Data Import" tab with the following sources: File upload from your computer, file on the server (xoport/xoport_21001.xlsx), and auto-import of 1 file in the xoport/import/musterladen directory; Porter language: German; and the "Start Import" button

The import reads an uploaded file, the export file on the server, or the files in the auto-import directory. Click to enlarge.

Find and Create New Items

The store first searches for an item using the “Product ID,” then using the “Item Number (Model).” It creates a new item only if the row contains an item number and a name, and the Porter language is the shop’s default language. A Porter without a name column only updates existing items and skips unknown items.

What a row changes

Only the columns that are present in the file and enabled in the Porter are written. An empty cell in such a column clears the field. Remove any fields that are to remain unchanged from both the file and the Porter.

A partial import—such as importing only reported inventory levels per warehouse—no longer clears warehouse fields that the Porter does not track at all.from 4.9.94

Assigning Categories

Specify categories as names in Categorie 1, Categorie 2 …, or as “Category IDs”; list More Categories separated by commas in “More Category IDs.” If “Product Copies (Links)” is turned off, the row replaces all previous assignments for the item. If it is enabled, the categories are added. After an import in the backend, the store places items without any category into the disabled category “xoport_unsorted.”

Prices and Tax

Preferably import the net price. If only the gross price is listed in the file, the store calculates the price using the tax rate specified in the row or, for known products, using their tax class. If an unknown tax rate or an unknown tax class with a tax rate is encountered, the shop creates it as a new tax class. If only an unknown tax class name is present in the row, the product remains without a tax class. Therefore, please check the spelling beforehand.

Other Languages

For translations, create a separate Porter with the target language as the Porter language, which contains only language-dependent fields and the IDs. The store assigns categories and manufacturers in another language solely based on their IDs; otherwise, it creates duplicate entries.

Attributes

The “options sort order” column sets the order of the values. If it is empty, existing values retain their order from the store, and new values are added to the end.from 4.9.106

Deleting via Import

Delete specific values in the status column instead of modifying them. Check such files particularly carefully.

Value and ColumnEffect
del in “Product Status”Deletes the item; the image files remain
del+ In “Product Status”Deletes the item and its image files, provided no other item uses them
delmodel in "Product Status"Deletes all items with this item number; the “Item Number” column is required for this
delopt in “Product Status”Removes all attributes from the item. Additional changes to the item should be entered on a second line with status 0 or 1.
del In the status or preselection of a characteristicremoves this attribute value from the item
del In the category statusdeletes the category along with all subcategories
del in the customer group or customer pricedeletes this price

Reviewing the Import Report

After the import, the store displays “Import Complete” along with the number of rows read, a table showing “Updated,” “Newly Created,” and “Deleted” for each data type, and the messages above it.

Red and yellow

Red messages indicate errors: The rows were not processed. Yellow messages indicate rows that were intentionally skipped, such as products from the inventory management system that do not exist in the store.

Affected rows

The button next to a message displays the affected rows in a table showing the row number and the values from the file. The row number counts the header row as row 1, just like in Excel. A maximum of 1,000 rows are displayed. from 4.9.106

CSV Report

“Errors and Warnings as CSV” exports all rejected rows from a run into a file, including the type, message, and columns of the import file. Correct the rows there and re-import only those rows.from 4.9.106

Import Report: Import completed, 6 data rows read, red message for 1 row where the number of values does not match the header, yellow message for 2 skipped rows because the item is not available in the store, button "Errors and Warnings" updated as CSV and "Products" table with 3, 0 newly created, and 0 deleted

An inventory reconciliation with six rows: three items updated, two unknown item numbers skipped, one row rejected due to too many values. Click to enlarge.

Common Messages

MessageMeaning and Solution
“The number of values does not match the header row …”The row has more or fewer fields than the header; this is usually caused by a field separator in text that lacks a text separator.
“The item is not available in the store …” (yellow)The importer has no name column and therefore does not create items. This is intentional for inventory and price comparisons.from 4.9.106
“New items to be created must have a name!”The name column exists, but the cell is empty.
“Item ID or item number not found!”The item is unknown and could not be created, usually because the Porter language is not the default language.
“… characters … discarded …”The file contained characters that do not appear in the recognized character set. Save the file as UTF-8 and import it again.
“Invalid date …”The date does not match the option “ date= ” or “ datetime=.” The store will then set the current date.
“… Customer group(s) not imported …”Customer import with a group that does not exist in the store. Existing customers retain their group; new customers are assigned group 0.from 4.9.139
“The import file likely contains incorrect data or no matching header row …”Not a single column in the file matches a column name in Porter. Check delimiters and column headers.

Protect fields from being overwritten

If a file is imported regularly from the inventory management system, certain fields in the store should still retain their updated values—such as revised descriptions.

Streamlined Porter

The safest approach: The Porter contains only the columns that the inventory management system is supposed to provide, such as item number, inventory, and price. Everything else remains untouched.

Skip a Column

If the file contains a column that should not be imported, enter “ skip ” for that column under “Import Options.” The import will then skip it.

Import Restrictions on the Item

In the item, you can block individual fields in the data interface tab. The CSV Porter takes into account “Update Name” and “Update Description.” The remaining blocks, such as price or inventory, apply to the XML import from the inventory management system.

The tab with import restrictions appears in the product details only if an inventory management interface is active. It bears the interface’s name, such as “xoPort Data Interface (XML).”

In the customer import, the store only changes the customer group if the file specifies a group that already exists in the store. A minimal file without a group column leaves the group unchanged.from 4.9.139


Automatically via Link and Cron

Each Porter has an export link and, if an auto-import directory is set up, an import link. Both are located under “Info and Links.” When the Price Portal, inventory management system, or a cron job accesses the link, the Porter runs without requiring a backend login.

Export Link

The link https://ihr-shop.example/xoport.php?id=<ID> generates a fresh file each time it is called and delivers it. You should register this link with the price portal or in your inventory management system. Protected categories use xoport/secure/xoport.php?id=<ID>. The Porter must be enabled; otherwise, the link will respond with “Porter is not active!”.

Import Link

  1. In the settings under “Autoimport Directory,” use the plus icon to create a directory and save it.
  2. The ERP system stores its files via FTP or SFTP at xoport/import/<Verzeichnis>/.
  3. The link &action=import reads all CSV, TXT, XLS, XLSX, and ODS files in the directory. It moves successfully imported files to the subfolder archiv/; files with errors remain in the original location.
Information and links for the "Musterladen Inventory Reconciliation" Porter, including the address of the export file on the server and its modification date, the export link xoport.php?id=21001, and the import link with &action=import for the xoport/import/musterladen directory

“Info and Links” displays the saved export file, the export link, and—if an auto-import directory is set—the import link. Click to enlarge.

The shop does not have its own scheduling feature for Porter. For regular runs, set up a scheduled task (cron job) with your hosting provider that calls the link. The import link responds with STATUS=ok&Files=… or STATUS=error&Files=…. If an import of the same Porter is already running, it reports “Import already running” and does not start a second one.

The automatic import does not include an evaluation page. Therefore, first test new processes using the same file via “Import Data into Shop” in the backend and review the import report.

Protecting Exports

Whether an export can be accessed without logging in depends on the category and the Porter status.

Open Categories

Products, product options, marketplaces, and marketplace data are intended for price comparison sites. Your export link and a file saved with the name “Server” in the xoport/ folder can be accessed without a password as long as the Porter is enabled. Disable Porters that are not needed externally, and do not include confidential fields such as the purchase price in an open Porter.

Protected Categories

Customer, order, and all other data are stored in xoport/secure/. The files stored there are blocked via the web; only the export link is accessible.from 4.9.25

Protect the link with a username and password under Settings → General → Basic Settings → Protect xoPort Customer and Order Directories and, if possible, with fixed IP addresses under Settings → General → Basic Settings → xoPort Customer and Order Directories IP Filter.

If a password and IP filter are set, access is granted only with a valid password or from an allowed IP address. The IP filter can include multiple addresses and ranges, such as 203.0.113.0/24, separated by commas. If the password is missing, the export dialog displays a red warning.

“Info and Links” displays protected links with the username and password included in the address. Share these links only with the parties who need them, and change the password whenever you switch service providers.

Exporting Orders and Customers

Porter exports orders to two files: order data and order line items. It exports customers along with addresses and key metrics for analysis.

Two Porters for One Order

A Porter in the “Order Data (General)” category provides one row per order containing the customer, billing and shipping addresses, payment, shipping, and totals. A Porter in the “Order Data (Products)” category provides one row per line item. Both are linked by the order number. If “Export Selection” = “Order Number,” link the Line Items Porter under “Associated ‘Order Data (General)’ Porter.” It will then never export more orders than the first one.

Export Selection

  • Order Number: starting from a single number, as a range such as 100-150, or with -100 to always include the last 100. After an export, the store sets the starting number to the next order, except for negative values.
  • Status: all orders with the “Status before export.” Afterward, the store sets the “New status after export” without notifying the customer.
  • Always complete: all orders, for example, for a store switch.
  • Time Period: Orders from the last few days; default is 30.

Re-export and Tracking

To re-export an order, reset the starting number in the settings or set the order back to the “Status before export.” Specify one-time ranges in the export dialog under “Export only orders with order number(s)”; the saved starting number then remains unchanged. Orders themselves cannot be imported. However, a porter with only “Order Number” or “Transaction Number” and “Tracking Number” will import shipment numbers, with multiple numbers separated by semicolons.

Customer Data

The “Customer Data” Porter exports customer accounts with addresses and customer groups. Under “Customer Order Details,” you’ll find “Number of Orders,” “Net Value of Orders,” “Total Value of Orders,” and “Date of Last Order,” which can be used for segmentation, for example. Guest customers do not have a customer account and are not included in this export. Their data is available in the order data.

There are separate methods for sales reports and invoices: Reports → CSV Sales Export provides one row per order with net, gross, and tax; you can print invoices in bulk from the order overview. For more information, see the guide on editing orders.


Common Errors and How to Fix Them

If an import isn’t working as expected, it’s almost always due to one of these causes. Check them in order.

ObservationCauseSolution
Nothing is being processed; a red error message appears for the header rowThe file’s field separator is incorrect; the header row is read as a single columnMatch the delimiters in the file and the settings
One column is silently ignoredThe column header differs from the “column name,” even if only in uppercase and lowercaseAdjust the file header or column name. Caution: Afterward, the column will function as, for example, a status.
New items are not createdNo name column, empty name, or Porter language is not the default languageAdd a name column; set the Porter language to the default language
Prices are incorrect or 0Thousand separators, gross price without tax information, or decimal point without the import option chg=,-->.Numbers without thousands separators; check the import option, import net amounts, or include the tax rate
Items without taxOnly the name of a tax class in the file that the store does not recognizeWrite names exactly as they appear in the store or include the tax rate
Fields suddenly emptyEmpty cells in an active columnRemove the column from the file and Porter, or fill in the values
Items lose their categories“Product Copies (Links)” is turned off; the file lists only one category per itemEnable “Product Copies (Links)” or specify all categories
Umlauts or special characters are incorrectFile saved in a different character setSave as UTF-8; Excel: “CSV UTF-8”
Leading zeros are missing in EAN or item numbersExcel opened and saved the CSV file as a numberExport as XLSX and edit, or import the column into Excel as text
Duplicate categories or manufacturersImport in a different language without an IDInclude the category ID or manufacturer ID
Many new tax classesTax class spelled differently in the file than in the storeStandardize spelling, delete redundant classes
Export link returns the message “Porter is not active!”Porter status is offEnable Porter status

XML, REST API, and ERP

The CSV Porter is intended for files that you edit yourself or that a system saves regularly. Interfaces are available for ongoing synchronization with a merchandise management system.

REST API

The xoPort JSON/REST interface reads and writes products, categories, customers, orders, and more. You can create access credentials under Tools → xoPort OAuth2 Clients. Endpoints, fields, and authentication are described in the API documentation.

XML Interface

Older integrations with inventory management systems use xoPort’s XML interface. Its fields are also listed in the API documentation.

Whether it is available is controlled under Settings → Interfaces → Inventory Management Systems/ERPs/Accounting → xoPort Data Interface → xoPort: Old XML Interface Enabled. New stores start with the XML interface disabled; existing stores keep it enabled. from 4.9.78

Merchandise Management and Accounting

There are dedicated integrations for JTL-Wawi, Billbee, OpenXE, DATEV, and Lexware Office. We’d be happy to discuss which one is right for your business.



Checklist Before the First Import

  1. Create your own porter as a copy of a standard porter, with only the necessary columns.
  2. Backup: the same columns exported and saved beforehand.
  3. File with the same header, the same field and text separators, and in UTF-8 or as an XLSX file.
  4. Key column present: Product ID or item number; for customers, customer ID or email address.
  5. Porter language verified; use the default language for new items.
  6. “Product Copies (Links)” intentionally selected if categories are present in the file.
  7. No empty cells in columns whose values are to be retained.
  8. Performed a test run with a few rows, reviewed the import report, and verified the results in the store.
  9. Porter status enabled only if an external link is required.

Frequently Asked Questions

Why doesn’t the import create new items from the file?

New items require an item number and a name, and the Porter language must match the shop’s default language. If the name column is missing in Porter, it will only update existing items and mark unknown items in yellow as skipped. If the name column is present but empty, it will display the message “New items must have a name!”

Why isn’t the CSV import processing any records?

Most often, the header row doesn’t match Porter’s format: a different delimiter, different column names, or different capitalization. In that case, the store reports that no matching header row was found. Export a file using the same Porter and compare its first row with your file.

Why does the price import fail, and how do I check the file?

Check whether the prices contain thousand separators, whether the price column has the import option “ chg=,-->.,” and whether you’re providing net or gross prices. The store calculates gross prices using the tax rate of the row or the item’s tax class. The import analysis and the CSV report list every rejected row along with the reason.

How do I assign additional categories to products without losing existing ones?

Enable “Product Copies (Links)” in the Porter settings. The import will then add the categories from the file instead of replacing the existing assignments. You can specify multiple categories on separate lines for each item or as comma-separated values in “More Categories.” Be careful when re-importing: An export without “Product Copies (Links)” contains only one category per item.

Can I change the sorting order of attributes via import?

Yes, using the “options sort order” column in the Porter’s “Product Options (Attributes)” section. Empty cells preserve the order in the store. Prior to 4.9.106, the import would renumber the values in the order of the file and ignore the column.

How do I remove attributes via CSV import?

To remove a single attribute value, use “ del ” in the “Status” column in the Attribute Porter. To remove all attributes for a product, use “ delopt ” in the status column of a Product Porter. Use a separate row for this, and enter any other changes in a second row with status 0 or 1.

Which field controls the sale of an item?

The “EOL (End of Life) Sales” field, column name by default: products eol. Such items cannot be sold beyond the entered inventory level.

How do I import meta texts or category texts?

For items, use the fields in the “Search Engines” group, such as “Product Page Title” and “Product Description”; for categories, use a copy of the “Category Update” importer with the category ID, category description, and SEO fields. In a language other than the default language, the ID is required.

Does the data remain in the store after export?

Yes. An export simply copies the data to a file, including an Excel file. Data is only deleted from the store if you import a file containing delete commands such as del.

Where can I find the exported file on the server?

With the storage location set to “Server,” the file is located at xoport/xoport_<ID>.<Format> or, for customer and order data, at xoport/secure/. The exact path and the date of the most recent file are displayed under “Info and Links.” Feeds for Google Merchant Center are generated via a separate path; see Google Merchant Center & Product Feed.

Can I password-protect Porter exports?

Yes, for customer, order, and all other protected categories—using a password and IP filter under Settings → General → Basic Settings. Exports of the “Products,” “Product Options,” “Marketplaces,” and “Marketplace Data” sections are intended for price comparison sites and are accessible without a password as long as the Porter is enabled. Disable these Porters if no one needs the link.

How do I export orders within a specific range or export them again?

In the export dialog, under “Export only orders with order number(s),” enter a “From” and “To” range. For automatic export, enter a range such as 100-150 in the “Order Number” field under Settings. To re-export, reset the starting number or, when exporting by status, set the order back to the “Status before export.”

Can I import orders into the store using CSV Porter?

No. Order data can only be exported; otherwise, the store will display the message “Order data cannot be imported!”. It is possible to import tracking numbers using a Porter based on the “Order Number” or “Transaction Number” and “Tracking Number.” The REST API creates orders from other systems.

How do I export customer data, including from guest orders?

The “Customer Data” Porter exports customer accounts; if desired, it can be set to include only changes made since a specific date. Guest customers do not have an account. Their names and addresses are available in a Porter under the “Order Data (General)” section. Both sections are located in the protected directory.

How do I exclude rows with empty fields from the export?

In the “Export Options” section for this column, enter “ skip= ” without a value. For example, “ skip=0 ” will omit rows with a value of 0. In “Import Options,” however, “ skip ” alone means that the import will skip the entire column.

Which image formats does the import from a URL support?

With the import option path=catch or path=catch_if_not_exists, the importer loads images with the extensions JPG, JPEG, PNG, GIF, and WebP from a URL and saves them in the store. Without this option, it expects the filename of an image that is already in the image folder.

How do I update the manufacturer’s product safety information via import?

The “Products” section contains, in the “Manufacturer” group, the manufacturer’s company name, address, country, email, and website, as well as the same information for a responsible person in the EU. Enter the country as a two-digit ISO code, such as DE. The store finds the manufacturer using the “Manufacturer ID” or “Manufacturer Name.”

Which endpoint and which login credentials should I use for an import via the API?

For the REST API, create access credentials under Tools → xoPort OAuth2 Clients. Addresses, fields, and examples are provided in the API documentation. The CSV Porter does not require its own access credentials: It runs in the backend or via its export and import link.

Further Guides

We’ll set up your data exchange with you

We’ll help you find the right Porter, set up column mapping for your inventory management system, and handle the initial import.

Contact Support Now