Sample code for 30+ languages & platforms
AutoIt

Quickbooks Query an Invoice

See more QuickBooks Examples

Demonstrates how to query for invoices matching a SELECT statement via the Quickbooks REST API.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.

; First get our previously obtained OAuth2 access token.
$oJsonToken = ObjCreate("Chilkat.JsonObject")
$bSuccess = $oJsonToken.LoadFile("qa_data/tokens/qb-access-token.json")

$oRest = ObjCreate("Chilkat.Rest")

Local $bTls = True
Local $iPort = 443
Local $bAutoReconnect = True
$bSuccess = $oRest.Connect("sandbox-quickbooks.api.intuit.com",$iPort,$bTls,$bAutoReconnect)

$oSbAuth = ObjCreate("Chilkat.StringBuilder")
$oSbAuth.Append("Bearer ")
$oSbAuth.Append($oJsonToken.StringOf("access_token"))
$oRest.Authorization = $oSbAuth.GetAsString()

; --------------------------------------------------------------------------
; Note: The above REST connection and setup of the AWS credentials
; can be done once.  After connecting, any number of REST calls can be made.
; The "auto reconnect" property passed to rest.Connect indicates that if
; the connection is lost, a REST method call will automatically reconnect
; if needed.
; --------------------------------------------------------------------------

; This is a GET request, so there should be no Content-Type
; This line of code is just to make sure..
$oRest.RemoveHeader("Content-Type")

$oRest.AddHeader("Accept","application/json")
$oRest.AllowHeaderFolding = False

; Add a SELECT statement 
$oRest.AddQueryParam("query","select * from Invoice where id = '239'")

$oSbResponseBody = ObjCreate("Chilkat.StringBuilder")
$bSuccess = $oRest.FullRequestNoBodySb("GET","/v3/company/<realmID>/invoice",$oSbResponseBody)
If ($bSuccess <> True) Then
    ConsoleWrite($oRest.LastErrorText & @CRLF)
    Exit
EndIf

Local $iRespStatusCode = $oRest.ResponseStatusCode
If ($iRespStatusCode >= 400) Then
    ConsoleWrite("Response Status Code = " & $iRespStatusCode & @CRLF)
    ConsoleWrite("Response Header:" & @CRLF)
    ConsoleWrite($oRest.ResponseHeader & @CRLF)
    ConsoleWrite("Response Body:" & @CRLF)
    ConsoleWrite($oSbResponseBody.GetAsString() & @CRLF)
    Exit
EndIf

; Success is indicated by a 200 response status.
ConsoleWrite("response status code = " & $iRespStatusCode & @CRLF)

$oJson = ObjCreate("Chilkat.JsonObject")
$oJson.LoadSb($oSbResponseBody)
$oJson.EmitCompact = False
ConsoleWrite($oJson.Emit() & @CRLF)

; Sample output:
; Use the this online tool to generate parsing code from sample JSON: 
; Generate Parsing Code from JSON

; {
;   "QueryResponse": {
;     "startPosition": 1, 
;     "totalCount": 1, 
;     "maxResults": 1, 
;     "Invoice": [
;       {
;         "DocNumber": "1070", 
;         "SyncToken": "0", 
;         "domain": "QBO", 
;         "Balance": 150.0, 
;         "BillAddr": {
;           "City": "Bayshore", 
;           "Line1": "4581 Finch St.", 
;           "PostalCode": "94326", 
;           "Lat": "INVALID", 
;           "Long": "INVALID", 
;           "CountrySubDivisionCode": "CA", 
;           "Id": "2"
;         }, 
;         "TxnDate": "2015-07-24", 
;         "TotalAmt": 150.0, 
;         "CustomerRef": {
;           "name": "Amy's Bird Sanctuary", 
;           "value": "1"
;         }, 
;         "ShipAddr": {
;           "City": "Bayshore", 
;           "Line1": "4581 Finch St.", 
;           "PostalCode": "94326", 
;           "Lat": "INVALID", 
;           "Long": "INVALID", 
;           "CountrySubDivisionCode": "CA", 
;           "Id": "109"
;         }, 
;         "LinkedTxn": [], 
;         "DueDate": "2015-08-23", 
;         "PrintStatus": "NeedToPrint", 
;         "Deposit": 0, 
;         "sparse": false, 
;         "EmailStatus": "NotSet", 
;         "Line": [
;           {
;             "LineNum": 1, 
;             "Amount": 150.0, 
;             "SalesItemLineDetail": {
;               "TaxCodeRef": {
;                 "value": "NON"
;               }, 
;               "ItemRef": {
;                 "name": "Services", 
;                 "value": "1"
;               }
;             }, 
;             "Id": "1", 
;             "DetailType": "SalesItemLineDetail"
;           }, 
;           {
;             "DetailType": "SubTotalLineDetail", 
;             "Amount": 150.0, 
;             "SubTotalLineDetail": {}
;           }
;         ], 
;         "ApplyTaxAfterDiscount": false, 
;         "CustomField": [
;           {
;             "DefinitionId": "1", 
;             "Type": "StringType", 
;             "Name": "Crew #"
;           }
;         ], 
;         "Id": "239", 
;         "TxnTaxDetail": {
;           "TotalTax": 0
;         }, 
;         "MetaData": {
;           "CreateTime": "2015-07-24T10:35:08-07:00", 
;           "LastUpdatedTime": "2015-07-24T10:35:08-07:00"
;         }
;       }
;     ]
;   }, 
;   "time": "2015-07-24T10:38:50.01-07:00"
; }

