ESXML field mapping

This table shows how Tungsten AP Essentials maps internal fields with ESXML.

Tungsten AP Essentials internal field name ESXML
Buyer fields
CorporateGroupNumber /invoiceFile/invoice/buyerParty/buyerAddress/internalReference
Name /invoiceFile/invoice/buyerParty/buyerAddress/addressName
Street /invoiceFile/invoice/buyerParty/buyerAddress/streetAddress
City /invoiceFile/invoice/buyerParty/buyerAddress/cityAddress
CountryCode /invoiceFile/invoice/buyerParty/buyerAddress/countryId
DeliveryAddressLocationId /invoiceFile/invoice/deliveryAddress/location/locationId
TelephoneNumber /invoiceFile/invoice/buyerParty/buyerAddress/contact/phone
FaxNumber /invoiceFile/invoice/buyerParty/buyerAddress/contact/fax
Email /invoiceFile/invoice/buyerParty/buyerAddress/contact/emailAddress
BuyerDUNSNumber /invoiceFile/invoice/buyerParty/partyIdentifier[1]/identifier (when /invoiceFile/invoice/buyerParty/partyIdentifier[1]/partyIdentifierType =DUNS)
BuyerVATRegistrationCountry

When /invoiceFile/invoice/buyerParty/partyIdentifier[1]/partyIdentifierType = VAT, BuyerVATRegistrationCountry is mapped to:

/invoiceFile/invoice/buyerParty/partyIdentifier[1]/countryId

BuyerTaxNumberCountry1

When /invoiceFile/invoice/buyerParty/partyIdentifier[1]/partyIdentifierType = org, BuyerTaxNumberCountry1 is mapped to:

/invoiceFile/invoice/buyerParty/partyIdentifier[1]/countryId

Supplier fields
Identifier /invoiceFile/invoice/supplierParty/partyIdentifier
Name /invoiceFile/invoice/supplierParty/supplierAddress/addressName or if it is empty /invoiceFile/invoice/supplierParty/legalName
Street /invoiceFile/invoice/supplierParty/supplierAddress/streetAddress
City /invoiceFile/invoice/supplierParty/supplierAddress/cityAddress
CountryCode /invoiceFile/invoice/supplierParty/supplierAddress/countryId
CountryName /invoiceFile/invoice/supplierParty/supplierAddress/country
CorporateGroupNumber /invoiceFile/invoice/supplierParty/supplierAddress/internalReference
TelephoneNumber /invoiceFile/invoice/supplierParty/supplierAddress/contact/phone
FaxNumber /invoiceFile/invoice/supplierParty/supplierAddress/contact/fax
Email /invoiceFile/invoice/supplierParty/supplierAddress/contact/emailAddress
SupplierDUNSNumber

When /invoiceFile/invoice/supplierParty/partyIdentifier[1]/partyIdentifierType = DUNS, SupplierDUNSNumber is mapped to:

/invoiceFile/invoice/supplierParty/partyIdentifier[1]/identifier

SupplierVATRegistrationCountry When /invoiceFile/invoice/supplierParty/partyIdentifier[1]/partyIdentifierType = VAT, SupplierVATRegistrationCountry is mapped to:

/invoiceFile/invoice/supplierParty/partyIdentifier[1]/countryId

SupplierTaxNumberCountry1

When/invoiceFile/invoice/supplierParty/partyIdentifier[1]/partyIdentifierType = org, SupplierTaxNumberCountry1 is mapped to:

/invoiceFile/invoice/supplierParty/partyIdentifier[1]/countryId

Header fields
AdditionalReference1, AdditionalReference2

/invoiceFile/invoice/attachments/externalReference[1]/id

/invoiceFile/invoice/attachments/externalReference[2]/id

AdditionalReference1URL, AdditionalReference2URL

/invoiceFile/invoice/attachments/externalReference[1]/URL

/invoiceFile/invoice/attachments/externalReference[2]/URL

AmountRounding /invoiceFile/invoice/invoiceTrailer/roundOffAmount
BuyerAddressPostalCode /invoiceFile/invoice/buyerParty/buyerAddress/zipCode
BuyerContactPersonName /invoiceFile/invoice/buyerParty/buyerAddress/contact/contactName
BuyerContactReference /invoiceFile/invoice/customerProfitCentre
BuyerTaxNumber1

