Sample code for 30+ languages & platforms
AutoIt

Xero Get Invoices

See more Xero Examples

Get Xero company invoices.

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.

$oHttp = ObjCreate("Chilkat.Http")

$oJsonToken = ObjCreate("Chilkat.JsonObject")
$bSuccess = $oJsonToken.LoadFile("qa_data/tokens/xero-access-token.json")
If ($bSuccess = False) Then
    ConsoleWrite($oJsonToken.LastErrorText & @CRLF)
    Exit
EndIf

$oHttp.AuthToken = $oJsonToken.StringOf("access_token")

; Replace the value here with an actual tenant ID obtained from this example:
; Get Xero Tenant IDs
$oHttp.SetRequestHeader "Xero-tenant-id","83299b9e-5747-4a14-a18a-a6c94f824eb7"

$oHttp.Accept = "application/json"

$oResp = ObjCreate("Chilkat.HttpResponse")
$bSuccess = $oHttp.HttpNoBody("GET","https://api.xero.com/api.xro/2.0/Invoices",$oResp)
If ($bSuccess = False) Then
    ConsoleWrite($oHttp.LastErrorText & @CRLF)
    Exit
EndIf

ConsoleWrite("Response Status Code: " & $oResp.StatusCode & @CRLF)

$oJsonResponse = ObjCreate("Chilkat.JsonObject")
$oJsonResponse.Load($oResp.BodyStr)
$oJsonResponse.EmitCompact = False
ConsoleWrite($oJsonResponse.Emit() & @CRLF)

If ($oResp.StatusCode <> 200) Then
    ConsoleWrite("Failed." & @CRLF)
    Exit
EndIf

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

