Sample code for 30+ languages & platforms
Java

Quickbooks Update an Invoice

See more QuickBooks Examples

Demonstrates how to update an invoice using the Quickbooks REST API.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.JsonObject;
import com.chilkatsoft.chilkat2.Rest;
import com.chilkatsoft.chilkat2.StringBuilder;

public class ChilkatExample {

    public static void main(String[] args) {
        // 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.
        JsonObject jsonToken = new JsonObject();
        jsonToken.loadFile("qa_data/tokens/qb-access-token.json");

        Rest rest = new Rest();

        // Connect to the REST server.
        boolean bTls = true;
        int port = 443;
        boolean bAutoReconnect = true;
        rest.connect("sandbox-quickbooks.api.intuit.com", port, bTls, bAutoReconnect);

        StringBuilder sbAuth = new StringBuilder();
        sbAuth.append("Bearer ");
        sbAuth.append(jsonToken.stringOf("access_token"));
        rest.setAuthorization(sbAuth.getAsString());

        // --------------------------------------------------------------------------
        // Note: The above code to setup the initial REST connection
        // can be done once.  After connecting, any number of REST calls can be made.
        // If the connection is lost, the next REST method call will automatically
        // reconnect if needed.
        // --------------------------------------------------------------------------

        // Create the following JSON:

        // {
        //   "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"
        //   },
        //   "CustomerMemo": {
        //     "value": "Added customer memo."
        //   },
        //   "ShipAddr": {
        //     "City": "Bayshore",
        //     "Line1": "4581 Finch St.",
        //     "PostalCode": "94326",
        //     "Lat": "INVALID",
        //     "Long": "INVALID",
        //     "CountrySubDivisionCode": "CA",
        //     "Id": "109"
        //   },
        //   "LinkedTxn": [
        //   ],
        //   "DueDate": "2015-08-23",
        //   "PrintStatus": "NeedToPrint",
        //   "EmailStatus": "NotSet",
        //   "sparse": false,
        //   "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"
        //   }
        // }
        //
        // Use the this online tool to generate the code from sample JSON:
        // Generate Code to Create JSON

        JsonObject jsonReq = new JsonObject();
        jsonReq.updateString("DocNumber", "1070");
        jsonReq.updateString("SyncToken", "0");
        jsonReq.updateString("domain", "QBO");
        jsonReq.updateNumber("Balance", "150.0");
        jsonReq.updateString("BillAddr.City", "Bayshore");
        jsonReq.updateString("BillAddr.Line1", "4581 Finch St.");
        jsonReq.updateString("BillAddr.PostalCode", "94326");
        jsonReq.updateString("BillAddr.Lat", "INVALID");
        jsonReq.updateString("BillAddr.Long", "INVALID");
        jsonReq.updateString("BillAddr.CountrySubDivisionCode", "CA");
        jsonReq.updateString("BillAddr.Id", "2");
        jsonReq.updateString("TxnDate", "2015-07-24");
        jsonReq.updateNumber("TotalAmt", "150.0");
        jsonReq.updateString("CustomerRef.name", "Amy's Bird Sanctuary");
        jsonReq.updateString("CustomerRef.value", "1");
        jsonReq.updateString("CustomerMemo.value", "Added customer memo.");
        jsonReq.updateString("ShipAddr.City", "Bayshore");
        jsonReq.updateString("ShipAddr.Line1", "4581 Finch St.");
        jsonReq.updateString("ShipAddr.PostalCode", "94326");
        jsonReq.updateString("ShipAddr.Lat", "INVALID");
        jsonReq.updateString("ShipAddr.Long", "INVALID");
        jsonReq.updateString("ShipAddr.CountrySubDivisionCode", "CA");
        jsonReq.updateString("ShipAddr.Id", "109");
        jsonReq.updateNewArray("LinkedTxn");
        jsonReq.updateString("DueDate", "2015-08-23");
        jsonReq.updateString("PrintStatus", "NeedToPrint");
        jsonReq.updateString("EmailStatus", "NotSet");
        jsonReq.updateBool("sparse", false);
        jsonReq.updateInt("Line[0].LineNum", 1);
        jsonReq.updateNumber("Line[0].Amount", "150.0");
        jsonReq.updateString("Line[0].SalesItemLineDetail.TaxCodeRef.value", "NON");
        jsonReq.updateString("Line[0].SalesItemLineDetail.ItemRef.name", "Services");
        jsonReq.updateString("Line[0].SalesItemLineDetail.ItemRef.value", "1");
        jsonReq.updateString("Line[0].Id", "1");
        jsonReq.updateString("Line[0].DetailType", "SalesItemLineDetail");
        jsonReq.updateString("Line[1].DetailType", "SubTotalLineDetail");
        jsonReq.updateNumber("Line[1].Amount", "150.0");
        jsonReq.updateNewObject("Line[1].SubTotalLineDetail");
        jsonReq.updateBool("ApplyTaxAfterDiscount", false);
        jsonReq.updateString("CustomField[0].DefinitionId", "1");
        jsonReq.updateString("CustomField[0].Type", "StringType");
        jsonReq.updateString("CustomField[0].Name", "Crew #");
        jsonReq.updateString("Id", "239");
        jsonReq.updateInt("TxnTaxDetail.TotalTax", 0);
        jsonReq.updateString("MetaData.CreateTime", "2015-07-24T10:35:08-07:00");
        jsonReq.updateString("MetaData.LastUpdatedTime", "2015-07-24T10:35:08-07:00");

        StringBuilder sbRequestBody = new StringBuilder();
        jsonReq.emitSb(sbRequestBody);

        rest.addHeader("Content-Type", "application/json");
        rest.addHeader("Accept", "application/json");
        rest.setAllowHeaderFolding(false);

        StringBuilder sbResponseBody = new StringBuilder();
        try {
            rest.fullRequestSb("POST", "/v3/company/<realmID>/invoice", sbRequestBody, sbResponseBody);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        int respStatusCode = rest.getResponseStatusCode();

        // Success is indicated by a 200 response status code.
        System.out.println("response status code = " + respStatusCode);

        JsonObject jsonResponse = new JsonObject();
        jsonResponse.loadSb(sbResponseBody);
        jsonResponse.setEmitCompact(false);
        System.out.println(jsonResponse.emit());

        if (rest.getResponseStatusCode() != 200) {
            System.out.println("Failed.");
            return;
        }

        // Sample output...
        // (See the parsing code below..)
        //
        // Use the this online tool to generate parsing code from sample JSON:
        // Generate Parsing Code from JSON

        // {
        //   "Invoice": {
        //     "TxnDate": "2015-07-24",
        //     "domain": "QBO",
        //     "PrintStatus": "NeedToPrint",
        //     "TotalAmt": 150.0,
        //     "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": {}
        //       }
        //     ],
        //     "DueDate": "2015-08-23",
        //     "ApplyTaxAfterDiscount": false,
        //     "DocNumber": "1070",
        //     "sparse": false,
        //     "CustomerMemo": {
        //       "value": "Added customer memo."
        //     },
        //     "Deposit": 0,
        //     "Balance": 150.0,
        //     "CustomerRef": {
        //       "name": "Amy's Bird Sanctuary",
        //       "value": "1"
        //     },
        //     "TxnTaxDetail": {
        //       "TotalTax": 0
        //     },
        //     "SyncToken": "1",
        //     "LinkedTxn": [
        //     ],
        //     "ShipAddr": {
        //       "CountrySubDivisionCode": "CA",
        //       "City": "Bayshore",
        //       "PostalCode": "94326",
        //       "Id": "118",
        //       "Line1": "4581 Finch St."
        //     },
        //     "EmailStatus": "NotSet",
        //     "BillAddr": {
        //       "CountrySubDivisionCode": "CA",
        //       "City": "Bayshore",
        //       "PostalCode": "94326",
        //       "Id": "117",
        //       "Line1": "4581 Finch St."
        //     },
        //     "MetaData": {
        //       "CreateTime": "2015-07-24T10:35:08-07:00",
        //       "LastUpdatedTime": "2015-07-24T10:53:39-07:00"
        //     },
        //     "CustomField": [
        //       {
        //         "DefinitionId": "1",
        //         "Type": "StringType",
        //         "Name": "Crew #"
        //       }
        //     ],
        //     "Id": "239"
        //   },
        //   "time": "2015-07-24T10:53:39.287-07:00"
        // }
        //

        int LineNum = 0;
        String Amount = "";
        String SalesItemLineDetailTaxCodeRefValue = "";
        String SalesItemLineDetailItemRefName = "";
        String SalesItemLineDetailItemRefValue = "";
        String Id = "";
        String DetailType = "";
        String DefinitionId = "";
        String invType = "";
        String Name = "";

        String InvoiceTxnDate = jsonResponse.stringOf("Invoice.TxnDate");
        String InvoiceDomain = jsonResponse.stringOf("Invoice.domain");
        String InvoicePrintStatus = jsonResponse.stringOf("Invoice.PrintStatus");
        String InvoiceTotalAmt = jsonResponse.stringOf("Invoice.TotalAmt");
        String InvoiceDueDate = jsonResponse.stringOf("Invoice.DueDate");
        boolean InvoiceApplyTaxAfterDiscount = jsonResponse.boolOf("Invoice.ApplyTaxAfterDiscount");
        String InvoiceDocNumber = jsonResponse.stringOf("Invoice.DocNumber");
        boolean InvoiceSparse = jsonResponse.boolOf("Invoice.sparse");
        String InvoiceCustomerMemoValue = jsonResponse.stringOf("Invoice.CustomerMemo.value");
        int InvoiceDeposit = jsonResponse.intOf("Invoice.Deposit");
        String InvoiceBalance = jsonResponse.stringOf("Invoice.Balance");
        String InvoiceCustomerRefName = jsonResponse.stringOf("Invoice.CustomerRef.name");
        String InvoiceCustomerRefValue = jsonResponse.stringOf("Invoice.CustomerRef.value");
        int InvoiceTxnTaxDetailTotalTax = jsonResponse.intOf("Invoice.TxnTaxDetail.TotalTax");
        String InvoiceSyncToken = jsonResponse.stringOf("Invoice.SyncToken");
        String InvoiceShipAddrCountrySubDivisionCode = jsonResponse.stringOf("Invoice.ShipAddr.CountrySubDivisionCode");
        String InvoiceShipAddrCity = jsonResponse.stringOf("Invoice.ShipAddr.City");
        String InvoiceShipAddrPostalCode = jsonResponse.stringOf("Invoice.ShipAddr.PostalCode");
        String InvoiceShipAddrId = jsonResponse.stringOf("Invoice.ShipAddr.Id");
        String InvoiceShipAddrLine1 = jsonResponse.stringOf("Invoice.ShipAddr.Line1");
        String InvoiceEmailStatus = jsonResponse.stringOf("Invoice.EmailStatus");
        String InvoiceBillAddrCountrySubDivisionCode = jsonResponse.stringOf("Invoice.BillAddr.CountrySubDivisionCode");
        String InvoiceBillAddrCity = jsonResponse.stringOf("Invoice.BillAddr.City");
        String InvoiceBillAddrPostalCode = jsonResponse.stringOf("Invoice.BillAddr.PostalCode");
        String InvoiceBillAddrId = jsonResponse.stringOf("Invoice.BillAddr.Id");
        String InvoiceBillAddrLine1 = jsonResponse.stringOf("Invoice.BillAddr.Line1");
        String InvoiceMetaDataCreateTime = jsonResponse.stringOf("Invoice.MetaData.CreateTime");
        String InvoiceMetaDataLastUpdatedTime = jsonResponse.stringOf("Invoice.MetaData.LastUpdatedTime");
        String InvoiceId = jsonResponse.stringOf("Invoice.Id");
        String time = jsonResponse.stringOf("time");
        int i = 0;
        int count_i = jsonResponse.sizeOfArray("Invoice.Line");
        while (i < count_i) {
            jsonResponse.setI(i);
            LineNum = jsonResponse.intOf("Invoice.Line[i].LineNum");
            Amount = jsonResponse.stringOf("Invoice.Line[i].Amount");
            SalesItemLineDetailTaxCodeRefValue = jsonResponse.stringOf("Invoice.Line[i].SalesItemLineDetail.TaxCodeRef.value");
            SalesItemLineDetailItemRefName = jsonResponse.stringOf("Invoice.Line[i].SalesItemLineDetail.ItemRef.name");
            SalesItemLineDetailItemRefValue = jsonResponse.stringOf("Invoice.Line[i].SalesItemLineDetail.ItemRef.value");
            Id = jsonResponse.stringOf("Invoice.Line[i].Id");
            DetailType = jsonResponse.stringOf("Invoice.Line[i].DetailType");
            i = i + 1;
        }

        i = 0;
        count_i = jsonResponse.sizeOfArray("Invoice.LinkedTxn");
        while (i < count_i) {
            jsonResponse.setI(i);
            i = i + 1;
        }

        i = 0;
        count_i = jsonResponse.sizeOfArray("Invoice.CustomField");
        while (i < count_i) {
            jsonResponse.setI(i);
            DefinitionId = jsonResponse.stringOf("Invoice.CustomField[i].DefinitionId");
            invType = jsonResponse.stringOf("Invoice.CustomField[i].Type");
            Name = jsonResponse.stringOf("Invoice.CustomField[i].Name");
            i = i + 1;
        }
    }
}