When /invoiceFile/invoice/buyerParty/partyIdentifier[1]/partyIdentifierType = org, BuyerTaxNumber1 is mapped to:

/invoiceFile/invoice/buyerParty/partyIdentifier[1]/identifier

BuyerVATRegistrationNumber

When /invoiceFile/invoice/buyerParty/partyIdentifier[1]/partyIdentifierType = VAT , BuyerVATRegistrationNumber is mapped to:

/invoiceFile/invoice/buyerParty/partyIdentifier[1]/identifier

ContractNumber /invoiceFile/invoice/agreementReference/referenceNumber
CreditedInvoiceNumber

If the document type in AP Essentials is a credit note, CreditedInvoiceNumber is mapped to:

invoiceFile/invoice/creditedInvoiceReference/referenceNumber

DeliveryAddressName /invoiceFile/invoice/deliveryAddress/addressName
DeliveryAddressStreet /invoiceFile/invoice/deliveryAddress/streetAddress
DeliveryAddressCity /invoiceFile/invoice/deliveryAddress/cityAddress
DeliveryAddressState /invoiceFile/invoice/deliveryAddress/countrySubentity
DeliveryAddressCountry /invoiceFile/invoice/deliveryAddress/country
DeliveryAddressZIP /invoiceFile/invoice/deliveryAddress/zipCode
DeliveryCost /invoiceFile/invoice/invoiceTrailer/totalCharge
DeliveryDate /invoiceFile/invoice/deliveryDate
DeliveryNote /invoiceFile/invoice/deliveryNoteReference/referenceNumber
DeliveryTerms /invoiceFile/invoice/deliveryTerms/deliveryTermsText
InvoiceCode invoiceFile/invoice/clearanceOperatorNumber
InvoiceCredit /invoiceFile/invoice/invoiceTypeId

If =CR then 1, else 0

InvoiceCurrency /invoiceFile/invoice/invoiceCurrencyCode
InvoiceDate /invoiceFile/invoice/invoiceDate
InvoiceDiscountAmount /invoiceFile/invoice/invoiceTrailer/totalAllowance
InvoicePrepaidAmount /invoiceFile/invoice/invoiceTrailer/prepaidAmount
ChargeAmount1, ChargeAmount2, ChargeAmount3, ChargeAmount4

Each of the four charge amount fields are mapped by iterating through each invoiceFile/invoice/allowanceAndCharge node whose child node, alcType, equals C. The field value is then taken from /invoiceFile/invoice/allowanceAndCharge/alcAmount.

The first matching node is mapped to ChargeAmount1. The second matching node is mapped to ChargeAmount2 and so on.

Charge amount fields are designated by alcType nodes with a value of "C", whereas discount amount fields are designated by alcType nodes with a value of "A".

ChargeCode1, ChargeCode2, ChargeCode3, ChargeCode4

When /invoiceFile/invoice/allowanceAndCharge/alcType = "C"

/invoiceFile/invoice/allowanceAndCharge[1]/alcReasonCode

/invoiceFile/invoice/allowanceAndCharge[2]/alcReasonCode

/invoiceFile/invoice/allowanceAndCharge[3]/alcReasonCode

/invoiceFile/invoice/allowanceAndCharge[4]/alcReasonCode

ChargeReason1, ChargeReason2, ChargeReason3, ChargeReason4

When /invoiceFile/invoice/allowanceAndCharge/alcType = "C"

/invoiceFile/invoice/allowanceAndCharge[1]/alcReasonText

/invoiceFile/invoice/allowanceAndCharge[2]/alcReasonText

/invoiceFile/invoice/allowanceAndCharge[3]/alcReasonText

/invoiceFile/invoice/allowanceAndCharge[4]/alcReasonText

DiscountAmount1, DiscountAmount2, DiscountAmount3, DiscountAmount4

Each of the four discount amount fields are mapped by iterating through each invoiceFile/invoice/allowanceAndCharge node whose child node, alcType, equals A. The field value is then taken from /invoiceFile/invoice/allowanceAndCharge/alcAmount.

The first matching node is mapped to DiscountAmount1. The second matching node is mapped to DiscountAmount2 and so on.

Charge amount fields are designated by alcType nodes with a value of "C", whereas discount amount fields are designated by alcType nodes with a value of "A".

