Xero
App · Accounting & Finance · 20 actions
Manage a Xero organisation's contacts, invoices, bills, quotes, credit notes and items, and read its chart of accounts and tax rates.
Actions
| Action | What it does |
|---|---|
| Archive or restore a contact | Archive a contact so it can no longer be used on new transactions, or set it back to active. |
| Create a contact | Create a customer or supplier contact. |
| Create a credit note | Raise a credit note against a customer or a supplier. |
| Create a quote | Raise a quote for a contact. |
| Create an invoice | Raise a sales invoice or a bill against a contact. |
| Create an item | Create an untracked item: a saved product or service whose code fills in a line's description, price and account. |
| Delete an item | Delete an item. |
| Delete or void an invoice | Take an invoice out of use. |
| Get a contact | Read one contact in full, including its addresses, contact people and outstanding balances. |
| Get an invoice | Read one invoice in full, with its line items, payments and credit notes applied. |
| Get the organisation | Read the connected Xero organisation: its name, country, base currency, financial year end and lock dates. |
| List accounts | List the organisation's chart of accounts. |
| List contacts | Find contacts by name, email, contact code or company number, or page through all of them. |
| List credit notes | Page through the organisation's credit notes, newest change first. |
| List invoices | Find invoices and bills by status, contact, invoice number or reference. |
| List items | List the organisation's saved products and services. |
| List quotes | Find quotes by status, contact, number or quote date. |
| List tax rates | List the organisation's tax rates and the tax type codes line items use to override the default rate. |
| Update a contact | Change a contact's details. |
| Update an invoice | Change an invoice or move it between draft, awaiting approval and approved. |
Archive or restore a contact
Archive a contact so it can no longer be used on new transactions, or set it back to active. An archived contact keeps its name, so the name stays taken.
Inputs
- Contact ID
contact_idtextRequired - The Xero ContactID of the contact.
- Status
statustext - Archive the contact, or restore it to active.One of:
ACTIVE(Active (usable on transactions)),ARCHIVED(Archived (hidden and unusable on new transactions)). Default:ARCHIVED.
Outputs
AccountNumbertextAccountsPayableTaxTypetextAccountsReceivableTaxTypetextAddresseslistBalancesobjectBankAccountDetailstextBatchPaymentsobjectBrandingThemeobjectCompanyNumbertextContactGroupslistContactIDtextContactNumbertextContactPersonslistContactStatustextDefaultCurrencytextDiscountnumberEmailAddresstextFirstNametextHasAttachmentstrue/falseIsCustomertrue/falseIsSuppliertrue/falseLastNametextMergedToContactIDtextNametextPaymentTermsobjectPhoneslistPurchasesDefaultAccountCodetextPurchasesDefaultLineAmountTypetextPurchasesTrackingCategorieslistSalesDefaultAccountCodetextSalesDefaultLineAmountTypetextSalesTrackingCategorieslistTaxNumbertextTaxNumberTypetextTrackingCategoryNametextTrackingOptionNametextUpdatedDateUTCtextWebsitetextXeroNetworkKeytext
Example output
{
"ContactID": "e0e0e0e0-1111-2222-3333-444455556666",
"ContactStatus": "ARCHIVED",
"DefaultCurrency": "GBP",
"EmailAddress": "ap@acme.example",
"FirstName": "Ada",
"IsCustomer": true,
"IsSupplier": false,
"LastName": "Lovelace",
"Name": "Acme Ltd",
"Phones": [
{
"PhoneNumber": "020 7946 0000",
"PhoneType": "DEFAULT"
}
],
"UpdatedDateUTC": "2026-08-14T09:12:30.940Z"
}Create a contact
Create a customer or supplier contact. Xero refuses a name another contact already holds, archived ones included.
Inputs
- Name
nametextRequired - The contact or organisation name. Must be unique in Xero, and cannot contain angle brackets or repeated spaces.
- Email
emailtext - The contact's primary email address.
- First name
first_nametext - The main contact person's first name.
- Last name
last_nametext - The main contact person's last name.
- Phone number
phonetext - A phone number for the contact.
- Phone type
phone_typetext - Which of Xero's four phone slots the number goes in.One of:
DEFAULT(Main),MOBILE,DDI(Direct dial),FAX. Default:DEFAULT. - Contact code
contact_numbertext - Your own identifier for this contact, shown as Contact Code in Xero. 'Get a contact' accepts it in place of the id.
- Account number
account_numbertext - A user-defined account number for the contact.
- Tax number
tax_numbertext - The contact's tax number: ABN, GST number, VAT number or tax ID depending on your Xero region.
- Company number
company_numbertext - The contact's company registration number.
- Default currency
default_currencytext - ISO currency code used when invoicing this contact, e.g. GBP.
- Address line 1
address_line1text - First line of the contact's address.
- Address line 2
address_line2text - Second line of the contact's address.
- City
citytext - City or town.
- Region
regiontext - State, province or region.
- Postal code
postal_codetext - Postcode or ZIP code.
- Country
countrytext - Country name (letters only, as Xero requires).
- Address type
address_typetext - Which address this is. Invoices are addressed to the postal one.One of:
POBOX(Postal (the address invoices are addressed to)),STREET. Default:POBOX.
Outputs
AccountNumbertextAccountsPayableTaxTypetextAccountsReceivableTaxTypetextAddresseslistBalancesobjectBankAccountDetailstextBatchPaymentsobjectBrandingThemeobjectCompanyNumbertextContactGroupslistContactIDtextContactNumbertextContactPersonslistContactStatustextDefaultCurrencytextDiscountnumberEmailAddresstextFirstNametextHasAttachmentstrue/falseIsCustomertrue/falseIsSuppliertrue/falseLastNametextMergedToContactIDtextNametextPaymentTermsobjectPhoneslistPurchasesDefaultAccountCodetextPurchasesDefaultLineAmountTypetextPurchasesTrackingCategorieslistSalesDefaultAccountCodetextSalesDefaultLineAmountTypetextSalesTrackingCategorieslistTaxNumbertextTaxNumberTypetextTrackingCategoryNametextTrackingOptionNametextUpdatedDateUTCtextWebsitetextXeroNetworkKeytext
Example output
{
"ContactID": "e0e0e0e0-1111-2222-3333-444455556666",
"ContactStatus": "ACTIVE",
"DefaultCurrency": "GBP",
"EmailAddress": "ap@acme.example",
"FirstName": "Ada",
"IsCustomer": true,
"IsSupplier": false,
"LastName": "Lovelace",
"Name": "Acme Ltd",
"Phones": [
{
"PhoneNumber": "020 7946 0000",
"PhoneType": "DEFAULT"
}
],
"UpdatedDateUTC": "2026-08-14T09:12:30.940Z"
}Create a credit note
Raise a credit note against a customer or a supplier. Xero does not allow discounts on credit note lines.
Inputs
- Contact ID
contact_idtext - The Xero ContactID to raise this against. Get one from 'Create a contact' or 'List contacts'.
- Contact name
contact_nametext - Used only when no Contact ID is given: the contact with exactly this name is looked up first, and only its id is sent. The contact itself is never changed.
- Type
credit_note_typetext - Whether this credits a customer or a supplier.One of:
ACCRECCREDIT(Customer credit note (against a sales invoice)),ACCPAYCREDIT(Supplier credit note (against a bill)). Default:ACCRECCREDIT. - Status
statustext - The status to create the credit note in.One of:
DRAFT,SUBMITTED(Awaiting approval),AUTHORISED(Approved). Default:DRAFT. - Line description
descriptiontext - What the line is for. Required unless an item code is given.
- Quantity
quantitynumber - How many units. Defaults to 1.At least 0. Default:
1. - Unit amount
unit_amountnumber - The price per unit, before tax.
- Account
account_codetext - The account this line posts to. Optional on a draft, required before it can be approved.
- Item code
item_codetext - A saved item's code, which fills the line's description, price and account from the item.
- Tax rate
tax_typetext - Overrides the tax rate the account would otherwise apply.
- Line items (advanced)
line_itemslist - A list of line objects for a multi-line document, e.g. [{"description": "Design", "quantity": 2, "unit_amount": 150}]. When given it replaces the single-line fields above.
- Amounts include tax?
line_amount_typestext - Whether the amounts above include tax. Defaults to excluding it.One of:
Exclusive(Amounts exclude tax),Inclusive(Amounts include tax),NoTax(No tax). - Credit note date
datedate - The date the credit note is issued. Defaults to today.
- Credit note number
credit_note_numbertext - Your own number. Left blank, Xero generates one.
- Reference
referencetext - An additional reference. Customer credit notes only.
- Currency
currency_codetext - ISO currency code. Defaults to the organisation's base currency.
Outputs
AllocationslistBrandingThemeIDtextCISDeductionnumberContactobjectCreditNoteIDtextCreditNoteNumbertextCurrencyCodetextCurrencyRatenumberDatetextDateStringtextFullyPaidOnDatetextHasAttachmentstrue/falseLineAmountTypestextLineItemslistReferencetextRemainingCreditnumberSentToContacttrue/falseStatustextStatusAttributeStringtextSubTotalnumberTotalnumberTotalTaxnumberTypetextUpdatedDateUTCtextUpdatedDateUTCStringtext
Example output
{
"Contact": {
"ContactID": "e0e0e0e0-1111-2222-3333-444455556666",
"Name": "Acme Ltd"
},
"CreditNoteID": "cccc3333-dddd-4444-eeee-5555ffff6666",
"CreditNoteNumber": "CN-0003",
"CurrencyCode": "GBP",
"Date": "2026-09-02T00:00:00Z",
"LineAmountTypes": "Exclusive",
"LineItems": [
{
"AccountCode": "200",
"Description": "Onsite project management",
"LineAmount": 125.0,
"LineItemID": "52208ff9-528a-4985-a9ad-b2b1d4210e38",
"Quantity": 1,
"TaxAmount": 50.0,
"TaxType": "OUTPUT2",
"UnitAmount": 125.0
}
],
"RemainingCredit": 150.0,
"Status": "DRAFT",
"SubTotal": 125.0,
"Total": 150.0,
"TotalTax": 25.0,
"Type": "ACCRECCREDIT",
"UpdatedDateUTC": "2026-09-02T11:02:00.000Z"
}Create a quote
Raise a quote for a contact. Created as a draft unless it is sent straight away.
Inputs
- Contact ID
contact_idtext - The Xero ContactID to raise this against. Get one from 'Create a contact' or 'List contacts'.
- Contact name
contact_nametext - Used only when no Contact ID is given: the contact with exactly this name is looked up first, and only its id is sent. The contact itself is never changed.
- Status
statustext - Save the quote as a draft, or mark it as sent.One of:
DRAFT,SENT. Default:DRAFT. - Line description
descriptiontext - What the line is for. Required unless an item code is given.
- Quantity
quantitynumber - How many units. Defaults to 1.At least 0. Default:
1. - Unit amount
unit_amountnumber - The price per unit, before tax.
- Account
account_codetext - The account this line posts to. Optional on a draft, required before it can be approved.
- Item code
item_codetext - A saved item's code, which fills the line's description, price and account from the item.
- Tax rate
tax_typetext - Overrides the tax rate the account would otherwise apply.
- Discount %
discount_ratenumber - A percentage discount on this line, 0-100.From 0.0 to 100.0.
- Line items (advanced)
line_itemslist - A list of line objects for a multi-line document, e.g. [{"description": "Design", "quantity": 2, "unit_amount": 150}]. When given it replaces the single-line fields above.
- Amounts include tax?
line_amount_typestext - Whether the amounts above include tax. Defaults to excluding it.One of:
Exclusive(Amounts exclude tax),Inclusive(Amounts include tax),NoTax(No tax). - Quote date
datedate - The date the quote is issued. Xero requires one; today's date is used when this is left blank.
- Expiry date
expiry_datedate - The date the quote stops being valid.
- Quote number
quote_numbertext - Your own quote number. Left blank, Xero generates one.
- Reference
referencetext - An additional reference for the quote.
- Title
titletext - A title shown on the quote, max 100 characters.
- Summary
summarytext - A summary shown on the quote, max 3000 characters.
- Terms
termstext - The quote's terms, max 4000 characters.
- Currency
currency_codetext - ISO currency code. Defaults to the organisation's base currency.
Outputs
BrandingThemeIDtextContactobjectCurrencyCodetextCurrencyRatenumberDatetextDateStringtextExpiryDatetextExpiryDateStringtextLineAmountTypestextLineItemslistQuoteIDtextQuoteNumbertextReferencetextStatustextStatusAttributeStringtextSubTotalnumberSummarytextTermstextTitletextTotalnumberTotalDiscountnumberTotalTaxnumberUpdatedDateUTCtext
Example output
{
"Contact": {
"ContactID": "e0e0e0e0-1111-2222-3333-444455556666",
"Name": "Acme Ltd"
},
"CurrencyCode": "GBP",
"Date": "2026-09-01T00:00:00Z",
"ExpiryDate": "2026-09-15T00:00:00Z",
"LineAmountTypes": "Exclusive",
"LineItems": [
{
"AccountCode": "200",
"Description": "Onsite project management",
"LineAmount": 250.0,
"LineItemID": "52208ff9-528a-4985-a9ad-b2b1d4210e38",
"Quantity": 2,
"TaxAmount": 50.0,
"TaxType": "OUTPUT2",
"UnitAmount": 125.0
}
],
"QuoteID": "bbbb2222-cccc-3333-dddd-4444eeee5555",
"QuoteNumber": "QU-0007",
"Status": "DRAFT",
"SubTotal": 250.0,
"Title": "Website refresh",
"Total": 300.0,
"TotalTax": 50.0,
"UpdatedDateUTC": "2026-09-01T10:16:00.000Z"
}Create an invoice
Raise a sales invoice or a bill against a contact. Created as a draft unless a different status is chosen; approving it posts journals and needs an account on every line.
Inputs
- Contact ID
contact_idtext - The Xero ContactID to raise this against. Get one from 'Create a contact' or 'List contacts'.
- Contact name
contact_nametext - Used only when no Contact ID is given: the contact with exactly this name is looked up first, and only its id is sent. The contact itself is never changed.
- Type
invoice_typetext - A sales invoice you are owed, or a bill you owe.One of:
ACCREC(Sales invoice (money owed to you)),ACCPAY(Bill (money you owe)). Default:ACCREC. - Status
statustext - The status to create the invoice in.One of:
DRAFT,SUBMITTED(Awaiting approval),AUTHORISED(Approved and awaiting payment). Default:DRAFT. - Line description
descriptiontext - What the line is for. Required unless an item code is given.
- Quantity
quantitynumber - How many units. Defaults to 1.At least 0. Default:
1. - Unit amount
unit_amountnumber - The price per unit, before tax.
- Account
account_codetext - The account this line posts to. Optional on a draft, required before it can be approved.
- Item code
item_codetext - A saved item's code, which fills the line's description, price and account from the item.
- Tax rate
tax_typetext - Overrides the tax rate the account would otherwise apply.
- Discount %
discount_ratenumber - A percentage discount on this line, 0-100.From 0.0 to 100.0.
- Line items (advanced)
line_itemslist - A list of line objects for a multi-line document, e.g. [{"description": "Design", "quantity": 2, "unit_amount": 150}]. When given it replaces the single-line fields above.
- Amounts include tax?
line_amount_typestext - Whether the amounts above include tax. Defaults to excluding it.One of:
Exclusive(Amounts exclude tax),Inclusive(Amounts include tax),NoTax(No tax). - Invoice date
datedate - The date the invoice is issued. Defaults to today.
- Due date
due_datedate - The date payment is due.
- Invoice number
invoice_numbertext - Your own invoice number. Left blank, Xero generates the next one from your invoice settings.
- Reference
referencetext - An additional reference shown on the invoice.
- Currency
currency_codetext - ISO currency code, e.g. GBP. Defaults to the organisation's base currency.
- Source document URL
urltext - A link Xero shows on the invoice, back to whatever raised it.
Outputs
AmountCreditednumberAmountDuenumberAmountPaidnumberBrandingThemeIDtextCISDeductionnumberContactobjectCreditNoteslistCurrencyCodetextCurrencyRatenumberDatetextDateStringtextDueDatetextDueDateStringtextEnteredTotalnumberExpectedPaymentDatetextFullyPaidOnDatetextHasAttachmentstrue/falseInvoiceIDtextInvoiceNumbertextLineAmountTypestextLineItemslistOverpaymentslistPaymentslistPlannedPaymentDatetextPrepaymentslistReferencetextRepeatingInvoiceIDtextRoundingAmountnumberSalesTaxCalculationTypeCodetextSentToContacttrue/falseStatustextStatusAttributeStringtextSubTotalnumberTotalnumberTotalDiscountnumberTotalTaxnumberTypetextUpdatedDateUTCtextUpdatedDateUTCStringtextUrltextWarningslist
Example output
{
"AmountDue": 300.0,
"AmountPaid": 0.0,
"Contact": {
"ContactID": "e0e0e0e0-1111-2222-3333-444455556666",
"Name": "Acme Ltd"
},
"CurrencyCode": "GBP",
"Date": "2026-09-01T00:00:00Z",
"DueDate": "2026-09-30T00:00:00Z",
"InvoiceID": "aaaa1111-bbbb-2222-cccc-3333dddd4444",
"InvoiceNumber": "INV-0042",
"LineAmountTypes": "Exclusive",
"LineItems": [
{
"AccountCode": "200",
"Description": "Onsite project management",
"LineAmount": 250.0,
"LineItemID": "52208ff9-528a-4985-a9ad-b2b1d4210e38",
"Quantity": 2,
"TaxAmount": 50.0,
"TaxType": "OUTPUT2",
"UnitAmount": 125.0
}
],
"Status": "DRAFT",
"SubTotal": 250.0,
"Total": 300.0,
"TotalTax": 50.0,
"Type": "ACCREC",
"UpdatedDateUTC": "2026-09-01T10:15:00.000Z"
}Create an item
Create an untracked item: a saved product or service whose code fills in a line's description, price and account. Tracked inventory items are not created here.
Inputs
- Item code
codetextRequired - Your code for the item. Must be unique, max 30 characters.
- Name
nametext - The item's name, max 50 characters.
- Sales description
descriptiontext - The description used when the item is sold.
- Purchase description
purchase_descriptiontext - The description used when the item is bought.
- Sale price
sales_unit_pricenumber - What the item sells for, per unit.At least 0.
- Sales account
sales_account_codetext - The account a sale of this item posts to.
- Sales tax rate
sales_tax_typetext - The tax rate applied when the item is sold.
- Purchase price
purchase_unit_pricenumber - What the item costs to buy, per unit.At least 0.
- Purchase account
purchase_account_codetext - The account a purchase of this item posts to.
- Purchase tax rate
purchase_tax_typetext - The tax rate applied when the item is bought.
- Available on sales
is_soldtrue/false - Whether the item can be used on sales invoices.Default:
true. - Available on purchases
is_purchasedtrue/false - Whether the item can be used on bills.Default:
true.
Outputs
CodetextDescriptiontextInventoryAssetAccountCodetextIsPurchasedtrue/falseIsSoldtrue/falseIsTrackedAsInventorytrue/falseItemIDtextNametextPurchaseDescriptiontextPurchaseDetailsobjectQuantityAvailablenumberQuantityOnBackOrdernumberQuantityOnHandnumberSalesDetailsobjectTotalCostPoolnumberUpdatedDateUTCtext
Example output
{
"Code": "CONSULT-DAY",
"Description": "One day of consulting",
"IsPurchased": false,
"IsSold": true,
"IsTrackedAsInventory": false,
"ItemID": "dddd4444-eeee-5555-ffff-6666aaaa7777",
"Name": "Consulting day",
"SalesDetails": {
"AccountCode": "200",
"TaxType": "OUTPUT2",
"UnitPrice": 750.0
},
"UpdatedDateUTC": "2026-08-30T08:00:00.000Z"
}Delete an item
Delete an item. Xero cannot restore one afterwards; documents that already used it keep their lines.
Inputs
- Item ID or code
item_idtextRequired - The Xero ItemID, or the item's code.
Outputs
deletedtrue/falseitem_idtext
Example output
{
"deleted": true,
"item_id": "dddd4444-eeee-5555-ffff-6666aaaa7777"
}Delete or void an invoice
Take an invoice out of use. A draft or awaiting-approval invoice is deleted; an approved one with no payments against it is voided. Xero refuses the other way round.
Inputs
- Invoice ID or number
invoice_idtextRequired - The Xero InvoiceID, or the invoice number.
- Delete or void
statustext - Which of Xero's two ways out of an invoice to use.One of:
DELETED(Delete (only a draft or awaiting-approval invoice)),VOIDED(Void (an approved invoice with no payments applied)). Default:DELETED.
Outputs
AmountCreditednumberAmountDuenumberAmountPaidnumberBrandingThemeIDtextCISDeductionnumberContactobjectCreditNoteslistCurrencyCodetextCurrencyRatenumberDatetextDateStringtextDueDatetextDueDateStringtextEnteredTotalnumberExpectedPaymentDatetextFullyPaidOnDatetextHasAttachmentstrue/falseInvoiceIDtextInvoiceNumbertextLineAmountTypestextLineItemslistOverpaymentslistPaymentslistPlannedPaymentDatetextPrepaymentslistReferencetextRepeatingInvoiceIDtextRoundingAmountnumberSalesTaxCalculationTypeCodetextSentToContacttrue/falseStatustextStatusAttributeStringtextSubTotalnumberTotalnumberTotalDiscountnumberTotalTaxnumberTypetextUpdatedDateUTCtextUpdatedDateUTCStringtextUrltextWarningslist
Example output
{
"AmountDue": 300.0,
"AmountPaid": 0.0,
"Contact": {
"ContactID": "e0e0e0e0-1111-2222-3333-444455556666",
"Name": "Acme Ltd"
},
"CurrencyCode": "GBP",
"Date": "2026-09-01T00:00:00Z",
"DueDate": "2026-09-30T00:00:00Z",
"InvoiceID": "aaaa1111-bbbb-2222-cccc-3333dddd4444",
"InvoiceNumber": "INV-0042",
"LineAmountTypes": "Exclusive",
"LineItems": [
{
"AccountCode": "200",
"Description": "Onsite project management",
"LineAmount": 250.0,
"LineItemID": "52208ff9-528a-4985-a9ad-b2b1d4210e38",
"Quantity": 2,
"TaxAmount": 50.0,
"TaxType": "OUTPUT2",
"UnitAmount": 125.0
}
],
"Status": "DELETED",
"SubTotal": 250.0,
"Total": 300.0,
"TotalTax": 50.0,
"Type": "ACCREC",
"UpdatedDateUTC": "2026-09-01T10:15:00.000Z"
}Get a contact
Read one contact in full, including its addresses, contact people and outstanding balances.
Inputs
- Contact ID or code
contact_idtextRequired - The Xero ContactID, or the contact code you set on it.
Outputs
AccountNumbertextAccountsPayableTaxTypetextAccountsReceivableTaxTypetextAddresseslistBalancesobjectBankAccountDetailstextBatchPaymentsobjectBrandingThemeobjectCompanyNumbertextContactGroupslistContactIDtextContactNumbertextContactPersonslistContactStatustextDefaultCurrencytextDiscountnumberEmailAddresstextFirstNametextHasAttachmentstrue/falseIsCustomertrue/falseIsSuppliertrue/falseLastNametextMergedToContactIDtextNametextPaymentTermsobjectPhoneslistPurchasesDefaultAccountCodetextPurchasesDefaultLineAmountTypetextPurchasesTrackingCategorieslistSalesDefaultAccountCodetextSalesDefaultLineAmountTypetextSalesTrackingCategorieslistTaxNumbertextTaxNumberTypetextTrackingCategoryNametextTrackingOptionNametextUpdatedDateUTCtextWebsitetextXeroNetworkKeytext
Example output
{
"ContactID": "e0e0e0e0-1111-2222-3333-444455556666",
"ContactStatus": "ACTIVE",
"DefaultCurrency": "GBP",
"EmailAddress": "ap@acme.example",
"FirstName": "Ada",
"IsCustomer": true,
"IsSupplier": false,
"LastName": "Lovelace",
"Name": "Acme Ltd",
"Phones": [
{
"PhoneNumber": "020 7946 0000",
"PhoneType": "DEFAULT"
}
],
"UpdatedDateUTC": "2026-08-14T09:12:30.940Z"
}Get an invoice
Read one invoice in full, with its line items, payments and credit notes applied.
Inputs
- Invoice ID or number
invoice_idtextRequired - The Xero InvoiceID, or the invoice number e.g. INV-0042.
Outputs
AmountCreditednumberAmountDuenumberAmountPaidnumberBrandingThemeIDtextCISDeductionnumberContactobjectCreditNoteslistCurrencyCodetextCurrencyRatenumberDatetextDateStringtextDueDatetextDueDateStringtextEnteredTotalnumberExpectedPaymentDatetextFullyPaidOnDatetextHasAttachmentstrue/falseInvoiceIDtextInvoiceNumbertextLineAmountTypestextLineItemslistOverpaymentslistPaymentslistPlannedPaymentDatetextPrepaymentslistReferencetextRepeatingInvoiceIDtextRoundingAmountnumberSalesTaxCalculationTypeCodetextSentToContacttrue/falseStatustextStatusAttributeStringtextSubTotalnumberTotalnumberTotalDiscountnumberTotalTaxnumberTypetextUpdatedDateUTCtextUpdatedDateUTCStringtextUrltextWarningslist
Example output
{
"AmountDue": 300.0,
"AmountPaid": 0.0,
"Contact": {
"ContactID": "e0e0e0e0-1111-2222-3333-444455556666",
"Name": "Acme Ltd"
},
"CurrencyCode": "GBP",
"Date": "2026-09-01T00:00:00Z",
"DueDate": "2026-09-30T00:00:00Z",
"InvoiceID": "aaaa1111-bbbb-2222-cccc-3333dddd4444",
"InvoiceNumber": "INV-0042",
"LineAmountTypes": "Exclusive",
"LineItems": [
{
"AccountCode": "200",
"Description": "Onsite project management",
"LineAmount": 250.0,
"LineItemID": "52208ff9-528a-4985-a9ad-b2b1d4210e38",
"Quantity": 2,
"TaxAmount": 50.0,
"TaxType": "OUTPUT2",
"UnitAmount": 125.0
}
],
"Status": "DRAFT",
"SubTotal": 250.0,
"Total": 300.0,
"TotalTax": 50.0,
"Type": "ACCREC",
"UpdatedDateUTC": "2026-09-01T10:15:00.000Z"
}Get the organisation
Read the connected Xero organisation: its name, country, base currency, financial year end and lock dates.
Inputs
None.
Outputs
APIKeytextAddresseslistBaseCurrencytextClasstextCountryCodetextCreatedDateUTCtextDefaultPurchasesTaxtextDefaultSalesTaxtextEditiontextEmployerIdentificationNumbertextEndOfYearLockDatetextFinancialYearEndDaynumberFinancialYearEndMonthnumberIsDemoCompanytrue/falseLegalNametextLineOfBusinesstextNametextOrganisationEntityTypetextOrganisationIDtextOrganisationStatustextOrganisationTypetextPaysTaxtrue/falsePeriodLockDatetextPhoneslistRegistrationNumbertextSalesTaxBasistextSalesTaxPeriodtextShortCodetextTaxNumbertextTimezonetextVersiontext
Example output
{
"BaseCurrency": "GBP",
"Class": "DEMO",
"CountryCode": "GB",
"CreatedDateUTC": "2026-01-05T09:00:00.000Z",
"Edition": "BUSINESS",
"FinancialYearEndDay": 31,
"FinancialYearEndMonth": 3,
"IsDemoCompany": true,
"LegalName": "Demo Company (UK) Ltd",
"Name": "Demo Company (UK)",
"OrganisationID": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"OrganisationStatus": "ACTIVE",
"Timezone": "UTC"
}List accounts
List the organisation's chart of accounts. Use it to find the account code a line item should post to.
Inputs
- Account type
account_typetext - Only return accounts of this type.One of:
BANK(Bank account),CURRENT(Current asset),CURRLIAB(Current liability),DEPRECIATN(Depreciation),DIRECTCOSTS(Direct costs),EQUITY,EXPENSE,FIXED(Fixed asset),INVENTORY(Inventory asset),LIABILITY, and 7 more. - Status
statustext - Only return accounts in this status.One of:
ACTIVE,ARCHIVED. - Limit
limitnumber - How many records to return. Xero sends them all in one response, so this trims the result.From 1 to 1000. Default:
100. - Changed since
modified_sincedate and time - Only return records created or changed after this moment.
Outputs
accountslistcountnumbertotal_countnumber
Example output
{
"accounts": [
{
"AccountID": "4f2a3169-8454-4012-a642-05a88ef32982",
"Class": "REVENUE",
"Code": "200",
"EnablePaymentsToAccount": false,
"Name": "Sales",
"Status": "ACTIVE",
"TaxType": "OUTPUT2",
"Type": "REVENUE"
},
{
"AccountID": "8a1b9c5d-3f2e-4a7b-9c8d-1e2f3a4b5c6d",
"Class": "EXPENSE",
"Code": "400",
"EnablePaymentsToAccount": false,
"Name": "Advertising",
"Status": "ACTIVE",
"TaxType": "INPUT2",
"Type": "EXPENSE"
}
],
"count": 2,
"total_count": 2
}List contacts
Find contacts by name, email, contact code or company number, or page through all of them.
Inputs
- Search
search_termtext - Case-insensitive search across name, first and last name, contact number, company number and email.
- Contact IDs
contact_idslist - Return only these contacts, by their Xero ids.
- Include archived
include_archivedtrue/false - Also return contacts that have been archived.Default:
false. - Summary only
summary_onlytrue/false - Return a lighter, faster record without addresses, balances, contact groups or contact people.Default:
false. - Sort by
ordertext - How to order the results.One of:
Name ASC(Name (A–Z)),Name DESC(Name (Z–A)),UpdatedDateUTC DESC(Recently updated first),UpdatedDateUTC ASC(Least recently updated first). - Page
pagenumber - Which page of results to return. Starts at 1.At least 1. Default:
1. - Page size
page_sizenumber - How many results per page (1-1000). Defaults to 100.From 1 to 1000. Default:
100. - Changed since
modified_sincedate and time - Only return records created or changed after this moment.
Outputs
contactslistcountnumberhas_moretrue/falseitem_countnumberpagenumberpage_countnumberpage_sizenumber
Example output
{
"contacts": [
{
"ContactID": "e0e0e0e0-1111-2222-3333-444455556666",
"ContactStatus": "ACTIVE",
"DefaultCurrency": "GBP",
"EmailAddress": "ap@acme.example",
"FirstName": "Ada",
"IsCustomer": true,
"IsSupplier": false,
"LastName": "Lovelace",
"Name": "Acme Ltd",
"Phones": [
{
"PhoneNumber": "020 7946 0000",
"PhoneType": "DEFAULT"
}
],
"UpdatedDateUTC": "2026-08-14T09:12:30.940Z"
}
],
"count": 1,
"has_more": false,
"item_count": 1,
"page": 1,
"page_count": 1,
"page_size": 100
}List credit notes
Page through the organisation's credit notes, newest change first. Every result carries its line items and allocations.
Inputs
- Sort by
ordertext - How to order the results.One of:
UpdatedDateUTC DESC(Recently updated first),UpdatedDateUTC ASC(Least recently updated first). - Page
pagenumber - Which page of results to return. Starts at 1.At least 1. Default:
1. - Page size
page_sizenumber - How many results per page (1-1000). Defaults to 100.From 1 to 1000. Default:
100. - Changed since
modified_sincedate and time - Only return records created or changed after this moment.
Outputs
countnumbercredit_noteslisthas_moretrue/falseitem_countnumberpagenumberpage_countnumberpage_sizenumber
Example output
{
"count": 1,
"credit_notes": [
{
"Contact": {
"ContactID": "e0e0e0e0-1111-2222-3333-444455556666",
"Name": "Acme Ltd"
},
"CreditNoteID": "cccc3333-dddd-4444-eeee-5555ffff6666",
"CreditNoteNumber": "CN-0003",
"CurrencyCode": "GBP",
"Date": "2026-09-02T00:00:00Z",
"LineAmountTypes": "Exclusive",
"LineItems": [
{
"AccountCode": "200",
"Description": "Onsite project management",
"LineAmount": 125.0,
"LineItemID": "52208ff9-528a-4985-a9ad-b2b1d4210e38",
"Quantity": 1,
"TaxAmount": 50.0,
"TaxType": "OUTPUT2",
"UnitAmount": 125.0
}
],
"RemainingCredit": 150.0,
"Status": "DRAFT",
"SubTotal": 125.0,
"Total": 150.0,
"TotalTax": 25.0,
"Type": "ACCRECCREDIT",
"UpdatedDateUTC": "2026-09-02T11:02:00.000Z"
}
],
"has_more": false,
"item_count": 1,
"page": 1,
"page_count": 1,
"page_size": 100
}List invoices
Find invoices and bills by status, contact, invoice number or reference. Every result carries its line items.
Inputs
- Statuses
statuseslist - Only return invoices in these statuses.One or more of:
DRAFT,SUBMITTED(Awaiting approval),AUTHORISED(Approved and awaiting payment),PAID,VOIDED,DELETED. - Contact IDs
contact_idslist - Only return invoices for these contacts.
- Invoice numbers
invoice_numberslist - Only return invoices with these exact numbers.
- Search
search_termtext - Case-insensitive search across invoice number and reference.
- Only ones created here
created_by_my_apptrue/false - Only return invoices this Xero connection created.Default:
false. - Sort by
ordertext - How to order the results.One of:
Date DESC(Invoice date, newest first),Date ASC(Invoice date, oldest first),UpdatedDateUTC DESC(Recently updated first),UpdatedDateUTC ASC(Least recently updated first). - Page
pagenumber - Which page of results to return. Starts at 1.At least 1. Default:
1. - Page size
page_sizenumber - How many results per page (1-1000). Defaults to 100.From 1 to 1000. Default:
100. - Changed since
modified_sincedate and time - Only return records created or changed after this moment.
Outputs
countnumberhas_moretrue/falseinvoiceslistitem_countnumberpagenumberpage_countnumberpage_sizenumber
Example output
{
"count": 1,
"has_more": false,
"invoices": [
{
"AmountDue": 300.0,
"AmountPaid": 0.0,
"Contact": {
"ContactID": "e0e0e0e0-1111-2222-3333-444455556666",
"Name": "Acme Ltd"
},
"CurrencyCode": "GBP",
"Date": "2026-09-01T00:00:00Z",
"DueDate": "2026-09-30T00:00:00Z",
"InvoiceID": "aaaa1111-bbbb-2222-cccc-3333dddd4444",
"InvoiceNumber": "INV-0042",
"LineAmountTypes": "Exclusive",
"LineItems": [
{
"AccountCode": "200",
"Description": "Onsite project management",
"LineAmount": 250.0,
"LineItemID": "52208ff9-528a-4985-a9ad-b2b1d4210e38",
"Quantity": 2,
"TaxAmount": 50.0,
"TaxType": "OUTPUT2",
"UnitAmount": 125.0
}
],
"Status": "DRAFT",
"SubTotal": 250.0,
"Total": 300.0,
"TotalTax": 50.0,
"Type": "ACCREC",
"UpdatedDateUTC": "2026-09-01T10:15:00.000Z"
}
],
"item_count": 1,
"page": 1,
"page_count": 1,
"page_size": 100
}List items
List the organisation's saved products and services.
Inputs
- Limit
limitnumber - How many records to return. Xero sends them all in one response, so this trims the result.From 1 to 1000. Default:
100. - Changed since
modified_sincedate and time - Only return records created or changed after this moment.
Outputs
countnumberitemslisttotal_countnumber
Example output
{
"count": 1,
"items": [
{
"Code": "CONSULT-DAY",
"Description": "One day of consulting",
"IsPurchased": false,
"IsSold": true,
"IsTrackedAsInventory": false,
"ItemID": "dddd4444-eeee-5555-ffff-6666aaaa7777",
"Name": "Consulting day",
"SalesDetails": {
"AccountCode": "200",
"TaxType": "OUTPUT2",
"UnitPrice": 750.0
},
"UpdatedDateUTC": "2026-08-30T08:00:00.000Z"
}
],
"total_count": 1
}List quotes
Find quotes by status, contact, number or quote date.
Inputs
- Status
statustext - Only return quotes in this status.One of:
DRAFT,SENT,ACCEPTED,DECLINED,INVOICED,DELETED. - Contact ID
contact_idtext - Only return quotes for this contact.
- Quote number
quote_numbertext - Matches any part of the quote number, so 'QU-01' finds QU-0100 as well as QU-0101.
- Dated from
date_fromdate - Only return quotes issued on or after this date.
- Dated to
date_todate - Only return quotes issued on or before this date.
- Sort by
ordertext - How to order the results.One of:
UpdatedDateUTC DESC(Recently updated first),UpdatedDateUTC ASC(Least recently updated first). - Page
pagenumber - Which page of results to return. Starts at 1.At least 1. Default:
1. - Page size
page_sizenumber - How many results per page (1-1000). Defaults to 100.From 1 to 1000. Default:
100. - Changed since
modified_sincedate and time - Only return records created or changed after this moment.
Outputs
countnumberhas_moretrue/falseitem_countnumberpagenumberpage_countnumberpage_sizenumberquoteslist
Example output
{
"count": 1,
"has_more": false,
"item_count": 1,
"page": 1,
"page_count": 1,
"page_size": 100,
"quotes": [
{
"Contact": {
"ContactID": "e0e0e0e0-1111-2222-3333-444455556666",
"Name": "Acme Ltd"
},
"CurrencyCode": "GBP",
"Date": "2026-09-01T00:00:00Z",
"ExpiryDate": "2026-09-15T00:00:00Z",
"LineAmountTypes": "Exclusive",
"LineItems": [
{
"AccountCode": "200",
"Description": "Onsite project management",
"LineAmount": 250.0,
"LineItemID": "52208ff9-528a-4985-a9ad-b2b1d4210e38",
"Quantity": 2,
"TaxAmount": 50.0,
"TaxType": "OUTPUT2",
"UnitAmount": 125.0
}
],
"QuoteID": "bbbb2222-cccc-3333-dddd-4444eeee5555",
"QuoteNumber": "QU-0007",
"Status": "DRAFT",
"SubTotal": 250.0,
"Title": "Website refresh",
"Total": 300.0,
"TotalTax": 50.0,
"UpdatedDateUTC": "2026-09-01T10:16:00.000Z"
}
]
}List tax rates
List the organisation's tax rates and the tax type codes line items use to override the default rate.
Inputs
- Status
statustext - Only return tax rates in this status.One of:
ACTIVE(Active (usable on transactions)),DELETED,ARCHIVED(Archived (used historically, not usable now)). - Limit
limitnumber - How many records to return. Xero sends them all in one response, so this trims the result.From 1 to 1000. Default:
100.
Outputs
countnumbertax_rateslisttotal_countnumber
Example output
{
"count": 2,
"tax_rates": [
{
"DisplayTaxRate": 20.0,
"EffectiveRate": 20.0,
"Name": "20% (VAT on Income)",
"ReportTaxType": "OUTPUT2",
"Status": "ACTIVE",
"TaxComponents": [
{
"IsCompound": false,
"Name": "VAT",
"Rate": 20.0
}
],
"TaxType": "OUTPUT2"
},
{
"DisplayTaxRate": 0.0,
"EffectiveRate": 0.0,
"Name": "Zero Rated Income",
"Status": "ACTIVE",
"TaxComponents": [
{
"IsCompound": false,
"Name": "Zero Rated",
"Rate": 0.0
}
],
"TaxType": "ZERORATEDOUTPUT"
}
],
"total_count": 2
}Update a contact
Change a contact's details. Anything left blank keeps the value Xero already holds.
Inputs
- Contact ID
contact_idtextRequired - The Xero ContactID of the contact to change.
- Name
nametext - A new name for the contact.
- Email
emailtext - The contact's primary email address.
- First name
first_nametext - The main contact person's first name.
- Last name
last_nametext - The main contact person's last name.
- Phone number
phonetext - A phone number for the contact.
- Phone type
phone_typetext - Which of Xero's four phone slots the number goes in.One of:
DEFAULT(Main),MOBILE,DDI(Direct dial),FAX. Default:DEFAULT. - Contact code
contact_numbertext - Your own identifier for this contact, shown as Contact Code in Xero. 'Get a contact' accepts it in place of the id.
- Account number
account_numbertext - A user-defined account number for the contact.
- Tax number
tax_numbertext - The contact's tax number: ABN, GST number, VAT number or tax ID depending on your Xero region.
- Company number
company_numbertext - The contact's company registration number.
- Default currency
default_currencytext - ISO currency code used when invoicing this contact, e.g. GBP.
- Address line 1
address_line1text - First line of the contact's address.
- Address line 2
address_line2text - Second line of the contact's address.
- City
citytext - City or town.
- Region
regiontext - State, province or region.
- Postal code
postal_codetext - Postcode or ZIP code.
- Country
countrytext - Country name (letters only, as Xero requires).
- Address type
address_typetext - Which address this is. Invoices are addressed to the postal one.One of:
POBOX(Postal (the address invoices are addressed to)),STREET. Default:POBOX.
Outputs
AccountNumbertextAccountsPayableTaxTypetextAccountsReceivableTaxTypetextAddresseslistBalancesobjectBankAccountDetailstextBatchPaymentsobjectBrandingThemeobjectCompanyNumbertextContactGroupslistContactIDtextContactNumbertextContactPersonslistContactStatustextDefaultCurrencytextDiscountnumberEmailAddresstextFirstNametextHasAttachmentstrue/falseIsCustomertrue/falseIsSuppliertrue/falseLastNametextMergedToContactIDtextNametextPaymentTermsobjectPhoneslistPurchasesDefaultAccountCodetextPurchasesDefaultLineAmountTypetextPurchasesTrackingCategorieslistSalesDefaultAccountCodetextSalesDefaultLineAmountTypetextSalesTrackingCategorieslistTaxNumbertextTaxNumberTypetextTrackingCategoryNametextTrackingOptionNametextUpdatedDateUTCtextWebsitetextXeroNetworkKeytext
Example output
{
"ContactID": "e0e0e0e0-1111-2222-3333-444455556666",
"ContactStatus": "ACTIVE",
"DefaultCurrency": "GBP",
"EmailAddress": "billing@acme.example",
"FirstName": "Ada",
"IsCustomer": true,
"IsSupplier": false,
"LastName": "Lovelace",
"Name": "Acme Ltd",
"Phones": [
{
"PhoneNumber": "020 7946 0000",
"PhoneType": "DEFAULT"
}
],
"UpdatedDateUTC": "2026-08-14T09:12:30.940Z"
}Update an invoice
Change an invoice or move it between draft, awaiting approval and approved. Supplying line items replaces every line on the invoice.
Inputs
- Invoice ID
invoice_idtextRequired - The Xero InvoiceID of the invoice to change.
- Status
statustext - Move the invoice to this status. Use 'Delete or void an invoice' to take one out of use.One of:
DRAFT,SUBMITTED(Awaiting approval),AUTHORISED(Approved and awaiting payment). - Contact ID
contact_idtext - The Xero ContactID to raise this against. Get one from 'Create a contact' or 'List contacts'.
- Contact name
contact_nametext - Used only when no Contact ID is given: the contact with exactly this name is looked up first, and only its id is sent. The contact itself is never changed.
- Invoice date
datedate - A new issue date for the invoice.
- Due date
due_datedate - A new due date for the invoice.
- Invoice number
invoice_numbertext - A new invoice number.
- Reference
referencetext - A new reference for the invoice.
- Source document URL
urltext - A link Xero shows on the invoice.
- Mark as sent
sent_to_contacttrue/false - Show the invoice as sent in Xero. Only an approved invoice can be marked sent.
- Line items (replaces all lines)
line_itemslist - A complete new list of lines. Every existing line whose LineItemID is missing from this list is deleted, so include the ones you want to keep.
- Amounts include tax?
line_amount_typestext - Whether the line amounts include tax.One of:
Exclusive(Amounts exclude tax),Inclusive(Amounts include tax),NoTax(No tax).
Outputs
AmountCreditednumberAmountDuenumberAmountPaidnumberBrandingThemeIDtextCISDeductionnumberContactobjectCreditNoteslistCurrencyCodetextCurrencyRatenumberDatetextDateStringtextDueDatetextDueDateStringtextEnteredTotalnumberExpectedPaymentDatetextFullyPaidOnDatetextHasAttachmentstrue/falseInvoiceIDtextInvoiceNumbertextLineAmountTypestextLineItemslistOverpaymentslistPaymentslistPlannedPaymentDatetextPrepaymentslistReferencetextRepeatingInvoiceIDtextRoundingAmountnumberSalesTaxCalculationTypeCodetextSentToContacttrue/falseStatustextStatusAttributeStringtextSubTotalnumberTotalnumberTotalDiscountnumberTotalTaxnumberTypetextUpdatedDateUTCtextUpdatedDateUTCStringtextUrltextWarningslist
Example output
{
"AmountDue": 300.0,
"AmountPaid": 0.0,
"Contact": {
"ContactID": "e0e0e0e0-1111-2222-3333-444455556666",
"Name": "Acme Ltd"
},
"CurrencyCode": "GBP",
"Date": "2026-09-01T00:00:00Z",
"DueDate": "2026-09-30T00:00:00Z",
"InvoiceID": "aaaa1111-bbbb-2222-cccc-3333dddd4444",
"InvoiceNumber": "INV-0042",
"LineAmountTypes": "Exclusive",
"LineItems": [
{
"AccountCode": "200",
"Description": "Onsite project management",
"LineAmount": 250.0,
"LineItemID": "52208ff9-528a-4985-a9ad-b2b1d4210e38",
"Quantity": 2,
"TaxAmount": 50.0,
"TaxType": "OUTPUT2",
"UnitAmount": 125.0
}
],
"Reference": "PO-91422",
"Status": "DRAFT",
"SubTotal": 250.0,
"Total": 300.0,
"TotalTax": 50.0,
"Type": "ACCREC",
"UpdatedDateUTC": "2026-09-01T10:15:00.000Z"
}