> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stackone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Xero OAuth 2.0 connector profile – StackOne setup guide

> Set up the OAuth 2.0 connector profile for Xero in StackOne. One-time admin setup required before your users can link Xero accounts via Hub.

<Warning>You can only connect two uncertified apps to an organisation. You can disconnect by going to Connected apps in your Xero developer settings.</Warning>

<Panel>
  <div className="not-prose guides-scope-selector" data-guides-scope-selector data-guide-actions-json="[{&#x22;id&#x22;:&#x22;xero_list_accounts&#x22;,&#x22;label&#x22;:&#x22;List Accounts&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_account&#x22;,&#x22;label&#x22;:&#x22;Get Account&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_create_account&#x22;,&#x22;label&#x22;:&#x22;Create Account&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings&#x22;]},{&#x22;id&#x22;:&#x22;xero_update_account&#x22;,&#x22;label&#x22;:&#x22;Update Account&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings&#x22;]},{&#x22;id&#x22;:&#x22;xero_delete_account&#x22;,&#x22;label&#x22;:&#x22;Delete Account&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings&#x22;]},{&#x22;id&#x22;:&#x22;xero_list_bank_transactions&#x22;,&#x22;label&#x22;:&#x22;List Bank Transactions&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.banktransactions.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_bank_transaction&#x22;,&#x22;label&#x22;:&#x22;Get Bank Transaction&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.banktransactions.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_create_bank_transaction&#x22;,&#x22;label&#x22;:&#x22;Create Bank Transaction&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.banktransactions&#x22;]},{&#x22;id&#x22;:&#x22;xero_update_bank_transaction&#x22;,&#x22;label&#x22;:&#x22;Update Bank Transaction&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.banktransactions&#x22;]},{&#x22;id&#x22;:&#x22;xero_delete_bank_transaction&#x22;,&#x22;label&#x22;:&#x22;Delete Bank Transaction&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.banktransactions&#x22;]},{&#x22;id&#x22;:&#x22;xero_list_branding_themes&#x22;,&#x22;label&#x22;:&#x22;List Branding Themes&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_branding_theme&#x22;,&#x22;label&#x22;:&#x22;Get Branding Theme&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_list_companies&#x22;,&#x22;label&#x22;:&#x22;List Companies&#x22;,&#x22;scopes&#x22;:[&#x22;openid&#x22;,&#x22;offline_access&#x22;]},{&#x22;id&#x22;:&#x22;xero_list_contacts&#x22;,&#x22;label&#x22;:&#x22;List Contacts&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.contacts.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_contact&#x22;,&#x22;label&#x22;:&#x22;Get Contact&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.contacts.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_create_contact&#x22;,&#x22;label&#x22;:&#x22;Create Contact&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.contacts&#x22;]},{&#x22;id&#x22;:&#x22;xero_update_contact&#x22;,&#x22;label&#x22;:&#x22;Update Contact&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.contacts&#x22;]},{&#x22;id&#x22;:&#x22;xero_list_credit_notes&#x22;,&#x22;label&#x22;:&#x22;List Credit Notes&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.invoices.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_credit_note&#x22;,&#x22;label&#x22;:&#x22;Get Credit Note&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.invoices.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_create_credit_note&#x22;,&#x22;label&#x22;:&#x22;Create Credit Note&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.invoices&#x22;]},{&#x22;id&#x22;:&#x22;xero_update_credit_note&#x22;,&#x22;label&#x22;:&#x22;Update Credit Note&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.invoices&#x22;]},{&#x22;id&#x22;:&#x22;xero_list_invoices&#x22;,&#x22;label&#x22;:&#x22;List Invoices&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.invoices.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_invoice&#x22;,&#x22;label&#x22;:&#x22;Get Invoice&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.invoices.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_create_invoice&#x22;,&#x22;label&#x22;:&#x22;Create Invoice&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.invoices&#x22;]},{&#x22;id&#x22;:&#x22;xero_update_invoice&#x22;,&#x22;label&#x22;:&#x22;Update Invoice&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.invoices&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_online_invoice_url&#x22;,&#x22;label&#x22;:&#x22;Get Online Invoice URL&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.invoices.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_list_items&#x22;,&#x22;label&#x22;:&#x22;List Items&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_item&#x22;,&#x22;label&#x22;:&#x22;Get Item&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_create_item&#x22;,&#x22;label&#x22;:&#x22;Create Item&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings&#x22;]},{&#x22;id&#x22;:&#x22;xero_update_item&#x22;,&#x22;label&#x22;:&#x22;Update Item&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings&#x22;]},{&#x22;id&#x22;:&#x22;xero_delete_item&#x22;,&#x22;label&#x22;:&#x22;Delete Item&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings&#x22;]},{&#x22;id&#x22;:&#x22;xero_list_manual_journals&#x22;,&#x22;label&#x22;:&#x22;List Manual Journals&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.manualjournals.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_manual_journal&#x22;,&#x22;label&#x22;:&#x22;Get Manual Journal&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.manualjournals.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_create_manual_journal&#x22;,&#x22;label&#x22;:&#x22;Create Manual Journal&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.manualjournals&#x22;]},{&#x22;id&#x22;:&#x22;xero_update_manual_journal&#x22;,&#x22;label&#x22;:&#x22;Update Manual Journal&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.manualjournals&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_organisation&#x22;,&#x22;label&#x22;:&#x22;Get Organisation&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_list_payments&#x22;,&#x22;label&#x22;:&#x22;List Payments&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.payments.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_payment&#x22;,&#x22;label&#x22;:&#x22;Get Payment&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.payments.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_create_payment&#x22;,&#x22;label&#x22;:&#x22;Create Payment&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.payments&#x22;]},{&#x22;id&#x22;:&#x22;xero_delete_payment&#x22;,&#x22;label&#x22;:&#x22;Delete Payment&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.payments&#x22;]},{&#x22;id&#x22;:&#x22;xero_list_purchase_orders&#x22;,&#x22;label&#x22;:&#x22;List Purchase Orders&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.invoices.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_purchase_order&#x22;,&#x22;label&#x22;:&#x22;Get Purchase Order&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.invoices.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_create_purchase_order&#x22;,&#x22;label&#x22;:&#x22;Create Purchase Order&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.invoices&#x22;]},{&#x22;id&#x22;:&#x22;xero_update_purchase_order&#x22;,&#x22;label&#x22;:&#x22;Update Purchase Order&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.invoices&#x22;]},{&#x22;id&#x22;:&#x22;xero_list_quotes&#x22;,&#x22;label&#x22;:&#x22;List Quotes&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.invoices.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_quote&#x22;,&#x22;label&#x22;:&#x22;Get Quote&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.invoices.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_create_quote&#x22;,&#x22;label&#x22;:&#x22;Create Quote&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.invoices&#x22;]},{&#x22;id&#x22;:&#x22;xero_update_quote&#x22;,&#x22;label&#x22;:&#x22;Update Quote&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.invoices&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_balance_sheet&#x22;,&#x22;label&#x22;:&#x22;Get Balance Sheet&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.reports.balancesheet.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_profit_and_loss&#x22;,&#x22;label&#x22;:&#x22;Get Profit And Loss&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.reports.profitandloss.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_trial_balance&#x22;,&#x22;label&#x22;:&#x22;Get Trial Balance&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.reports.trialbalance.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_aged_receivables&#x22;,&#x22;label&#x22;:&#x22;Get Aged Receivables&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.reports.aged.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_aged_payables&#x22;,&#x22;label&#x22;:&#x22;Get Aged Payables&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.reports.aged.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_bank_summary&#x22;,&#x22;label&#x22;:&#x22;Get Bank Summary&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.reports.banksummary.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_budget_summary&#x22;,&#x22;label&#x22;:&#x22;Get Budget Summary&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.reports.budgetsummary.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_executive_summary&#x22;,&#x22;label&#x22;:&#x22;Get Executive Summary&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.reports.executivesummary.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_list_tax_rates&#x22;,&#x22;label&#x22;:&#x22;List Tax Rates&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_tax_rate&#x22;,&#x22;label&#x22;:&#x22;Get Tax Rate&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_list_tracking_categories&#x22;,&#x22;label&#x22;:&#x22;List Tracking Categories&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_tracking_category&#x22;,&#x22;label&#x22;:&#x22;Get Tracking Category&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_create_tracking_category&#x22;,&#x22;label&#x22;:&#x22;Create Tracking Category&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings&#x22;]},{&#x22;id&#x22;:&#x22;xero_create_tracking_option&#x22;,&#x22;label&#x22;:&#x22;Create Tracking Option&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings&#x22;]},{&#x22;id&#x22;:&#x22;xero_update_tracking_category&#x22;,&#x22;label&#x22;:&#x22;Update Tracking Category&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings&#x22;]},{&#x22;id&#x22;:&#x22;xero_update_tracking_option&#x22;,&#x22;label&#x22;:&#x22;Update Tracking Option&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings&#x22;]},{&#x22;id&#x22;:&#x22;xero_delete_tracking_category&#x22;,&#x22;label&#x22;:&#x22;Delete Tracking Category&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings&#x22;]},{&#x22;id&#x22;:&#x22;xero_delete_tracking_option&#x22;,&#x22;label&#x22;:&#x22;Delete Tracking Option&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings&#x22;]},{&#x22;id&#x22;:&#x22;xero_list_users&#x22;,&#x22;label&#x22;:&#x22;List Users&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings.read&#x22;]},{&#x22;id&#x22;:&#x22;xero_get_user&#x22;,&#x22;label&#x22;:&#x22;Get User&#x22;,&#x22;scopes&#x22;:[&#x22;accounting.settings.read&#x22;]}]" style={{ borderRadius: '8px', padding: '16px', marginBottom: '24px' }}>
    <div className="guides-scope-selector__title" style={{ fontSize: '16px', fontWeight: '600', marginBottom: '12px' }}>Select Actions to adjust the guide</div>
    <div className="guides-scope-selector__muted" style={{ fontSize: '13px', marginBottom: '12px' }}>Some actions may require additional configuration in the provider to be accessible. Choose the actions you need and the guide will be updated.</div>

    <div style={{ display: 'flex', gap: '8px', marginBottom: '12px', flexWrap: 'wrap' }}>
      <input type="text" placeholder="Search actions..." className="guides-scope-selector__input" data-guide-action-search style={{ padding: '8px 12px', borderRadius: '6px', fontSize: '13px', flex: 1, minWidth: '160px' }} />

      <button type="button" className="guides-scope-selector__quick-btn" data-guide-select-all style={{ padding: '6px 10px', borderRadius: '6px', fontSize: '12px', cursor: 'pointer' }}>Select all</button>
      <button type="button" className="guides-scope-selector__quick-btn" data-guide-clear style={{ padding: '6px 10px', borderRadius: '6px', fontSize: '12px', cursor: 'pointer' }}>Clear</button>
    </div>

    <div className="guides-scope-selector__list" style={{ maxHeight: '240px', overflowY: 'auto', borderRadius: '6px', marginBottom: '12px' }}>
      <div className="guides-scope-selector__list-header" style={{ display: 'flex', alignItems: 'center', gap: '10px', padding: '8px 12px', fontSize: '12px', fontWeight: '600', position: 'sticky', top: 0, zIndex: 1 }}>
        <div style={{ width: '16px', flexShrink: 0 }} />

        <div style={{ flex: 1, textAlign: 'left' }}>Action</div>
        <div style={{ minWidth: '120px', marginLeft: 'auto', textAlign: 'right' }}>Scope(s)</div>
      </div>

      <div className="guides-scope-selector__muted" data-guide-loading style={{ padding: '16px', textAlign: 'center', fontSize: '13px' }}>Loading actions...</div>
      <div className="guides-scope-selector__muted" data-guide-no-results hidden style={{ padding: '16px', textAlign: 'center', fontSize: '13px' }}>No actions match your search.</div>
    </div>

    <div className="guides-scope-selector__url-section" style={{ marginTop: '12px', paddingTop: '12px' }}>
      <div className="guides-scope-selector__muted" style={{ fontSize: '12px', fontWeight: '500', marginBottom: '6px' }}>Dynamic Guide URL</div>

      <div style={{ display: 'flex', alignItems: 'center', gap: '8px', flexWrap: 'wrap' }}>
        <input type="text" readOnly className="guides-scope-selector__input" data-guide-url style={{ flex: 1, minWidth: '200px', padding: '8px 10px', borderRadius: '6px', fontSize: '12px', fontFamily: 'monospace' }} />

        <button type="button" className="guides-scope-selector__copy-btn" data-guide-copy-url style={{ width: '120px', padding: '8px 14px', borderRadius: '6px', fontSize: '13px', fontWeight: '500', cursor: 'pointer', whiteSpace: 'nowrap', marginLeft: 'auto' }}>Copy URL</button>
      </div>

      <div style={{ marginTop: '12px' }}>
        <div className="guides-scope-selector__muted" style={{ fontSize: '12px', fontWeight: '500', marginBottom: '6px' }}>Scopes Selected</div>

        <div style={{ display: 'flex', alignItems: 'stretch', gap: '8px', flexWrap: 'wrap' }}>
          <pre className="guides-scope-selector__input" role="textbox" aria-readonly="true" tabIndex={0} data-guide-scopes-output style={{ flex: 1, minWidth: '200px', minHeight: '88px', maxHeight: '120px', overflowY: 'auto', margin: 0, padding: '8px 10px', borderRadius: '6px', fontSize: '12px', fontFamily: 'monospace', whiteSpace: 'pre-wrap' }} />

          <div className="guides-scope-selector__muted" style={{ display: 'flex', flexDirection: 'column', gap: '8px', fontSize: '12px', fontWeight: '500', flexShrink: 0, alignItems: 'flex-start' }}>
            <div style={{ whiteSpace: 'nowrap' }}>Separator</div>

            <select className="guides-scope-selector__input" data-guide-scope-delimiter style={{ width: '100%', padding: '6px 10px', borderRadius: '6px', fontSize: '12px' }}>
              <option value="space">Space</option>
              <option value="comma">Comma</option>
              <option value="semicolon">Semicolon</option>
              <option value="pipe">Pipe</option>
              <option value="newline">Newline</option>
            </select>

            <button type="button" className="guides-scope-selector__copy-btn" data-guide-copy-scopes style={{ width: '120px', padding: '8px 14px', borderRadius: '6px', fontSize: '13px', fontWeight: '500', cursor: 'pointer', whiteSpace: 'nowrap' }}>Copy scopes</button>
          </div>
        </div>
      </div>
    </div>
  </div>
