<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.0 U (http://www.xmlspy.com) by Geoff Mack (FurnishNet, Inc.l) -->
<!-- © 2001 FurnishNet.com.  All rights reserved.  Contains confidential and proprietary information. -->
<!-- 
Ver.   Date             By                   Action  
1.8    21-Dec-05  Geoff Mack       Referenced base v1.6 and item v1.6 to realize changes made to base v1.6.
1.7b  07-Nov-03  Geoff Mack       Made invoiceSummaryFinancialType's totalNetInvoicedAmount element of type fnBase:monetaryAmountType.
                                                      Thanks to Mike Overholt for noticing the type was not defined.   
1.7a  26-Sep-03  Geoff Mack       Referenced fn_base_v1.5 and fn_item_v1.5 to realize changes made in those schemas.
1.7    30-Jul-03    Geoff Mack       Changed name of key "shipToID" to "shipToIDInvoice" to skirt duplicate key issue in envelope.
                                                      Changed name of key "markForID" to "markForIDInvoice" to skirt duplicate key issue in envelope.
1.6    05-Oct-01    Geoff Mack       Converted to the May 5, 2001 W3C Recommendation using XML Spy v4.0.  Now references
                                                       http://www.w3.org/2001/XMLSchema instead of http://www.w3.org/2000/10/XMLSchema.
1.5    27-Jul-01    Geoff Mack       Made modifications based on input received at the 7/24/2001 FurnXML meeting in Charlotte, NC:
                                                      * Added element describedDate to invoiceTerms in both the due and discount sections.  The only 
                                                        value allowed currently is EOM but the enumerations can be extended to accommodate any date
                                                        that can be more precisely described verbally than with an absolute date or day number, e.g.,
                                                        "First Monday of the month."
                                                      * Added methodOfPayment to invoiceTerms.
                                                      * Added timeOfPayment to invoiceTerms and made the due date structure subordinate to it.
                                                      * Removed weight qualifier from weight on physical summary and added "gross" to the weight comment.
                                                        Left boundary at 0..2 to accommodate English and Metric simultaneously.
                                                      * Referenced fn_base_v1.3 and fn_item_v1.3 (because we can).
                                                      * Added pieceIdentification element under invoicedQuantity (invoiceLineType).
                                                      * Moved invoiceTermsType to fn_base, renamed termsType.
                                                      * Made invoiceSummaryFinancial and its element element totalNetInvoicedAmount mandatory.
1.4    26-Jun-01   Geoff Mack       Changed web server address from www.furnishnet.com/... to support.furnishnet.com/...
                                                      Made modifications based on input received at the 5/15/2001 FurnXML meeting in Charlotte, NC:
                                                       * Changed the data type of invoiceReferenceNumber's "referenceNumberValue" attribute from 
                                                          NMTOKEN to string. Rationale: a reference number could include one or more spaces.
                                                       * Added "DepartmentNumber" as an enumeration to invoiceReferenceNumberType's 
                                                         "referenceNumberQualifier" attribute. 
                                                       * Removed the duplicate enumeration of "invoiceVerificationDate" from termsBasisDateType's 
                                                         "termsBasisDateQualifier" attribute.
                                                       * Made the taxInformation structure unbounded.
                                                       * Removed length limitation (formerly 10) on tax jurisdiction description.
                                                       * Changed name of taxPercentType element to taxPercent.
                                                       * Made dollarBasisForPercent optional.
                                                       * Added new tax types (to more closely conform with the X12 tax types).
                                                       * Added new tax exempt types (to more closely conform with the X12 tax types).
                                                       * Added markFor element on the Invoice.
                                                       * Restructured invoiceQuantity to be of type fnBase:shipToLocationType and thereby to refer back 
                                                         to the shipTo / markFor on the header via an ID.  This replaced the "destinationLocation" element.
                                                       * Made invoiceTerms unbounded.
                                                       * Clarified intended usage of elements in invoiceFinancialSummary by adding annotations.  
                                                         Changed totalInvoicedAmount to totalGrossInvoicedAmount and renamed totalDueAmount to 
                                                         totalNetInvoicedAmount; reordered elements to a sequence following the formula described in
                                                         the annotations for totalGrossInvoicedAmount and totalNetInvoicedAmount.
                                                      * Made invoiceLineReferenceNumber unbounded (up from a maximum of 10).
                                                      * Changed maximum occurrences of shipmentPhysicalSummary's "weight" from 1 to 2, to allow
                                                        representing both gross and net weight on the same document, and added weightQualifier attribute
                                                        to show which is which.
                                                      * Added termsDescription to invoiceTermsType.
                                                      * Added allowancePercent element (including allowancePercentQualifier) to allowanceType.
                                                      * Added version numbers to this and all referenced schemas.  This was done to enable the simultaneous
                                                        use of two different versions of the schema by two different parties since both parties would be
                                                        validating against the schema definition in a single location (FurnishNet.com).
                                                      * Moved invoice date from element on invoiceType to attribute on invoice element.
                                                      * Made shipTo and markFor unbounded.
                                                      * Changed name of systemReference element to invoiceSystemReference; added optional, unbounded
                                                         invoiceLineSystemReference element.
                                                      * Changed all NMTOKEN data type declarations to string.
1.3     11-May-01  Geoff Mack      Made transaction date optional.
                                                      Changed data type of invoiceNumber from ID to string to allow spaces.
1.2     23-Mar-01   Geoff Mack      Changed all references to measurementType to references to quantityType.
1.1     20-Mar-01   Geoff Mack      Removed element prePaidFreight from invoiceType (duplicates invoiceFinancialSummary element
                                                       totalFreightDueAmount).
1.0     28-Feb-01   Geoff Mack      Created.
-->
<schema targetNamespace="http://support.furnishnet.com/xml/schemas/fnInvoice_v1.8" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:fnBase="http://support.furnishnet.com/xml/schemas/fnBase_v1.6" xmlns:fnItem="http://support.furnishnet.com/xml/schemas/fnItem_v1.6" xmlns:fnParty="http://support.furnishnet.com/xml/schemas/fnParty_v1.4" xmlns:fnInvoice="http://support.furnishnet.com/xml/schemas/fnInvoice_v1.8" version="1.8">
	<import namespace="http://support.furnishnet.com/xml/schemas/fnBase_v1.6" schemaLocation="http://support.furnishnet.com/xml/schemas/fn_base_v1.6.xsd"/>
	<import namespace="http://support.furnishnet.com/xml/schemas/fnItem_v1.6" schemaLocation="http://support.furnishnet.com/xml/schemas/fn_item_v1.6.xsd"/>
	<import namespace="http://support.furnishnet.com/xml/schemas/fnParty_v1.4" schemaLocation="http://support.furnishnet.com/xml/schemas/fn_party_v1.4.xsd"/>
	<element name="invoice" type="fnInvoice:invoiceType">
		<key name="shipToIDKeyInvoice">
			<selector xpath="shipTo"/>
			<field xpath="@id"/>
		</key>
		<key name="markForIDKeyInvoice">
			<selector xpath="markFor"/>
			<field xpath="@id"/>
		</key>
		<keyref name="shipToIDLineRefInvoice" refer="fnInvoice:shipToIDKeyInvoice">
			<selector xpath="lineItem/invoicedQuantity/shipToLocation"/>
			<field xpath="@shipToID"/>
		</keyref>
		<keyref name="markForIDLineRefInvoice" refer="fnInvoice:markForIDKeyInvoice">
			<selector xpath="lineItem/invoicedQuantity/shipToLocation/markFor"/>
			<field xpath="@markForID"/>
		</keyref>
	</element>
	<complexType name="invoiceType">
		<sequence>
			<element name="document" type="fnBase:documentType">
				<annotation>
					<documentation>id represents the unique invoice number; type represents the transaction type (e.g., "810").  For programmatic management of language, use language codes specified by ISO 639-1988.</documentation>
				</annotation>
			</element>
			<element name="actionRequestIndicator" type="fnBase:actionRequestIndicatorType" minOccurs="0">
				<annotation>
					<documentation>Specifies that the transaction is either new, a change to, or cancellation of a previous invoice.</documentation>
				</annotation>
			</element>
			<element name="currencyIdentifier" type="fnBase:currencyIdentifierType" minOccurs="0">
				<annotation>
					<documentation>Identifies the currency of this invoice.  For programmatic management of currencies, use codes specified by ISO 4217-1995.</documentation>
				</annotation>
			</element>
			<element name="shipDate" type="fnBase:shipDateType" minOccurs="0">
				<annotation>
					<documentation>The date the merchandise being invoiced was or is expected to be shipped.</documentation>
				</annotation>
			</element>
			<element name="lastUpdateDate" type="date" minOccurs="0">
				<annotation>
					<documentation>The date of the last change to this invoice.</documentation>
				</annotation>
			</element>
			<element name="invoiceReferenceNumber" type="fnBase:referenceNumberType" minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<documentation>Any of a number of references revelent to this invoice, such as the buyer's PO number, PO acknowledgement number, etc.  An optional associated document date is also accommodated.  Note: the invoice number and date are stored in the "document" element.</documentation>
				</annotation>
			</element>
			<element name="buyer" type="fnParty:partyIdentificationType" minOccurs="0">
				<annotation>
					<documentation>The buyer of the goods being invoiced.</documentation>
				</annotation>
			</element>
			<element name="billTo" type="fnParty:partyIdentificationType">
				<annotation>
					<documentation>Party being billed for items invoiced.</documentation>
				</annotation>
			</element>
			<element name="remitTo" type="fnParty:partyIdentificationType" minOccurs="0">
				<annotation>
					<documentation>Identifies the party to whom payment is to be remitted.</documentation>
				</annotation>
			</element>
			<element name="seller" type="fnParty:sellerIdentificationType" minOccurs="0">
				<annotation>
					<documentation>The seller of the goods being invoiced.</documentation>
				</annotation>
			</element>
			<element name="carrier" type="fnParty:carrierIdentificationType" minOccurs="0">
				<annotation>
					<documentation>Identifies the carrier of the goods being invoiced.</documentation>
				</annotation>
			</element>
			<element name="shipTo" type="fnParty:shipToPartyType" minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<documentation>Identifies all ship-to parties.</documentation>
				</annotation>
			</element>
			<element name="markFor" type="fnParty:shipToPartyType" minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<documentation>Mark-For parties are parties, generally entities within the buying organization, to whom goods are routed after physical receipt of goods by the ship-to party.</documentation>
				</annotation>
			</element>
			<element name="invoiceNotes" type="fnBase:noteType" minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<documentation>Free-form notes.</documentation>
				</annotation>
			</element>
			<element name="invoiceTerms" type="fnBase:termsType" minOccurs="0" maxOccurs="unbounded"/>
			<element name="taxInformation" type="fnInvoice:taxInformationType" minOccurs="0" maxOccurs="unbounded"/>
			<element name="invoiceAllowance" type="fnBase:discountOrAllowanceType" minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<documentation>Allowances are distinct from discounts, which are defined under invoiceTerms.</documentation>
				</annotation>
			</element>
			<element name="invoiceAdditionalCharge" type="fnBase:additionalChargeType" minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<documentation>Unlimited additional charges of any type.</documentation>
				</annotation>
			</element>
			<element name="invoiceSystemReference" type="fnBase:systemReferenceType" minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<documentation>A system reference facilitates automated processing of the document by including data elements that are not necessarily part of a standard transaction but are required or desired by the computer systems of the trading partners.  Effective use of system references requires pre-arrangement between trading partners.  NOTE: this structure should not be used for data that is otherwise accommodated within a transaction schema.</documentation>
				</annotation>
			</element>
			<element name="invoiceLine" type="fnInvoice:invoiceLineType" minOccurs="0" maxOccurs="unbounded"/>
			<element name="invoiceSummaryFinancial" type="fnInvoice:invoiceSummaryFinancialType">
				<annotation>
					<documentation>All amounts are in the currency identified by the currencyIdentifier element.</documentation>
				</annotation>
			</element>
			<element name="invoiceSummaryPhysical" type="fnInvoice:invoiceSummaryPhysicalType" minOccurs="0"/>
		</sequence>
	</complexType>
	<complexType name="invoiceLineType">
		<sequence>
			<element name="invoicedItem" type="fnItem:itemIdentifierType" minOccurs="0">
				<annotation>
					<documentation>Item identification information.</documentation>
				</annotation>
			</element>
			<element name="invoicedQuantity" minOccurs="0">
				<annotation>
					<documentation>The quantity invoiced on this  invoice line.</documentation>
				</annotation>
				<complexType>
					<complexContent>
						<extension base="fnBase:quantityType">
							<sequence minOccurs="0">
								<element name="shipToLocation" minOccurs="0" maxOccurs="unbounded">
									<annotation>
										<documentation>The sum of all quantities specified here should equal the "value" attribute on element invoicedQuantity.  The shipToID refers to an entry in the shipTo element on the header.  The date attributes will normally not be used on an invoice; they are used on an Order Acknowledgement to allow acknowledgement of multiple shipments on a single acknowledgement.</documentation>
									</annotation>
									<complexType>
										<complexContent>
											<extension base="fnBase:shipToLocationType">
												<sequence minOccurs="0">
													<element name="markForLocation" type="fnBase:markForLocationType" minOccurs="0" maxOccurs="unbounded">
														<annotation>
															<documentation>The sum of all quantities specified here should equal the "quantity" attribute of the immediately enclosing shipToLocation element.  The markForID refers to an entry in the markFor element on the header.</documentation>
														</annotation>
													</element>
												</sequence>
											</extension>
										</complexContent>
									</complexType>
								</element>
								<element name="pieceIdentification" type="fnBase:pieceIdentificationNumberType" minOccurs="0">
									<annotation>
										<documentation>A piece identification number uniquely identifes a single piece in a transaction.  When used, there is normally one piece ID number for each and every piece in the transaction.  They may be buyer assigned or seller assigned.  These numbers are NOT associated with a particular destination location.</documentation>
									</annotation>
								</element>
							</sequence>
						</extension>
					</complexContent>
				</complexType>
			</element>
			<element name="invoicedAmount" type="fnBase:monetaryAmountType" minOccurs="0">
				<annotation>
					<documentation>Unit price, exclusive of allowances and additional charges.</documentation>
				</annotation>
			</element>
			<element name="invoiceLineAllowance" type="fnBase:discountOrAllowanceType" minOccurs="0" maxOccurs="unbounded"/>
			<element name="invoiceLineAdditionalCharge" type="fnBase:additionalChargeType" minOccurs="0" maxOccurs="unbounded"/>
			<element name="invoiceLineReferenceNumber" type="fnBase:referenceNumberType" minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<documentation>Any of a number of references revelent to this invoice line, such as the buyer's PO line number, buyer's sales order (for special orders), PO acknowledgement number, etc.  An optional associated document date is also accommodated.</documentation>
				</annotation>
			</element>
			<element name="quantityOrdered" type="fnBase:quantityType" minOccurs="0"/>
			<element name="invoiceLineSystemReference" type="fnBase:systemReferenceType" minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<documentation>A system reference facilitates automated processing of the document by including data elements that are not necessarily part of a standard transaction but are required or desired by the computer systems of the trading partners.  Effective use of system references requires pre-arrangement between trading partners.  NOTE: this structure should not be used for data that is otherwise accommodated within a transaction schema.</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="invoicedQuantityType">
		<sequence>
			<element name="invoicedUnits">
				<complexType>
					<complexContent>
						<extension base="fnBase:quantityType">
							<sequence minOccurs="0">
								<element name="shipToLocation" type="fnBase:shipToLocationType" minOccurs="0"/>
							</sequence>
						</extension>
					</complexContent>
				</complexType>
			</element>
		</sequence>
	</complexType>
	<complexType name="invoiceSummaryFinancialType">
		<sequence>
			<element name="totalGrossInvoicedAmount" type="fnBase:monetaryAmountType" minOccurs="0">
				<annotation>
					<documentation>Line item totals plus additional charges (header and line) plus prepaid freight plus tax.  Does not include allowances, discounts, or deposits.</documentation>
				</annotation>
			</element>
			<element name="totalNetInvoicedAmount" type="fnBase:monetaryAmountType">
				<annotation>
					<documentation>Total gross invoiced amount less allowances (header and line), less discount(s), less deposit received.</documentation>
				</annotation>
			</element>
			<element name="totalLinesDueAmount" type="fnBase:monetaryAmountType" minOccurs="0">
				<annotation>
					<documentation>The sum of the invoicedAmount element from all line items.</documentation>
				</annotation>
			</element>
			<element name="totalAdditionalChargeAmount" type="fnBase:monetaryAmountType" minOccurs="0">
				<annotation>
					<documentation>The sum of all additional charges (header and line level).</documentation>
				</annotation>
			</element>
			<element name="totalFreightDueAmount" type="fnBase:monetaryAmountType" minOccurs="0">
				<annotation>
					<documentation>Freight charges paid in advance by the seller and charged through to the buyer on the invoice.</documentation>
				</annotation>
			</element>
			<element name="totalTaxDueAmount" type="fnBase:monetaryAmountType" minOccurs="0">
				<annotation>
					<documentation>Total of taxes due.</documentation>
				</annotation>
			</element>
			<element name="totalAllowanceAmount" type="fnBase:monetaryAmountType" minOccurs="0">
				<annotation>
					<documentation>The sum of all allowances (header and line level).</documentation>
				</annotation>
			</element>
			<element name="totalDepositReceived" type="fnBase:monetaryAmountType" minOccurs="0"/>
			<element name="totalDiscountAmount" type="fnBase:monetaryAmountType" minOccurs="0">
				<annotation>
					<documentation>Sum of all discounts that apply to this invoice.  If multiple mutually exclusive discount schedules exist, this reflects one schedule of the seller's choice.</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="invoiceSummaryPhysicalType">
		<sequence>
			<element name="totalUnitsInvoiced" type="fnBase:quantityType" minOccurs="0"/>
			<element name="totalVolume" type="fnBase:quantityType" minOccurs="0">
				<annotation>
					<documentation>Aggregate volume for all units invoiced.</documentation>
				</annotation>
			</element>
			<element name="totalWeight" minOccurs="0" maxOccurs="2">
				<annotation>
					<documentation>Aggregate gross weight for all units invoiced.  Having two occurrences accommodates both English and Metric weight simultaneously.</documentation>
				</annotation>
				<complexType>
					<complexContent>
						<extension base="fnBase:quantityType"/>
					</complexContent>
				</complexType>
			</element>
		</sequence>
	</complexType>
	<complexType name="taxInformationType">
		<sequence>
			<choice minOccurs="0">
				<element name="taxType" type="fnInvoice:taxTypeType" minOccurs="0"/>
				<element name="taxExemptCode" type="fnInvoice:taxExemptCodeType" minOccurs="0"/>
			</choice>
			<element name="taxAmount" type="fnBase:monetaryAmountType" minOccurs="0"/>
			<sequence minOccurs="0">
				<element name="taxPercent" type="decimal"/>
				<element name="dollarBasisForTaxPercent" type="fnBase:monetaryAmountType" minOccurs="0">
					<annotation>
						<documentation>The amount to which the tax percentage is applied to derive the tax amount.</documentation>
					</annotation>
				</element>
			</sequence>
			<element name="taxIdentificationNumber" type="fnInvoice:taxIdentificationNumberType" minOccurs="0"/>
			<element name="taxJurisdiction" type="fnInvoice:taxJurisdictionType" minOccurs="0"/>
		</sequence>
	</complexType>
	<simpleType name="taxExemptCodeType">
		<restriction base="string">
			<enumeration value="Exempt-ForExport"/>
			<enumeration value="Exempt"/>
			<enumeration value="NotExempt"/>
			<enumeration value="Exempt-ForResale"/>
			<enumeration value="NotExempt-ForResale"/>
			<enumeration value="Exempt-NotForResale"/>
			<enumeration value="NotExempt-NotForResale"/>
			<enumeration value="DirectPayID"/>
			<enumeration value="Exempt-SaleToUSGovt"/>
			<enumeration value="Exempt-PerStateLaw"/>
		</restriction>
	</simpleType>
	<simpleType name="taxIdentificationNumberType">
		<restriction base="string">
			<minLength value="1"/>
			<maxLength value="20"/>
		</restriction>
	</simpleType>
	<complexType name="taxJurisdictionType">
		<attribute name="taxJurisdictionQualifier" use="required">
			<simpleType>
				<restriction base="string">
					<enumeration value="BuyerAssigned"/>
					<enumeration value="SellerAssigned"/>
					<enumeration value="Vertex"/>
				</restriction>
			</simpleType>
		</attribute>
		<attribute name="taxJurisdictionDescription" use="required">
			<simpleType>
				<restriction base="string"/>
			</simpleType>
		</attribute>
	</complexType>
	<simpleType name="taxTypeType">
		<restriction base="string">
			<enumeration value="AllTaxes"/>
			<enumeration value="BusinessPrivilegeTax"/>
			<enumeration value="CitySalesTax"/>
			<enumeration value="CityTax"/>
			<enumeration value="County/ParrishSalesTax"/>
			<enumeration value="County/ParrishTax"/>
			<enumeration value="FederalExciseTax"/>
			<enumeration value="FederalTax"/>
			<enumeration value="GoodsAndServicesTax"/>
			<enumeration value="HandicapTax"/>
			<enumeration value="LocalSalesTax"/>
			<enumeration value="LocalTax"/>
			<enumeration value="MetropolitanTransitTax"/>
			<enumeration value="MunicipalTax"/>
			<enumeration value="OtherTax"/>
			<enumeration value="PublicHealthAndEducationTax"/>
			<enumeration value="SalesAndUseTax"/>
			<enumeration value="SchoolTax"/>
			<enumeration value="State/ProvincialTax"/>
			<enumeration value="StateAndLocalSalesTax"/>
			<enumeration value="StateAndLocalTax"/>
			<enumeration value="StateExciseTax"/>
			<enumeration value="StateSalesTax"/>
			<enumeration value="ValueAddedTax"/>
		</restriction>
	</simpleType>
</schema>
