How to Fix Xero 500 Error: Complete Browser and API Troubleshooting Guide

A Xero 500 error means the server hit an unexpected problem while processing your request. This guide covers the fixes for regular Xero users and for developers working with the Xero API.

Xero 500 Error

What Causes the Xero 500 Error

  • Xero server outage or scheduled maintenance
  • Corrupted or outdated browser cache
  • Expired or broken login session
  • Browser extension conflicts (ad blockers, VPN extensions, script blockers)
  • Malformed API request body
  • Expired OAuth 2.0 access token
  • Xero API rate limits exceeded
  • Account-specific data processing failure tied to one record

Fix 1: Check the Xero System Status Page

Visit the Xero status page before doing anything else. If Xero shows an active disruption or maintenance window, the error is on their end and no local fix will resolve it. Wait for the status page to update, or check Xero’s official X account for outage notices. If the status page shows all systems operational, move to the next fix.

Fix 2: Hard Refresh the Page

A hard refresh forces the browser to reload without using cached files. This resolves the error immediately if it was caused by a stale cached version of the page.

On PC:

  • Windows/Linux: Press Ctrl + Shift + R
  • Mac: Press Cmd + Shift + R

Fix 3: Clear Browser Cache and Cookies

Outdated cached session data commonly triggers a 500 error on the Xero dashboard.

Google Chrome:

  1. Press Ctrl + Shift + Delete (Windows) or Cmd + Shift + Delete (Mac)
  2. Set the time range to All time
  3. Check Cookies and other site data and Cached images and files
  4. Click Clear data
  5. Restart Chrome and log back into Xero

Mozilla Firefox:

  1. Press Ctrl + Shift + Delete
  2. Set time range to Everything
  3. Check Cookies and Cache
  4. Click OK, then reopen Firefox and log in again

Microsoft Edge:

  1. Press Ctrl + Shift + Delete
  2. Set time range to All time
  3. Check Cookies and other site data and Cached images and files
  4. Click Clear now

Safari (Mac):

  1. Go to Safari > Settings > Privacy
  2. Click Manage Website Data, search “xero,” and remove all Xero entries
  3. Go to Develop > Empty Caches (enable the Develop menu from Advanced settings if it is hidden)

Log out and log back in after clearing cache. If you use single sign-on through Google or Microsoft, sign out of that account too before signing back in.

Fix 4: Disable Browser Extensions

Ad blockers and VPN extensions sometimes block scripts Xero needs to load correctly, which surfaces as a 500 error rather than a blocked-content notice. Open an Incognito or Private window and log into Xero there. If Xero loads without errors, an extension in your normal window is the cause. Re-enable extensions one at a time until the error returns to identify the culprit.

Fix 5: Check Your OAuth 2.0 Token (API Developers)

Xero access tokens expire after 30 minutes. If your refresh token logic fails silently, some endpoints return a 500 instead of the expected 401.

Verify:

  • The access token refreshes before it expires
  • The refresh token flow completes successfully
  • The token is sent in the Authorization header as Bearer {your_token}
curl -X GET "https://api.xero.com/api.xro/2.0/Accounts" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Xero-tenant-id: YOUR_TENANT_ID" \
  -H "Accept: application/json"

Fix 6: Validate Your Request Body (API Developers)

A malformed request body is one of the most common causes of a 500 from the Xero API. A wrong date format or an invalid enum value can make the request fail internally rather than return a clean 400.

Check that:

  • Dates use ISO 8601 format (for example, 2026-03-10)
  • Required fields are not missing or null
  • Enum values match Xero’s exact casing (ACCREC, not accrec)
  • The JSON is valid and properly formatted before sending

Fix 7: Check for Rate Limiting (API Developers)

Xero enforces rate limits per connected organization: 60 calls per minute, 5,000 calls per day, and 5 concurrent requests, with an app-wide cap of 10,000 calls per minute across all connected tenants. Exceeding a limit returns a 429, but a poorly handled retry loop can sometimes surface as a 500 in your own error logging.

Add retry logic with exponential backoff for both 500 and 429 responses:

async function xeroApiCall(url, options, retries = 3) {
  for (let i = 0; i < retries; i++) {
    const response = await fetch(url, options);
    if (response.ok) return response.json();
    if (response.status === 500 || response.status === 429) {
      const delay = Math.pow(2, i) * 1000;
      await new Promise(resolve => setTimeout(resolve, delay));
    } else {
      throw new Error(`API error: ${response.status}`);
    }
  }
  throw new Error("Max retries reached");
}

Failed requests do not count against your rate limit quota, so retries themselves will not push you over the daily cap.

Fix 8: Test the Endpoint in Xero’s API Explorer

Run the same endpoint with the same parameters in the API Explorer at developer.xero.com. If it fails there too, the problem is on Xero’s side. If it succeeds, the issue is in your request formatting or authentication headers.

When to Contact Xero Support

Contact support if the error persists for hours with no status page update, if it only happens on your account and not others, or if you get consistent 500s on one specific endpoint with a request that validates correctly elsewhere. Provide the exact error message and instance ID, the time the error first appeared with your timezone, the steps already tried, and for API errors, the full request headers and body with sensitive data removed.

A Xero 500 error almost always traces back to either a temporary server-side issue or a session and token problem you can fix directly. Working through the browser fixes first, then the API-specific checks if you are integrating with Xero, resolves the error in most cases without needing to wait on support.

FAQs

Is the Xero 500 error my fault?

Usually not. A 500 error originates from Xero’s servers, not your device or browser. Expired sessions, corrupted cache, and malformed API requests on your end can still trigger it.

How long does a Xero 500 error last?

A server-side outage typically resolves within minutes to a couple of hours. A cache or session issue on your end resolves immediately after clearing cache or logging out.

Can a VPN cause the Xero 500 error?

Yes. Some VPN exit nodes get flagged by Xero’s systems, which can cause request failures. Disable the VPN temporarily and access Xero directly to test this.

Why does the Xero 500 error only happen on one page?

It usually points to a data processing problem tied to that specific record or account. Report it to Xero support with the exact URL and record details.

Do Xero API 500 errors count against my rate limit?

No. Failed requests, including 4xx and 5xx responses, do not count toward the API rate limit quota.

Read More:

Leave a Comment

Comments

No comments yet. Why don’t you start the discussion?

    Leave a Reply