QuickBooks API Invoice <DueDate> tag - api

I wrote a custom integration between a SQL Server based system and QuickBooks many years ago which automatically creates invoices in QuickBooks from data in SQL Server. The XML string to create the invoices is quite simple:
<QBXML>
<QBXMLMsgsRq newMessageSetID="10025027" onError="continueOnError">
<InvoiceAddRq requestID="10025027">
<InvoiceAdd>
<CustomerRef>
<FullName>Acme Corporation, Inc.</FullName>
</CustomerRef>
<TxnDate>2014-02-05</TxnDate>
<RefNumber>124</RefNumber>
<ShipAddress>
<Addr1>16-01 16th Avenue, Dock 3</Addr1>
<Addr2/>
<Addr3/>
<Addr4/>
<City>Astoria</City>
<State>NY</State>
<PostalCode>11105</PostalCode>
</ShipAddress>
<PONumber> 6028019</PONumber>
<SalesRepRef>
<FullName>H</FullName>
</SalesRepRef>
<Memo>1401106</Memo>
<InvoiceLineAdd>
<ItemRef>
<FullName>SALES</FullName>
</ItemRef>
<Desc> Semi Annual Sampling - M1; Day 1</Desc>
<Rate>5580</Rate>
</InvoiceLineAdd>
</InvoiceAdd>
</InvoiceAddRq>
</QBXMLMsgsRq>
</QBXML>
The SQL Server based system actually prints detailed invoices which are delivered to the customer, QuickBooks is only used to keep track of account balances and payments. I am now trying to add the DueDate to the invoice by adding the following XML tag:
<DueDate>2014-03-07</DueDate>
I have tried to place this tag in several places in the XML string but QuickBooks rejects the request with the following error:
"QuickBooks found an error when parsing the provided XML text stream."
The bookkeeper is able to manually change the due date on the invoices after they are created, but for some reason I can't specify the due date when creating the invoices with the QuickBooks API. Any Ideas?
Thanks.

A few things to note here:
This is an incomplete qbXML request. There should be an XML and qbXML header tag as the very first two lines, and you're missing them. They should look like this:
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="13.0"?>
That version="..." bit should be set to something your version of QuickBooks supports (generally your QuickBooks version - 1, e.g. QuickBooks 2012 supports qbXML version 11.0, QuickBooks 2013 supports qbXML version 12.0, QuickBooks 2014 supports qbXML version 13.0, etc.)
Your post doesn't even show the DueDate field in the XML, so it's a little hard to tell what's actually wrong, but...
Keep in mind that the order of tags in qbXML is important. So if the OSR shows the DueDate field after PONumber, you better make darn sure to put it after the PONumber field. If you put it before it, you're going to get exactly the error you described.
Did you use the OSR to find the correct place? There shouldn't be any guess-work here - it tells you exactly where to put it.
...
<State>NY</State>
<PostalCode>11105</PostalCode>
</ShipAddress>
<PONumber> 6028019</PONumber>
<DueDate>2014-02-12</DueDate
<SalesRepRef>
<FullName>H</FullName>
</SalesRepRef>
<Memo>1401106</Memo>
...

I think the missing header tags were the problem. (I also added the <TermsRef> tag)
Here is the XML that did the trick:
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="11.0"?>
<QBXML>
<QBXMLMsgsRq newMessageSetID="10025079" onError="continueOnError">
<InvoiceAddRq requestID="10025079">
<InvoiceAdd>
<CustomerRef>
<FullName>Acme Corporation</FullName>
</CustomerRef>
<TxnDate>2014-02-13</TxnDate>
<RefNumber>168</RefNumber>
<ShipAddress>
<Addr1>Acme Corporation</Addr1>
<Addr2>1587-43 Veteran's Highway</Addr2>
<Addr3/>
<Addr4/>
<City>Islandia</City>
<State>NY</State>
<PostalCode>11749</PostalCode>
</ShipAddress>
<PONumber>5A873929B</PONumber>
<TermsRef>
<FullName>30 Days</FullName>
</TermsRef>
<DueDate>2014-03-15</DueDate>
<SalesRepRef>
<FullName>H</FullName>
</SalesRepRef>
<Memo>1402016</Memo>
<InvoiceLineAdd>
<ItemRef>
<FullName>SALES</FullName>
</ItemRef>
<Desc> OBAR Auto Parts, 279 South Street, Oyster Bay, NY 11771</Desc>
<Rate>1760</Rate>
</InvoiceLineAdd>
</InvoiceAdd>
</InvoiceAddRq>
</QBXMLMsgsRq>
</QBXML>
Thank you again!

Related

Create Refund on square_connect Ruby sdk gives INTERNAL SERVER ERROR

