Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PowerShell) Quickbooks Send an InvoiceDemonstrates how to send an invoice using the Quickbooks REST API. For more information, see https://www.developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/invoice#send-an-invoice
Add-Type -Path "C:\chilkat\ChilkatDotNet47-9.5.0-x64\ChilkatDotNet47.dll" # 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 = New-Object Chilkat.JsonObject $success = $jsonToken.LoadFile("qa_data/tokens/qb-access-token.json") $rest = New-Object Chilkat.Rest # Connect to the REST server. $bTls = $true $port = 443 $bAutoReconnect = $true $success = $rest.Connect("sandbox-quickbooks.api.intuit.com",$port,$bTls,$bAutoReconnect) $sbAuth = New-Object Chilkat.StringBuilder $sbAuth.Append("Bearer ") $sbAuth.Append($jsonToken.StringOf("access_token")) $rest.Authorization = $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. # -------------------------------------------------------------------------- # Technically, the POST has an empty request body, but the Quickbooks documentation indicates that # the Content-Type header should be set to "application/octet-stream", which really makes no sense # because there is not content. (How can no content have a type???) $rest.AddHeader("Content-Type","application/octet-stream") $rest.AllowHeaderFolding = $false $sbResponseBody = New-Object Chilkat.StringBuilder $success = $rest.FullRequestNoBodySb("POST","/v3/company/<realmID>/invoice/<invoiceId>/send?sendTo=<emailAddr>",$sbResponseBody) if ($success -ne $true) { $($rest.LastErrorText) exit } $respStatusCode = $rest.ResponseStatusCode # Success is indicated by a 200 response status code. $("response status code = " + $respStatusCode) $jsonResponse = New-Object Chilkat.JsonObject $jsonResponse.LoadSb($sbResponseBody) $jsonResponse.EmitCompact = $false $($jsonResponse.Emit()) if ($rest.ResponseStatusCode -ne 200) { $("Failed.") exit } # 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": "2013-03-14", # "domain": "QBO", # "CurrencyRef": { # "name": "United States Dollar", # "value": "USD" # }, # "ShipDate": "2013-03-01", # "TrackingNum": "123456789", # "ClassRef": { # "name": "Class 1", # "value": "200900000000000003901" # }, # "PrintStatus": "NeedToPrint", # "SalesTermRef": { # "value": "4" # }, # "DeliveryInfo": { # "DeliveryType": "Email", # "DeliveryTime": "2014-12-17T11:50:52-08:00" # }, # "TotalAmt": 52.0, # "Line": [ # { # "Description": "Sample invoice create request", # "DetailType": "SalesItemLineDetail", # "SalesItemLineDetail": { # "TaxCodeRef": { # "value": "TAX" # }, # "Qty": 1, # "UnitPrice": 50, # "ServiceDate": "2013-03-04", # "ItemRef": { # "name": "Hours", # "value": "2" # } # }, # "LineNum": 1, # "Amount": 50.0, # "Id": "1" # }, # { # "DetailType": "SubTotalLineDetail", # "Amount": 50.0, # "SubTotalLineDetail": {} # }, # { # "DetailType": "DiscountLineDetail", # "Amount": 5.0, # "DiscountLineDetail": { # "DiscountAccountRef": { # "name": "Discounts given", # "value": "30" # }, # "PercentBased": true, # "DiscountPercent": 10 # } # }, # { # "DetailType": "SalesItemLineDetail", # "Amount": 2.0, # "SalesItemLineDetail": { # "ItemRef": { # "value": "SHIPPING_ITEM_ID" # } # } # } # ], # "DueDate": "2013-05-13", # "MetaData": { # "CreateTime": "2013-03-14T01:42:16-07:00", # "LastUpdatedTime": "2014-12-17T11:50:58-08:00" # }, # "DocNumber": "Sample_Inv#2", # "PrivateNote": "Summary for sample invoice", # "sparse": false, # "DepositToAccountRef": { # "name": "Undeposited Funds", # "value": "4" # }, # "CustomerMemo": { # "value": "This is the customer message" # }, # "EmailStatus": "EmailSent", # "Deposit": 12.0, # "Balance": 40.0, # "CustomerRef": { # "name": "Mr V3 Service Customer Jr2", # "value": "15" # }, # "TxnTaxDetail": { # "TxnTaxCodeRef": { # "value": "5" # }, # "TotalTax": 5.0, # "TaxLine": [ # { # "DetailType": "TaxLineDetail", # "Amount": 5.0, # "TaxLineDetail": { # "NetAmountTaxable": 50.0, # "TaxPercent": 10, # "TaxRateRef": { # "value": "2" # }, # "PercentBased": true # } # } # ] # }, # "SyncToken": "0", # "BillEmail": { # "Address": "test@intuit.com" # }, # "ShipAddr": { # "City": "San Jose", # "Country": "USA", # "Line5": "Cube 999", # "Line4": "Dept 12", # "Line3": "123 street", # "Line2": "Building 1", # "Line1": "Intuit", # "PostalCode": "95123", # "Lat": "37.2374847", # "Long": "-121.8277925", # "CountrySubDivisionCode": "CA", # "Id": "36" # }, # "DepartmentRef": { # "name": "Mountain View", # "value": "1" # }, # "ShipMethodRef": { # "name": "UPS", # "value": "UPS" # }, # "BillAddr": { # "City": "Mountain View", # "Country": "USA", # "Line5": "Cube 999", # "Line4": "Dept 12", # "Line3": "123 street", # "Line2": "Building 1", # "Line1": "Google", # "PostalCode": "95123", # "Lat": "37.2374847", # "Long": "-121.8277925", # "CountrySubDivisionCode": "CA", # "Id": "35" # }, # "ApplyTaxAfterDiscount": false, # "CustomField": [ # { # "StringValue": "Custom1", # "Type": "StringType", # "Name": "Custom 1" # }, # { # "StringValue": "Custom2", # "Type": "StringType", # "Name": "Custom 2" # }, # { # "StringValue": "Custom3", # "Type": "StringType", # "Name": "Custom 3" # } # ], # "Id": "96" # }, # "time": "2013-03-14T13:32:04.895-07:00" # } # $InvoiceTxnDate = $jsonResponse.StringOf("Invoice.TxnDate") $InvoiceDomain = $jsonResponse.StringOf("Invoice.domain") $InvoiceCurrencyRefName = $jsonResponse.StringOf("Invoice.CurrencyRef.name") $InvoiceCurrencyRefValue = $jsonResponse.StringOf("Invoice.CurrencyRef.value") $InvoiceShipDate = $jsonResponse.StringOf("Invoice.ShipDate") $InvoiceTrackingNum = $jsonResponse.StringOf("Invoice.TrackingNum") $InvoiceClassRefName = $jsonResponse.StringOf("Invoice.ClassRef.name") $InvoiceClassRefValue = $jsonResponse.StringOf("Invoice.ClassRef.value") $InvoicePrintStatus = $jsonResponse.StringOf("Invoice.PrintStatus") $InvoiceSalesTermRefValue = $jsonResponse.StringOf("Invoice.SalesTermRef.value") $InvoiceDeliveryInfoDeliveryType = $jsonResponse.StringOf("Invoice.DeliveryInfo.DeliveryType") $InvoiceDeliveryInfoDeliveryTime = $jsonResponse.StringOf("Invoice.DeliveryInfo.DeliveryTime") $InvoiceTotalAmt = $jsonResponse.StringOf("Invoice.TotalAmt") $InvoiceDueDate = $jsonResponse.StringOf("Invoice.DueDate") $InvoiceMetaDataCreateTime = $jsonResponse.StringOf("Invoice.MetaData.CreateTime") $InvoiceMetaDataLastUpdatedTime = $jsonResponse.StringOf("Invoice.MetaData.LastUpdatedTime") $InvoiceDocNumber = $jsonResponse.StringOf("Invoice.DocNumber") $InvoicePrivateNote = $jsonResponse.StringOf("Invoice.PrivateNote") $InvoiceSparse = $jsonResponse.BoolOf("Invoice.sparse") $InvoiceDepositToAccountRefName = $jsonResponse.StringOf("Invoice.DepositToAccountRef.name") $InvoiceDepositToAccountRefValue = $jsonResponse.StringOf("Invoice.DepositToAccountRef.value") $InvoiceCustomerMemoValue = $jsonResponse.StringOf("Invoice.CustomerMemo.value") $InvoiceEmailStatus = $jsonResponse.StringOf("Invoice.EmailStatus") $InvoiceDeposit = $jsonResponse.StringOf("Invoice.Deposit") $InvoiceBalance = $jsonResponse.StringOf("Invoice.Balance") $InvoiceCustomerRefName = $jsonResponse.StringOf("Invoice.CustomerRef.name") $InvoiceCustomerRefValue = $jsonResponse.StringOf("Invoice.CustomerRef.value") $InvoiceTxnTaxDetailTxnTaxCodeRefValue = $jsonResponse.StringOf("Invoice.TxnTaxDetail.TxnTaxCodeRef.value") $InvoiceTxnTaxDetailTotalTax = $jsonResponse.StringOf("Invoice.TxnTaxDetail.TotalTax") $InvoiceSyncToken = $jsonResponse.StringOf("Invoice.SyncToken") $InvoiceBillEmailAddress = $jsonResponse.StringOf("Invoice.BillEmail.Address") $InvoiceShipAddrCity = $jsonResponse.StringOf("Invoice.ShipAddr.City") $InvoiceShipAddrCountry = $jsonResponse.StringOf("Invoice.ShipAddr.Country") $InvoiceShipAddrLine5 = $jsonResponse.StringOf("Invoice.ShipAddr.Line5") $InvoiceShipAddrLine4 = $jsonResponse.StringOf("Invoice.ShipAddr.Line4") $InvoiceShipAddrLine3 = $jsonResponse.StringOf("Invoice.ShipAddr.Line3") $InvoiceShipAddrLine2 = $jsonResponse.StringOf("Invoice.ShipAddr.Line2") $InvoiceShipAddrLine1 = $jsonResponse.StringOf("Invoice.ShipAddr.Line1") $InvoiceShipAddrPostalCode = $jsonResponse.StringOf("Invoice.ShipAddr.PostalCode") $InvoiceShipAddrLat = $jsonResponse.StringOf("Invoice.ShipAddr.Lat") $InvoiceShipAddrLong = $jsonResponse.StringOf("Invoice.ShipAddr.Long") $InvoiceShipAddrCountrySubDivisionCode = $jsonResponse.StringOf("Invoice.ShipAddr.CountrySubDivisionCode") $InvoiceShipAddrId = $jsonResponse.StringOf("Invoice.ShipAddr.Id") $InvoiceDepartmentRefName = $jsonResponse.StringOf("Invoice.DepartmentRef.name") $InvoiceDepartmentRefValue = $jsonResponse.StringOf("Invoice.DepartmentRef.value") $InvoiceShipMethodRefName = $jsonResponse.StringOf("Invoice.ShipMethodRef.name") $InvoiceShipMethodRefValue = $jsonResponse.StringOf("Invoice.ShipMethodRef.value") $InvoiceBillAddrCity = $jsonResponse.StringOf("Invoice.BillAddr.City") $InvoiceBillAddrCountry = $jsonResponse.StringOf("Invoice.BillAddr.Country") $InvoiceBillAddrLine5 = $jsonResponse.StringOf("Invoice.BillAddr.Line5") $InvoiceBillAddrLine4 = $jsonResponse.StringOf("Invoice.BillAddr.Line4") $InvoiceBillAddrLine3 = $jsonResponse.StringOf("Invoice.BillAddr.Line3") $InvoiceBillAddrLine2 = $jsonResponse.StringOf("Invoice.BillAddr.Line2") $InvoiceBillAddrLine1 = $jsonResponse.StringOf("Invoice.BillAddr.Line1") $InvoiceBillAddrPostalCode = $jsonResponse.StringOf("Invoice.BillAddr.PostalCode") $InvoiceBillAddrLat = $jsonResponse.StringOf("Invoice.BillAddr.Lat") $InvoiceBillAddrLong = $jsonResponse.StringOf("Invoice.BillAddr.Long") $InvoiceBillAddrCountrySubDivisionCode = $jsonResponse.StringOf("Invoice.BillAddr.CountrySubDivisionCode") $InvoiceBillAddrId = $jsonResponse.StringOf("Invoice.BillAddr.Id") $InvoiceApplyTaxAfterDiscount = $jsonResponse.BoolOf("Invoice.ApplyTaxAfterDiscount") $InvoiceId = $jsonResponse.StringOf("Invoice.Id") $time = $jsonResponse.StringOf("time") $i = 0 $count_i = $jsonResponse.SizeOfArray("Invoice.Line") while ($i -lt $count_i) { $jsonResponse.I = $i $Description = $jsonResponse.StringOf("Invoice.Line[i].Description") $DetailType = $jsonResponse.StringOf("Invoice.Line[i].DetailType") $SalesItemLineDetailTaxCodeRefValue = $jsonResponse.StringOf("Invoice.Line[i].SalesItemLineDetail.TaxCodeRef.value") $SalesItemLineDetailQty = $jsonResponse.IntOf("Invoice.Line[i].SalesItemLineDetail.Qty") $SalesItemLineDetailUnitPrice = $jsonResponse.IntOf("Invoice.Line[i].SalesItemLineDetail.UnitPrice") $SalesItemLineDetailServiceDate = $jsonResponse.StringOf("Invoice.Line[i].SalesItemLineDetail.ServiceDate") $SalesItemLineDetailItemRefName = $jsonResponse.StringOf("Invoice.Line[i].SalesItemLineDetail.ItemRef.name") $SalesItemLineDetailItemRefValue = $jsonResponse.StringOf("Invoice.Line[i].SalesItemLineDetail.ItemRef.value") $LineNum = $jsonResponse.IntOf("Invoice.Line[i].LineNum") $Amount = $jsonResponse.StringOf("Invoice.Line[i].Amount") $Id = $jsonResponse.StringOf("Invoice.Line[i].Id") $DiscountLineDetailDiscountAccountRefName = $jsonResponse.StringOf("Invoice.Line[i].DiscountLineDetail.DiscountAccountRef.name") $DiscountLineDetailDiscountAccountRefValue = $jsonResponse.StringOf("Invoice.Line[i].DiscountLineDetail.DiscountAccountRef.value") $DiscountLineDetailPercentBased = $jsonResponse.BoolOf("Invoice.Line[i].DiscountLineDetail.PercentBased") $DiscountLineDetailDiscountPercent = $jsonResponse.IntOf("Invoice.Line[i].DiscountLineDetail.DiscountPercent") $i = $i + 1 } $i = 0 $count_i = $jsonResponse.SizeOfArray("Invoice.TxnTaxDetail.TaxLine") while ($i -lt $count_i) { $jsonResponse.I = $i $DetailType = $jsonResponse.StringOf("Invoice.TxnTaxDetail.TaxLine[i].DetailType") $Amount = $jsonResponse.StringOf("Invoice.TxnTaxDetail.TaxLine[i].Amount") $TaxLineDetailNetAmountTaxable = $jsonResponse.StringOf("Invoice.TxnTaxDetail.TaxLine[i].TaxLineDetail.NetAmountTaxable") $TaxLineDetailTaxPercent = $jsonResponse.IntOf("Invoice.TxnTaxDetail.TaxLine[i].TaxLineDetail.TaxPercent") $TaxLineDetailTaxRateRefValue = $jsonResponse.StringOf("Invoice.TxnTaxDetail.TaxLine[i].TaxLineDetail.TaxRateRef.value") $TaxLineDetailPercentBased = $jsonResponse.BoolOf("Invoice.TxnTaxDetail.TaxLine[i].TaxLineDetail.PercentBased") $i = $i + 1 } $i = 0 $count_i = $jsonResponse.SizeOfArray("Invoice.CustomField") while ($i -lt $count_i) { $jsonResponse.I = $i $StringValue = $jsonResponse.StringOf("Invoice.CustomField[i].StringValue") $Type = $jsonResponse.StringOf("Invoice.CustomField[i].Type") $Name = $jsonResponse.StringOf("Invoice.CustomField[i].Name") $i = $i + 1 } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.