InvoiceDueDate /invoiceFile/invoice/dueDate
InvoiceNumber /invoiceFile/invoice/invoiceId
InvoiceObject /invoiceFile/invoice/invoiceObject
InvoiceOrderNumber

If...

invoiceFile/invoice/orderInformation/orderType = ORDERER

...then InvoiceOrderNumber is mapped to:

invoiceFile/invoice/orderInformation/orderNumber

Otherwise, InvoiceOrderNumber is mapped to:

/invoiceFile/invoice/customersOrder

InvoiceTaxAmount1, InvoiceTaxAmount2, InvoiceTaxAmount3, InvoiceTaxAmount4

/invoiceFile/invoice/invoiceTrailer/invoiceVat[1]/vatAmount

/invoiceFile/invoice/invoiceTrailer/invoiceVat[2]/vatAmount

/invoiceFile/invoice/invoiceTrailer/invoiceVat[3]/vatAmount

/invoiceFile/invoice/invoiceTrailer/invoiceVat[4]/vatAmount

InvoiceTaxRate1, InvoiceTaxRate2, InvoiceTaxRate3, InvoiceTaxRate4

/invoiceFile/invoice/invoiceTrailer/invoiceVat[1]/vatPercentage

/invoiceFile/invoice/invoiceTrailer/invoiceVat[2]/vatPercentage

/invoiceFile/invoice/invoiceTrailer/invoiceVat[3]/vatPercentage

/invoiceFile/invoice/invoiceTrailer/invoiceVat[4]/vatPercentage

InvoiceNetAmount1, InvoiceNetAmount2, InvoiceNetAmount3, InvoiceNetAmount4

/invoiceFile/invoice/invoiceTrailer/invoiceVat[1]/taxableAmount

/invoiceFile/invoice/invoiceTrailer/invoiceVat[2]/taxableAmount

/invoiceFile/invoice/invoiceTrailer/invoiceVat[3]/taxableAmount

/invoiceFile/invoice/invoiceTrailer/invoiceVat[4]/taxableAmount

InvoiceTaxCode1, InvoiceTaxCode2, InvoiceTaxCode3, InvoiceTaxCode4

/invoiceFile/invoice/invoiceTrailer/invoiceVat[1]/taxTypeCode

/invoiceFile/invoice/invoiceTrailer/invoiceVat[2]/taxTypeCode

/invoiceFile/invoice/invoiceTrailer/invoiceVat[3]/taxTypeCode

/invoiceFile/invoice/invoiceTrailer/invoiceVat[4]/taxTypeCode

InvoiceTaxCurrency /invoiceFile/invoice/taxCurrencyCode
InvoiceTaxDescription1, InvoiceTaxDescription2, InvoiceTaxDescription3, InvoiceTaxDescription4

/invoiceFile/invoice/invoiceTrailer/invoiceVat[1]/lawText

/invoiceFile/invoice/invoiceTrailer/invoiceVat[2]/lawText

/invoiceFile/invoice/invoiceTrailer/invoiceVat[3]/lawText

/invoiceFile/invoice/invoiceTrailer/invoiceVat[4]/lawText

InvoiceTotalLineAmount /invoiceFile/invoice/invoiceTrailer/lineSumAmount
InvoiceTotalVATAmount /invoiceFile/invoice/invoiceTrailer/invoiceVatTotalAmount
InvoiceTotalVatExcludedAmount /invoiceFile/invoice/invoiceTrailer/taxableAmount
InvoiceTotalVatIncludedAmount /invoiceFile/invoice/invoiceTrailer/invoiceTotalAmount
InvoiceTotalVatRatePercent /invoiceFile/invoice/invoiceTrailer/invoiceVat/vatPercentage
InvoicingPeriodEnd /invoiceFile/invoice/invoicePeriodTo
InvoicingPeriodStart /invoiceFile/invoice/invoicePeriodFrom
PaymentReferenceNumber
<xsl:template match="/">
	<xsl:choose>
			<xsl:when test="string-length(/invoiceFile/invoice/paymentMeans[paymentMeansType='DK_FIK']/accountNo/text())>0">    <!-- Danish GiroStreng -->
				<xsl:text>+</xsl:text>
				<xsl:value-of select="/invoiceFile/invoice/paymentMeans[paymentMeansType='DK_FIK']/paymentMeansSubType"/>
				<xsl:text>&lt;</xsl:text>
				<xsl:value-of select="/invoiceFile/invoice/paymentMeans[paymentMeansType='DK_FIK']/paymentRef"/>
				<xsl:text>+</xsl:text>
				<xsl:value-of select="/invoiceFile/invoice/paymentMeans[paymentMeansType='DK_FIK']/accountNo"/>
				<xsl:text>&lt;</xsl:text>
			</xsl:when>
			<xsl:otherwise>
				<xsl:value-of select="/invoiceFile/invoice/paymentMeans[1]/paymentRef"/>      <!-- Default - the first listed paymentRef -->
			</xsl:otherwise>
		</xsl:choose>
