Josh
Josh

Reputation: 13516

Intuit anywhere API telling me that a field is required when it's already specified

I am trying to create an invoice in QB for windows. Here is the XML:

<?xml version='1.0' encoding='utf-8'?>
<Add xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.intuit.com/sb/cdm/v2" xsi:schemaLocation="http://www.intuit.com/sb/cdm/V2./RestDataFilter.xsd " RequestId="1836474224e142c9ad9b7dd6cb0eaa41" FullResponse="true">
  <OfferingId>ipp</OfferingId>
  <ExternalRealmId>596059545</ExternalRealmId>
  <Invoice>
    <Header>
      <TxnDate>2013-01-30</TxnDate>
      <DiscountAmt>0</DiscountAmt>
      <ARAccountName>Sales - Support and Maintenance</ARAccountName>
      <DiscountAccountName>Discounts/Refunds</DiscountAccountName>
      <DueDate>2013-02-17</DueDate>
      <Currency>USD</Currency>
      <CustomerId>4</CustomerId>
    </Header>
    <Line>
      <Qty>1</Qty>
      <UnitPrice>7.00</UnitPrice>
      <Desc>Follow-up Test, Instant for Person138-Org3 Person138-Org3</Desc>
    </Line>
  </Invoice>
</Add>

Here's the response:

-2001:  cvc-complex-type.2.4.a: Invalid content was found starting with element 'ARAccountName'. One of '{"http://www.intuit.com/sb/cdm/v2":DiscountAccountId, "http://www.intuit.com/sb/cdm/v2":DiscountAccountName, "http://www.intuit.com/sb/cdm/v2":DiscountTaxable, "http://www.intuit.com/sb/cdm/v2":TxnId}' is expected.

I don't understand, as I already have DiscountAccountName specified. I also tried to go with something more like the create example (same as above but with ARAccountName and DiscountAccountName removed) and got a similar response. Thanks in advance for your help.

Upvotes: 2

Views: 238

Answers (1)

Keith Palmer Jr.
Keith Palmer Jr.

Reputation: 27962

The Intuit XML requests are validated by an XSD, and with XML validated by XSDs the order of the tags you provide matters.

That means that if the documentation (https://ipp.developer.intuit.com/0010_Intuit_Partner_Platform/0050_Data_Services/0500_QuickBooks_Windows/0600_Object_Reference/Invoice) dictates that ARAccountName comes before DiscountAmt, then you must put ARAccountName before DiscountAmt.

Switch the order of your XML tags to match the order shown in the docs, and you'll be all set.

Upvotes: 3

Related Questions