Skip to content

Xero

Connect fyrn to Xero to automate accounting workflows — create invoices, manage contacts, record payments, and track bank transactions through the Xero API.

PropertyValue
Typehttp
Authenticationoauth2
CategoryFinance & Accounting
FieldTypeRequiredDescription
tenant_idstringYesXero tenant ID (organisation UUID)
client_idstringYesXero OAuth2 client ID
client_secretstringYesXero OAuth2 client secret
refresh_tokenstringYesOAuth2 refresh token

Create a new invoice in Xero. Supports both Accounts Receivable (ACCREC) and Accounts Payable (ACCPAY) invoices.

EndpointPUT /Invoices
MethodPUT

Retrieve a single invoice by its ID from Xero.

EndpointGET /Invoices/{InvoiceID}
MethodGET

List invoices from Xero with optional filtering and pagination.

EndpointGET /Invoices
MethodGET

Create a new contact (customer or supplier) in Xero.

EndpointPOST /Contacts
MethodPOST

Retrieve a single contact by ID from Xero.

EndpointGET /Contacts/{ContactID}
MethodGET

List contacts from Xero with optional filtering and pagination.

EndpointGET /Contacts
MethodGET

Record a payment against an invoice in Xero.

EndpointPUT /Payments
MethodPUT

List bank transactions (spend or receive money) from Xero.

EndpointGET /BankTransactions
MethodGET

List all accounts from the chart of accounts in Xero.

EndpointGET /Accounts
MethodGET

Create a credit note in Xero to record a refund or credit against a contact.

EndpointPUT /CreditNotes
MethodPUT
name: shopify-refund-to-xero
description: When a Shopify order is refunded, create a credit note in Xero and update the contact
trigger:
type: webhook
event: shopify.refund.created
steps:
- id: find-contact
connector: xero
action: list-contacts
params:
where: 'EmailAddress == "{{ trigger.body.order.customer.email }}"'
- id: create-credit-note
connector: xero
action: create-credit-note
params:
Type: "ACCREC"
Contact:
ContactID: "{{ steps.find-contact.result.Contacts[0].ContactID }}"
Date: "{{ trigger.body.created_at | date: '%Y-%m-%d' }}"
LineItems:
- Description: "Refund for order {{ trigger.body.order.name }}"
Quantity: 1
UnitAmount: "{{ trigger.body.transactions[0].amount }}"
AccountCode: "200"
- id: update-contact
connector: xero
action: create-contact
params:
ContactID: "{{ steps.find-contact.result.Contacts[0].ContactID }}"
Name: "{{ steps.find-contact.result.Contacts[0].Name }}"
ContactStatus: "ACTIVE"