Local $sDocNumber
Local $sSyncToken
Local $sDomain
Local $sBalance
Local $sBillAddrCity
Local $sBillAddrLine1
Local $sBillAddrPostalCode
Local $sBillAddrLat
Local $sBillAddrLong
Local $sBillAddrCountrySubDivisionCode
Local $sBillAddrId
Local $sTxnDate
Local $sTotalAmt
Local $sCustomerRefName
Local $sCustomerRefValue
Local $sShipAddrCity
Local $sShipAddrLine1
Local $sShipAddrPostalCode
Local $sShipAddrLat
Local $sShipAddrLong
Local $sShipAddrCountrySubDivisionCode
Local $sShipAddrId
Local $sDueDate
Local $sPrintStatus
Local $iDeposit
Local $bSparse
Local $sEmailStatus
Local $bApplyTaxAfterDiscount
Local $sId
Local $iTxnTaxDetailTotalTax
Local $sMetaDataCreateTime
Local $sMetaDataLastUpdatedTime
Local $iJ
Local $iCount_j
Local $iLineNum
Local $sAmount
Local $sSalesItemLineDetailTaxCodeRefValue
Local $sSalesItemLineDetailItemRefName
Local $sSalesItemLineDetailItemRefValue
Local $sDetailType
Local $sDefinitionId
Local $sInvType
Local $sName

