Skip to content
SyncMyShop

Notes

What is a CIF catalog?

A CIF catalog is a text file in Catalog Interchange Format: a header of key-value lines, a body of comma-separated item rows between DATA and ENDOFDATA, and nothing after that. Suppliers upload it to SAP Business Network so a buyer on SAP Ariba can search their items, either as a full catalog with prices or as a PunchOut index.

Updated

What a CIF file is

CIF, the Catalog Interchange Format, is the flat-file catalog format of SAP Ariba. A CIF file has three parts: a header with attributes for the whole file, a body with one item per line, and a trailer. The file name ends in .cif, and SAP recommends the same file name for every version of a catalog.

A supplier uses it in two ways:

  • as a static catalog: every item with its price and unit, loaded into the buyer's procurement system and searched there;
  • as a PunchOut index: items without a binding price that point to your store, so a click in the buyer's search opens your product page.

The rules below are from SAP's Customer Catalog Format Reference for SAP Business Network, checked on October 3, 2026.

The header

The first line declares the version. Every line after it is a key and a value, KEY: value, one per line, in any order. Keys are case-insensitive and values are case-sensitive. SAP silently ignores keys it does not know.

Key Required Default What it sets
CIF_I_V3.0 yes the version; always the first line
CHARSET yes Cp1252 (Windows Latin-1) the character set; UTF-8 for anything beyond Western European
CURRENCY yes USD ISO 4217 currency of the prices
CODEFORMAT yes UNSPSC the commodity code system, optionally with a version
SUPPLIERID_DOMAIN yes what the supplier ID is: DUNS or NETWORKID
UNUOM yes FALSE TRUE for UN units such as EA; FALSE means ANSI units
FIELDNAMES yes the columns, ASCII only, names matched exactly
LOADMODE yes F F for a full catalog, I for an incremental update
TIMESTAMP yes YYYY-MM-DD hh:mm:ss, 24-hour clock
ITEMCOUNT no the number of item rows, used for error checking

Two defaults matter. A file without CHARSET is read as Windows Latin-1, so a UTF-8 "é" shows as two wrong characters. A file without UNUOM: TRUE is read with ANSI units, while SAP notes that most buying organizations use the UN codes.

The 12 fixed fields

Every row starts with 12 fields in a fixed order. Empty fields still need their commas. Optional fields follow after the twelfth, in the order FIELDNAMES declares them.

# Field Required Limit
1 Supplier ID yes 255 characters; SAP Ariba solutions read up to 128
2 Supplier Part ID yes 255 characters, 128 read; never ?, { or }
3 Manufacturer Part ID no 255 characters
4 Item Description yes 1,000 characters: 2,000 bytes in Unicode
5 SPSC Code yes 40 characters, digits only, usually UNSPSC
6 Unit Price yes, except for PunchOut items decimal
7 Unit of Measure yes, except for PunchOut items 32 characters, a UN or ANSI code
8 Lead Time no whole business days
9 Manufacturer Name no 255 characters
10 Supplier URL no 255 characters
11 Manufacturer URL no 255 characters
12 Market Price no decimal, for comparison only, not displayed

The description limit is in bytes underneath. SAP's own example: Japanese characters take 3 bytes each in UTF-8, so a Japanese description stops at 666 characters. An English description with 30 accented characters, each 2 bytes, at 980 characters in total is 950 + 30 x 2 = 1,010 bytes, well inside.

Writing the rows

The body is CSV with strict rules. Each line is one item; blank lines are not allowed; a line return ends the item even inside quotes. A comma means "next field", so any text with a comma is quoted, and a quote inside quoted text is doubled. Prices take a point or a quoted comma as decimal separator, no thousands separator and no currency symbol.

One ERP item written as a CIF row Item 10482 from the ERP is mapped to five CIF fields. The description loses its line break and is quoted, the decimal comma becomes a point, the commodity code loses its dots and the unit pcs becomes the UN code EA. ERP item CIF row item_no 10482 description Duplex receptacle 20 A, white, tamper resistant line break inside the text sales_price 9,60 commodity_code 39.12.14.06 unit pcs Supplier Part ID 10482 Item Description "Duplex receptacle 20 A, white, tamper resistant" Unit Price 9.60 SPSC Code 39121406 Unit of Measure EA with UNUOM: TRUE one line, quoted decimal point dots removed UN code
One ERP item written as a CIF row. Four of the five fields need a change before SAP Business Network accepts them.
Value in the ERP In the CIF row Rule
Duplex receptacle 20 A, white "Duplex receptacle 20 A, white" a comma in the text: quote the field
Faceplate, 4.5" high "Faceplate, 4.5"" high" a quote inside quotes: double it
1.250,00 1250.00 or "1250,00" no thousands separator; a decimal comma is quoted
$9.60 9.60 no currency symbol
39.12.14.06 39121406 commodity codes without punctuation
text with a line break one line a line return ends the row

A catalog of item 10482 for one customer, in full:

CIF_I_V3.0
CHARSET: UTF-8
LOADMODE: F
CODEFORMAT: UNSPSC
CURRENCY: USD
SUPPLIERID_DOMAIN: NETWORKID
UNUOM: TRUE
ITEMCOUNT: 2
TIMESTAMP: 2026-10-03 09:00:00
FIELDNAMES: Supplier ID, Supplier Part ID, Manufacturer Part ID, Item Description, SPSC Code, Unit Price, Unit of Measure, Lead Time, Manufacturer Name, Supplier URL, Manufacturer URL, Market Price
DATA
AN01000000001,10482,,"Duplex receptacle 20 A, white, tamper resistant",39121406,9.60,EA,3,,,,12.50
AN01000000001,10483,,"Duplex receptacle 20 A, ivory, tamper resistant",39121406,9.60,EA,3,,,,12.50
ENDOFDATA

