Purchase-order data

Purchase-order data can include more than just purchase order numbers. It can also include supplier numbers, currency codes, line-item details such as article numbers, quantities, pricing information and much more.

Uploading purchase-order data

If you use the Purchase order service, you can upload purchase-order data from your financial system to Tungsten AP Essentials. The Dynamics AX and NetSuite integrations upload purchase order data automatically. For other target systems, you use AP Essentials Connect to upload purchase order data in XML format.

You can upload up to 200,000 purchase orders. Read more about other limits of master data.

Creating master data in XML format requires knowledge of XML. Master data must adhere to an XML schema, which describes the structure the XML document you upload. Only the fields specified in the schema are allowed. You can omit some elements, but the order must remain the same. See the schema and example XML below for reference.

Purchase-order XML Schema

The purchase-order schema is listed below for your convenience. For the most up-to-date and complete schema, refer to the API documentation.

<xs:complexType name="PurchaseOrders">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="PurchaseOrder" nillable="true" type="PurchaseOrder" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="PurchaseOrders" nillable="true" type="PurchaseOrders" />
  <xs:complexType name="PurchaseOrder">
    <xs:annotation>
      <xs:appinfo>
        <typeinformation>
          <originaltype>PurchaseOrder</originaltype>
          <schematype>PurchaseOrder</schematype>
          <serializationname></serializationname>
        </typeinformation>
      </xs:appinfo>
    </xs:annotation>
    <xs:sequence>
      <xs:element minOccurs="0" name="OrderNumber" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="SupplierNumber" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="CurrencyCode" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="DateCreated" type="xs:dateTime" />
      <xs:element minOccurs="0" name="ContactName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Description" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="StatusText" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Lines" nillable="true" type="PurchaseOrderLines" />
      <xs:element minOccurs="0" name="SupplierName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="RequisitionedBy" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="CreatedBy" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="PurchaseOrder" nillable="true" type="PurchaseOrder" />
  <xs:complexType name="PurchaseOrderLines">
    <xs:annotation>
      <xs:appinfo>
        <typeinformation>
          <originaltype>PurchaseOrderLineCollection</originaltype>
          <schematype>PurchaseOrderLines</schematype>
          <serializationname>PurchaseOrderLines</serializationname>
        </typeinformation>
      </xs:appinfo>
    </xs:annotation>
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="PurchaseOrderLine" nillable="true" type="PurchaseOrderLine" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="PurchaseOrderLines" nillable="true" type="PurchaseOrderLines" />
  <xs:complexType name="PurchaseOrderLine">
    <xs:annotation>
      <xs:appinfo>
        <typeinformation>
          <originaltype>PurchaseOrderLine</originaltype>
          <schematype>PurchaseOrderLine</schematype>
          <serializationname></serializationname>
        </typeinformation>
      </xs:appinfo>
    </xs:annotation>
    <xs:sequence>
      <xs:element minOccurs="0" name="OrderLineNumber" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="ArticleNumber" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="SupplierArticleNumber" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="ArticleDescription" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="CategoryNumber" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="CategoryDescription" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Quantity" type="xs:decimal" />
      <xs:element minOccurs="0" name="Unit" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="UnitPrice" type="xs:decimal" />
      <xs:element minOccurs="0" name="RowTotalAmountVatExcluded" type="xs:decimal" />
      <xs:element minOccurs="0" name="StatusText" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="InvoicedQuantity" type="xs:decimal" />
      <xs:element minOccurs="0" name="DeliveredQuantity" type="xs:decimal" />
      <xs:element minOccurs="0" name="IsDeliveryRequired" type="xs:boolean" />
      <xs:element minOccurs="0" name="PriceUnit" type="xs:decimal" />
      <xs:element minOccurs="0" name="VatAmount" nillable="true" type="xs:decimal" />
      <xs:element minOccurs="0" name="DeliveryNoteNumber" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="DeliveryDate1" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="DeliveryDate2" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="UniqueArticleNumber" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="PurchaseOrderLine" nillable="true" type="PurchaseOrderLine" />

Example

You can use the XML below as an example to create your own purchase-order data.