</xsl:template>
PaymentTerms /invoiceFile/invoice/paymentTerms
PaymentTermsInterest /invoiceFile/invoice/delayTerms/penaltyInterestRate
ProjectNumber /invoiceFile/invoice/projectReference
SupplierAccountNumber1

When /invoiceFile/invoice/paymentMeans[1]/paymentMeansType = "SE_PlusGiro", SupplierAccountNumber1 is mapped to:

/invoiceFile/invoice/paymentMeans[paymentMeansType='SE_PlusGiro']/accountNo

Otherwise, if paymentMeansType is not IBAN, SE_PlusGiro, SE_BankGiro, DK_FIK, or DK_Giro, SupplierAccountNumber1 is mapped to:

/invoiceFile/invoice/paymentMeans[1]/accountNo

SupplierAccountNumber2

When /invoiceFile/invoice/paymentMeans[1]/paymentMeansType = "SE_BankGiro", SupplierAccountNumber2 is mapped to:

/invoiceFile/invoice/paymentMeans[paymentMeansType='SE_BankGiro']/accountNo

When /invoiceFile/invoice/paymentMeans[1]/paymentMeansType = "DK_FIK", SupplierAccountNumber2 is mapped to:

/invoiceFile/invoice/paymentMeans[paymentMeansType='DK_FIK']/accountNo

If none of the above conditions are met, the field is populated with the next available free node based on the first account field (SupplierAccountNumber1). This free node should not have a paymentMeansType equal to IBAN, SE_PlusGiro, SE_BankGiro, DK_FIK, or DK_Giro.

SupplierAccountNumber3

When /invoiceFile/invoice/paymentMeans[1]/paymentMeansType = "DK_Giro", SupplierAccountNumber3 is mapped to:

/invoiceFile/invoice/paymentMeans[paymentMeansType='DK_Giro']/accountNo

If the condition above is not met, the field is populated with the next available free node based on the first two account fields (SupplierAccountNumber1, SupplierAccountNumber2). This free node should not have paymentMeansType equal to IBAN, SE_PlusGiro, SE_BankGiro, DK_FIK, or DK_Giro."

SupplierAccountNumber4

When /invoiceFile/invoice/paymentMeans[1]/paymentMeansType is not IBAN, SE_PlusGiro, SE_BankGiro, DK_FIK, or DK_Giro, SupplierAccountNumber4 is mapped to:

/invoiceFile/invoice/paymentMeans[1]/accountNo

The field is populated with the next available free node based on the first three account fields (SupplierAccountNumber1, SupplierAccountNumber2, SupplierAccountNumber3). This free node should not have a paymentMeansType equal to IBAN, SE_PlusGiro, SE_BankGiro, DK_FIK, or DK_Giro.

SupplierBankCodeNumber1, SupplierBankCodeNumber2, SupplierBankCodeNumber3, SupplierBankCodeNumber4

//invoiceFile/invoice/paymentMeans[paymentMeansType='BANK'][1]/accountNo

//invoiceFile/invoice/paymentMeans[paymentMeansType='BANK'][2]/accountNo

//invoiceFile/invoice/paymentMeans[paymentMeansType='BANK'][3]/accountNo

//invoiceFile/invoice/paymentMeans[paymentMeansType='BANK'][4]/accountNo

SupplierBankClearingNumber

//invoiceFile/invoice/paymentMeans[paymentMeansType='BANK']/branchCode

SupplierIBAN1, SupplierIBAN2, SupplierIBAN3, SupplierIBAN4