I am using square_connect ruby gem to refund payments.
body =
#<SquareConnect::CreateRefundRequest
#amount_money=#<SquareConnect::Money #amount=200, #currency="USD">,
#idempotency_key="be70cc12-28dd-4168-96ea-6eb78f299207",
#tender_id="asdkasdkakdakdakda">
All other parameters are just as intended. I have changed Tender key too.
result = api_instance.create_refund(authorization, location_id, transaction_id, body)
This gives me INTERNAL SERVER ERROR.
ETHON: performed EASY effective_url=https://connect.squareup.com/v2/locations/BP6GXQNEANA9B/transactions/b2fd4689-af1b-40a4-b706-aafd592e1111/refund response_code=500 return_code=ok total_time=1.883598
SquareConnect::ApiError: Internal Server Error - {"errors":[{"category":"API_ERROR","code":"INTERNAL_SERVER_ERROR","detail":"An internal error has occurred, and the API was unable to service your request."}]}
Are you sure that your tender_id matches a tender you want to refund? 500 isn't the correct response, but it seems like you are likely not selecting a correct tender to refund.
Also you should look into upgrading your SDK to the latest version.
This is a major bug in the Square Connect API. I was actually trying with a wrong transaction ID, instead of getting something like "Incorrect Transaction ID" I was getting 500 Internal Server Error.
I have been using Stripe, Payflow. Authorize.net, Braintree and Moneris API for almost 2 years now but I have never received a 500 Internal server error for a wrong transaction Id. So Square needs to address it on urgent basis.

What is the correct way to add a PCTC SSR in SITA Web Services (SWS)

I'm trying to use the SITA Web Services to add an emergency contact to a booking. I'm using this XML, but I keep getting "013 - ACTION" error
<OTA_AirBookModifyRQ xmlns:="http://www.opentravel.org/OTA/2003/05" TransactionIdentifier="" Version="2003.5.0">
<AirBookModifyRQ BookingReferenceID="JKYZJ" ModificationType="5">
<TravelerInfo>
<SpecialReqDetails>
<SpecialServiceRequests>
<SpecialServiceRequest SSRCode="PCTC" Status="11" TravelerRefNumberRPHList="1">
<Airline Code="XS"></Airline>
<Text>DOCTOR DR/XS222H.SISTER</Text>
</SpecialServiceRequest>
</SpecialServiceRequests>
</SpecialReqDetails>
</TravelerInfo>
</AirBookModifyRQ>
The reason you're getting "013 - ACTION" is that you are specifying "11" (which means NN -Need) as the status. Change the status to "26", which means HK - Hold Confirmed).
Note also, for PCTC the element must be in a specific format to be correctly accepted by reservation system. See the Agent Reservation guide for more details on this.

Bit rate error when trying to dial out to an ISDN line using Polycom XML API

I am having a problem connecting to an ISDN line using Polycom's XML API on an RMX_2000. Below is the request I am sending, and the response. I can do the same action from the RMX Manager, for the same number, in the same conference, and it works. When I trace the XML from the RMX Manager, I get an ADD_PARTY request that looks exactly like my constructed request, except with a lot more elements. I've reviewed and don't see any that seem like they could be relevant, and I am loath to manually code every single element, knowing that it is a long shot that it will even help. The same request (variant) works fine for IP and registered number requests, but no matter what I do, always get the bit rate error below. Can anyone tell me what I am doing wrong?
<TRANS_CONF_1>
<TRANS_COMMON_PARAMS>
<MCU_TOKEN>304</MCU_TOKEN>
<MCU_USER_TOKEN>304</MCU_USER_TOKEN>
<MESSAGE_ID>1</MESSAGE_ID>
</TRANS_COMMON_PARAMS>
<ACTION>
<ADD_PARTY>
<ID>18466</ID>
<PARTY>
<ID>0</ID>
<NAME>isdn</NAME>
<PHONE_LIST>
<PHONE1>12345678910</PHONE1>
</PHONE_LIST>
<INTERFACE>isdn</INTERFACE>
<CONNECTION>dial_out</CONNECTION>
<MEET_ME_METHOD>party</MEET_ME_METHOD>
<NUM_TYPE>taken_from_service</NUM_TYPE>
<MULTI_RATE>auto</MULTI_RATE>
<ALIAS>
<NAME>12345678910</NAME>
<ALIAS_TYPE>323_id</ALIAS_TYPE>
</ALIAS>
<VIDEO_BIT_RATE>automatic</VIDEO_BIT_RATE>
<ENHANCED_VIDEO>false</ENHANCED_VIDEO>
<UNDEFINED>false</UNDEFINED>
</PARTY>
</ADD_PARTY>
</ACTION>
</TRANS_CONF_1>
Here is the response:
<RESPONSE_TRANS_CONF>
<RETURN_STATUS>
<ID>1015</ID>
<DESCRIPTION>Conference bit rate must be set to a minimum of 128Kbps to enable ISDN participant connection</DESCRIPTION>
<YOUR_TOKEN1>0</YOUR_TOKEN1>
<YOUR_TOKEN2>0</YOUR_TOKEN2>
<MESSAGE_ID>1</MESSAGE_ID>
<DESCRIPTION_EX></DESCRIPTION_EX>
</RETURN_STATUS>
<ACTION>
<ADD_PARTY/>
</ACTION>
</RESPONSE_TRANS_CONF>
Thanks to a little help from someone at Polycom, I found out that the following node is required for this:
auto
I added that to the PARTY node, and now all is well.
After alot of troubleshooting and wiresharking on this error I found a combination of 2 properties being the issue
Reservation object needs
<TRANSFER_RATE>384</TRANSFER_RATE>
Party object needs
<NET_CHANNEL_NUMBER>auto</NET_CHANNEL_NUMBER>

