# Orders

These standard formats are available for orders: [Workist XML](#workist-xml) (default), [SAP IDoc ORDERS05](#sap-idoc), [openTRANS 2.1](#opentrans), [cXML OrderRequest](#cxml) and [ANSI X12 850](#x12). Workist builds formats such as EDIFACT, EDX, proALPHA or Excel on request, see [Custom formats on request](/en/docs/output-formats.md#custom-formats).

All examples on this page were generated with the Workist serializers from the same sample data. General rules on file names, date and number formats are in the [overview](/en/docs/output-formats.md).

---

## Workist XML {#workist-xml}

**File extension:** `.xml`  
**File name:** `<ID>.xml`

The default format for orders. The file has four sections:

- `General`: order header data
- `Invoicing`: invoice address
- `Shipping`: delivery address and delivery dates
- `Line`: one element per line item

Which elements appear depends on your channel's header and line item fields. Workist omits empty fields. Dates have the format `YYYY-MM-DD`. Decimal numbers use a decimal comma without trailing zeros by default (`1487,5`).

### Full example

```xml
<?xml version="1.0" encoding="utf-8"?>
<Order_v1>
  <General>
    <Sell_to_Customer>
      <Customer_Number>CUST-12345</Customer_Number>
      <Name>Acme Corporation</Name>
      <Contact_Number>CP-001</Contact_Number>
      <Contact>Max Mustermann</Contact>
      <Contact_Email>max@acme.de</Contact_Email>
      <Contact_Phone>+49 89 12345678</Contact_Phone>
      <Country>DE</Country>
      <Country_Subdivision>BY</Country_Subdivision>
      <Customer_Type>regular</Customer_Type>
    </Sell_to_Customer>
    <Dispatch_Contact>
      <Contact_Number>CP-007</Contact_Number>
      <Contact>Erika Versand</Contact>
      <Contact_Email>shipping@acme.de</Contact_Email>
      <Contact_Phone>+49 89 12345679</Contact_Phone>
    </Dispatch_Contact>
    <Order_Date>2025-03-15</Order_Date>
    <VAT_Registration_Number>DE123456789</VAT_Registration_Number>
    <Customer_Order_Number>PO-2025-0001</Customer_Order_Number>
    <Quote_Reference_Number>QT-2025-100</Quote_Reference_Number>
    <Project_Number>PRJ-500</Project_Number>
    <Distribution_Channel>10</Distribution_Channel>
    <Order_Type>standard</Order_Type>
    <Delivery_Terms>DDP</Delivery_Terms>
    <Shipping_Terms>express</Shipping_Terms>
    <Payment_Terms>net 30</Payment_Terms>
    <Total_Amount_Net>1250</Total_Amount_Net>
    <Total_Amount>1487,5</Total_Amount>
    <Framework_Contract_Number>FC-2025-200</Framework_Contract_Number>
    <Goods_Receiving_Time>08:00-16:00</Goods_Receiving_Time>
    <Info_Text>Please deliver to loading dock B. Handle with care - fragile items, do</Info_Text>
    <Info_Text>not stack pallets.</Info_Text>
    <Commission_Number>COM-999</Commission_Number>
    <Incoterm>DAP</Incoterm>
    <Delivery_Unload_Method>forklift</Delivery_Unload_Method>
    <External_Document_Link>9f8c2b7e-4d1a-4c3e-9b6f-2a7d5e1c0b34.pdf</External_Document_Link>
    <Workist_URL>https://wb.workist.com/orders/3f2b8c1e-5a7d-4e19-8c2f-6b0d9a4e7c15</Workist_URL>
    <Received_By>max@acme.de</Received_By>
    <ERP_Locked>false</ERP_Locked>
    <Additional_Files>
      <Additional_File>
        <File_Name>9f8c2b7e-4d1a-4c3e-9b6f-2a7d5e1c0b34_file_1.pdf</File_Name>
        <Classification>DELIVERY_NOTE</Classification>
        <File_Name_Original>delivery-schedule.pdf</File_Name_Original>
      </Additional_File>
    </Additional_Files>
  </General>
  <Invoicing>
    <Bill_to_Customer>
      <Code>BILL-001</Code>
      <Name>Accounts Payable</Name>
      <Additional_Name_Info>Acme Corporation GmbH</Additional_Name_Info>
      <Address>Billing Strasse 10</Address>
      <Additional_Address_Info>Building C, 3rd Floor</Additional_Address_Info>
      <City>Munich</City>
      <Post_Code>80331</Post_Code>
      <Country>DE</Country>
      <Country_Subdivision>BY</Country_Subdivision>
      <Phone>+49 89 11111111</Phone>
      <Email>billing@acme.de</Email>
    </Bill_to_Customer>
  </Invoicing>
  <Shipping>
    <Ship_to_Customer>
      <Code>SHIP-002</Code>
      <Name>Warehouse Team</Name>
      <Additional_Name_Info>Acme Corporation GmbH</Additional_Name_Info>
      <Address>Lager Strasse 5</Address>
      <Additional_Address_Info>Gate 3</Additional_Address_Info>
      <City>Hamburg</City>
      <Post_Code>20095</Post_Code>
      <Country>DE</Country>
      <Country_Subdivision>HH</Country_Subdivision>
      <Phone>+49 40 22222222</Phone>
      <Email>warehouse@acme.de</Email>
    </Ship_to_Customer>
    <Expected_Delivery_Date>2025-04-01</Expected_Delivery_Date>
    <Expected_Delivery_End_Date>2025-04-05</Expected_Delivery_End_Date>
    <Expected_Delivery_Time_From>08:00</Expected_Delivery_Time_From>
    <Expected_Delivery_Time_Until>16:00</Expected_Delivery_Time_Until>
    <Goods_Issue_Date>2025-03-28</Goods_Issue_Date>
  </Shipping>
  <Line>
    <Batch_Number>LOT-2025-A</Batch_Number>
    <Description>Industrial Sensor Module Type A</Description>
    <Unit_of_Measure>PCE</Unit_of_Measure>
    <Quantity>100</Quantity>
    <Unit_Price>12,5</Unit_Price>
    <Price_Unit>1</Price_Unit>
    <Total_Price>1250</Total_Price>
    <Line_Discount_Percent>5</Line_Discount_Percent>
    <Line_Discount_Amount>62,5</Line_Discount_Amount>
    <Item_Variant>blue</Item_Variant>
    <Common_Item_Number>ART-001-A</Common_Item_Number>
    <Common_Item_Number_2>ART-001-A-ALT</Common_Item_Number_2>
    <Common_Item_Number_3>4006381333931</Common_Item_Number_3>
    <Customer_Item_Number>CUST-ART-555</Customer_Item_Number>
    <Item_Number_Confidence>0,95</Item_Number_Confidence>
    <Expected_Delivery_Date>2025-04-01</Expected_Delivery_Date>
    <Expected_Delivery_Time_From>08:00</Expected_Delivery_Time_From>
    <Expected_Delivery_Time_Until>12:00</Expected_Delivery_Time_Until>
    <Goods_Issue_Date>2025-03-28</Goods_Issue_Date>
    <Commission_Number>COM-LINE-01</Commission_Number>
    <Sales_Organisation>1000</Sales_Organisation>
    <Pos>10</Pos>
    <Framework_Contract_Number>FC-2025-200</Framework_Contract_Number>
    <Quote_Reference_Number>QT-2025-100</Quote_Reference_Number>
    <Container_Quantity>10</Container_Quantity>
    <Container_Type>box</Container_Type>
    <Order_Number>SUB-ORD-001</Order_Number>
    <Sell_to_Customer>
      <Customer_Number>CUST-67890</Customer_Number>
      <Name>Acme Branch North</Name>
      <Customer_Address>
        <Name>Acme Branch North</Name>
        <Address>Nordring 7</Address>
        <City>Hamburg</City>
        <Post_Code>22303</Post_Code>
        <Country>DE</Country>
      </Customer_Address>
    </Sell_to_Customer>
    <Currency>EUR</Currency>
    <Article_Comments>Pack individually</Article_Comments>
    <Article_Markings>A1</Article_Markings>
    <Article_Markings>B2</Article_Markings>
  </Line>
</Order_v1>
```

### General fields (`General`) {#general-fields}

| Element | Type | Description |
|---|---|---|
| `Sell_to_Customer` | Block | The ordering customer, filled from your customer master data |
| `Sell_to_Customer/Customer_Number` | Text | Customer number |
| `Sell_to_Customer/Name` | Text | Customer name |
| `Sell_to_Customer/Contact_Number` | Text | Number of the customer's contact person |
| `Sell_to_Customer/Contact` | Text | Name of the contact person |
| `Sell_to_Customer/Contact_Email` | Text | Contact person's email address |
| `Sell_to_Customer/Contact_Phone` | Text | Contact person's phone number |
| `Sell_to_Customer/Country` | Text | Country code of the customer address (e.g. `DE`) |
| `Sell_to_Customer/Country_Subdivision` | Text | State or region code of the customer address (e.g. `BY`) |
| `Sell_to_Customer/Customer_Type` | Text | Customer type from your master data |
| `Dispatch_Contact` | Block | Shipping contact at the customer. Only present if at least one value is filled |
| `Dispatch_Contact/Contact_Number` | Text | Number of the shipping contact |
| `Dispatch_Contact/Contact` | Text | Name of the shipping contact |
| `Dispatch_Contact/Contact_Email` | Text | Shipping contact's email address |
| `Dispatch_Contact/Contact_Phone` | Text | Shipping contact's phone number |
| `Order_Date` | Date | Order date |
| `VAT_Registration_Number` | Text | Customer's VAT ID |
| `Customer_Order_Number` | Text | Customer's order number |
| `Quote_Reference_Number` | Text | Number of the quote the order refers to |
| `Project_Number` | Text | Project number |
| `Distribution_Channel` | Text | Distribution channel or sales organisation |
| `Order_Type` | Text | Order type |
| `Delivery_Terms` | Text | Delivery terms |
| `Shipping_Terms` | Text | Shipping terms |
| `Payment_Terms` | Text | Payment terms |
| `Total_Amount_Net` | Decimal | Net total amount |
| `Total_Amount` | Decimal | Gross total amount |
| `Framework_Contract_Number` | Text | Framework contract number |
| `Goods_Receiving_Time` | Text | Goods receiving hours as stated on the order |
| `Info_Text` | Text | Free text. Workist splits it into chunks of 70 characters, one element per chunk, at most 5 elements; anything beyond is dropped |
| `Commission_Number` | Text | Commission number |
| `Incoterm` | Text | Incoterm (e.g. `DAP`) |
| `Delivery_Unload_Method` | Text | Unloading method at the delivery location |
| `External_Document_Link` | Text | File name of the original document Workist delivers next to the XML file (`<ID>.pdf`). Not a link |
| `Workist_URL` | Text | Link to the document in the Workbench |
| `Received_By` | Text | Sender address (*From*) of the email in which the document reached Workist |
| `ERP_Locked` | Boolean | `true` if a user marked the order as locked for downstream processing in the Workbench, otherwise `false` |
| `Additional_Files` | Block | Further attachments of the same email that Workist delivers with the order. Only present if additional files are enabled and matching attachments exist |
| `Additional_Files/Additional_File` | Block | One element per file |
| `Additional_Files/Additional_File/File_Name` | Text | File name under which Workist delivers the file (`<ID>_file_<n>.<extension>`) |
| `Additional_Files/Additional_File/Classification` | Text | Document type of the attachment: `ORDER`, `ORDER_CONFIRMATION`, `REQUEST_FOR_QUOTATION`, `INVOICE`, `DELIVERY_NOTE`, `OFFER` or `OTHER` |
| `Additional_Files/Additional_File/File_Name_Original` | Text | Original file name of the attachment |

### Invoice address, delivery address and delivery dates

`Invoicing` and `Shipping` only appear if at least one of their fields is filled.

| Element | Type | Description |
|---|---|---|
| `Invoicing/Bill_to_Customer` | Block | Invoice address; fields see [Address fields](#address-fields) |
| `Shipping/Ship_to_Customer` | Block | Delivery address; fields see [Address fields](#address-fields) |
| `Shipping/Expected_Delivery_Date` | Date | Requested delivery date |
| `Shipping/Expected_Delivery_End_Date` | Date | End of the delivery period |
| `Shipping/Expected_Delivery_Time_From` | Text | Start of the delivery time window (`HH:MM`) |
| `Shipping/Expected_Delivery_Time_Until` | Text | End of the delivery time window (`HH:MM`) |
| `Shipping/Goods_Issue_Date` | Date | Goods issue date |

### Address fields {#address-fields}

`Bill_to_Customer`, `Ship_to_Customer` and `Customer_Address` (in `Line` for collective orders) share this structure. An address block only appears if a name, company, street or city is filled.

| Element | Type | Description |
|---|---|---|
| `Code` | Text | Address number from your master data |
| `Name` | Text | Recipient name; the company name if no name is filled |
| `Additional_Name_Info` | Text | Company name; only present if a name is filled as well |
| `Address` | Text | Street and house number. Always present, possibly empty |
| `Additional_Address_Info` | Text | Additional address line (e.g. building, gate) |
| `City` | Text | City. Always present, possibly empty |
| `Post_Code` | Text | Postcode. Always present, possibly empty |
| `Country` | Text | Country code (e.g. `DE`). Always present, possibly empty |
| `Country_Subdivision` | Text | State or region code (e.g. `BY`) |
| `Phone` | Text | Phone number |
| `Email` | Text | Email address |

### Line item fields (`Line`) {#line-fields}

Workist writes one `Line` element per line item, provided at least one line item field is configured. The article numbers come from your [article master data](/en/docs/master-data/articles.md).

| Element | Type | Description |
|---|---|---|
| `Batch_Number` | Text | Batch number |
| `Description` | Text | Article description |
| `Unit_of_Measure` | Text | Unit of measure |
| `Quantity` | Decimal | Ordered quantity |
| `Unit_Price` | Decimal | Unit price |
| `Price_Unit` | Decimal | Price unit: number of units the unit price refers to (e.g. `1` or `100`) |
| `Total_Price` | Decimal | Line total |
| `Line_Discount_Percent` | Text | Discount in percent, as stored in Workist |
| `Line_Discount_Amount` | Text | Discount amount, as stored in Workist |
| `Item_Variant` | Text | Article variant |
| `Common_Item_Number` | Text | Your article number (`article_id1` from your article master data) |
| `Common_Item_Number_2` | Text | Second article number (`article_id2`) |
| `Common_Item_Number_3` | Text | Third article number (`article_id3`, e.g. EAN) |
| `Customer_Item_Number` | Text | The customer's article number |
| `Item_Number_Confidence` | Decimal | Confidence of the automatic article match between 0 and 1, always with a decimal comma (e.g. `0,95`) |
| `Expected_Delivery_Date` | Date | Delivery date of the line |
| `Expected_Delivery_Time_From` | Text | Start of the line's delivery time window (`HH:MM`) |
| `Expected_Delivery_Time_Until` | Text | End of the line's delivery time window (`HH:MM`) |
| `Goods_Issue_Date` | Date | Goods issue date of the line |
| `Commission_Number` | Text | Commission number of the line |
| `Sales_Organisation` | Text | Sales organisation |
| `Pos` | Text | Line number |
| `Framework_Contract_Number` | Text | Framework contract number of the line |
| `Quote_Reference_Number` | Text | Quote number of the line |
| `Container_Quantity` | Text | Converted quantity (e.g. in containers), as stored in Workist |
| `Container_Type` | Text | Converted unit (e.g. `box`) |
| `Order_Number` | Text | Order number of the line (e.g. for collective orders) |
| `Sell_to_Customer` | Block | Customer of this line in collective orders |
| `Sell_to_Customer/Customer_Number` | Text | Customer number |
| `Sell_to_Customer/Name` | Text | Customer name |
| `Sell_to_Customer/Customer_Address` | Block | Address of this customer; fields see [Address fields](#address-fields) |
| `Currency` | Text | Currency of the line (e.g. `EUR`) |
| `Article_Comments` | Text | Comment on the line |
| `Article_Markings` | Text | Marking of the line; one element per marking |

### Optional elements

You switch some elements on in the channel configuration (see [Exported processed documents](/en/docs/channel-configuration/exported-documents.md)):

- `External_Document_Link`: **Include reference to the analyzed file** (on by default). The element contains the file name of the original document Workist stores next to the XML file.
- `Workist_URL`: **Include link to the Workbench**.
- `Received_By`: **Include email sender information**. If the document did not arrive by email, the element is missing.
- `ERP_Locked`: Enter `erp_locked` under **Additional header data fields**. Users can then flag an order in the Workbench with **Mark as locked for downstream processing**.
- `Additional_Files`: In the upload configuration, turn on **Additional Files** and pick the document types under **Additional File Types**. Workist then delivers matching attachments of the same email together with the order and lists them here.

---

## SAP IDoc ORDERS05 {#sap-idoc}

**File extension:** `.xml`  
**File name:** `<IDoc number>.xml`

The IDoc format for direct import into SAP. It consists of a control record (`EDI_DC40`) and data segments for header, dates, partners and line items. The same format exists for [requests for quotation](/en/docs/output-formats/requests-for-quotation.md#sap-idoc) with message type `REQOTE`.

### Full example

In this example the delivery and invoice addresses have an address number, so their address fields stay empty.

```xml
<?xml version="1.0" encoding="utf-8"?>
<ORDERS05>
  <IDOC BEGIN="1">
    <EDI_DC40 SEGMENT="1">
      <TABNAM>EDI_DC40</TABNAM>
      <MANDT>050</MANDT>
      <DOCNUM>0000000000004711</DOCNUM>
      <STATUS>30</STATUS>
      <DIRECT>2</DIRECT>
      <IDOCTYP>ORDERS05</IDOCTYP>
      <MESTYP>ORDERS</MESTYP>
      <STD>0</STD>
      <STDMES>ORDERS</STDMES>
      <SNDPOR>WORKIST</SNDPOR>
      <SNDPRT>LS</SNDPRT>
      <SNDPRN>WORKIST</SNDPRN>
      <RCVPOR>XML_WKI</RCVPOR>
      <RCVPRT>LS</RCVPRT>
      <RCVPRN>SUPPLIER</RCVPRN>
      <CREDAT>20250315</CREDAT>
      <CRETIM>143025</CRETIM>
    </EDI_DC40>
    <E1EDK01 SEGMENT="1">
      <ACTION>000</ACTION>
      <BELNR>PO-2025-0001</BELNR>
      <RECIPNT_NO>SUPPLIER</RECIPNT_NO>
    </E1EDK01>
    <E1EDK03 SEGMENT="1">
      <IDDAT>012</IDDAT>
      <DATUM>20250315</DATUM>
    </E1EDK03>
    <E1EDK03 SEGMENT="1">
      <IDDAT>002</IDDAT>
      <DATUM>20250401</DATUM>
    </E1EDK03>
    <E1EDKA1 SEGMENT="1">
      <PARVW>AG</PARVW>
      <PARTN>CUST-12345</PARTN>
    </E1EDKA1>
    <E1EDKA1 SEGMENT="1">
      <PARVW>Z1</PARVW>
      <PARTN>CP-001</PARTN>
      <NAME1>Max Mustermann</NAME1>
      <TELF1>+49 89 12345678</TELF1>
      <TELBX>max@acme.de</TELBX>
    </E1EDKA1>
    <E1EDKA1 SEGMENT="1">
      <PARVW>WE</PARVW>
      <PARTN>SHIP-002</PARTN>
      <NAME1 />
      <NAME2 />
      <STRAS />
      <ORT01 />
      <PSTLZ />
      <LAND1 />
    </E1EDKA1>
    <E1EDKA1 SEGMENT="1">
      <PARVW>RE</PARVW>
      <PARTN>BILL-001</PARTN>
      <NAME1 />
      <NAME2 />
      <STRAS />
      <ORT01 />
      <PSTLZ />
      <LAND1 />
    </E1EDKA1>
    <E1EDK02 SEGMENT="1">
      <QUALF>001</QUALF>
      <BELNR>PO-2025-0001</BELNR>
      <DATUM>20250315</DATUM>
    </E1EDK02>
    <E1EDP01 SEGMENT="1">
      <POSEX>0</POSEX>
      <ACTION>001</ACTION>
      <MENGE>100</MENGE>
      <MENEE>PCE</MENEE>
      <E1EDP03 SEGMENT="1">
        <IDDAT>002</IDDAT>
        <DATUM>20250401</DATUM>
        <UZEIT>000000</UZEIT>
      </E1EDP03>
      <E1EDP19 SEGMENT="1">
        <QUALF>002</QUALF>
        <IDTNR>ART-001-A</IDTNR>
      </E1EDP19>
    </E1EDP01>
  </IDOC>
</ORDERS05>
```

### Segments

| Element | Content |
|---|---|
| `EDI_DC40` | Control record. `TABNAM`, `STATUS` (`30`), `DIRECT` (`2`), `IDOCTYP` (`ORDERS05`), `STD` (`0`), `MESTYP` and `STDMES` (`ORDERS`) are fixed. `DOCNUM` is a sequential 16-digit IDoc number, `CREDAT`/`CRETIM` the creation time (UTC). Workist sets `MANDT`, `SNDPOR`, `SNDPRT`, `SNDPRN`, `RCVPOR`, `RCVPRT` and `RCVPRN` for you (see below). |
| `E1EDK01` | Document header: `ACTION` = `000`, `BELNR` = customer's order number (max. 35 characters), `RECIPNT_NO` = recipient number (configurable, max. 10). |
| `E1EDK03` (`IDDAT` = `012`) | `IDDAT` = `012`, `DATUM` = order date (`YYYYMMDD`). Required. |
| `E1EDK03` (`IDDAT` = `002`) | `IDDAT` = `002`, `DATUM` = requested delivery date (`YYYYMMDD`). Required. |
| `E1EDKA1` (`PARVW` = `AG`) | Sold-to party: `PARVW` = `AG`, `PARTN` = customer number (max. 17 characters). |
| `E1EDKA1` (`PARVW` = `Z1`) | Contact person: `PARVW` = `Z1`, `PARTN` = number (max. 30), `NAME1` = name (max. 35), `TELF1` = phone (max. 25), `TELBX` = email address (max. 25, longer addresses are cut off). Only present if at least one value is filled. |
| `E1EDKA1` (`PARVW` = `WE`) | Ship-to party, always present: `PARVW` = `WE`, `PARTN` = address number of the delivery address. `NAME1` = company, `NAME2` = name, `STRAS` = street, `ORT01` = city (max. 35 characters each), `PSTLZ` = postcode (max. 9), `LAND1` = country code (max. 3). If an address number exists, these fields stay empty. |
| `E1EDKA1` (`PARVW` = `RE`) | Bill-to party: `PARVW` = `RE`, `PARTN` = address number of the invoice address. `NAME1` = company, `NAME2` = name, `STRAS` = street, `ORT01` = city (max. 35 characters each), `PSTLZ` = postcode (max. 9), `LAND1` = country code (max. 3). If an address number exists, these fields stay empty. Only present if the invoice address is one of your channel's header fields. |
| `E1EDK02` (`QUALF` = `001`) | `QUALF` = `001`, `BELNR` = order number, `DATUM` = order date. |
| `E1EDP01` | One per line: `POSEX` = running number starting at `0` (not the order's line number), `ACTION` = `001`, `MENGE` = quantity (max. 15 characters), `MENEE` = unit of measure as stored in Workist. |
| `E1EDP03` (`IDDAT` = `002`) | Delivery date of the line: `IDDAT` = `002`, `DATUM` (`YYYYMMDD`), `UZEIT` = `000000`. Only if the line has a delivery date. |
| `E1EDP19` (`QUALF` = `002`) | `QUALF` = `002`, `IDTNR` = your article number (max. 35 characters). |

### Settings

Workist sets these values during setup to match your SAP system. Longer values are cut off.

| Field | Default | Max. characters |
|---|---|---|
| `MANDT` | `050` | – |
| `SNDPOR` | `WORKIST` | 10 |
| `SNDPRT` | `LS` | 2 |
| `SNDPRN` | `WORKIST` | 10 |
| `RCVPOR` | `XML_WKI` | 10 |
| `RCVPRT` | `LS` | 2 |
| `RCVPRN` | `SUPPLIER` | 10 |
| `RECIPNT_NO` | `SUPPLIER` | 10 |

### Notes

- Order date and delivery date are required. If either is missing, Workist creates no file.
- Per line the IDoc only carries quantity, unit, delivery date and your article number. Prices, article description and the customer's article number are not included.
- Workist sends the unit of measure as stored in Workist, without mapping it to ISO codes.
- Your channel's field selection does not change the structure. The only exception is the bill-to party (`RE`).

---

## openTRANS 2.1 {#opentrans}

**File extension:** `.xml`  
**File name:** `<UUID>.xml`

Order in openTRANS 2.1 format (`ORDER`). Business partners are listed in the `PARTIES` section and referenced by their `PARTY_ID`.

### Full example

In this example the line has a converted quantity (10 `box`), so `QUANTITY` and `ORDER_UNIT` carry the converted values.

```xml
<?xml version="1.0" encoding="utf-8"?>
<ORDER xmlns:bmecat="http://www.bmecat.org/bmecat/2005" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.1" xmlns="http://www.opentrans.org/XMLSchema/2.1" xsi:schemaLocation="http://www.opentrans.org/XMLSchema/2.1 opentrans_2_1.xsd" type="standard">
  <ORDER_HEADER>
    <CONTROL_INFO>
      <GENERATOR_INFO>Workist</GENERATOR_INFO>
      <GENERATION_DATE>2025-03-15T14:30:25.123456</GENERATION_DATE>
    </CONTROL_INFO>
    <SOURCING_INFO>
      <QUOTATION_ID>QT-2025-100</QUOTATION_ID>
      <AGREEMENT>
        <bmecat:AGREEMENT_ID>PRJ-500</bmecat:AGREEMENT_ID>
        <bmecat:AGREEMENT_END_DATE>2025-03-15T14:30:25.123456</bmecat:AGREEMENT_END_DATE>
      </AGREEMENT>
    </SOURCING_INFO>
    <ORDER_INFO>
      <ORDER_ID>PO-2025-0001</ORDER_ID>
      <ORDER_DATE>2025-03-15</ORDER_DATE>
      <DELIVERY_DATE>
        <DELIVERY_START_DATE>2025-04-01</DELIVERY_START_DATE>
        <DELIVERY_END_DATE>2025-04-05</DELIVERY_END_DATE>
      </DELIVERY_DATE>
      <PARTIES>
        <PARTY>
          <bmecat:PARTY_ID type="party_specific">workist</bmecat:PARTY_ID>
          <PARTY_ROLE>document_creator</PARTY_ROLE>
        </PARTY>
        <PARTY>
          <bmecat:PARTY_ID type="party_specific">supplier</bmecat:PARTY_ID>
          <PARTY_ROLE>supplier</PARTY_ROLE>
        </PARTY>
        <PARTY>
          <bmecat:PARTY_ID>CUST-12345</bmecat:PARTY_ID>
          <PARTY_ROLE>buyer</PARTY_ROLE>
          <ADDRESS>
            <bmecat:NAME>Acme Corporation</bmecat:NAME>
            <CONTACT_DETAILS>
              <bmecat:CONTACT_ID>CP-001</bmecat:CONTACT_ID>
              <bmecat:CONTACT_NAME>Mustermann</bmecat:CONTACT_NAME>
              <bmecat:FIRST_NAME>Max</bmecat:FIRST_NAME>
              <bmecat:PHONE>+49 89 12345678</bmecat:PHONE>
              <bmecat:EMAILS>
                <bmecat:EMAIL>max@acme.de</bmecat:EMAIL>
              </bmecat:EMAILS>
            </CONTACT_DETAILS>
            <bmecat:STREET>Hauptstrasse 42</bmecat:STREET>
            <bmecat:ZIP>80331</bmecat:ZIP>
            <bmecat:CITY>Munich</bmecat:CITY>
            <bmecat:COUNTRY_CODED>DE</bmecat:COUNTRY_CODED>
            <bmecat:COUNTRY_SUBDIVISION>BY</bmecat:COUNTRY_SUBDIVISION>
          </ADDRESS>
        </PARTY>
        <PARTY>
          <bmecat:PARTY_ID>SHIP-002</bmecat:PARTY_ID>
          <PARTY_ROLE>delivery</PARTY_ROLE>
          <ADDRESS>
            <bmecat:NAME>Acme Corporation GmbH</bmecat:NAME>
            <bmecat:NAME2>Warehouse Team</bmecat:NAME2>
            <bmecat:NAME3>Gate 3</bmecat:NAME3>
            <bmecat:STREET>Lager Strasse 5</bmecat:STREET>
            <bmecat:ZIP>20095</bmecat:ZIP>
            <bmecat:CITY>Hamburg</bmecat:CITY>
            <bmecat:COUNTRY_CODED>DE</bmecat:COUNTRY_CODED>
            <bmecat:COUNTRY_SUBDIVISION>HH</bmecat:COUNTRY_SUBDIVISION>
            <bmecat:PHONE>+49 40 22222222</bmecat:PHONE>
          </ADDRESS>
        </PARTY>
        <PARTY>
          <bmecat:PARTY_ID>BILL-001</bmecat:PARTY_ID>
          <PARTY_ROLE>invoice_recipient</PARTY_ROLE>
          <ADDRESS>
            <bmecat:NAME>Acme Corporation GmbH</bmecat:NAME>
            <bmecat:NAME2>Accounts Payable</bmecat:NAME2>
            <bmecat:STREET>Billing Strasse 10</bmecat:STREET>
            <bmecat:ZIP>80331</bmecat:ZIP>
            <bmecat:CITY>Munich</bmecat:CITY>
            <bmecat:COUNTRY_CODED>DE</bmecat:COUNTRY_CODED>
            <bmecat:COUNTRY_SUBDIVISION>BY</bmecat:COUNTRY_SUBDIVISION>
            <bmecat:PHONE>+49 89 11111111</bmecat:PHONE>
          </ADDRESS>
        </PARTY>
      </PARTIES>
      <ORDER_PARTIES_REFERENCE>
        <bmecat:BUYER_IDREF>CUST-12345</bmecat:BUYER_IDREF>
        <bmecat:SUPPLIER_IDREF>supplier</bmecat:SUPPLIER_IDREF>
        <INVOICE_RECIPIENT_IDREF>BILL-001</INVOICE_RECIPIENT_IDREF>
        <SHIPMENT_PARTIES_REFERENCE>
          <DELIVERY_IDREF>SHIP-002</DELIVERY_IDREF>
        </SHIPMENT_PARTIES_REFERENCE>
      </ORDER_PARTIES_REFERENCE>
      <bmecat:CURRENCY>EUR</bmecat:CURRENCY>
    </ORDER_INFO>
  </ORDER_HEADER>
  <ORDER_ITEM_LIST>
    <ORDER_ITEM>
      <LINE_ITEM_ID>10</LINE_ITEM_ID>
      <PRODUCT_ID>
        <bmecat:SUPPLIER_PID type="supplier_specific">ART-001-A</bmecat:SUPPLIER_PID>
        <bmecat:BUYER_PID>CUST-ART-555</bmecat:BUYER_PID>
        <bmecat:DESCRIPTION_LONG>Industrial Sensor Module Type A</bmecat:DESCRIPTION_LONG>
      </PRODUCT_ID>
      <QUANTITY>10</QUANTITY>
      <bmecat:ORDER_UNIT>BOX</bmecat:ORDER_UNIT>
      <DELIVERY_DATE>
        <DELIVERY_START_DATE>2025-04-01</DELIVERY_START_DATE>
        <DELIVERY_END_DATE>2025-04-01</DELIVERY_END_DATE>
      </DELIVERY_DATE>
    </ORDER_ITEM>
  </ORDER_ITEM_LIST>
  <ORDER_SUMMARY>
    <TOTAL_ITEM_NUM>1</TOTAL_ITEM_NUM>
  </ORDER_SUMMARY>
</ORDER>
```

### Elements

| Element | Content |
|---|---|
| `CONTROL_INFO` | `GENERATOR_INFO` = `Workist`, `GENERATION_DATE` = creation time (UTC). |
| `SOURCING_INFO` | Only if a quote or project number is filled: `QUOTATION_ID` = quote number, `AGREEMENT_ID` = project number, `AGREEMENT_END_DATE` = creation time (required by the standard, no business meaning). |
| `ORDER_INFO` | `ORDER_ID` = order number, `ORDER_DATE` = order date, `CURRENCY` = always `EUR`. |
| `DELIVERY_DATE` | Only with a delivery date: `DELIVERY_START_DATE` = delivery date, `DELIVERY_END_DATE` = end of the delivery period (otherwise the delivery date). |
| `PARTY` `document_creator` | Workist as creator: `PARTY_ID` = `workist` (`type` = `party_specific`), `PARTY_ROLE` = `document_creator`. |
| `PARTY` `supplier` | You as the supplier, fixed placeholder: `PARTY_ID` = `supplier` (`type` = `party_specific`), `PARTY_ROLE` = `supplier`. |
| `PARTY` `buyer` | Ordering customer: `PARTY_ID` = customer number, `PARTY_ROLE` = `buyer`. Address: `NAME` = name from the customer address, `STREET`, `ZIP`, `CITY` (max. 35 characters), `COUNTRY_CODED`, `COUNTRY_SUBDIVISION`. `CONTACT_DETAILS` if a contact person is filled: `CONTACT_ID`, `FIRST_NAME` = first word of the name, `CONTACT_NAME` = rest of the name, `PHONE`, `EMAIL`. |
| `PARTY` `delivery` | Delivery address, if company, name or address number is filled: `PARTY_ID` = address number, `PARTY_ROLE` = `delivery`; `NAME` = company, `NAME2` = name, `NAME3` = additional address line, `STREET`, `ZIP`, `CITY` (max. 35 characters), `COUNTRY_CODED`, `COUNTRY_SUBDIVISION`, `PHONE`. |
| `PARTY` `invoice_recipient` | Invoice address, if company, name or address number is filled: `PARTY_ID` = address number, `PARTY_ROLE` = `invoice_recipient`; `NAME` = company, `NAME2` = name, `STREET`, `ZIP`, `CITY` (max. 35 characters), `COUNTRY_CODED`, `COUNTRY_SUBDIVISION`, `PHONE`. |
| `ORDER_PARTIES_REFERENCE` | `BUYER_IDREF` = customer number, `SUPPLIER_IDREF` = `supplier`, `INVOICE_RECIPIENT_IDREF` = address number of the invoice address, `DELIVERY_IDREF` = address number of the delivery address. |
| `ORDER_ITEM` | One per line: `LINE_ITEM_ID` = line number (otherwise a running number starting at 1), `QUANTITY` and `ORDER_UNIT` = quantity (with a decimal point) and unit (upper case). If a converted quantity and unit are filled, the converted values are used. |
| `PRODUCT_ID` | `SUPPLIER_PID` = your article number (`type` = `supplier_specific`), `BUYER_PID` = the customer's article number, `DESCRIPTION_LONG` = article description. |
| `DELIVERY_DATE` (line) | Delivery date of the line in `DELIVERY_START_DATE` and `DELIVERY_END_DATE`. |
| `ORDER_SUMMARY` | `TOTAL_ITEM_NUM` = number of lines. |

### Notes

- The format contains no prices, line totals or order totals.
- Your channel's field selection does not change the structure.

---

## cXML OrderRequest {#cxml}

**File extension:** `.xml`  
**File name:** `<UUID>.xml`

Order in cXML format (`OrderRequest`) with header, delivery address, ordering customer, contact person and line items with prices.

### Full example

```xml
<?xml version="1.0" encoding="utf-8"?>
<cXML payloadID="3f2b8c1e-5a7d-4e19-8c2f-6b0d9a4e7c15" timestamp="2025-03-15T14:30:25.123456">
  <Header>
    <From>
      <Credential domain="SystemId">CUST-12345</Credential>
    </From>
    <To>
      <Credential domain="SystemId">supplier</Credential>
    </To>
    <Sender>
      <Credential domain="SystemId">workist</Credential>
      <UserAgent>Workist Platform</UserAgent>
    </Sender>
  </Header>
  <Request deploymentMode="production">
    <OrderRequest deploymentMode="production">
      <OrderRequestHeader orderDate="2025-03-15T00:00:00+00:00" orderID="PO-2025-0001" orderType="regular" orderVersion="1" type="new">
        <Total>
          <Money currency="EUR">1250</Money>
        </Total>
        <ShipTo>
          <Address isoCountryCode="DE" addressID="SHIP-002">
            <Name xml:lang="de">Acme Corporation GmbH</Name>
            <Email>warehouse@acme.de</Email>
          </Address>
          <PostalAddress>
            <DeliverTo>Warehouse Team</DeliverTo>
            <DeliverTo>Gate 3</DeliverTo>
            <Street>Lager Strasse 5</Street>
            <City>Hamburg</City>
            <State>HH</State>
            <PostalCode>20095</PostalCode>
            <Country isoCountryCode="DE">DE</Country>
          </PostalAddress>
        </ShipTo>
        <BillTo>
          <Address isoCountryCode="DE" addressID="CUST-12345">
            <Name xml:lang="de">Acme Corp GmbH</Name>
          </Address>
          <PostalAddress>
            <DeliverTo>Acme Corporation</DeliverTo>
            <DeliverTo>Finance Department</DeliverTo>
            <Street>Hauptstrasse 42</Street>
            <City>Munich</City>
            <State>BY</State>
            <PostalCode>80331</PostalCode>
            <Country isoCountryCode="DE">DE</Country>
          </PostalAddress>
          <IdReference domain="buyerID" identifier="CUST-12345" />
        </BillTo>
        <Contact role="buyerCorporate">
          <Name xml:lang="de">Max Mustermann</Name>
          <PostalAddress name="Max Mustermann">
            <DeliverTo>CP-001</DeliverTo>
            <DeliverTo>Max Mustermann</DeliverTo>
            <Street />
            <City />
            <State />
            <PostalCode />
            <Country />
          </PostalAddress>
        </Contact>
      </OrderRequestHeader>
    </OrderRequest>
  </Request>
  <ItemOut lineNumber="10" quantity="100.0">
    <ItemID>
      <SupplierPartID>ART-001-A</SupplierPartID>
    </ItemID>
    <ItemDetail>
      <UnitPrice>
        <Money currency="EUR">12.5</Money>
      </UnitPrice>
      <Description xml:lang="de">Industrial Sensor Module Type A</Description>
      <UnitOfMeasure>PCE</UnitOfMeasure>
    </ItemDetail>
    <ScheduleLine lineNumber="10" quantity="100.0" requestedDeliveryDate="2025-04-01T00:00:00+00:00">
      <UnitOfMeasure>PCE</UnitOfMeasure>
    </ScheduleLine>
  </ItemOut>
</cXML>
```

### Elements

| Element | Content |
|---|---|
| `cXML` | `payloadID` = ID of the document in Workist, `timestamp` = creation time. |
| `From` | `Credential` (`domain` = `SystemId`) = customer number. |
| `To` | `Credential` (`domain` = `SystemId`) = recipient ID, `supplier` by default. |
| `Sender` | `Credential` (`domain` = `SystemId`) = `workist`, `UserAgent` = `Workist Platform`. |
| `Request`, `OrderRequest` | `deploymentMode` = `production` (or `test`, see below). |
| `OrderRequestHeader` | `orderID` = order number, `orderDate` = order date with time (`2025-03-15T00:00:00+00:00`), `orderType` = `regular`, `orderVersion` = `1`, `type` = `new`. |
| `Total` | `Money` = net total (`0.0` if none is filled), `currency` = currency of the order (otherwise `EUR`). |
| `ShipTo` | Delivery address, if company, name or address number is filled. `Address`: `addressID` = address number, `isoCountryCode` = country code, `Name` (`xml:lang` = `de`) = company, `Email`. `PostalAddress` (next to `Address`): `DeliverTo` = name, second `DeliverTo` = additional address line (if any), `Street`, `City`, `State` = state/region, `PostalCode`, `Country` with `isoCountryCode` (default `DE`). |
| `BillTo` | The ordering customer from your customer master data. `Address`: `addressID` = customer number, `isoCountryCode`, `Name` (`xml:lang` = `de`) = company name of the customer address. `PostalAddress`: `DeliverTo` = name, second `DeliverTo` = additional address line, `Street`, `City`, `State`, `PostalCode`, `Country` with `isoCountryCode`. `IdReference` with `domain` = `buyerID` and `identifier` = customer number. |
| `Contact` | Contact person, if name or number is filled: `role` = `buyerCorporate`, `Name` (`xml:lang` = `de`). `PostalAddress` (`name` = name): `DeliverTo` = number, second `DeliverTo` = name; `Street`, `City`, `State`, `PostalCode` and `Country` stay empty. |
| `ItemOut` | One per line, directly below `cXML`: `lineNumber` = line number (otherwise a running number starting at 1), `quantity` = quantity with a decimal point. `SupplierPartID` = your article number. `UnitPrice`: `Money` = unit price with a decimal point, `currency` = currency of the order (otherwise `EUR`). `Description` (`xml:lang` = `de`) = article description, `UnitOfMeasure` = unit of measure. `ScheduleLine` repeats `lineNumber`, `quantity` and `UnitOfMeasure`; `requestedDeliveryDate` = delivery date of the line. |

### Settings

Workist sets these values for you during setup:

| Setting | Default | Description |
|---|---|---|
| Recipient ID | `supplier` | Value of the `Credential` under `To` |
| Deployment mode | `production` | `deploymentMode` of `Request` and `OrderRequest`, e.g. `test` for test systems |

### Notes

- `BillTo` contains the ordering customer. cXML does not carry the order's invoice address.
- Every line needs a quantity that can be read as a number, otherwise Workist creates no file.
- Your channel's field selection does not change the structure.

---

## ANSI X12 850 {#x12}

**File extension:** `.edi`  
**File name:** `<customernumber>_<ordernumber>_<uuid>.edi` (see [File names](/en/docs/output-formats.md#file-names))

The EDI format for orders that is common in North America. Data elements are separated by `*`, every segment ends with `~` and is on its own line.

### Full example

```
ISA*00*          *00*          *ZZ*CUST-12345     *ZZ*musterlieferant*250315*0000*U*00401*212075055*0*P*>~
GS*PO*CUST-12345*  *20250315*0000*2120*X*004010~
ST*850*212075055~
BEG*00**PO-2025-0001**20250315~
PER*BD*Max Mustermann*TE*+49 89 12345678*EM*max@acme.de~
DTM*002*20250401~
MSG*Please deliver to loading dock B. Handle with care - fragile items, do not stack pallets.~
N1*ST*Acme Corporation**CUST-12345~
PO1*10*100*PCE*12.5**VN*ART-001-A~
PID*F****Industrial Sensor Module Type A~
CTT*1~
SE*10*212075055~
GE*1*2120~
IEA*1*212075055~
```

### Segments

| Segment | Content |
|---|---|
| `ISA` | Interchange header: sender ID = customer number, receiver ID = your Workist short name (each padded to 15 characters), date (`YYMMDD`) = order date, time `0000`, version `00401`, control number |
| `GS` | Functional group `PO`, sender = customer number, date = order date, version `004010` |
| `ST` | Transaction `850` and control number |
| `BEG` | `00` (original), order number, order date (`YYYYMMDD`) |
| `PER` | Contact person (`BD`): name, phone (`TE`), email (`EM`) |
| `DTM` | `002` = delivery date (`YYYYMMDD`) |
| `MSG` | Free text of the order (only if any) |
| `N1` | `ST`, name and number of the ordering customer. No delivery address is sent |
| `PO1` | Line: line number, quantity, unit, unit price, `VN` and your article number |
| `PID` | `F` (free text) and article description |
| `CTT` | Number of lines |
| `SE` | Number of segments in the transaction and control number |
| `GE` | Number of transactions and control number |
| `IEA` | Number of functional groups and control number |

`PO1` and `PID` repeat for every line. Your channel's field selection does not change the structure.