/invoiceFile/invoice/paymentMeans[1]/accountNo When /invoiceFile/invoice/paymentMeans[1]/paymentMeansType = "IBAN"

/invoiceFile/invoice/paymentMeans[2]/accountNo When /invoiceFile/invoice/paymentMeans[2]/paymentMeansType = "IBAN"

/invoiceFile/invoice/paymentMeans[3]/accountNo When /invoiceFile/invoice/paymentMeans[3]/paymentMeansType = "IBAN"

/invoiceFile/invoice/paymentMeans[4]/accountNo When /invoiceFile/invoice/paymentMeans[4]/paymentMeansType = "IBAN"

SupplierSWIFT1, SupplierSWIFT2, SupplierSWIFT3, SupplierSWIFT4

/invoiceFile/invoice/paymentMeans[1]/swiftCode When /invoiceFile/invoice/paymentMeans[1]/paymentMeansType = "IBAN"

/invoiceFile/invoice/paymentMeans[2]/swiftCode When /invoiceFile/invoice/paymentMeans[2]/paymentMeansType = "IBAN"

/invoiceFile/invoice/paymentMeans[3]/swiftCode When /invoiceFile/invoice/paymentMeans[3]/paymentMeansType = "IBAN"

/invoiceFile/invoice/paymentMeans[4]/swiftCode When /invoiceFile/invoice/paymentMeans[4]/paymentMeansType = "IBAN"

SupplierAddressPostalCode /invoiceFile/invoice/supplierParty/supplierAddress/zipCode
SupplierBankDetails1

If the first instance (if any) of...

/invoiceFile/invoice/paymentMeans/paymentMeansType" is = BANK

...then SupplierBankDetails1 is set to the value of:

/invoiceFile/invoice/paymentMeans/institutionName

SupplierTaxNumber1

When /invoiceFile/invoice/supplierParty/partyIdentifier[1]/partyIdentifierType = org, SupplierTaxNumber1 is mapped to:

/invoiceFile/invoice/supplierParty/partyIdentifier[1]/identifier

SupplierTaxRepresentativeName

/invoiceFile/invoice/taxRepresentativeParty/partyAddress/addressname

SupplierTaxRepresentativeTaxID

/invoiceFile/invoice/taxRepresentativeParty/partyIdentifier/identifier

SupplierTaxRepresentativeTaxIDCountry

/invoiceFile/invoice/taxRepresentativeParty/partyIdentifier/countryId

SupplierVATRegistrationNumber

When /invoiceFile/invoice/supplierParty/partyIdentifier[1]/partyIdentifierType = VAT, SupplierVATRegistrationNumber is mapped to:

/invoiceFile/invoice/supplierParty/partyIdentifier[1]/identifier

TotalTaxAmountInTaxCurrency /invoiceFile/invoice/invoiceTrailer/vatTotalAmountInOtherCurrency
WithholdingTaxAmount /invoiceFile/invoice/invoiceTrailer/withholdingTax/withholdingAmount
WithholdingTaxCode /invoiceFile/invoice/invoiceTrailer/withholdingTax/withholdingReasonCode
WithholdingTaxType /invoiceFile/invoice/invoiceTrailer/withholdingTax/withholdingType
Line-item fields
LIT_AdditionalReference

If SchemeID is anything other than "ON" or "OP", LIT_AdditionalReference is mapped to:

invoiceFile/invoice/invoiceLine/documentReferenceId

Additionally, LIT_AdditionalReferenceType is set to the value of SchemeID.

LIT_AdditionalReferenceType If LIT_AdditionalReference is specified as noted above, LIT_AdditionalReferenceType is set to the value of SchemeID.
LIT_ArticleAttributeType1 /invoiceFile/invoice/invoiceLine/additionalItemAttribute[1]/attributeName
LIT_ArticleAttribute1 /invoiceFile/invoice/invoiceLine/additionalItemAttribute[1]/attributeValue
LIT_ArticleClassificationCode The first instance of:

/invoiceFile/invoice/invoiceLine/itemClassificationCode