The prices are the contract price of that customer, 9.60, with the list price of 12.50 as Market Price. A catalog belongs to one customer; a second customer with its own prices gets its own file.

Full and incremental loads

LOADMODE: F replaces the whole catalog. LOADMODE: I sends only changes: a row whose item ID already exists is an update, a new one is an addition, and a row with T in a Delete column removes the item. In a full load, delete rows generate errors.

The arithmetic for a customer catalog of 4,000 items, in a month where 40 prices change and 12 items are discontinued:

  • full load: 4,000 - 12 = 3,988 rows, ITEMCOUNT: 3988
  • incremental load: 40 + 12 = 52 rows, ITEMCOUNT: 52, of which 12 carry Delete = T

SAP Business Network takes CIF files up to 200 MB. A larger catalog is split: the first file with LOADMODE: F, the others with LOADMODE: I, each uploaded and published in turn.

A PunchOut index in CIF

A PunchOut index uses the same format with two more columns declared in FIELDNAMES: PunchOut Enabled set to TRUE, and PunchOutLevel with store, aisle, shelf or product. Unit Price and Unit of Measure stay empty, because the price comes from your store in the session. SAP's Level 2 table asks for a Supplier URL on every index item; a dummy URL is enough for compatibility with Ariba Buyer 8.x.

FIELDNAMES: Supplier ID, Supplier Part ID, Manufacturer Part ID, Item Description, SPSC Code, Unit Price, Unit of Measure, Lead Time, Manufacturer Name, Supplier URL, Manufacturer URL, Market Price, PunchOut Enabled, PunchOutLevel
DATA
AN01000000001,10482,,"Duplex receptacle 20 A, white, tamper resistant",39121406,,,,,https://store.example.com/punchout,,,TRUE,product
ENDOFDATA

PunchOutLevel is read only by SAP Ariba Buying and Invoicing. For store, aisle and shelf items the buyer's search shows only the first 50 characters of the description.

Where CIF files fail

For buyers without their own content management system, SAP Business Network validates the file before it publishes it. For buyers with one, the buyer's system validates it and reports back as "Validation Errors Found by Customer".

Check What fails
Structure the header does not start with the version line, or DATA and ENDOFDATA are missing or misplaced
Count ITEMCOUNT differs from the number of rows; a line break inside a description makes one item two rows
Field lengths any field over its maximum
Duplicates two rows with the same supplier ID, part ID and auxiliary ID
Prices a malformed price or no currency
Units a unit that does not match the standard set by UNUOM
Commodity codes a UNSPSC code that is not in the supported version, v25.9 since May 24, 2024
Supplier ID a value that does not match the network ID or D-U-N-S number declared for your organization

A buyer can relax some semantic checks, such as UNSPSC codes, units or zero prices. The syntax checks always apply.

What this means for your integration

A CIF catalog is an export of your item and price data per customer, and the failures above come from data that is fine in the ERP and wrong in CIF: a decimal comma, a code with dots, a line break in a description, a unit called "pcs". The integration writes the file from the ERP and the store, applies these rules per field, counts the rows, and checks lengths, units and codes before upload, so a rejected catalog is caught on our side.

When the catalog is a PunchOut index, the same export feeds the session that follows: the part numbers in the index have to open product pages in your store. How the index and the session work together is on Level 2 PunchOut, and the whole PunchOut flow on the PunchOut hub. How a file catalog compares with a live store is on PunchOut vs hosted catalog.

Frequently asked questions

Is CIF the same as CSV?

The body is CSV, with quotes around any field that holds a comma. CIF adds a header that declares the version, the character set, the currency, the commodity code system and the field names, and the DATA and ENDOFDATA lines around the rows. A plain CSV export from a spreadsheet has none of these and is refused.

Which version should I use, CIF 2.1 or 3.0?

CIF 3.0, with the first line CIF_I_V3.0. SAP documents that CIF 2.1 supports only the 12 basic fields and no PunchOut items, multi-language descriptions, multi-currency prices, expiration dates or parametric search. Both have the .cif extension.

Can I build a CIF file in Excel?

Yes, with care. SAP Business Network has an Excel to CIF converter for files up to 1 MB. A file saved by hand has to keep leading zeros in part numbers, use a point or a quoted comma as decimal separator, and be saved as UTF-8; SAP warns that Notepad's "Unicode" option writes raw UCS-2, which is not file-safe.

How does SAP Ariba tell items apart?

By the combination of Supplier ID, Supplier Part ID and Supplier Part Auxiliary ID, not by the description. A box and a bag of the same part number are duplicates unless they have different auxiliary IDs, and two rows with the same combination fail validation.

Should a Level 2 PunchOut index be CIF or cXML?

SAP accepts both and names cXML the preferred format for Level 2, because the file is smaller. CIF works the same way with two extra columns, PunchOut Enabled and PunchOutLevel. The session that follows a click is described on Level 2 PunchOut.

Tell us what you need

Tell us which systems you use and what needs to work better. We reply personally within one working day. We help you define the work, then agree the price and timing before you commit.

  • You know the price and the timeline before you commit to anything
  • We work out the connection that takes the work off your hands
  • We handle the build, hosting, monitoring and maintenance
  • Your team has less information to retype and fewer discrepancies to chase

Suppliers, products, orders per day, a rough estimate is fine.

Or email directly: carsten@syncmyshop.com