🧮 Xero Accounting - New Plugin from Zeroqode

download

Xero is a leading online accounting and reporting tool and this plugin allows to authenticate your app users with their Xero accounts and then read and write data.

For documentation click here: https://docs.zeroqode.com/plugins/xero-accounting

For details, screenshots and demos please visit the plugin page: at Xero Accounting Plugin for Bubble | Zeroqode

Levon Terteryan

Founder @ Zeroqode

zeroqode-for-web-160x120

Bubble Templates

Bubble Plugins

Bubble Courses

Convert Web to iOS & Android

No-code Development Services

1 Like

Important Update

Hello everyone! :raised_hands:

We’ve released a security update for the Xero Accounting plugin—version 1.29.0. To ensure everything works smoothly, you’ll need to re-enter your “Client_Secret” after upgrading.

Here’s what you need to do:

  1. Update the plugin to version 1.29.0.
  2. Re-enter your Client Secret to finalize the update.

We appreciate your time in completing this step, which is crucial for maintaining the plugin’s security. If you encounter any issues, please let us know. We’re here to assist you!

Support Team
Browse all Zeroqode Plugins for Bubble
Banner_Last3

Hi Levon, I am having trouble getting the plugin to work. Can you please point me to the support page on the forum so I can have a look. Thanks.

Hi @costas ,

Thanks for reaching out! :pray:

To help you resolve the issues you’re experiencing with the plugin, we recommend starting by comparing your current setup and workflows with our official demo application, which you can find here:
Zeroqode Demo - Xero Plugin

The demo provides a fully functional example of how the plugin should be configured and used within a Bubble app. Reviewing the demo will often highlight any discrepancies or missing steps in your own setup.

In addition, please take some time to thoroughly review our comprehensive documentation:
Zeroqode Xero Accounting Plugin Documentation

The documentation covers important details on installation, configuration, authentication, and best practices for using the plugin effectively. Reviewing these resources usually helps clarify common setup issues and avoid potential pitfalls.

If after comparing your setup with the demo and reviewing the documentation you’re still encountering difficulties, please share more specific details about the problem, including any error messages or unexpected behavior. This will help us diagnose the issue more precisely and provide you with targeted assistance.

We look forward to helping you get everything running smoothly. :sunflower:

Best regards,
Support Team
Browse all Zeroqode Plugins for Bubble
Banner_Last3

Thanks. Quick question, do I have to have the values in user or can I have a data type e.g Xero that has all values? This is because it’s a saas product and we use this method for data management.

There is a;

company data type > related Xero data type
Xero data type > related company record - one Xero record per company account.

Hope it makes sense.

Yours Sincerely,

Costas

Hi @costas ,

Thanks for your great question—this definitely makes sense given your SaaS multi-tenant setup!

Yes, that approach aligns well with common SaaS practices. Instead of adding Xero tokens and connection info directly on the User, you can create a custom “Xero” data type linked to each Company. This data type would hold fields like Access Token, Refresh Token, Expires At, and any other relevant connection details.

  • When a user connects their Xero account, store the authorization tokens in the related Company’s “Xero” record — not on the User.
  • Make sure to check if the Company already has a connected Xero record before allowing new authorizations. This helps avoid token invalidation issues, since multiple connections to the same Xero organization can overwrite tokens.
  • For all API calls, use the tokens from the Company’s “Xero” record so all users under that company share the same Xero connection.

Looking forward to your reply. :sunflower:

Best regards,
Support Team
Browse all Zeroqode Plugins for Bubble
Banner_Last3

Thanks for clearing. I made the connection.

I deleted it all from previous connection when a had trialed module and it worked.

I must have a question sound the token expiry. Does this mean that I need to retried the refreshed token reach time I fetch data? Eg invoices and customers?

Also, when getting data, does the data need to be displayed via the custom state saved value?

Thanks.

Thanks for help. I was able to get it to work.

I have a question. Even I get API data for contacts and invoice I would like to filter.

For Get Invoices
I am only seeing 100 records. How do I change this to see more/all the records? I will set a filler for status paid, etc.

For Get Contacts
I’m having trouble displaying Phone Number and Date in bubble. Can you kindly show me how to do this.

Thanks

Hi @costas ,

