Print

Xero API: Send Multiple Invoices

What?
A really quick article for anyone who got stumped by the same issue: How to send multiple invoices to Xero in one API call?

Why?
Our use-case is in Zoho Deluge which couldn't generate more than 5 invoices in a scheduled task because Xero only allows 5 concurrent connections at one time... And Zoho was trying to send about 7 at a time (as in schedule created 7 Zoho invoices but only 5 Xero invoices). Our solution: Send all Zoho invoices in API call to Xero... apparently it can accept up to 60 invoices in one call.

How?
Crazy simple solution, your JSON needs to have the key "Invoices" and the list of invoices to create:
copyraw
{"Invoices":[... list of invoices ...]}
  1.  {"Invoices":[... list of invoices ...]} 

If sending just the 1:
copyraw
{... invoice JSON ...}
  1.  {... invoice JSON ...} 

But if sending multiple invoices, you need the key "Invoices" so your JSON request would be something like:
copyraw
{
  "Invoices": [
    {
      "Type": "ACCREC",
      "Contact": {
        "ContactID": "abcdef01-2345-6789-abcd-ef012345678"
      },
      "Reference": "TEST Invoice (DO NOT ACTION) 1",
      "DueDate": "2021-09-13",
      "Date": "2021-08-13",
      "LineItems": [
        {
          "Description": "My expensive product #1",
          "Quantity": 1,
          "UnitAmount": 240,
          "TaxType": "OUTPUT2",
          "TaxAmount": 48,
          "AccountCode": 3610,
          "DiscountAmount": 24,
          "Tracking": [
            {
              "Name": "Activity",
              "Option": "ELEPHANT"
            }
          ]
        }
      ]
    },
    {
      "Type": "ACCREC",
      "Contact": {
        "ContactID": "abcdef01-2345-6789-abcd-ef012345678"
      },
      "Reference": "TEST Invoice (DO NOT ACTION) 2",
      "DueDate": "2021-09-13",
      "Date": "2021-08-13",
      "LineItems": [
        {
          "Description": "My not so expensive product",
          "Quantity": 1,
          "UnitAmount": 20,
          "TaxType": "OUTPUT2",
          "TaxAmount": 0,
          "AccountCode": 3610,
          "DiscountAmount": 12,
          "Tracking": [
            {
              "Name": "Activity",
              "Option": "RHINO"
            }
          ]
        }
      ]
    }
  ]
}
  1.  { 
  2.    "Invoices": [ 
  3.      { 
  4.        "Type": "ACCREC", 
  5.        "Contact": { 
  6.          "ContactID": "abcdef01-2345-6789-abcd-ef012345678" 
  7.        }, 
  8.        "Reference": "TEST Invoice (DO NOT ACTION) 1", 
  9.        "DueDate": "2021-09-13", 
  10.        "Date": "2021-08-13", 
  11.        "LineItems": [ 
  12.          { 
  13.            "Description": "My expensive product #1", 
  14.            "Quantity": 1, 
  15.            "UnitAmount": 240, 
  16.            "TaxType": "OUTPUT2", 
  17.            "TaxAmount": 48, 
  18.            "AccountCode": 3610, 
  19.            "DiscountAmount": 24, 
  20.            "Tracking": [ 
  21.              { 
  22.                "Name": "Activity", 
  23.                "Option": "ELEPHANT" 
  24.              } 
  25.            ] 
  26.          } 
  27.        ] 
  28.      }, 
  29.      { 
  30.        "Type": "ACCREC", 
  31.        "Contact": { 
  32.          "ContactID": "abcdef01-2345-6789-abcd-ef012345678" 
  33.        }, 
  34.        "Reference": "TEST Invoice (DO NOT ACTION) 2", 
  35.        "DueDate": "2021-09-13", 
  36.        "Date": "2021-08-13", 
  37.        "LineItems": [ 
  38.          { 
  39.            "Description": "My not so expensive product", 
  40.            "Quantity": 1, 
  41.            "UnitAmount": 20, 
  42.            "TaxType": "OUTPUT2", 
  43.            "TaxAmount": 0, 
  44.            "AccountCode": 3610, 
  45.            "DiscountAmount": 12, 
  46.            "Tracking": [ 
  47.              { 
  48.                "Name": "Activity", 
  49.                "Option": "RHINO" 
  50.              } 
  51.            ] 
  52.          } 
  53.        ] 
  54.      } 
  55.    ] 
  56.  } 

Source(s):
Category: Xero :: Article: 757
, ,