> ## 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.

# Connect Paylocity with OAuth 2.0 – StackOne Hub

> Link a Paylocity account in the StackOne Hub using OAuth 2.0. End-user guide to authorize the integration and start using Paylocity actions.

<Warning>Ensure that your Paylocity account has Admin privileges.</Warning>

<Panel>
  <div className="not-prose guides-scope-selector" data-guides-scope-selector data-guide-actions-json="[{&#x22;id&#x22;:&#x22;paylocity_list_employees&#x22;,&#x22;label&#x22;:&#x22;List Employees&#x22;,&#x22;scopes&#x22;:[&#x22;EmployeeDemographic&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_employee&#x22;,&#x22;label&#x22;:&#x22;Get Employee&#x22;,&#x22;scopes&#x22;:[&#x22;EmployeeDemographic&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_employee_with_benefits&#x22;,&#x22;label&#x22;:&#x22;Get Employee With Benefits&#x22;,&#x22;scopes&#x22;:[&#x22;WebLinkAPI&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_create_employee&#x22;,&#x22;label&#x22;:&#x22;Add New Employee&#x22;,&#x22;scopes&#x22;:[&#x22;WebLinkAPI&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_update_employee&#x22;,&#x22;label&#x22;:&#x22;Update Employee&#x22;,&#x22;scopes&#x22;:[&#x22;WebLinkAPI&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_company_info&#x22;,&#x22;label&#x22;:&#x22;Get Company Information&#x22;,&#x22;scopes&#x22;:[&#x22;CompanyLevelInformation&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_custom_fields&#x22;,&#x22;label&#x22;:&#x22;Get Custom Fields&#x22;,&#x22;scopes&#x22;:[&#x22;WebLinkAPI&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_local_taxes&#x22;,&#x22;label&#x22;:&#x22;Get All Local Taxes&#x22;,&#x22;scopes&#x22;:[&#x22;WebLinkAPI&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_tax_codes&#x22;,&#x22;label&#x22;:&#x22;Get Local Taxes By Tax Code&#x22;,&#x22;scopes&#x22;:[&#x22;WebLinkAPI&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_create_local_tax&#x22;,&#x22;label&#x22;:&#x22;Add Local Tax&#x22;,&#x22;scopes&#x22;:[&#x22;WebLinkAPI&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_upsert_non_primary_state_tax&#x22;,&#x22;label&#x22;:&#x22;Add/Update Non-Primary State Tax&#x22;,&#x22;scopes&#x22;:[&#x22;WebLinkAPI&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_upsert_primary_state_tax&#x22;,&#x22;label&#x22;:&#x22;Add/Update Primary State Tax&#x22;,&#x22;scopes&#x22;:[&#x22;WebLinkAPI&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_company_tax_codes&#x22;,&#x22;label&#x22;:&#x22;Get Tax Codes&#x22;,&#x22;scopes&#x22;:[&#x22;CompanyLevelInformation&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_upsert_emergency_contacts&#x22;,&#x22;label&#x22;:&#x22;Add/Update Emergency Contacts&#x22;,&#x22;scopes&#x22;:[&#x22;WebLinkAPI&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_list_job_codes&#x22;,&#x22;label&#x22;:&#x22;Get Job Codes&#x22;,&#x22;scopes&#x22;:[&#x22;CompanyLevelInformation&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_job_code&#x22;,&#x22;label&#x22;:&#x22;Get Job Code&#x22;,&#x22;scopes&#x22;:[&#x22;CompanyLevelInformation&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_create_job_code&#x22;,&#x22;label&#x22;:&#x22;Create Job Code&#x22;,&#x22;scopes&#x22;:[&#x22;CompanyLevelInformation&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_update_job_code&#x22;,&#x22;label&#x22;:&#x22;Update Job Code&#x22;,&#x22;scopes&#x22;:[&#x22;CompanyLevelInformation&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_delete_job_code&#x22;,&#x22;label&#x22;:&#x22;Delete Job Code&#x22;,&#x22;scopes&#x22;:[&#x22;CompanyLevelInformation&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_direct_deposit&#x22;,&#x22;label&#x22;:&#x22;Get All Direct Deposit&#x22;,&#x22;scopes&#x22;:[&#x22;WebLinkAPI&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_pay_grades&#x22;,&#x22;label&#x22;:&#x22;Get Pay Grades&#x22;,&#x22;scopes&#x22;:[&#x22;CompanyLevelInformation&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_rate_codes&#x22;,&#x22;label&#x22;:&#x22;Get Rate Codes&#x22;,&#x22;scopes&#x22;:[&#x22;CompanyLevelInformation&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_pay_frequency_codes&#x22;,&#x22;label&#x22;:&#x22;Get Pay Frequency Codes&#x22;,&#x22;scopes&#x22;:[&#x22;CompanyLevelInformation&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_list_work_location_codes&#x22;,&#x22;label&#x22;:&#x22;List Work Locations&#x22;,&#x22;scopes&#x22;:[&#x22;CompanyLevelInformation&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_list_deductions&#x22;,&#x22;label&#x22;:&#x22;List Deductions&#x22;,&#x22;scopes&#x22;:[&#x22;PaySetup&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_create_deduction&#x22;,&#x22;label&#x22;:&#x22;Create Deduction&#x22;,&#x22;scopes&#x22;:[&#x22;PaySetup&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_update_deduction&#x22;,&#x22;label&#x22;:&#x22;Update Deduction&#x22;,&#x22;scopes&#x22;:[&#x22;PaySetup&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_delete_deduction&#x22;,&#x22;label&#x22;:&#x22;Delete Deduction&#x22;,&#x22;scopes&#x22;:[&#x22;PaySetup&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_list_employee_deductions_by_code&#x22;,&#x22;label&#x22;:&#x22;List Employee Deductions By Code&#x22;,&#x22;scopes&#x22;:[&#x22;PaySetup&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_employee_deduction_by_resourceId&#x22;,&#x22;label&#x22;:&#x22;Get Employee Deduction By ResourceId&#x22;,&#x22;scopes&#x22;:[&#x22;PaySetup&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_deduction_codes&#x22;,&#x22;label&#x22;:&#x22;Get Deduction Codes&#x22;,&#x22;scopes&#x22;:[&#x22;CompanyLevelInformation&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_pay_details&#x22;,&#x22;label&#x22;:&#x22;Get Pay Statement Details&#x22;,&#x22;scopes&#x22;:[&#x22;WebLinkAPI&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_pay_summary&#x22;,&#x22;label&#x22;:&#x22;Get Pay Statement Summary&#x22;,&#x22;scopes&#x22;:[&#x22;WebLinkAPI&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_update_benefit_setup&#x22;,&#x22;label&#x22;:&#x22;Update Benefit Setup&#x22;,&#x22;scopes&#x22;:[&#x22;WebLinkAPI&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_cost_centers&#x22;,&#x22;label&#x22;:&#x22;Get Cost Centers&#x22;,&#x22;scopes&#x22;:[&#x22;CompanyLevelInformation&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_list_pay_details_by_year_and_checkdate&#x22;,&#x22;label&#x22;:&#x22;List Pay Statement Details By Year And Check Date&#x22;,&#x22;scopes&#x22;:[&#x22;WebLinkAPI&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_open_shifts&#x22;,&#x22;label&#x22;:&#x22;Get Open Shifts&#x22;,&#x22;scopes&#x22;:[&#x22;Scheduling&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_company_shifts&#x22;,&#x22;label&#x22;:&#x22;Get Company Shifts&#x22;,&#x22;scopes&#x22;:[&#x22;Scheduling&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_employee_shifts&#x22;,&#x22;label&#x22;:&#x22;Get Employee Shifts&#x22;,&#x22;scopes&#x22;:[&#x22;Scheduling&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_position_codes&#x22;,&#x22;label&#x22;:&#x22;Get Position Codes&#x22;,&#x22;scopes&#x22;:[&#x22;CompanyLevelInformation&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_workers_compensation_codes&#x22;,&#x22;label&#x22;:&#x22;Get Workers Compensation Codes&#x22;,&#x22;scopes&#x22;:[&#x22;CompanyLevelInformation&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_list_employee_earnings&#x22;,&#x22;label&#x22;:&#x22;List Employee Earnings&#x22;,&#x22;scopes&#x22;:[&#x22;PaySetup&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_list_employee_earnings_by_code&#x22;,&#x22;label&#x22;:&#x22;List Employee Earnings By Code&#x22;,&#x22;scopes&#x22;:[&#x22;PaySetup&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_employee_earning_by_resourceId&#x22;,&#x22;label&#x22;:&#x22;Get Employee Earning By ResourceId&#x22;,&#x22;scopes&#x22;:[&#x22;PaySetup&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_create_employee_earning&#x22;,&#x22;label&#x22;:&#x22;Create Employee Earning&#x22;,&#x22;scopes&#x22;:[&#x22;PaySetup&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_update_employee_earning_by_resourceId&#x22;,&#x22;label&#x22;:&#x22;Update Employee Earning By ResourceId&#x22;,&#x22;scopes&#x22;:[&#x22;PaySetup&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_delete_employee_earning_by_resourceId&#x22;,&#x22;label&#x22;:&#x22;Delete Employee Earning By ResourceId&#x22;,&#x22;scopes&#x22;:[&#x22;PaySetup&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_earning_codes&#x22;,&#x22;label&#x22;:&#x22;Get Earning Codes&#x22;,&#x22;scopes&#x22;:[&#x22;CompanyLevelInformation&#x22;]},{&#x22;id&#x22;:&#x22;paylocity_get_sensitive_data&#x22;,&#x22;label&#x22;:&#x22;Get Sensitive Data&#x22;,&#x22;scopes&#x22;:[&#x22;WebLinkAPI&#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>Company ID</h2>

  <p>Your Company ID is the same as the value you use to log in to your Paylocity account.</p>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>API Credentials</h2>

  <p>To connect Paylocity with StackOne, you'll need to contact Paylocity support to obtain your API credentials.</p>

  <Steps>
    <Step title="Contact Paylocity Support">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Request API credentials from your Paylocity support contact.</p>

        <ul>
          <li>A partnership is not required; this integration will remain private only for your account</li>
          <li>For more information, visit the <a href="https://developer.paylocity.com/integrations/docs/getting-started" target="_blank" rel="noopener noreferrer">Paylocity API Getting Started page</a></li>
        </ul>
      </div>
    </Step>

    <Step title="Request NextGen API Credentials">
      <div data-guide-step data-guide-scopes="CompanyLevelInformation,PaySetup,EmployeeDemographic,Scheduling" data-guide-display-scopes-list="CompanyLevelInformation,PaySetup,EmployeeDemographic,Scheduling">
        <div className="connector-guide-actions-badge" data-guide-actions-badge data-guide-actions-badge-scopes="CompanyLevelInformation,PaySetup,EmployeeDemographic,Scheduling" 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 Deduction, Create Employee Earning, Create Job Code, Delete Deduction, Delete Employee Earning By ResourceId, Delete Job Code, Get Company Information, Get Company Shifts, Get Cost Centers, Get Deduction Codes, Get Earning Codes, Get Employee, Get Employee Deduction By ResourceId, Get Employee Earning By ResourceId, Get Employee Shifts, Get Job Code, Get Job Codes, Get Open Shifts, Get Pay Frequency Codes, Get Pay Grades, Get Position Codes, Get Rate Codes, Get Tax Codes, Get Workers Compensation Codes, List Deductions, List Employee Deductions By Code, List Employee Earnings, List Employee Earnings By Code, List Employees, List Work Locations, Update Deduction, Update Employee Earning By ResourceId, Update Job Code</span>
        </div>

        <p>In your request to Paylocity support, include the requirement for NextGen API credentials. You should then receive:</p>

        <ul>
          <li><strong>NextGen Client ID</strong>: The client ID for NextGen API access</li>
          <li><strong>NextGen Client Secret</strong>: The client secret for NextGen API access</li>
        </ul>
      </div>
    </Step>

    <Step title="Request WebLink API Credentials">
      <div data-guide-step data-guide-scopes="WebLinkAPI" data-guide-display-scopes-list="WebLinkAPI">
        <div className="connector-guide-actions-badge" data-guide-actions-badge data-guide-actions-badge-scopes="WebLinkAPI" 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>Add Local Tax, Add New Employee, Add/Update Emergency Contacts, Add/Update Non-Primary State Tax, Add/Update Primary State Tax, Get All Direct Deposit, Get All Local Taxes, Get Custom Fields, Get Employee With Benefits, Get Local Taxes By Tax Code, Get Pay Statement Details, Get Pay Statement Summary, Get Sensitive Data, List Pay Statement Details By Year And Check Date, Update Benefit Setup, Update Employee</span>
        </div>

        <p>In your request to Paylocity support, include the requirement for WebLink API credentials. You should then receive:</p>

        <ul>
          <li><strong>WebLink Client ID</strong>: The client ID for WebLink API access</li>
          <li><strong>WebLink Client Secret</strong>: The client secret for WebLink API access</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

<div data-whitelabel-hide>
  <h2>Linking the Account from the Hub</h2>

  <Steps>
    <Step title="Navigate to the Hub">
      Use one of the three <a href="/guides/accounts-section#linking-accounts">Linking Account Methods</a> to access the Hub.
    </Step>

    <Step title="Fill out the fields">
      Fill out the following fields using details from your provider:

      <ul>
        <li><strong>NextGen Client ID</strong></li>
        <li><strong>NextGen Client Secret</strong></li>
        <li><strong>WebLink Client ID</strong></li>
        <li><strong>WebLink Client Secret</strong></li>
        <li><strong>Company ID</strong></li>
      </ul>
    </Step>

    <Step title="Connect">
      <ul>
        <li>Click <strong>Connect</strong></li>
        <li>If applicable, the provider will redirect you to a sign-in or authorization page. Complete the provider's authorization flow.</li>
        <li>Once authorization is successful, you will see a confirmation popup</li>
      </ul>
    </Step>
  </Steps>

  <p>If the account linking is successful, you will see the newly linked account in your <a href="/guides/accounts-section">Accounts</a> page.</p>
</div>