QBXML Query for 50000 customers does not work

I installed QuickBooks Enterprise 13.0 Trial.
Imported 50000 customers using the Excel template it provided
Downloaded QB SDKTest.exe from
[https://member.developer.intuit.com/qbsdk-current/samples/readme.html#SDKTest (VB) (qbxml) (desktop)][1]
I have a simple query to request customers
<?xml version="1.0" ?>
<!DOCTYPE QBXML PUBLIC '-//INTUIT//DTD QBXML QBD 1.0//EN' >
<QBXML>
<QBXMLMsgsRq onError="stopOnError">
<CustomerQueryRq requestID = "Customers">
<ActiveStatus>All</ActiveStatus>
</CustomerQueryRq>
</QBXMLMsgsRq>
</QBXML>
It fails with the following response
<CustomerQueryRs statusMessage="There has been an internal error when processing the request." statusSeverity="Error" statusCode="1000" requestID="Customers"/>
The test was OK with 40000 customers. Did I reach a limit ? I expected to be able to work with 100000 customers
50K records are quite huge. So,you can try using 'Iterators' for this.
Ref - https://member.developer.intuit.com/qbSDK-current/doc/PDF/QBSDK_ProGuide.pdf
(Pg - 119)
Please let me know if it works.
You can refer the following link for object limits
http://support.quickbooks.intuit.com/support/articles/INF12412
Thanks

ebay API GetOrders shows wrong result

My objective is to list user's transactions (both sales and purchases).
I am using GetOrders and specifying a time range to and the call executes successfully but returns 0 transactions, whereas the user I am querying for has multiple purchases on their account.
Let me get a bit more specific. Here is the code that I am using:
<GetOrdersRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<eBayAuthToken>......</eBayAuthToken>
</RequesterCredentials>
<CreateTimeFrom>2009-04-05T05:02:03</CreateTimeFrom>
<CreateTimeTo>2011-12-23T00:02:44</CreateTimeTo>
</GetOrdersRequest>​
And even using the API test tool (Hence, the problem is not language specific) it delivers 0 results:
<GetOrdersResponse xmlns="urn:ebay:apis:eBLBaseComponents">
<Timestamp>2011-12-23T00:05:32.753Z</Timestamp>
<Ack>Success</Ack>
<Version>753</Version>
<Build>E753_CORE_BUNDLED_14214525_R1</Build>
<PaginationResult>
<TotalNumberOfPages>0</TotalNumberOfPages>
<TotalNumberOfEntries>0</TotalNumberOfEntries>
</PaginationResult>
<HasMoreOrders>false</HasMoreOrders>
<OrderArray />
<OrdersPerPage>100</OrdersPerPage>
<PageNumber>1</PageNumber>
<ReturnedOrderCountActual>0</ReturnedOrderCountActual>
</GetOrdersResponse>​`
The user I am querying for has 2 recent purchases dated at:
12/08/11
11/18/11
What am I missing here? I am supplying the time range and the call executes properly, yet it finds 0 results. I'd very much appreciate your help.
Try including the OrderRole, ie. Buyer or Seller and OrderStatus of either Active or Completed. Something like the following will return completed orders for items purchased by the caller.
<GetOrdersRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<DetailLevel>ReturnAll</DetailLevel>
<MessageID>cff8bc1c-0475-4d64-a8a5-02757aafd937</MessageID>
<Version>747</Version>
<CreateTimeFrom>2012-01-07T14:05:24.6353866Z</CreateTimeFrom>
<CreateTimeTo>2012-02-07T14:05:24.6353866Z</CreateTimeTo>
<OrderRole>Buyer</OrderRole>
<OrderStatus>Completed</OrderStatus>
</GetOrdersRequest>
For more details, have a look here.
The maximum date range that may be specified is 30 days