Skip to content

Sage 50 UK Purchase Order XML

Import Purchase Orders allows you to create new orders with Sage 50, and optionally progress the order through the ordering process. We recommend that the Id field be populated by the unique id of the order from the external system, Zynk uses this field to track orders already imported to prevent duplicates being created in Sage.

Any fields not documented below are not directly supported with our imports.

Tasks

XML

Sample import file for creating a basic order:

<?xml version="1.0" encoding="utf-8"?>
<Company
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <PurchaseOrders>
    <PurchaseOrder>
      <Id>123</Id>
      <AccountReference>JOE001</AccountReference>
      <PurchaseOrderDate>2014-01-01T00:00:00</PurchaseOrderDate>
      <PurchaseOrderAddress>
        <Title>Mr</Title>
        <Forename>Joe</Forename>
        <Surname>Harrison</Surname>
        <Company>Zynk Software Limited</Company>
        <Address1>Nelson House, Fleming Business Centre</Address1>
        <Address2>Jesmond</Address2>
        <Town>Newcastle upon Tyne</Town>
        <Postcode>NE2 3AE</Postcode>
        <County>Tyne and Wear</County>
      </PurchaseOrderAddress>
      <PurchaseOrderDeliveryAddress>
        <Title>Mr</Title>
        <Forename>Joe</Forename>
        <Surname>Harrison</Surname>
        <Company>Zynk Software Limited</Company>
        <Address1>Nelson House, Fleming Business Centre</Address1>
        <Address2>Jesmond</Address2>
        <Town>Newcastle upon Tyne</Town>
        <Postcode>NE2 3AE</Postcode>
        <County>Tyne and Wear</County>
      </PurchaseOrderDeliveryAddress>
      <PurchaseOrderItems>
        <Item>
          <Sku>TEST01</Sku>
          <QtyOrdered>1</QtyOrdered>
          <UnitPrice>200</UnitPrice>
        </Item>
      </PurchaseOrderItems>
    </PurchaseOrder>
  </PurchaseOrders>
</Company>

In each of the following sections most of the XML has been omitted to make the samples easier to read, you will need to provide the above as a minimum to create an order. The whole structure of the Company schema is used below as a reference of where fields should be in the object model.

Order Details - Account Information

To assign the order to a particular account you will need to specify either a SupplierId or an AccountReference in the XML. The SupplierId should correspond to a supplier that has already been imported into Sage via Zynk, see Import Suppliers. The AccountReference should correspond to the Reference of a Purchase Ledger account that exists with Sage.

Sage Field XML Field  Example  Field Type  Field Length  Input 
-   SupplierId  123  string   255 Optional 
A/C   AccountReference  JOE001  string  Required 
<?xml version="1.0" encoding="utf-8"?>
<Company
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <PurchaseOrders>
    <PurchaseOrder>
      <SupplierId>123</SupplierId>
      <AccountReference>JOE001</AccountReference>
    </PurchaseOrder>
  </PurchaseOrders>
</Company>

Order Details - Detail

All of the fields at the Order detail level are optional.

Depending on the settings of the import task you can set the Order no of the created order. If you have enabled Manual Order Numbering at the task level you can specify the PurchaseOrderNumber to use when creating the order, note this must be unique, and if already exists in Sage the order will not be imported. You can specify the Document date of the order using PurchaseOrderDate.