; {
;   "Id": "bda1f62f-0d63-4178-8d54-e91fd226987a",
;   "Status": "OK",
;   "ProviderName": "Chilkat2222",
;   "DateTimeUTC": "\/Date(1587210234493)\/",
;   "Invoices": [
;     {
;       "Type": "ACCPAY",
;       "InvoiceID": "0032f627-3156-4d30-9b1c-4d3b994dc921",
;       "InvoiceNumber": "9871",
;       "Reference": "",
;       "Payments": [
;         {
;           "PaymentID": "22974891-3689-4694-9ee7-fd2ba917af55",
;           "Date": "\/Date(1579737600000+0000)\/",
;           "Amount": 148.50,
;           "Reference": "Chq 409",
;           "HasAccount": false,
;           "HasValidationErrors": false
;         }
;       ],
;       "CreditNotes": [
;       ],
;       "Prepayments": [
;       ],
;       "Overpayments": [
;       ],
;       "AmountDue": 0.00,
;       "AmountPaid": 148.50,
;       "AmountCredited": 0.00,
;       "IsDiscounted": false,
;       "HasAttachments": false,
;       "HasErrors": false,
;       "Contact": {
;         "ContactID": "d6a384fb-f46f-41a3-8ac7-b7bc9e0b5efa",
;         "Name": "Melrose Parking",
;         "Addresses": [
;         ],
;         "Phones": [
;         ],
;         "ContactGroups": [
;         ],
;         "ContactPersons": [
;         ],
;         "HasValidationErrors": false
;       },
;       "DateString": "2020-01-15T00:00:00",
;       "Date": "\/Date(1579046400000+0000)\/",
;       "DueDateString": "2020-01-24T00:00:00",
;       "DueDate": "\/Date(1579824000000+0000)\/",
;       "Status": "PAID",
;       "LineAmountTypes": "Exclusive",
;       "LineItems": [
;       ],
;       "SubTotal": 135.00,
;       "TotalTax": 13.50,
;       "Total": 148.50,
;       "UpdatedDateUTC": "\/Date(1221560931500+0000)\/",
;       "CurrencyCode": "AUD",
;       "FullyPaidOnDate": "\/Date(1579737600000+0000)\/"
;     },
;     {
;       "Type": "ACCPAY",
;       "InvoiceID": "673dd7cc-beb7-4697-83d4-0c47cb400cc2",
;       "InvoiceNumber": "",
;       "Reference": "",
;       "Payments": [
;         {
;           "PaymentID": "4d06f609-5200-4364-9c8b-d4379a945252",
;           "Date": "\/Date(1580688000000+0000)\/",
;           "Amount": 974.60,
;           "Reference": "DD # 96013",
;           "HasAccount": false,
;           "HasValidationErrors": false
;         }
;       ],
;       "CreditNotes": [
;         {
;           "CreditNoteID": "7df8949c-b71f-40c0-bbcf-39f2f450f286",
;           "CreditNoteNumber": "03391",
;           "ID": "7df8949c-b71f-40c0-bbcf-39f2f450f286",
;           "HasErrors": false,
;           "AppliedAmount": 218.90,
;           "DateString": "2020-01-29T00:00:00",
;           "Date": "\/Date(1580256000000+0000)\/",
;           "LineItems": [
;           ],
;           "Total": 218.90
;         }
;       ],
;       "Prepayments": [
;       ],
;       "Overpayments": [
;       ],
;       "AmountDue": 0.00,
;       "AmountPaid": 974.60,
;       "AmountCredited": 218.90,
;       "IsDiscounted": false,
;       "HasAttachments": false,
;       "HasErrors": false,
;       "Contact": {
;         "ContactID": "d0cd2c4f-18a0-4f7c-a32a-2db00f29d298",
;         "Name": "PC Complete",
;         "Addresses": [
;         ],
;         "Phones": [
;         ],
;         "ContactGroups": [
;         ],
;         "ContactPersons": [
;         ],
;         "HasValidationErrors": false
;       },
;       "DateString": "2020-01-28T00:00:00",
;       "Date": "\/Date(1580169600000+0000)\/",
;       "DueDateString": "2020-02-04T00:00:00",
;       "DueDate": "\/Date(1580774400000+0000)\/",
;       "Status": "PAID",
;       "LineAmountTypes": "Exclusive",
;       "LineItems": [
;       ],
;       "SubTotal": 1085.00,
;       "TotalTax": 108.50,
;       "Total": 1193.50,
;       "UpdatedDateUTC": "\/Date(1221561913790+0000)\/",
;       "CurrencyCode": "AUD",
;       "FullyPaidOnDate": "\/Date(1580688000000+0000)\/"
;     },
;     {
;       "Type": "ACCPAY",
;       "InvoiceID": "c12aff7e-12bf-4185-8702-460929f19674",
;       "InvoiceNumber": "",
;       "Reference": "",
;       "Payments": [
;       ],
;       "CreditNotes": [
;       ],
;       "Prepayments": [
;       ],
;       "Overpayments": [
;       ],
;       "AmountDue": 2166.99,
;       "AmountPaid": 0.00,
;       "AmountCredited": 0.00,
;       "CurrencyRate": 1.000000,
;       "IsDiscounted": false,
;       "HasAttachments": false,
;       "HasErrors": false,
;       "Contact": {
;         "ContactID": "d0cd2c4f-18a0-4f7c-a32a-2db00f29d298",
;         "Name": "PC Complete",
;         "Addresses": [
;         ],
;         "Phones": [
;         ],
;         "ContactGroups": [
;         ],
;         "ContactPersons": [
;         ],
;         "HasValidationErrors": false
;       },
;       "DateString": "2020-04-10T00:00:00",
;       "Date": "\/Date(1586476800000+0000)\/",
;       "DueDateString": "2020-05-05T00:00:00",
;       "DueDate": "\/Date(1588636800000+0000)\/",
;       "Status": "AUTHORISED",
;       "LineAmountTypes": "Exclusive",
;       "LineItems": [
;       ],
;       "SubTotal": 1969.99,
;       "TotalTax": 197.00,
;       "Total": 2166.99,
;       "UpdatedDateUTC": "\/Date(1497965301980+0000)\/",
;       "CurrencyCode": "AUD"
;     }
;   ]
; }
; 