LIT_ArticleCountryOrigin /invoiceFile/invoice/invoiceLine/countryOfOrigin
LIT_ArticleIdentifier /invoiceFile/invoice/invoiceLine/supplierArticleId
LIT_ArticleManufactureDate /invoiceFile/invoice/invoiceLine[2]/itemInstance/manufactureDate
LIT_ArticleName /invoiceFile/invoice/invoiceLine/articleDescription
LIT_ArticleRegNo /invoiceFile/invoice/invoiceLine[2]/itemInstance/registrationNo
LIT_ArticleSerialNo /invoiceFile/invoice/invoiceLine[2]/itemInstance/serialNo
LIT_ArticleTraceNo /invoiceFile/invoice/invoiceLine[2]/itemInstance/productTraceNo
LIT_BuyerArticleNumber /invoiceFile/invoice/invoiceLine/buyerArticleId
LIT_BuyerContactReference /invoiceFile/invoice/invoiceLine/customerProfitCentre
LIT_DeliveryDate1, LIT_DeliveryDate2

LIT_DeliveryDate1 is set to:

/invoiceFile/invoice/invoiceLine[1]/deliveryDate

Alternatively, LIT_DeliveryDate1 is set to:

/invoiceFile/invoice/invoiceLine[1]/invoicePeriodFrom

...and LIT_DeliveryDate2 is set to:

/invoiceFile/invoice/invoiceLine[1]/invoicePeriodTo

LIT_DeliveryNote /invoiceFile/invoice/invoiceLine[1]/deliveryNoteReference
LIT_DeliveredQuantity /invoiceFile/invoice/invoiceLine/invoiceQuantity/quantity
LIT_DeliveredQuantityUnitCode /invoiceFile/invoice/invoiceLine/price/unit/value
LIT_DiscountAmount If allowanceAndCharge/alcType = A, allowanceAndCharge/alcType/alcAmountis used. Otherwise, /invoiceFile/invoice/invoiceLine/discountAmount is used.
LIT_DiscountPercent

If allowanceAndCharge/alcType = A, allowanceAndCharge/alcType/alcPercentage is used. Otherwise, /invoiceFile/invoice/invoiceLine/discountPercent is used.

LIT_ManufacturerArticleNumber /invoiceFile/invoice/invoiceLine/manufacturerArticleId
LIT_Note /invoiceFile/invoice/invoiceLine/invoiceLineText
LIT_OrderNumber

If...

SchemeID=ON or SchemeID=OP

...then LIT_OrderNumber is mapped to the first instance of:

/invoiceFile/invoice/invoiceLine/documentReferenceId

Otherwise, LIT_OrderNumber is mapped to:

/invoiceFile/invoice/invoiceLine/orderReference/referenceNumber

LIT_PO_RowIdentifier invoiceFile/invoice/invoiceLine/orderLineReference/referenceNumber
LIT_RowIdentifier /invoiceFile/invoice/invoiceLine/invoiceLineId
LIT_UnitPriceAmount /invoiceFile/invoice/invoiceLine/price/contractPrice
LIT_UnitPriceBasis /invoiceFile/invoice/invoiceLine[1]/price/unitPriceBasis
LIT_UniqueArticleNumber

/invoiceFile/invoice/invoiceLine/articleGTIN

If /invoiceFile/invoice/invoiceLine/articleGTIN is empty or missing, LIT_UniqueArticleNumber is mapped to:

/invoiceFile/invoice/invoiceLine/standardItemIdentification

LIT_VatAmount /invoiceFile/invoice/invoiceLine/vatInfo/taxAmount
LIT_VATCode /invoiceFile/invoice/invoiceLine[1]/vatInfo/taxTypeCode
LIT_VATDescription /invoiceFile/invoice/invoiceLine[1]/vatInfo/lawText
LIT_VatExcludedAmount /invoiceFile/invoice/invoiceLine/invoiceLineAmount
LIT_VatRate /invoiceFile/invoice/invoiceLine/vatInfo/taxPercentage
Attachment fields
ID /invoiceFile/invoice/attachments/attachment/objectId
FileName /invoiceFile/invoice/attachments/attachment/encodedData/filename
EmbeddedValue /invoiceFile/invoice/attachments/attachment/encodedData
DataType /invoiceFile/invoice/attachments/attachment/encodedData/format
AdditionalInfo /invoiceFile/invoice/attachments/attachment/encodedData/mimeCode
Invoice note field
InvoiceNote /invoiceFile/invoice/invoiceFreeText

Field mappings from incoming XML formats only map to standard fields. They do not map to custom fields. Consider using the XML document type if your current document type does not support the field mappings you require.