Sage Field XML Field Example Field Type Field Length Input
- Id 123 string 255 Optional
Order No. PurchaseOrderNumber 123 string 60 Optional
Date PurchaseOrderDate 2014-01-01T00:00:00 datetime 8 Required
Ref Reference 123 string 7 Optional
Currency Currency* EUR string 3 Optional
Foreign Rate ForeignRate* 1.5 double - Optional
- VatInclusive* true boolean - Optional
- VatAmendable* true boolean - Optional
Name Company* Zynk Software Limited string 60 Optional
Customer Contact FullName* Mr Joe E Harrison Jr. string 30 Optional
- Title Mr string - Optional
- Forename Joe string - Optional
- Middlename E string - Optional
- Surname Harrison string - Optional
- Suffix Jr. string - Optional
Address 1 Address1 Nelson House string 60 Optional
Address 2 Address2 Fleming Business Centre string 60 Optional
Address 3 Address3 + Town Jesmond, Newcastle upon Tyne string 60 Optional
Address 4 County Tyne and Wear string 60 Optional
Address 5 Postcode NE2 3AE string 60 Optional
Customer Tel. No. Telephone* 0845 123 2920 string 60 Optional
  • Currency* - If this is not provided the account currency will be used.  If it is provided but does not match the account currency the import will fail unless Convert to Account Currency is enabled on the task.
  • ForeignRate* - If this is not provided the exchange rate in Sage will be used.
  • Vat Inclusive* - When set to true, the values in the UnitPrice and UnitDiscountAmount fields on each item and the carriage charge will be treat as being inclusive of VAT. They will be converted to VAT exclusive amounts before import into Sage.
  • Vat Amendable* - When set to true, you can provide your own tax amounts via the TotalTax field on items and carriage, which will override Sage's tax calculations. This should only be used if you encounter slight differences in the order total seen in Sage and the source system, due to differences in the way the two systems round the tax amounts. The 'Item VAT Amendable' setting in Sage (under Settings > Company Preferences > VAT) must be enabled to do this.
  • Company* - If this field is not set in the XML, it is built up of Title, Forename, Middlename, Surname and Suffix.
  • FullName* - This field is on the Order Details tab not Details, but included in the PurchaseOrderAddress.  This field is not set directly in the XML, but is built up of Title, Forename, Middlename, Surname and Suffix.
  • Telephone* - This field is on the Order Details tab not Details, but included in thePurchaseOrderAddress.
<?xml version="1.0" encoding="utf-8"?>
<Company
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <PurchaseOrders>
    <PurchaseOrder>
      <Id>123</Id>
      <PurchaseOrderNumber>123</PurchaseOrderNumber>
      <PurchaseOrderDate>2014-01-01T00:00:00</PurchaseOrderDate>
      <Reference>123</Reference>
      <Currency>EUR</Currency>
      <ForeignRate>1.5</ForeignRate>
      <VatInclusive>true</VatInclusive>
      <VatAmendable>true</VatAmendable>
      <PurchaseOrderAddress>
        <Title>Mr</Title>
        <Forename>Joe</Forename>
        <Middlename>E</Middlename>
        <Surname>Harrison</Surname>
        <Suffix>Jr.</Suffix>
        <Company>Zynk Software Limited</Company>
        <Address1>Nelson House</Address1>
        <Address2>Charlotte</Address2>
        <Address3>Jesmond</Address3>
        <Town>Newcastle upon Tyne</Town>
        <Postcode>NE2 3AE</Postcode>
        <County>Tyne and Wear</County>
        <Telephone>0845 123 2920</Telephone>
      </PurchaseOrderAddress>
    </PurchaseOrder>
  </PurchaseOrders>
</Company>

Order Detail

If a delivery address is provided we will use the data in the XML, otherwise we will fall back to use the invoice address of the supplier from Sage. The below fields will only affect the Purchase Order in Sage.

Sage Field XML Field Example Field Type Field Length Input
Supplier Order No. SupplierOrderNumber 123 string 60 Optional
Order Taken By TakenBy Website string 60 Optional
Delivery Name Company* Zynk Software Limited string 60 Optional
- Title Mr string - Optional
- Forename Joe string - Optional
- Middlename E string - Optional
- Surname Harrison string - Optional
- Suffix Jr. string - Optional
Delivery Address 1 Address1 Nelson House string 60 Optional
Delivery Address 2 Address2 Fleming Business Centre string 60 Optional
Delivery Address 3 Address3 + Town Jesmond, Newcastle upon Tyne string 60 Optional
Delivery Address 4 County Tyne and Wear string 60 Optional
Delivery Address 5 Postcode NE2 3AE string 60 Optional
Notes 1 Notes1 Website 1 string 60 Optional
Notes 2 Notes2 Leave next door string 60 Optional
Notes 3 Notes3 Paid by PayPal string 60 Optional
  • Company* - If this field is not set in the XML, it is built up of Title, Forename, Middlename, Surname and Suffix.