Local $sType
Local $sInvoiceID
Local $sInvoiceNumber
Local $sReference
Local $sAmountDue
Local $sAmountPaid
Local $sAmountCredited
Local $bIsDiscounted
Local $bHasAttachments
Local $bHasErrors
Local $sContactContactID
Local $sContactName
Local $bContactHasValidationErrors
Local $sDateString
Local $sDate
Local $sDueDateString
Local $sDueDate
Local $sLineAmountTypes
Local $sSubTotal
Local $sTotalTax
Local $sTotal
Local $sUpdatedDateUTC
Local $sCurrencyCode
Local $sFullyPaidOnDate
Local $sCurrencyRate
Local $iJ
Local $iCount_j
Local $sPaymentID
Local $sAmount
Local $bHasAccount
Local $bHasValidationErrors
Local $sCreditNoteID
Local $sCreditNoteNumber
Local $sID
Local $sAppliedAmount
Local $iK
Local $iCount_k

Local $sId = $oJsonResponse.StringOf("Id")
Local $sStatus = $oJsonResponse.StringOf("Status")
Local $sProviderName = $oJsonResponse.StringOf("ProviderName")
Local $sDateTimeUTC = $oJsonResponse.StringOf("DateTimeUTC")
Local $i = 0
Local $iCount_i = $oJsonResponse.SizeOfArray("Invoices")
While $i < $iCount_i
    $oJsonResponse.I = $i
    $sType = $oJsonResponse.StringOf("Invoices[i].Type")
    $sInvoiceID = $oJsonResponse.StringOf("Invoices[i].InvoiceID")
    $sInvoiceNumber = $oJsonResponse.StringOf("Invoices[i].InvoiceNumber")
    $sReference = $oJsonResponse.StringOf("Invoices[i].Reference")
    $sAmountDue = $oJsonResponse.StringOf("Invoices[i].AmountDue")
    $sAmountPaid = $oJsonResponse.StringOf("Invoices[i].AmountPaid")
    $sAmountCredited = $oJsonResponse.StringOf("Invoices[i].AmountCredited")
    $bIsDiscounted = $oJsonResponse.BoolOf("Invoices[i].IsDiscounted")
    $bHasAttachments = $oJsonResponse.BoolOf("Invoices[i].HasAttachments")
    $bHasErrors = $oJsonResponse.BoolOf("Invoices[i].HasErrors")
    $sContactContactID = $oJsonResponse.StringOf("Invoices[i].Contact.ContactID")
    $sContactName = $oJsonResponse.StringOf("Invoices[i].Contact.Name")
    $bContactHasValidationErrors = $oJsonResponse.BoolOf("Invoices[i].Contact.HasValidationErrors")
    $sDateString = $oJsonResponse.StringOf("Invoices[i].DateString")
    $sDate = $oJsonResponse.StringOf("Invoices[i].Date")
    $sDueDateString = $oJsonResponse.StringOf("Invoices[i].DueDateString")
    $sDueDate = $oJsonResponse.StringOf("Invoices[i].DueDate")
    $sStatus = $oJsonResponse.StringOf("Invoices[i].Status")
    $sLineAmountTypes = $oJsonResponse.StringOf("Invoices[i].LineAmountTypes")
    $sSubTotal = $oJsonResponse.StringOf("Invoices[i].SubTotal")
    $sTotalTax = $oJsonResponse.StringOf("Invoices[i].TotalTax")
    $sTotal = $oJsonResponse.StringOf("Invoices[i].Total")
    $sUpdatedDateUTC = $oJsonResponse.StringOf("Invoices[i].UpdatedDateUTC")
    $sCurrencyCode = $oJsonResponse.StringOf("Invoices[i].CurrencyCode")
    $sFullyPaidOnDate = $oJsonResponse.StringOf("Invoices[i].FullyPaidOnDate")
    $sCurrencyRate = $oJsonResponse.StringOf("Invoices[i].CurrencyRate")
    $iJ = 0
    $iCount_j = $oJsonResponse.SizeOfArray("Invoices[i].Payments")
    While $iJ < $iCount_j
        $oJsonResponse.J = $iJ
        $sPaymentID = $oJsonResponse.StringOf("Invoices[i].Payments[j].PaymentID")
        $sDate = $oJsonResponse.StringOf("Invoices[i].Payments[j].Date")
        $sAmount = $oJsonResponse.StringOf("Invoices[i].Payments[j].Amount")
        $sReference = $oJsonResponse.StringOf("Invoices[i].Payments[j].Reference")
        $bHasAccount = $oJsonResponse.BoolOf("Invoices[i].Payments[j].HasAccount")
        $bHasValidationErrors = $oJsonResponse.BoolOf("Invoices[i].Payments[j].HasValidationErrors")
        $iJ = $iJ + 1
    Wend
    $iJ = 0
    $iCount_j = $oJsonResponse.SizeOfArray("Invoices[i].CreditNotes")
    While $iJ < $iCount_j
        $oJsonResponse.J = $iJ
        $sCreditNoteID = $oJsonResponse.StringOf("Invoices[i].CreditNotes[j].CreditNoteID")
        $sCreditNoteNumber = $oJsonResponse.StringOf("Invoices[i].CreditNotes[j].CreditNoteNumber")
        $sID = $oJsonResponse.StringOf("Invoices[i].CreditNotes[j].ID")
        $bHasErrors = $oJsonResponse.BoolOf("Invoices[i].CreditNotes[j].HasErrors")
        $sAppliedAmount = $oJsonResponse.StringOf("Invoices[i].CreditNotes[j].AppliedAmount")
        $sDateString = $oJsonResponse.StringOf("Invoices[i].CreditNotes[j].DateString")
        $sDate = $oJsonResponse.StringOf("Invoices[i].CreditNotes[j].Date")
        $sTotal = $oJsonResponse.StringOf("Invoices[i].CreditNotes[j].Total")
        $iK = 0
        $iCount_k = $oJsonResponse.SizeOfArray("Invoices[i].CreditNotes[j].LineItems")
        While $iK < $iCount_k
            $oJsonResponse.K = $iK
            $iK = $iK + 1
        Wend
        $iJ = $iJ + 1
    Wend
    $iJ = 0
    $iCount_j = $oJsonResponse.SizeOfArray("Invoices[i].Prepayments")
    While $iJ < $iCount_j
        $oJsonResponse.J = $iJ
        $iJ = $iJ + 1
    Wend
    $iJ = 0
    $iCount_j = $oJsonResponse.SizeOfArray("Invoices[i].Overpayments")
    While $iJ < $iCount_j
        $oJsonResponse.J = $iJ
        $iJ = $iJ + 1
    Wend
    $iJ = 0
    $iCount_j = $oJsonResponse.SizeOfArray("Invoices[i].Contact.Addresses")
    While $iJ < $iCount_j
        $oJsonResponse.J = $iJ
        $iJ = $iJ + 1
    Wend
    $iJ = 0
    $iCount_j = $oJsonResponse.SizeOfArray("Invoices[i].Contact.Phones")
    While $iJ < $iCount_j
        $oJsonResponse.J = $iJ
        $iJ = $iJ + 1
    Wend
    $iJ = 0
    $iCount_j = $oJsonResponse.SizeOfArray("Invoices[i].Contact.ContactGroups")
    While $iJ < $iCount_j
        $oJsonResponse.J = $iJ
        $iJ = $iJ + 1
    Wend
    $iJ = 0
    $iCount_j = $oJsonResponse.SizeOfArray("Invoices[i].Contact.ContactPersons")
    While $iJ < $iCount_j
        $oJsonResponse.J = $iJ
        $iJ = $iJ + 1
    Wend
    $iJ = 0
    $iCount_j = $oJsonResponse.SizeOfArray("Invoices[i].LineItems")
    While $iJ < $iCount_j
        $oJsonResponse.J = $iJ
        $iJ = $iJ + 1
    Wend
    $i = $i + 1
Wend