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

Xero Get Invoices

See more Xero Examples

Get Xero company invoices.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // This example requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  final http = CkHttp();

  final jsonToken = CkJsonObject();
  try {
    jsonToken.loadFile('qa_data/tokens/xero-access-token.json');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  http.authToken = jsonToken.stringOf('access_token');

  // Replace the value here with an actual tenant ID obtained from this example:
  // Get Xero Tenant IDs
  http.setRequestHeader('Xero-tenant-id', '83299b9e-5747-4a14-a18a-a6c94f824eb7');

  http.accept = 'application/json';

  final resp = CkHttpResponse();
  try {
    http.httpNoBody('GET', 'https://api.xero.com/api.xro/2.0/Invoices', resp);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  print('Response Status Code: ${resp.statusCode}');

  final jsonResponse = CkJsonObject();
  jsonResponse.load(resp.bodyStr);
  jsonResponse.emitCompact = false;
  print(jsonResponse.emit());

  if (resp.statusCode != 200) {
    print('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

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

  var type = '';
  var invoiceID = '';
  var invoiceNumber = '';
  var reference = '';
  var amountDue = '';
  var amountPaid = '';
  var amountCredited = '';
  var contactContactID = '';
  var contactName = '';
  var dateString = '';
  var date = '';
  var dueDateString = '';
  var dueDate = '';
  var lineAmountTypes = '';
  var subTotal = '';
  var totalTax = '';
  var total = '';
  var updatedDateUTC = '';
  var currencyCode = '';
  var fullyPaidOnDate = '';
  var currencyRate = '';
  var j = 0;
  var countJ = 0;
  var paymentID = '';
  var amount = '';
  var creditNoteID = '';
  var creditNoteNumber = '';
  var id = '';
  var appliedAmount = '';
  var k = 0;
  var countK = 0;

  id = jsonResponse.stringOf('Id');
  var status = jsonResponse.stringOf('Status');
  final providerName = jsonResponse.stringOf('ProviderName');
  final dateTimeUTC = jsonResponse.stringOf('DateTimeUTC');
  var i = 0;
  final countI = jsonResponse.sizeOfArray('Invoices');
  while (i < countI) {
    jsonResponse.i = i;
    type = jsonResponse.stringOf('Invoices[i].Type');
    invoiceID = jsonResponse.stringOf('Invoices[i].InvoiceID');
    invoiceNumber = jsonResponse.stringOf('Invoices[i].InvoiceNumber');
    reference = jsonResponse.stringOf('Invoices[i].Reference');
    amountDue = jsonResponse.stringOf('Invoices[i].AmountDue');
    amountPaid = jsonResponse.stringOf('Invoices[i].AmountPaid');
    amountCredited = jsonResponse.stringOf('Invoices[i].AmountCredited');
    jsonResponse.boolOf('Invoices[i].IsDiscounted');
    jsonResponse.boolOf('Invoices[i].HasAttachments');
    jsonResponse.boolOf('Invoices[i].HasErrors');
    contactContactID = jsonResponse.stringOf('Invoices[i].Contact.ContactID');
    contactName = jsonResponse.stringOf('Invoices[i].Contact.Name');
    jsonResponse.boolOf('Invoices[i].Contact.HasValidationErrors');
    dateString = jsonResponse.stringOf('Invoices[i].DateString');
    date = jsonResponse.stringOf('Invoices[i].Date');
    dueDateString = jsonResponse.stringOf('Invoices[i].DueDateString');
    dueDate = jsonResponse.stringOf('Invoices[i].DueDate');
    status = jsonResponse.stringOf('Invoices[i].Status');
    lineAmountTypes = jsonResponse.stringOf('Invoices[i].LineAmountTypes');
    subTotal = jsonResponse.stringOf('Invoices[i].SubTotal');
    totalTax = jsonResponse.stringOf('Invoices[i].TotalTax');
    total = jsonResponse.stringOf('Invoices[i].Total');
    updatedDateUTC = jsonResponse.stringOf('Invoices[i].UpdatedDateUTC');
    currencyCode = jsonResponse.stringOf('Invoices[i].CurrencyCode');
    fullyPaidOnDate = jsonResponse.stringOf('Invoices[i].FullyPaidOnDate');
    currencyRate = jsonResponse.stringOf('Invoices[i].CurrencyRate');
    j = 0;
    countJ = jsonResponse.sizeOfArray('Invoices[i].Payments');
    while (j < countJ) {
      jsonResponse.j = j;
      paymentID = jsonResponse.stringOf('Invoices[i].Payments[j].PaymentID');
      date = jsonResponse.stringOf('Invoices[i].Payments[j].Date');
      amount = jsonResponse.stringOf('Invoices[i].Payments[j].Amount');
      reference = jsonResponse.stringOf('Invoices[i].Payments[j].Reference');
      jsonResponse.boolOf('Invoices[i].Payments[j].HasAccount');
      jsonResponse.boolOf('Invoices[i].Payments[j].HasValidationErrors');
      j++;
    }

    j = 0;
    countJ = jsonResponse.sizeOfArray('Invoices[i].CreditNotes');
    while (j < countJ) {
      jsonResponse.j = j;
      creditNoteID = jsonResponse.stringOf('Invoices[i].CreditNotes[j].CreditNoteID');
      creditNoteNumber = jsonResponse.stringOf('Invoices[i].CreditNotes[j].CreditNoteNumber');
      id = jsonResponse.stringOf('Invoices[i].CreditNotes[j].ID');
      jsonResponse.boolOf('Invoices[i].CreditNotes[j].HasErrors');
      appliedAmount = jsonResponse.stringOf('Invoices[i].CreditNotes[j].AppliedAmount');
      dateString = jsonResponse.stringOf('Invoices[i].CreditNotes[j].DateString');
      date = jsonResponse.stringOf('Invoices[i].CreditNotes[j].Date');
      total = jsonResponse.stringOf('Invoices[i].CreditNotes[j].Total');
      k = 0;
      countK = jsonResponse.sizeOfArray('Invoices[i].CreditNotes[j].LineItems');
      while (k < countK) {
        jsonResponse.k = k;
        k++;
      }

      j++;
    }

    j = 0;
    countJ = jsonResponse.sizeOfArray('Invoices[i].Prepayments');
    while (j < countJ) {
      jsonResponse.j = j;
      j++;
    }

    j = 0;
    countJ = jsonResponse.sizeOfArray('Invoices[i].Overpayments');
    while (j < countJ) {
      jsonResponse.j = j;
      j++;
    }

    j = 0;
    countJ = jsonResponse.sizeOfArray('Invoices[i].Contact.Addresses');
    while (j < countJ) {
      jsonResponse.j = j;
      j++;
    }

    j = 0;
    countJ = jsonResponse.sizeOfArray('Invoices[i].Contact.Phones');
    while (j < countJ) {
      jsonResponse.j = j;
      j++;
    }

    j = 0;
    countJ = jsonResponse.sizeOfArray('Invoices[i].Contact.ContactGroups');
    while (j < countJ) {
      jsonResponse.j = j;
      j++;
    }

    j = 0;
    countJ = jsonResponse.sizeOfArray('Invoices[i].Contact.ContactPersons');
    while (j < countJ) {
      jsonResponse.j = j;
      j++;
    }

    j = 0;
    countJ = jsonResponse.sizeOfArray('Invoices[i].LineItems');
    while (j < countJ) {
      jsonResponse.j = j;
      j++;
    }

    i++;
  }
}