Sample code for 30+ languages & platforms
AutoIt Requires Chilkat v11.0.0+

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