</Panel>

<section data-guide-section data-guide-scopes="">
  <h2>Register an OAuth Application</h2>

  <p>Register an application in the Xero Developer Portal to obtain OAuth credentials for API access.</p>

  <Steps>
    <Step title="Sign in to the Xero Developer Portal">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Go to the <a href="https://developer.xero.com/" target="_blank" rel="noopener noreferrer">Xero Developer Portal</a> and click <strong>Log in</strong> in the top right corner. Sign in with your Xero account credentials.</p>
      </div>
    </Step>

    <Step title="Create a New App">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Navigate to <strong>My Apps</strong> in the top navigation and click the <strong>New app</strong> button.</p>

        <ul>
          <li>Enter your <strong>App name</strong> (e.g., `StackOne Integration`)</li>
          <li>Select <strong>Web app</strong> as the <strong>Integration type</strong></li>
          <li>For the AI data usage question, select the appropriate option</li>
          <li>Select <strong>Yes</strong> to confirm you agree to meet Xero's minimum security requirements</li>
          <li>Enter your <strong>Company or application URL</strong></li>
          <li>Set the <strong>OAuth 2.0 redirect URI</strong> to: `https://api.stackone.com/connect/oauth2/xero/callback`</li>
          <li>Check the box to agree to the <strong>Xero Developer Platform Terms & Conditions</strong></li>
          <li>Click <strong>Create app</strong></li>
        </ul>
      </div>
    </Step>

    <Step title="Copy Client Credentials">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>After creating the app, click <strong>Configuration</strong> in the left sidebar to obtain your credentials.</p>

        <ul>
          <li>Click <strong>Copy</strong> next to the <strong>Client id</strong> to copy it</li>
          <li>Click <strong>Generate a secret</strong> to create a new Client Secret</li>
          <li>Copy the <strong>Client Secret</strong> immediately — it is only shown once</li>
          <li>Store both values securely for use later</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Configure Scopes</h2>

  <p>Select the OAuth scopes based on your integration needs. Scopes control which Xero data your application can access.</p>

  <Steps>
    <Step title="Select Permissions">
      <div data-guide-step data-guide-scopes="offline_access,openid,profile,email,accounting.manualjournals,accounting.manualjournals.read,accounting.invoices,accounting.invoices.read,accounting.payments,accounting.payments.read,accounting.banktransactions,accounting.banktransactions.read,accounting.contacts,accounting.contacts.read,accounting.settings,accounting.settings.read,accounting.attachments,accounting.attachments.read,accounting.reports.aged.read,accounting.reports.balancesheet.read,accounting.reports.banksummary.read,accounting.reports.budgetsummary.read,accounting.reports.executivesummary.read,accounting.reports.profitandloss.read,accounting.reports.trialbalance.read,accounting.reports.taxreports.read" data-guide-display-scopes-list="offline_access,openid,profile,email,accounting.manualjournals,accounting.manualjournals.read,accounting.invoices,accounting.invoices.read,accounting.payments,accounting.payments.read,accounting.banktransactions,accounting.banktransactions.read,accounting.contacts,accounting.contacts.read,accounting.settings,accounting.settings.read,accounting.attachments,accounting.attachments.read,accounting.reports.aged.read,accounting.reports.balancesheet.read,accounting.reports.banksummary.read,accounting.reports.budgetsummary.read,accounting.reports.executivesummary.read,accounting.reports.profitandloss.read,accounting.reports.trialbalance.read,accounting.reports.taxreports.read">
        <div className="connector-guide-actions-badge" data-guide-actions-badge data-guide-actions-badge-scopes="offline_access,openid,profile,email,accounting.manualjournals,accounting.manualjournals.read,accounting.invoices,accounting.invoices.read,accounting.payments,accounting.payments.read,accounting.banktransactions,accounting.banktransactions.read,accounting.contacts,accounting.contacts.read,accounting.settings,accounting.settings.read,accounting.attachments,accounting.attachments.read,accounting.reports.aged.read,accounting.reports.balancesheet.read,accounting.reports.banksummary.read,accounting.reports.budgetsummary.read,accounting.reports.executivesummary.read,accounting.reports.profitandloss.read,accounting.reports.trialbalance.read,accounting.reports.taxreports.read" style={{ display: 'block', width: 'fit-content', maxWidth: '100%', padding: '2px 8px', borderRadius: '8px', fontSize: '12px', marginBottom: '8px', marginTop: '-10px', whiteSpace: 'nowrap', overflowX: 'auto', overflowY: 'hidden', msOverflowStyle: 'none', scrollbarWidth: 'none' }}>
          <span>Enables actions: </span><span data-guide-actions-badge-labels>Create Account, Create Bank Transaction, Create Contact, Create Credit Note, Create Invoice, Create Item, Create Manual Journal, Create Payment, Create Purchase Order, Create Quote, Create Tracking Category, Create Tracking Option, Delete Account, Delete Bank Transaction, Delete Item, Delete Payment, Delete Tracking Category, Delete Tracking Option, Get Account, Get Aged Payables, Get Aged Receivables, Get Balance Sheet, Get Bank Summary, Get Bank Transaction, Get Branding Theme, Get Budget Summary, Get Contact, Get Credit Note, Get Executive Summary, Get Invoice, Get Item, Get Manual Journal, Get Online Invoice URL, Get Organisation, Get Payment, Get Profit And Loss, Get Purchase Order, Get Quote, Get Tax Rate, Get Tracking Category, Get Trial Balance, Get User, List Accounts, List Bank Transactions, List Branding Themes, List Companies, List Contacts, List Credit Notes, List Invoices, List Items, List Manual Journals, List Payments, List Purchase Orders, List Quotes, List Tax Rates, List Tracking Categories, List Users, Update Account, Update Bank Transaction, Update Contact, Update Credit Note, Update Invoice, Update Item, Update Manual Journal, Update Purchase Order, Update Quote, Update Tracking Category, Update Tracking Option</span>
        </div>

        <p>Enable the scopes required for your use case. If no scopes are specified during connection, the default scopes will be used.</p>

        <div style={{ marginTop: '8px' }} data-guide-display-scopes>
          <div className="connector-guide-scopes-container connector-guide-scopes-container--scrollable">
            <ul className="not-prose" style={{ listStyleType: "'- '", paddingLeft: '1em', margin: 0 }}>
              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="offline_access">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy offline_access" title="Copy scope" data-copy="offline_access">
                  <span className="connector-guide-scope-copy__label">offline\_access</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="openid">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy openid" title="Copy scope" data-copy="openid">
                  <span className="connector-guide-scope-copy__label">openid</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="profile">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy profile" title="Copy scope" data-copy="profile">
                  <span className="connector-guide-scope-copy__label">profile</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="email">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy email" title="Copy scope" data-copy="email">
                  <span className="connector-guide-scope-copy__label">email</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.manualjournals">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.manualjournals" title="Copy scope" data-copy="accounting.manualjournals">
                  <span className="connector-guide-scope-copy__label">accounting.manualjournals</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.manualjournals.read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.manualjournals.read" title="Copy scope" data-copy="accounting.manualjournals.read">
                  <span className="connector-guide-scope-copy__label">accounting.manualjournals.read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.invoices">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.invoices" title="Copy scope" data-copy="accounting.invoices">
                  <span className="connector-guide-scope-copy__label">accounting.invoices</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.invoices.read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.invoices.read" title="Copy scope" data-copy="accounting.invoices.read">
                  <span className="connector-guide-scope-copy__label">accounting.invoices.read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.payments">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.payments" title="Copy scope" data-copy="accounting.payments">
                  <span className="connector-guide-scope-copy__label">accounting.payments</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.payments.read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.payments.read" title="Copy scope" data-copy="accounting.payments.read">
                  <span className="connector-guide-scope-copy__label">accounting.payments.read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.banktransactions">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.banktransactions" title="Copy scope" data-copy="accounting.banktransactions">
                  <span className="connector-guide-scope-copy__label">accounting.banktransactions</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.banktransactions.read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.banktransactions.read" title="Copy scope" data-copy="accounting.banktransactions.read">
                  <span className="connector-guide-scope-copy__label">accounting.banktransactions.read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.contacts">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.contacts" title="Copy scope" data-copy="accounting.contacts">
                  <span className="connector-guide-scope-copy__label">accounting.contacts</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.contacts.read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.contacts.read" title="Copy scope" data-copy="accounting.contacts.read">
                  <span className="connector-guide-scope-copy__label">accounting.contacts.read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.settings">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.settings" title="Copy scope" data-copy="accounting.settings">
                  <span className="connector-guide-scope-copy__label">accounting.settings</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.settings.read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.settings.read" title="Copy scope" data-copy="accounting.settings.read">
                  <span className="connector-guide-scope-copy__label">accounting.settings.read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.attachments">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.attachments" title="Copy scope" data-copy="accounting.attachments">
                  <span className="connector-guide-scope-copy__label">accounting.attachments</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.attachments.read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.attachments.read" title="Copy scope" data-copy="accounting.attachments.read">
                  <span className="connector-guide-scope-copy__label">accounting.attachments.read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.reports.aged.read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.reports.aged.read" title="Copy scope" data-copy="accounting.reports.aged.read">
                  <span className="connector-guide-scope-copy__label">accounting.reports.aged.read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.reports.balancesheet.read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.reports.balancesheet.read" title="Copy scope" data-copy="accounting.reports.balancesheet.read">
                  <span className="connector-guide-scope-copy__label">accounting.reports.balancesheet.read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.reports.banksummary.read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.reports.banksummary.read" title="Copy scope" data-copy="accounting.reports.banksummary.read">
                  <span className="connector-guide-scope-copy__label">accounting.reports.banksummary.read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.reports.budgetsummary.read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.reports.budgetsummary.read" title="Copy scope" data-copy="accounting.reports.budgetsummary.read">
                  <span className="connector-guide-scope-copy__label">accounting.reports.budgetsummary.read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.reports.executivesummary.read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.reports.executivesummary.read" title="Copy scope" data-copy="accounting.reports.executivesummary.read">
                  <span className="connector-guide-scope-copy__label">accounting.reports.executivesummary.read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.reports.profitandloss.read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.reports.profitandloss.read" title="Copy scope" data-copy="accounting.reports.profitandloss.read">
                  <span className="connector-guide-scope-copy__label">accounting.reports.profitandloss.read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.reports.trialbalance.read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.reports.trialbalance.read" title="Copy scope" data-copy="accounting.reports.trialbalance.read">
                  <span className="connector-guide-scope-copy__label">accounting.reports.trialbalance.read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="accounting.reports.taxreports.read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy accounting.reports.taxreports.read" title="Copy scope" data-copy="accounting.reports.taxreports.read">
                  <span className="connector-guide-scope-copy__label">accounting.reports.taxreports.read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </Step>
  </Steps>
</section>

## Creating the StackOne Connector Profile

To create the Connector Profile in StackOne for <strong>Xero</strong>:

<Steps>
  <Step title="Navigate to Connector Profiles">
    Login to StackOne and navigate to [Connector Profiles](https://app.stackone.com/connector_profiles)
  </Step>

  <Step title="Create New Connector Profile">
    <ul>
      <li>Click <strong>+ Connector Profile</strong></li>
      <li>Search for and select <strong>Xero</strong></li>
      <li>Select <strong>Type</strong> as <strong>OAuth 2.0</strong></li>

      <li>
        Fill out the fields using details retrieved from your provider:

        <ul style={{ marginLeft: '20px' }}>
          <li><strong>Client ID</strong></li>
          <li><strong>Client Secret</strong></li>
          <li><strong>Scopes</strong> (Optional)</li>
        </ul>
      </li>

      <li>(Optional) Select <strong>Actions</strong> to be enabled for this Connector Profile</li>
      <li>Click <strong>Create profile</strong></li>
    </ul>
  </Step>
</Steps>

Congratulations! The new Connector Profile will now show up in your project ready to be used. You can now continue to <a href="/guides/accounts-section#linking-accounts">Link Accounts</a> for <strong>Xero</strong>.