<?xml version="1.0" encoding="utf-8"?>
<PurchaseOrders xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <PurchaseOrder>
        <OrderNumber>000006</OrderNumber>
        <SupplierNumber>CN-001</SupplierNumber>
        <CurrencyCode>USD</CurrencyCode>
        <DateCreated>2024-08-01T11:05:01</DateCreated>
        <ContactName>Carl Carlson</ContactName>
        <Description>Some text</Description>
        <StatusText>Received</StatusText>
        <Lines>
            <PurchaseOrderLine>
                <OrderLineNumber>10</OrderLineNumber>
                <ArticleNumber>T0001</ArticleNumber>
                <SupplierArticleNumber>COAS222333</SupplierArticleNumber>
                <ArticleDescription>Speaker cable 10</ArticleDescription>
                <CategoryNumber>CAT1000</CategoryNumber>
                <CategoryDescription>Speakers n stuff</CategoryDescription>
                <Quantity>650.0</Quantity>
                <Unit>ea</Unit>
                <UnitPrice>300.0</UnitPrice>
                <RowTotalAmountVatExcluded>195000.0</RowTotalAmountVatExcluded>
                <StatusText>Received</StatusText>
                <InvoicedQuantity>0</InvoicedQuantity>
                <DeliveredQuantity>650.0</DeliveredQuantity>
                <IsDeliveryRequired>false</IsDeliveryRequired>
                <PriceUnit>1.0</PriceUnit>
                <VatAmount>0.0</VatAmount>
                <DeliveryNoteNumber/>
                <DeliveryDate1>20240901</DeliveryDate1>
                <DeliveryDate2/>
                <UniqueArticleNumber/>
            </PurchaseOrderLine>
            <PurchaseOrderLine>
                <OrderLineNumber>20</OrderLineNumber>
                <ArticleNumber>T0002</ArticleNumber>
                <SupplierArticleNumber/>
                <ArticleDescription>Projector Television</ArticleDescription>
                <CategoryNumber/>
                <CategoryDescription/>
                <Quantity>475.0</Quantity>
                <Unit>ea</Unit>
                <UnitPrice>2200.0</UnitPrice>
                <RowTotalAmountVatExcluded>1045000.0</RowTotalAmountVatExcluded>
                <StatusText>Received</StatusText>
                <InvoicedQuantity>0</InvoicedQuantity>
                <DeliveredQuantity>475.0</DeliveredQuantity>
                <IsDeliveryRequired>false</IsDeliveryRequired>
                <PriceUnit>1.0</PriceUnit>
                <VatAmount>0.0</VatAmount>
                <DeliveryNoteNumber/>
                <DeliveryDate1>20240901</DeliveryDate1>
                <DeliveryDate2/>
                <UniqueArticleNumber/>
            </PurchaseOrderLine>
            <PurchaseOrderLine>
                <OrderLineNumber>30</OrderLineNumber>
                <ArticleNumber>T0003</ArticleNumber>
                <SupplierArticleNumber/>
                <ArticleDescription>Surround Sound Receiver</ArticleDescription>
                <CategoryNumber>CAT1000</CategoryNumber>
                <CategoryDescription>Speakers n stuff</CategoryDescription>
                <Quantity>450.0</Quantity>
                <Unit>ea</Unit>
                <UnitPrice>1.0</UnitPrice>
                <RowTotalAmountVatExcluded>144000.0</RowTotalAmountVatExcluded>
                <StatusText>Received</StatusText>
                <InvoicedQuantity>0</InvoicedQuantity>
                <DeliveredQuantity>450.0</DeliveredQuantity>
                <IsDeliveryRequired>false</IsDeliveryRequired>
                <PriceUnit>1.0</PriceUnit>
                <VatAmount>0.0</VatAmount>
                <DeliveryNoteNumber/>
                <DeliveryDate1>20240901</DeliveryDate1>
                <DeliveryDate2/>
                <UniqueArticleNumber/>
            </PurchaseOrderLine>
        </Lines>
        <SupplierName>Contoso Asia</SupplierName>
        <RequisitionedBy>Jennifer Smith</RequisitionedBy>
        <CreatedBy>Ben Martin</CreatedBy>
    </PurchaseOrder>
    <PurchaseOrder>
        <OrderNumber>000013</OrderNumber>
        <SupplierNumber>JP-001</SupplierNumber>
        <CurrencyCode>USD</CurrencyCode>
        <DateCreated>2012-11-19T12:19:50</DateCreated>
        <ContactName/>
        <Description>Some other text</Description>
        <StatusText>Open</StatusText>
        <Lines>
            <PurchaseOrderLine>
                <OrderLineNumber>10</OrderLineNumber>
                <ArticleNumber>M0018</ArticleNumber>
                <SupplierArticleNumber/>
                <ArticleDescription>Polyol</ArticleDescription>
                <CategoryNumber/>
                <CategoryDescription/>
                <Quantity>2246.25</Quantity>
                <Unit>lb</Unit>
                <UnitPrice>10.0</UnitPrice>
                <RowTotalAmountVatExcluded>22462.50</RowTotalAmountVatExcluded>
                <StatusText>Received</StatusText>
                <InvoicedQuantity>0</InvoicedQuantity>
                <DeliveredQuantity>2246.25</DeliveredQuantity>
                <IsDeliveryRequired>false</IsDeliveryRequired>
                <PriceUnit>1.0</PriceUnit>
                <VatAmount>0.0</VatAmount>
                <DeliveryNoteNumber/>
                <DeliveryDate1>20240901</DeliveryDate1>
                <DeliveryDate2/>
                <UniqueArticleNumber/>
            </PurchaseOrderLine>
            <PurchaseOrderLine>
                <OrderLineNumber>20</OrderLineNumber>
                <ArticleNumber>M0018</ArticleNumber>
                <SupplierArticleNumber/>
                <ArticleDescription>Polyol</ArticleDescription>
                <CategoryNumber/>
                <CategoryDescription/>
                <Quantity>4.4</Quantity>
                <Unit>lb</Unit>
                <UnitPrice>10.0</UnitPrice>
                <RowTotalAmountVatExcluded>44.0</RowTotalAmountVatExcluded>
                <StatusText>Open</StatusText>
                <InvoicedQuantity>0</InvoicedQuantity>
                <DeliveredQuantity>0</DeliveredQuantity>
                <IsDeliveryRequired>false</IsDeliveryRequired>
                <PriceUnit>1.0</PriceUnit>
                <VatAmount>0.0</VatAmount>
                <DeliveryNoteNumber/>
                <DeliveryDate1>20240901</DeliveryDate1>
                <DeliveryDate2/>
                <UniqueArticleNumber/>
            </PurchaseOrderLine>
        </Lines>
        <SupplierName>Contoso Chemicals Japan</SupplierName>
        <RequisitionedBy>Jennifer Smith</RequisitionedBy>
        <CreatedBy>Ben Martin</CreatedBy>
    </PurchaseOrder>
    <PurchaseOrder>
        <OrderNumber>000035</OrderNumber>
        <SupplierNumber>US-111</SupplierNumber>
        <CurrencyCode>USD</CurrencyCode>
        <DateCreated>2014-02-28T22:29:53</DateCreated>
        <ContactName>CHARLIE</ContactName>
        <Description>More text</Description>
        <StatusText>Open</StatusText>
        <Lines>
            <PurchaseOrderLine>
                <OrderLineNumber>10</OrderLineNumber>
                <ArticleNumber>T222333</ArticleNumber>
                <SupplierArticleNumber>004522604</SupplierArticleNumber>
                <ArticleDescription>PLL1910M 19in 1280x1024 DVI VGA LED Monitor w Integrated Sp</ArticleDescription>
                <CategoryNumber>44110000</CategoryNumber>
                <CategoryDescription>OFFICE AND DESK ACCESSORIES</CategoryDescription>
                <Quantity>100.0</Quantity>
                <Unit>ea</Unit>
                <UnitPrice>199.0</UnitPrice>
                <RowTotalAmountVatExcluded>19900.0</RowTotalAmountVatExcluded>
                <StatusText>Open</StatusText>
                <InvoicedQuantity>40.0</InvoicedQuantity>
                <DeliveredQuantity>0</DeliveredQuantity>
                <IsDeliveryRequired>true</IsDeliveryRequired>
                <PriceUnit>1</PriceUnit>
                <VatAmount>0.0</VatAmount>
                <DeliveryNoteNumber/>
                <DeliveryDate1>20240901</DeliveryDate1>
                <DeliveryDate2/>
                <UniqueArticleNumber/>
            </PurchaseOrderLine>
        </Lines>
        <SupplierName>Contoso Office Supply</SupplierName>
        <RequisitionedBy>Jennifer Smith</RequisitionedBy>
        <CreatedBy>Ben Martin</CreatedBy>
    </PurchaseOrder>
</PurchaseOrders>

Element descriptions

Below are descriptions of some of the XML elements that may not be self explanatory or need clarification.

XML element Description
ContactName

You can decide who the contact person is according to the needs of your solution. For example, the contact person could be the creator of the order or the person who requested the purchase. Ideally, the contact should be someone accounts-payable personnel can contact if there is an issue.

RequisitionedBy

The person who requested the items to be purchased.

CreatedBy

The person who created the purchase order.

StatusText

The status of the purchase order. This is specific to your integration, but could be for example, "received", "pending" etc.

UnitPrice The price per unit of the ordered article/category.
PriceUnit

The number of units included in the price based on the quantity. In some systems, the price unit is used to calculate prices to a larger degree of accuracy.

Default value: 1

InvoicedQuantity

The number of items that have already been invoiced.

DeliveryDate1

The earliest expected delivery date. However, if DeliveryDate2 is not specified, then DeliveryDate1 is the due date.

The date format must be YYYYMMDD.

DeliveryDate2

The due date, or latest date that delivery is required.

The date format must be YYYYMMDD.

UniqueArticleNumber

A globally unique article identifier, for example, a global trade item number.