Sample code for 30+ languages & platforms
Go

Quickbooks Query an Invoice

See more QuickBooks Examples

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

Chilkat Go Downloads

Go
    success := 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.
    jsonToken := chilkat.NewJsonObject()
    success = jsonToken.LoadFile("qa_data/tokens/qb-access-token.json")

    rest := chilkat.NewRest()

    bTls := true
    port := 443
    bAutoReconnect := true
    success = rest.Connect("sandbox-quickbooks.api.intuit.com",port,bTls,bAutoReconnect)

    sbAuth := chilkat.NewStringBuilder()
    sbAuth.Append("Bearer ")
    sbAuth.Append(*jsonToken.StringOf("access_token"))
    rest.SetAuthorization(sbAuth.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..
    rest.RemoveHeader("Content-Type")

    rest.AddHeader("Accept","application/json")
    rest.SetAllowHeaderFolding(false)

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

    sbResponseBody := chilkat.NewStringBuilder()
    success = rest.FullRequestNoBodySb("GET","/v3/company/<realmID>/invoice",sbResponseBody)
    if success != true {
        fmt.Println(rest.LastErrorText())
        jsonToken.DisposeJsonObject()
        rest.DisposeRest()
        sbAuth.DisposeStringBuilder()
        sbResponseBody.DisposeStringBuilder()
        return
    }

    respStatusCode := rest.ResponseStatusCode()
    if respStatusCode >= 400 {
        fmt.Println("Response Status Code = ", respStatusCode)
        fmt.Println("Response Header:")
        fmt.Println(rest.ResponseHeader())
        fmt.Println("Response Body:")
        fmt.Println(*sbResponseBody.GetAsString())
        jsonToken.DisposeJsonObject()
        rest.DisposeRest()
        sbAuth.DisposeStringBuilder()
        sbResponseBody.DisposeStringBuilder()
        return
    }

    // Success is indicated by a 200 response status.
    fmt.Println("response status code = ", respStatusCode)

    json := chilkat.NewJsonObject()
    json.LoadSb(sbResponseBody)
    json.SetEmitCompact(false)
    fmt.Println(*json.Emit())

    // 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"
    // }

    var DocNumber *string = new(string)
    var SyncToken *string = new(string)
    var domain *string = new(string)
    var Balance *string = new(string)
    var BillAddrCity *string = new(string)
    var BillAddrLine1 *string = new(string)
    var BillAddrPostalCode *string = new(string)
    var BillAddrLat *string = new(string)
    var BillAddrLong *string = new(string)
    var BillAddrCountrySubDivisionCode *string = new(string)
    var BillAddrId *string = new(string)
    var TxnDate *string = new(string)
    var TotalAmt *string = new(string)
CustomerRef    var Name *string = new(string)
    var CustomerRefValue *string = new(string)
    var ShipAddrCity *string = new(string)
    var ShipAddrLine1 *string = new(string)
    var ShipAddrPostalCode *string = new(string)
    var ShipAddrLat *string = new(string)
    var ShipAddrLong *string = new(string)
    var ShipAddrCountrySubDivisionCode *string = new(string)
ShipAddr    var Id *string = new(string)
    var DueDate *string = new(string)
    var PrintStatus *string = new(string)
    var Deposit int
    var sparse bool
    var EmailStatus *string = new(string)
    var ApplyTaxAfterDiscount bool
    var Id *string = new(string)
    var TxnTaxDetailTotalTax int
    var MetaDataCreateTime *string = new(string)
    var MetaDataLastUpdatedTime *string = new(string)
    var j int
    var count_j int
    var LineNum int
    var Amount *string = new(string)
    var SalesItemLineDetailTaxCodeRefValue *string = new(string)
SalesItemLineDetailItemRef    var Name *string = new(string)
    var SalesItemLineDetailItemRefValue *string = new(string)
    var DetailType *string = new(string)
Definition    var Id *string = new(string)
    var invType *string = new(string)
    var Name *string = new(string)

    QueryResponseStartPosition := json.IntOf("QueryResponse.startPosition")
    QueryResponseTotalCount := json.IntOf("QueryResponse.totalCount")
    QueryResponseMaxResults := json.IntOf("QueryResponse.maxResults")
    time := json.StringOf("time")
    i := 0
    count_i := json.SizeOfArray("QueryResponse.Invoice")
    for i < count_i {
        json.SetI(i)
        DocNumber = json.StringOf("QueryResponse.Invoice[i].DocNumber")
        SyncToken = json.StringOf("QueryResponse.Invoice[i].SyncToken")
        domain = json.StringOf("QueryResponse.Invoice[i].domain")
        Balance = json.StringOf("QueryResponse.Invoice[i].Balance")
        BillAddrCity = json.StringOf("QueryResponse.Invoice[i].BillAddr.City")
        BillAddrLine1 = json.StringOf("QueryResponse.Invoice[i].BillAddr.Line1")
        BillAddrPostalCode = json.StringOf("QueryResponse.Invoice[i].BillAddr.PostalCode")
        BillAddrLat = json.StringOf("QueryResponse.Invoice[i].BillAddr.Lat")
        BillAddrLong = json.StringOf("QueryResponse.Invoice[i].BillAddr.Long")
        BillAddrCountrySubDivisionCode = json.StringOf("QueryResponse.Invoice[i].BillAddr.CountrySubDivisionCode")
        BillAddrId = json.StringOf("QueryResponse.Invoice[i].BillAddr.Id")
        TxnDate = json.StringOf("QueryResponse.Invoice[i].TxnDate")
        TotalAmt = json.StringOf("QueryResponse.Invoice[i].TotalAmt")
        CustomerRefName = json.StringOf("QueryResponse.Invoice[i].CustomerRef.name")
        CustomerRefValue = json.StringOf("QueryResponse.Invoice[i].CustomerRef.value")
        ShipAddrCity = json.StringOf("QueryResponse.Invoice[i].ShipAddr.City")
        ShipAddrLine1 = json.StringOf("QueryResponse.Invoice[i].ShipAddr.Line1")
        ShipAddrPostalCode = json.StringOf("QueryResponse.Invoice[i].ShipAddr.PostalCode")
        ShipAddrLat = json.StringOf("QueryResponse.Invoice[i].ShipAddr.Lat")
        ShipAddrLong = json.StringOf("QueryResponse.Invoice[i].ShipAddr.Long")
        ShipAddrCountrySubDivisionCode = json.StringOf("QueryResponse.Invoice[i].ShipAddr.CountrySubDivisionCode")
        ShipAddrId = json.StringOf("QueryResponse.Invoice[i].ShipAddr.Id")
        DueDate = json.StringOf("QueryResponse.Invoice[i].DueDate")
        PrintStatus = json.StringOf("QueryResponse.Invoice[i].PrintStatus")
        Deposit = json.IntOf("QueryResponse.Invoice[i].Deposit")
        sparse = json.BoolOf("QueryResponse.Invoice[i].sparse")
        EmailStatus = json.StringOf("QueryResponse.Invoice[i].EmailStatus")
        ApplyTaxAfterDiscount = json.BoolOf("QueryResponse.Invoice[i].ApplyTaxAfterDiscount")
        Id = json.StringOf("QueryResponse.Invoice[i].Id")
        TxnTaxDetailTotalTax = json.IntOf("QueryResponse.Invoice[i].TxnTaxDetail.TotalTax")
        MetaDataCreateTime = json.StringOf("QueryResponse.Invoice[i].MetaData.CreateTime")
        MetaDataLastUpdatedTime = json.StringOf("QueryResponse.Invoice[i].MetaData.LastUpdatedTime")
        j = 0
        count_j = json.SizeOfArray("QueryResponse.Invoice[i].LinkedTxn")
        for j < count_j {
            json.SetJ(j)
            j = j + 1
        }

        j = 0
        count_j = json.SizeOfArray("QueryResponse.Invoice[i].Line")
        for j < count_j {
            json.SetJ(j)
            LineNum = json.IntOf("QueryResponse.Invoice[i].Line[j].LineNum")
            Amount = json.StringOf("QueryResponse.Invoice[i].Line[j].Amount")
            SalesItemLineDetailTaxCodeRefValue = json.StringOf("QueryResponse.Invoice[i].Line[j].SalesItemLineDetail.TaxCodeRef.value")
            SalesItemLineDetailItemRefName = json.StringOf("QueryResponse.Invoice[i].Line[j].SalesItemLineDetail.ItemRef.name")
            SalesItemLineDetailItemRefValue = json.StringOf("QueryResponse.Invoice[i].Line[j].SalesItemLineDetail.ItemRef.value")
            Id = json.StringOf("QueryResponse.Invoice[i].Line[j].Id")
            DetailType = json.StringOf("QueryResponse.Invoice[i].Line[j].DetailType")
            j = j + 1
        }

        j = 0
        count_j = json.SizeOfArray("QueryResponse.Invoice[i].CustomField")
        for j < count_j {
            json.SetJ(j)
            DefinitionId = json.StringOf("QueryResponse.Invoice[i].CustomField[j].DefinitionId")
            invType = json.StringOf("QueryResponse.Invoice[i].CustomField[j].Type")
            Name = json.StringOf("QueryResponse.Invoice[i].CustomField[j].Name")
            j = j + 1
        }

        i = i + 1
    }


    jsonToken.DisposeJsonObject()
    rest.DisposeRest()
    sbAuth.DisposeStringBuilder()
    sbResponseBody.DisposeStringBuilder()
    json.DisposeJsonObject()