Thanks for your questions and great to hear you got the connection working!

  1. Token Expiry & Refresh:
    Yes, the access token has an expiry time. When making API calls (e.g., fetching invoices or customers), you need to check if the access token is still valid. If expired, you should use the refresh token to get a new access token before making the request. This process ensures uninterrupted data fetching without manual re-authentication.
  2. Displaying Data via Custom States:
    Using custom states to store and display data fetched from the API is a common and effective approach in Bubble. It helps with performance and UI responsiveness. However, you can also directly bind repeating groups or elements to API calls depending on your app’s needs.
  3. Pagination & Record Limits:
    The Xero API typically returns a maximum of 100 records per request. To retrieve more than 100 records, you’ll need to implement pagination by using the page parameter in your API calls to fetch additional batches of records. You can loop through pages to get all data or load more on demand. Filtering by status (e.g., paid invoices) is also supported via query parameters.
  4. Displaying Phone Number and Date:
  • For phone numbers, ensure you are referencing the correct field from the API response in your Bubble elements. Sometimes nested objects or arrays require additional “:formatted as” or “:extract” steps to display properly.
  • For dates, use Bubble’s built-in date formatting functions to display them in your preferred format (e.g., formatted as MM/DD/YYYY). If the date comes as a string, convert it to a date type first.

Hope this helps! Feel free to reach out with any further questions.

Best regards,
Support Team
Browse all Zeroqode Plugins for Bubble
Banner_Last3

Thanks. I am still struggling to understand the module.
Is there a discussion on the forum where other people have discussed this module?
Thanks.

Hi Guys, I am struggling to set the filter to see only the most recent invoices.
Any additional documentation would be great.
For example, is this where you mean to set the search parameter?

Thanks.

Hi @costas,

Thanks for following up!

At the moment, we haven’t come across any active forum discussions specifically related to this Xero plugin, but if we do spot one, we’ll be sure to point you there.

As for your question about filtering for the most recent invoices — yes, you should use the Get Invoices method to retrieve one or more invoices, and apply query parameters to control what is returned. To get only the most recent invoices, you’ll typically use the where parameter or sort by date depending on what Xero’s API supports through that endpoint.

For more guidance on setting this up properly, we highly recommend reviewing the plugin documentation and exploring the workflows on our demo page:

:blue_book: Docs:

:test_tube: Demo Page:

These resources provide detailed examples and best practices that should help clarify how to set filters and use the API calls effectively.

Looking forward to your reply. :sunflower:

Best regards,
Support Team
Browse all Zeroqode Plugins for Bubble
Banner_Last3

Hi Guys,
Thanks. Can you please show me the parameter? The ‘were parameter’?

Can you kindly show me a screen shot?

I have done this but it’s not showing latest even in the 100 first table queries.

Thanks

Ps. Respectfully, is this an AI generated response or human?

Hi guys, do you mean here

Hi @costas ,

Thank you for the follow-up.

In your case, the best approach would be to first pull the invoices data into custom state using the Xero plugin’s “Get Invoices” action. Once the data is stored locally, you can apply filters directly in your RG to sort the invoices by creation date in descending order, which will ensure you see the most recent invoices first.


This method tends to be more reliable because filtering large datasets directly via API parameters can sometimes be limited or inconsistent depending on the endpoint capabilities.

As we mentioned earlier, We highly recommend comparing your setup with our demo page, which demonstrates an optimized workflow for fetching and filtering invoices efficiently.

Regarding your question about the response source — rest assured, all replies on the forum are written by humans, not AI. We strive to provide clear and personalized assistance.

Looking forward to your reply. :sunflower:

Best regards,
Support Team
Browse all Zeroqode Plugins for Bubble
Banner_Last3

Thanks. Does it matter that I’m using a table and not repeating group? Thanks for confirming you are human :slight_smile:

Hi @costas,

Thanks for your question and apologies for delayed response over the weekend. :pray:

Using a table element instead of a repeating group should generally work the same way, as both can display data from custom states or API responses. That said, since the table element in Bubble is still in beta, there may be occasional inconsistencies or limitations in behavior compared to the more established repeating group element.

For this reason, we recommend using a repeating group for now, especially when working with dynamic data and filtering logic, to ensure a more stable and predictable experience.

Looking forward to your reply. :sunflower:

Best regards,
Support Team
Browse all Zeroqode Plugins for Bubble
Banner_Last3