Local $iQueryResponseStartPosition = $oJson.IntOf("QueryResponse.startPosition")
Local $iQueryResponseTotalCount = $oJson.IntOf("QueryResponse.totalCount")
Local $iQueryResponseMaxResults = $oJson.IntOf("QueryResponse.maxResults")
Local $sTime = $oJson.StringOf("time")
Local $i = 0
Local $iCount_i = $oJson.SizeOfArray("QueryResponse.Invoice")
While $i < $iCount_i
    $oJson.I = $i
    $sDocNumber = $oJson.StringOf("QueryResponse.Invoice[i].DocNumber")
    $sSyncToken = $oJson.StringOf("QueryResponse.Invoice[i].SyncToken")
    $sDomain = $oJson.StringOf("QueryResponse.Invoice[i].domain")
    $sBalance = $oJson.StringOf("QueryResponse.Invoice[i].Balance")
    $sBillAddrCity = $oJson.StringOf("QueryResponse.Invoice[i].BillAddr.City")
    $sBillAddrLine1 = $oJson.StringOf("QueryResponse.Invoice[i].BillAddr.Line1")
    $sBillAddrPostalCode = $oJson.StringOf("QueryResponse.Invoice[i].BillAddr.PostalCode")
    $sBillAddrLat = $oJson.StringOf("QueryResponse.Invoice[i].BillAddr.Lat")
    $sBillAddrLong = $oJson.StringOf("QueryResponse.Invoice[i].BillAddr.Long")
    $sBillAddrCountrySubDivisionCode = $oJson.StringOf("QueryResponse.Invoice[i].BillAddr.CountrySubDivisionCode")
    $sBillAddrId = $oJson.StringOf("QueryResponse.Invoice[i].BillAddr.Id")
    $sTxnDate = $oJson.StringOf("QueryResponse.Invoice[i].TxnDate")
    $sTotalAmt = $oJson.StringOf("QueryResponse.Invoice[i].TotalAmt")
    $sCustomerRefName = $oJson.StringOf("QueryResponse.Invoice[i].CustomerRef.name")
    $sCustomerRefValue = $oJson.StringOf("QueryResponse.Invoice[i].CustomerRef.value")
    $sShipAddrCity = $oJson.StringOf("QueryResponse.Invoice[i].ShipAddr.City")
    $sShipAddrLine1 = $oJson.StringOf("QueryResponse.Invoice[i].ShipAddr.Line1")
    $sShipAddrPostalCode = $oJson.StringOf("QueryResponse.Invoice[i].ShipAddr.PostalCode")
    $sShipAddrLat = $oJson.StringOf("QueryResponse.Invoice[i].ShipAddr.Lat")
    $sShipAddrLong = $oJson.StringOf("QueryResponse.Invoice[i].ShipAddr.Long")
    $sShipAddrCountrySubDivisionCode = $oJson.StringOf("QueryResponse.Invoice[i].ShipAddr.CountrySubDivisionCode")
    $sShipAddrId = $oJson.StringOf("QueryResponse.Invoice[i].ShipAddr.Id")
    $sDueDate = $oJson.StringOf("QueryResponse.Invoice[i].DueDate")
    $sPrintStatus = $oJson.StringOf("QueryResponse.Invoice[i].PrintStatus")
    $iDeposit = $oJson.IntOf("QueryResponse.Invoice[i].Deposit")
    $bSparse = $oJson.BoolOf("QueryResponse.Invoice[i].sparse")
    $sEmailStatus = $oJson.StringOf("QueryResponse.Invoice[i].EmailStatus")
    $bApplyTaxAfterDiscount = $oJson.BoolOf("QueryResponse.Invoice[i].ApplyTaxAfterDiscount")
    $sId = $oJson.StringOf("QueryResponse.Invoice[i].Id")
    $iTxnTaxDetailTotalTax = $oJson.IntOf("QueryResponse.Invoice[i].TxnTaxDetail.TotalTax")
    $sMetaDataCreateTime = $oJson.StringOf("QueryResponse.Invoice[i].MetaData.CreateTime")
    $sMetaDataLastUpdatedTime = $oJson.StringOf("QueryResponse.Invoice[i].MetaData.LastUpdatedTime")
    $iJ = 0
    $iCount_j = $oJson.SizeOfArray("QueryResponse.Invoice[i].LinkedTxn")
    While $iJ < $iCount_j
        $oJson.J = $iJ
        $iJ = $iJ + 1
    Wend
    $iJ = 0
    $iCount_j = $oJson.SizeOfArray("QueryResponse.Invoice[i].Line")
    While $iJ < $iCount_j
        $oJson.J = $iJ
        $iLineNum = $oJson.IntOf("QueryResponse.Invoice[i].Line[j].LineNum")
        $sAmount = $oJson.StringOf("QueryResponse.Invoice[i].Line[j].Amount")
        $sSalesItemLineDetailTaxCodeRefValue = $oJson.StringOf("QueryResponse.Invoice[i].Line[j].SalesItemLineDetail.TaxCodeRef.value")
        $sSalesItemLineDetailItemRefName = $oJson.StringOf("QueryResponse.Invoice[i].Line[j].SalesItemLineDetail.ItemRef.name")
        $sSalesItemLineDetailItemRefValue = $oJson.StringOf("QueryResponse.Invoice[i].Line[j].SalesItemLineDetail.ItemRef.value")
        $sId = $oJson.StringOf("QueryResponse.Invoice[i].Line[j].Id")
        $sDetailType = $oJson.StringOf("QueryResponse.Invoice[i].Line[j].DetailType")
        $iJ = $iJ + 1
    Wend
    $iJ = 0
    $iCount_j = $oJson.SizeOfArray("QueryResponse.Invoice[i].CustomField")
    While $iJ < $iCount_j
        $oJson.J = $iJ
        $sDefinitionId = $oJson.StringOf("QueryResponse.Invoice[i].CustomField[j].DefinitionId")
        $sInvType = $oJson.StringOf("QueryResponse.Invoice[i].CustomField[j].Type")
        $sName = $oJson.StringOf("QueryResponse.Invoice[i].CustomField[j].Name")
        $iJ = $iJ + 1
    Wend
    $i = $i + 1
Wend