```xml

123 Website Mr Joe E Harrison Jr. Zynk Software Limited Nelson House Charlotte Jesmond Newcastle upon Tyne NE2 3AE Tyne and Wear 0845 123 2920

## Footer Details  

| Sage Field            | XML Field          | Example | Field Type | Field Length | Input    |
| --------------------- | ------------------ | ------- | ---------- | ------------ | -------- |
| Carriage Net          | UnitPrice          | 10      | double     | -            | Optional |
| Carriage N/C          | NominalCode        | 4905    | string     | 8            | Optional |
| Carriage Tax Code     | TaxCode            | 1       | int        | 2            | Optional |
| Carriage Department   | Department         | 1       | int        | 2            | Optional |
| Carriage Consign. No  | ConsignmentNo      | 123     | string     | 30           | Optional |
| Carriage Courier      | Courier            | 1       | int        | 2            | Optional |
| Carriage Courier      | CourierName        | DHL     | string     | 60           | Optional |
| Settlement Days       | SettlementDays     | 30      | int        | 2            | Optional |
| Settlement Discount % | SettlementDiscount | 2.5     | double     | -            | Optional |

```xml
<?xml version="1.0" encoding="utf-8"?>
<Company
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <PurchaseOrders>
    <PurchaseOrder>
      <Carriage>
        <QtyOrdered>1</QtyOrdered>
        <UnitPrice>10</UnitPrice>
        <NominalCode>4905</NominalCode>
        <TaxCode>1</TaxCode>
        <Department>1</Department>
      </Carriage>
      <ConsignmentNo>123</ConsignmentNo>
      <Courier>1</Courier>
      <CourierName>DHL</CourierName>
      <SettlementDays>30</SettlementDays>
      <SettlementDiscount>2.5</SettlementDiscount>
    </PurchaseOrder>
  </PurchaseOrders>
</Company>

Details - Items

We support importing stock items, service items, special lines (S1, S2 and S3) and message lines (M).

Sage Field XML Field Example Field Type Field Length Input
Product Code Sku PROD001 string 30 Required
Description Name Sample Product string 60 Required
Comment 1 Description This is a sample product string 60 Optional
Comment 2 Comments A sample string 60 Optional
Units UnitOfSale Each string 8 Optional
Quantity QtyOrdered 1 double - Required
Unit Price UnitPrice* 20 double - Optional
Discount % UnitDiscountPercentage 10 double - Optional
Discount UnitDiscountAmount 2 double - Optional
Nominal Code NominalCode* 4000 string 8 Optional
Tax Code TaxCode* 1 int 2 Optional
VAT TotalTax* 4.00 double - Optional
Department Department 1 int 2 Optional
Line Information Reference Sample Job string 60 Optional
Project Ref ProjectRef* PROJ0001 string 12 Optional
Cost Code ProjectCostItem* LAB1 string 8 Required if ProjectRef specified
Due Date RequestedDeliveryDate 2021-12-10T00:00:00 datetime - Optional
  • UnitPrice* - If not specified, Zynk will use the sales price from the product record.
  • NominalCode* - If not specified, Zynk will use the default nominal code associated with the supplier. If no default nominal code is found for the supplier, Zynk will use the default nominal code associated with the product record.
  • TaxCode* - If not specified, Zynk will use the default tax code associated with the product, or the default tax code associated with the supplier if the 'Use Default Tax Code for Sales' option is enabled on the customer record.
  • TotalTax* - The VatAmendable field at the PurchaseOrder level must be set to true to be able set the VAT amount in Sage.
  • ProjectRef* - Will automatically create a project with the specified reference if it does not already exist.
  • ProjectCostItem* - Must already exist in Sage.
<?xml version="1.0" encoding="utf-8"?>
<Company
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <PurchaseOrders>
    <PurchaseOrder>
     <PurchaseOrderItems>
       <Item>
          <Sku>PROD001</Sku>
          <Name>Sample Product</Name>
          <Description>This is a sample product</Description>
          <Comments>A sample</Comments>
          <UnitOfSale>Each</UnitOfSale>
          <QtyOrdered>1</QtyOrdered>
          <UnitPrice>20.00</UnitPrice>
          <UnitDiscountPercentage>10</UnitDiscountPercentage>
          <UnitDiscountAmount>2.00</UnitDiscountAmount>
          <NominalCode>4000</NominalCode>
          <TaxCode>1</TaxCode>
          <TotalTax>4.00</TotalTax>
          <Department>1</Department>
          <Reference>Sample Job</Reference>
          <ProjectRef>PROJ0001</ProjectRef>
          <ProjectCostItem>LAB1</ProjectCostItem>
          <RequestedDeliveryDate>2021-12-10T00:00:00</RequestedDeliveryDate>
       </Item>
      </PurchaseOrderItems>
    </PurchaseOrder>
  </PurchaseOrders>
</Company>