Other Financial Integration

Modified on Sun, 30 Nov at 12:51 PM

Other Financial Integration

You can now not only set up the Journal Entries Structure of your financial integrations, but you can also integrate your ZenHR account with Other Financial Systems through the “Other Financial Integrations” page. Integrate your ZenHR account with other financial systems using whatever authentication you want (Auth1, Auth2, etc). You will also be able to export payroll, off-cycle payments, and off-cycle vacation in-advance salaries journal entries with the Journal Entries Exporter, which can be activated in the Journal Entries Structure.


TABLE OF CONTENTS



Integrate Your ZenHR Account With Other Financial Systems

Marketplace integration  Financial Integration Setup 

The Other Financial Integrations Feature enables seamless integration of your ZenHR account with various financial systems using OAuth 1, OAuth 2, and credentials authentication. This feature-rich tool empowers you to effortlessly transmit and update employee data, as well as dispatch journal entries to your financial system.

Key Requirements for Integration:

  1. Providing an Endpoint:
    • Your technical team is required to provide an endpoint (a URL) that ZenHR will use to transmit journal entries and Employee info if needed.
    • This endpoint acts as the receiving point for all financial data sent from ZenHR to your system.
  2. Developing Middleware for Attribute Mapping:
    • ZenHR sends financial data in JSON format, which includes specific attributes tied to the journal entries.
    • Your team must develop middleware to map these ZenHR attributes to the corresponding fields in your financial system.
    • Accurate mapping ensures that data is correctly interpreted and consistently integrated into your system.
  3. Inputting Specific Values into ZenHR:
    • Your team needs to enter specific values into ZenHR, such as GL Accounts, Employee IDs, and Organizational Level IDs (if applicable).
    • These values are embedded in the JSON data sent by ZenHR, ensuring proper representation within your financial system.

Practical Example:

  • Imagine your financial system assigns the GL Account ID "110011" to Basic Salary.
  • Your team inputs this ID into ZenHR.
  • When ZenHR generates payroll journal entries, the JSON data includes "110011" for Basic Salary, ensuring it is accurately reflected in the JSON used to send to your financial system.

 

 

 Employee Data Structure


FieldDescriptionTypeExample
employment_numberEmployee’s official employment number in ZenHRString"43333"
subsidiary_idInternal branch ID (Added on ZenHR by You Based on your ERP ID)Integer / null123
subsidiaryBranch nameString"KSA Branch"
entity_idUnique concatenation of ZenHR employee ID + nameString"147TurkiMohammad"
inactiveEmployee status (false = active)Booleanfalse
first_nameFirst nameString"Turki"
second_nameMiddle nameString"Hussain"
third_nameThird nameString"Kareem"
last_nameLast nameString"Mohammad"
emailWork emailString"turki.zenhr@gmail.com"
custentity_hr_idZenHR unique internal employee IDInteger147
mobile_phoneEmployee’s mobile phoneString"053 234 3333"
social_security_numberEmployee’s SSN if applicableString / null124554646
hire_dateHiring dateString (DD/MM/YYYY)"15/10/2025"
marital_statusMarital statusString"Single"
genderEmployee genderString"Male"
birth_dateDate of birthString"16/04/1996"
titleJob titleString"Senior Anti-Fraud Officer"
title_idZenHR Internal job title IDInteger2293
release_dateTermination dateString / nullnull
integration_idEmployee’s ID in external financial system (Added on ZenHR by You Based on your ERP ID)String / nullnull
national_idNational IDString"1094518725"
iqama_numberIqama number (KSA)String"12312421"
supervisorDirect manager’s nameString"Abdulaziz Kareem"
supervisor_idDirect manager’s ZenHR employee ID (Added on ZenHR by You Based on your ERP ID)Integer43333
supervisor_integration_idManager’s financial system ID (Added on ZenHR by You Based on your ERP ID)String / nullnull
official_supervisorOfficial supervisor nameString"Kareem Lelo"
official_supervisor_idOfficial supervisor’s ZenHR employee IDInteger / nullnull
official_supervisor_integration_idOfficial supervisor’s financial system ID (Added on ZenHR by You Based on your ERP ID)String / nullnull
passport_numberPassport numberString"12321413"
classProject / main classString / nullnull
class_idZenHR class IDInteger / nullnull
class_integration_idFinancial system class ID (Added on ZenHR by You Based on your ERP ID)String / nullnull
departmentDepartment nameString"Compliance"
department_idZenHR department IDInteger125233
department_integration_idFinancial system department ID (Added on ZenHR by You Based on your ERP ID)String / nullnull
locationWork location nameString"KSA - Riyadh"
location_idZenHR work location IDInteger124644
location_integration_idFinancial system location ID (Added on ZenHR by You Based on your ERP ID)String / nullnull
business_unitBusiness unit nameString / nullnull
business_unit_idZenHR business unit IDInteger / nullnull
business_unit_integration_idFinancial system business unit ID (Added on ZenHR by You Based on your ERP ID)String / nullnull
divisionDivision nameString"HQ (Global Function)"
division_idZenHR division IDInteger451055
division_integration_idFinancial system division ID (Added on ZenHR by You Based on your ERP ID)String / nullnull
segmentSegment nameString / nullnull
segment_idZenHR segment IDInteger / nullnull
segment_integration_idFinancial system segment ID (Added on ZenHR by You Based on your ERP ID)String / nullnull
sectionSection nameString / nullnull
section_idZenHR section IDInteger / nullnull
section_integration_idFinancial system section ID (Added on ZenHR by You Based on your ERP ID)String / nullnull
customized_fieldsAny custom fields added to employee profileObject{}

 

Sample Employee Data JSON:

{
  "employment_number": "43333",
  "subsidiary_id": null,
  "subsidiary": "KSA Branch",
  "entity_id": "147TurkiMohammad",
  "inactive": false,
  "first_name": "Turki",
  "second_name": "Hussain ",
  "third_name": "",
  "last_name": "Mohammad",
  "email": "turki.zenhr@gmail.com",
  "custentity_hr_id": 147,
  "mobile_phone": "053 234 3333",
  "social_security_number": null,
  "hire_date": "15/10/2025",
  "marital_status": "",
  "gender": "Male",
  "birth_date": "16/04/1996",
  "title": "Senior Anti-Fraud Officer",
  "title_id": 2293,
  "release_date": null,
  "integration_id": null,
  "national_id": "1094518725",
  "iqama_number": "",
  "supervisor": "Abdulaziz Kareem",
  "supervisor_id": 43333,
  "supervisor_integration_id": null,
  "official_supervisor": "",
  "official_supervisor_id": null,
  "official_supervisor_integration_id": null,
  "passport_number": "",
  "class": null,
  "class_id": null,
  "class_integration_id": null,
  "department": "Compliance",
  "department_id": 125233,
  "department_integration_id": null,
  "location": "KSA - Riyadh",
  "location_id": 124644,
  "location_integration_id": null,
  "business_unit": null,
  "business_unit_id": null,
  "business_unit_integration_id": null,
  "division": "HQ (Global Function)",
  "division_id": 451055,
  "division_integration_id": null,
  "segment": null,
  "segment_id": null,
  "segment_integration_id": null,
  "section": null,
  "section_id": null,
  "section_integration_id": null,
  "customized_fields": {}
}

    

Journal Entries Branch Details Structure

Attribute

Attribute Description

key

Journal entry name and type

name

Branch name

date

Journal creation date

currency

Journal entry currency

id

Branch ID on ZenHR

company_id

Company ID on ZenHR


Sample Branch Details JSON:

"Payroll Journal Entries - KSA Branch": {
        "name": null,
        "date": "25/01/2022",
        "currency": "SAR",
        "branch": {
            "id": 5670,
            "company_id": 3850,
            "name": "KSA Branch",
            "logo_file_name": "Screenshot_2022-11-13_105131.png",
            "logo_content_type": "image/png",
            "logo_file_size": 19640,
            "logo_updated_at": "2022-11-13T11:18:06.029+03:00",
            "created_at": "2022-10-27T11:27:16.727+03:00",
            "updated_at": "2024-09-28T11:48:30.237+03:00",
            "probation_period": {
                "type": "Month",
                "period": "3"
            },
            "working_hours": 8,
            "cut_off_date": 25,
            "working_days": 30,
            "days_off": [
                "5",
                "6"
            ],
            "location": null,
            "timezone": "Riyadh",
            "auto_increment": true,
            "round": 3,
            "currency_currency": "SAR",
            "country_id": 192,
            "dashboard_logo_file_name": "Screenshot_2022-11-13_105131.png",
            "dashboard_logo_content_type": "image/png",
            "dashboard_logo_file_size": 19640,
            "dashboard_logo_updated_at": "2022-11-13T11:18:06.287+03:00",
            "reminder_email": "",
            "dashboard_active_widgets": {
                "timeoffs": "true",
                "who_is_off": "true",
                "announcements": "true",
                "upcoming_birthdays": "true"
            },
            "date_format": "%b %d, %Y",
            "time_format": "%I:%M %P",
            "show_who_is_off_type": true,
            "week_start_day": 0,
            "allowed_emp_directory": true,
            "withdraw_approved_transactions": false,
            "fiscal_day": 1,
            "fiscal_month": 1,
            "whos_off_type": 1,
            "whos_off_interval": 30,
            "subsidiary_id": null,
            "active_slack": false,
            "view_financial_hr_letters": false,
            "is_localization_default": true,
            "enable_timeoff_default_type": false,
            "gosi_integration_enabled": true,
            "editable_employee_profile_picture": true,
            "enable_altibbi": false,
            "employee_day_rate": null
        },
        "offcycle_journal": false,
        "in_advanced_journal": false,
        "setup": {
            "id": 543,
            "branch_id": 5670,
            "clearance_type": "accrued_clearance",
            "request_size": null,
            "journal_type": "detailed",
            "group_by": null,
            "separate_journal_by_group": false,
            "auto_generate_offcycle_transactions": true,
            "auto_generate_in_advance": true,
            "separate_company_expenses": true,
            "separate_company_contributions": true,
            "calculate_provisions": false,
            "provision_journal_type": "separate_provisions",
            "activate_exporter": true,
            "created_at": "2022-12-07T11:26:17.616+03:00",
            "updated_at": "2022-12-19T15:05:23.471+03:00",
            "prevent_deleting_transactions": null,
            "send_provisions_manually": null,
            "calculate_provisions_for_out_sourced_employees": null,
            "calc_vacation_yearly": false,
            "prevent_editing_transactions": null,
            "accrued_employee": null,
            "prevent_resending_transactions": false,
            "deduct_absence": true,
            "calc_provision_with_settlement": false,
            "calculate_provisions_based_on_cut_off_date": true,
            "seperate_journal_per_request_by_group": null
        },
        "subsidiary": {
            "id": 5670,
            "company_id": 3850,
            "name": "KSA Branch",
            "logo_file_name": "Screenshot_2022-11-13_105131.png",
            "logo_content_type": "image/png",
            "logo_file_size": 19640,
            "logo_updated_at": "2022-11-13T11:18:06.029+03:00",
            "created_at": "2022-10-27T11:27:16.727+03:00",
            "updated_at": "2024-09-28T11:48:30.237+03:00",
            "probation_period": {
                "type": "Month",
                "period": "3"
            },
            "working_hours": 8,
            "cut_off_date": 25,
            "working_days": 30,
            "days_off": [
                "5",
                "6"
            ],
            "location": null,
            "timezone": "Riyadh",
            "auto_increment": true,
            "round": 3,
            "currency_currency": "SAR",
            "country_id": 192,
            "dashboard_logo_file_name": "Screenshot_2022-11-13_105131.png",
            "dashboard_logo_content_type": "image/png",
            "dashboard_logo_file_size": 19640,
            "dashboard_logo_updated_at": "2022-11-13T11:18:06.287+03:00",
            "reminder_email": "",
            "dashboard_active_widgets": {
                "timeoffs": "true",
                "who_is_off": "true",
                "announcements": "true",
                "upcoming_birthdays": "true"
            },
            "date_format": "%b %d, %Y",
            "time_format": "%I:%M %P",
            "show_who_is_off_type": true,
            "week_start_day": 0,
            "allowed_emp_directory": true,
            "withdraw_approved_transactions": false,
            "fiscal_day": 1,
            "fiscal_month": 1,
            "whos_off_type": 1,
            "whos_off_interval": 30,
            "subsidiary_id": null,
            "active_slack": false,
            "view_financial_hr_letters": false,
            "is_localization_default": true,
            "enable_timeoff_default_type": false,
            "gosi_integration_enabled": true,
            "editable_employee_profile_picture": true,
            "enable_altibbi": false,
            "employee_day_rate": null
        },

Introduction to the Detailed Journal Entry JSON


When ZenHR generates payroll journal entries, each line in the journal is represented as a structured JSON object. This JSON contains all the financial, employee, and organizational information your system needs to correctly post payroll transactions into your financial or ERP platform.


The detailed journal JSON provides a line-by-line breakdown for every payroll component (such as Basic Salary, GOSI, Allowances, Deductions, etc.).


Each line includes:

  • The GL account the amount should be posted to

  • The employee that the transaction belongs to

  • Whether the value is a debit or a credit

  • The financial amount

  • The employee’s organizational levels (department, section, project, work location)


This format ensures your financial system can classify, group, and post data accurately based on your internal accounting structure.


Below is a clear explanation of the fields included in a single detailed journal entry line.


Detailed Journal Entry Line Field Reference Table

FieldDescriptionTypeExample
accountThe GL account that this payroll transaction should post to in your financial system. This is entered inside ZenHR under GL Identifiers.String"324-GL3453"
memoThe name of the payroll component (e.g., Basic Salary, GOSI, Allowance). This helps your financial system classify the transaction.String"Basic Salary"
employee_idThe internal ZenHR employee ID. This is how ZenHR identifies the employee inside its own system.Integer138679
integration_idThe employee’s ID in your financial system. You add this inside ZenHR → Connected People. Used for accurate employee mapping.Integer1244
employment_numberThe employment number displayed in ZenHR. Often used as a secondary identifier by financial systems.String"01"
nameEmployee name. Only included when journals are generated in Detailed mode. Helpful for readability in your financial system.String"Salim Al Harbi"
typeIndicates whether the line is a debit or credit entry.String"debit"
debitThe debit amount for this transaction. Only appears when type = debit.Float80000.0
credit
The credit amount for this transaction. Only appears when type = credit.
Float
80000.0

Organization Levels – Simplified Structure Overview

Each journal entry line includes an organization_levels object that describes where the employee belongs inside your organization (department, section, project, location, etc.).These values help your financial system categorize the transaction into the correct dimension, cost center, or tracking category.

organization_levels → department

FieldDescription
TypeExample
idThe internal ZenHR Department ID assigned to the employee.Integer40707
nameThe department name exactly as stored in ZenHR.String"Management"
integration_idThe department’s ID in your financial system (entered by you in ZenHR → Organizational Levels). Used for accurate dimension mapping.String / null53


 Sample (Detailed) Journal Entries JSON lines:

    "lines": [
      {
        "salary_id": 10963999,
        "account": "324-GL3453",
        "gl_account_name": "",
        "payment_method": "Bank Transfer",
        "memo": "Basic Salary",
        "employee_id": 138679,
        "integration_id": "",
        "employment_number": "01",
        "name": "Salim Al Harbi",
        "hiring_date": "2020-01-01",
        "cost_center_id": null,
        "cost_center_integration_id": null,
        "cost_center": "",
        "cost_center_name": null,
        "cost_center_account": null,
        "type": "debit",
        "object_type": null,
        "debit": 80000.0,
        "zenhr_transaction_id": 10963999,
        "location": "Head Office",
        "department": "Management : Management Section",
        "class": "ZenHR & Testello",
        "organization_levels": {
          "department": {
            "id": 40707,
            "name": "Management",
            "account": "",
            "dimension_code": null,
            "tracking_category": null,
            "integration_id": null
          },
          "section": {
            "id": 40712,
            "name": "Management Section",
            "account": "",
            "dimension_code": null,
            "tracking_category": null,
            "integration_id": null
          },
          "project": {
            "id": 40713,
            "name": "ZenHR & Testello",
            "account": "",
            "dimension_code": null,
            "tracking_category": null,
            "integration_id": null
          },
          "hierarchy_group": {
            "id": 40715,
            "name": "Management Group",
            "account": "",
            "dimension_code": null,
            "tracking_category": null,
            "integration_id": null
          },
          "work_location": {
            "id": 40666,
            "name": "Head Office",
            "account": null,
            "dimension_code": null,
            "tracking_category": null,
            "integration_id": null
          }
        }
      },
      {
        "salary_id": 10963999,
        "account": "",
        "gl_account_name": "",
        "payment_method": "Bank Transfer",
        "memo": "Saudi Employees GOSI",
        "employee_id": 138679,
        "integration_id": "",
        "employment_number": "01",
        "name": "Salim Al Harbi",
        "hiring_date": "2020-01-01",
        "cost_center_id": null,
        "cost_center_integration_id": null,
        "cost_center": "",
        "cost_center_name": null,
        "cost_center_account": null,
        "type": "credit",
        "object_type": "SocialSecurity",
        "credit": 4387.5,
        "zenhr_transaction_id": 86,
        "location": "Head Office",
        "department": "Management : Management Section",
        "class": "ZenHR & Testello",
        "organization_levels": {
          "department": {
            "id": 40707,
            "name": "Management",
            "account": "",
            "dimension_code": null,
            "tracking_category": null,
            "integration_id": null
          },
          "section": {
            "id": 40712,
            "name": "Management Section",
            "account": "",
            "dimension_code": null,
            "tracking_category": null,
            "integration_id": null
          },
          "project": {
            "id": 40713,
            "name": "ZenHR & Testello",
            "account": "",
            "dimension_code": null,
            "tracking_category": null,
            "integration_id": null
          },
          "hierarchy_group": {
            "id": 40715,
            "name": "Management Group",
            "account": "",
            "dimension_code": null,
            "tracking_category": null,
            "integration_id": null
          },
          "work_location": {
            "id": 40666,
            "name": "Head Office",
            "account": null,
            "dimension_code": null,
            "tracking_category": null,
            "integration_id": null
          }
        }
      },
      {
        "salary_id": 10963999,
        "account": "324-GL3453",
        "gl_account_name": "",
        "payment_method": "Bank Transfer",
        "memo": "Accrued Salaries - Clearance",
        "employee_id": 138679,
        "integration_id": "",
        "employment_number": "01",
        "name": "Salim Al Harbi",
        "hiring_date": "2020-01-01",
        "cost_center_id": null,
        "cost_center_integration_id": null,
        "cost_center": "",
        "cost_center_name": null,
        "cost_center_account": null,
        "type": "credit",
        "object_type": null,
        "credit": 105612.5,
        "location": "Head Office",
        "department": "Management : Management Section",
        "class": "ZenHR & Testello",
        "organization_levels": {
          "department": {
            "id": 40707,
            "name": "Management",
            "account": "",
            "dimension_code": null,
            "tracking_category": null,
            "integration_id": null
          },
          "section": {
            "id": 40712,
            "name": "Management Section",
            "account": "",
            "dimension_code": null,
            "tracking_category": null,
            "integration_id": null
          },
          "project": {
            "id": 40713,
            "name": "ZenHR & Testello",
            "account": "",
            "dimension_code": null,
            "tracking_category": null,
            "integration_id": null
          },
          "hierarchy_group": {
            "id": 40715,
            "name": "Management Group",
            "account": "",
            "dimension_code": null,
            "tracking_category": null,
            "integration_id": null
          },
          "work_location": {
            "id": 40666,
            "name": "Head Office",
            "account": null,
            "dimension_code": null,
            "tracking_category": null,
            "integration_id": null
          }
        }
      }
    ]
  },
  "event_id": 10802914
}

Introduction to the Summary Journal Entry JSON


Summary journal entries provide a consolidated version of payroll data, grouping amounts by cost center, branch, or other configured criteria. Unlike detailed journals, which include employee-level information for every payroll component, summary journal JSON focuses only on aggregated financial totals, making it ideal for financial systems that do not require per-employee posting.


Each summary line represents a total amount for a specific payroll component (e.g., Basic Salary, Allowances, GOSI, Deductions), grouped according to the structure you configured in ZenHR’s Journal Entries Setup.


Because this format is designed for high-level financial posting, many employee-specific fields (such as employee_id, name, hiring_date) are intentionally omitted or left empty.


Summary lines still include:

  • The GL account mapping

  • The payroll component name (memo)

  • Whether the line is a debit or credit entry

  • The aggregated financial amount

  • The cost center or grouping level (if activated)

  • Basic classification details such as location or cost center name


This format is optimized for ERPs that rely on cost centers / Org Levels , branches, or GL account groupings rather than employee-level detail.


Below is the field reference for the Summary Journal JSON.


Summary Journal Entry Line Field Reference Table


FieldDescriptionTypeExample
accountThe GL account for this grouped payroll component. Pulled from ZenHR GL Identifiers.String / null"2"
memoName of the payroll component being grouped (Basic Salary, Allowance, etc.).String"Basic Salary"
typeIndicates whether the entry is a debit or credit.String"debit"
object_typeShows the transaction category (e.g., RecurringTransaction). Optional for summary journals.String / null"RecurringTransaction"
debitDebit amount for this grouped component. Present only if type = debit.Float4000.0
creditCredit amount for this component. Present only if type = credit.Float4800.0
location » Changes based on your grouping optionThe cost center or predefined location label used for grouping.String"Location 1"
Integration_id
Organizational Level ID. You add this inside ZenHR → Organizational Level. Used for accurate Org Level mapping.Integer123

 

Sample (Summary) Journal Entries JSON lines:

    "lines": [
      {
        "salary_id": null,
        "account": null,
        "gl_account_name": null,
        "payment_method": "Bank Transfer",
        "memo": "Basic Salary",
        "employee_id": "",
        "integration_id": "",
        "employment_number": "",
        "name": "",
        "hiring_date": "",
        "cost_center_id": 177993,
        "cost_center_integration_id": 177993,
        "cost_center": {
          "id": 177993,
          "branch_id": 105,
          "organization_level_id": null,
          "name": "Location 1",
          "created_at": "2024-10-28T22:59:14.557+03:00",
          "updated_at": "2024-10-28T22:59:14.557+03:00",
          "organization_level_type": "site",
          "key_staff": null,
          "gl_identifier": null,
          "logo_file_name": null,
          "logo_content_type": null,
          "logo_file_size": null,
          "logo_updated_at": null,
          "type_translation": {
            "ar": "موقع العمل",
            "en": "Work Location"
          },
          "integration_id": null,
          "gl_identifiers": {},
          "subsidiary_id": null,
          "dimension": null,
          "tracking_category": null
        },
        "cost_center_name": "Location 1",
        "cost_center_account": null,
        "type": "debit",
        "object_type": null,
        "debit": 4000.0,
        "location": "Location 1"
      },
      {
        "salary_id": null,
        "account": "2",
        "gl_account_name": null,
        "payment_method": "Bank Transfer",
        "memo": "Allowance",
        "employee_id": "",
        "integration_id": "",
        "employment_number": "",
        "name": "",
        "hiring_date": "",
        "cost_center_id": 177993,
        "cost_center_integration_id": 177993,
        "cost_center": {
          "id": 177993,
          "branch_id": 105,
          "organization_level_id": null,
          "name": "Location 1",
          "created_at": "2024-10-28T22:59:14.557+03:00",
          "updated_at": "2024-10-28T22:59:14.557+03:00",
          "organization_level_type": "site",
          "key_staff": null,
          "gl_identifier": null,
          "logo_file_name": null,
          "logo_content_type": null,
          "logo_file_size": null,
          "logo_updated_at": null,
          "type_translation": {
            "ar": "موقع العمل",
            "en": "Work Location"
          },
          "integration_id": null,
          "gl_identifiers": {},
          "subsidiary_id": null,
          "dimension": null,
          "tracking_category": null
        },
        "cost_center_name": "Location 1",
        "cost_center_account": null,
        "type": "debit",
        "object_type": "RecurringTransaction",
        "debit": 800.0,
        "location": "Location 1"
      },
      {
        "salary_id": null,
        "memo": "Accrued Salaries - Clearance",
        "account": null,
        "gl_account_name": "",
        "payment_method": "Bank Transfer",
        "type": "credit",
        "credit": 4800.0
      }
    ]
  },
  "event_id": 10803059
}


How To Activate The Other Financial Integration Tool?

To activate Other Financial Integrations on ZenHR, first set up your Journal Entries Structure and generate the needed API keys to proceed with the integration process.


Step 1: Set Up Journal Entry Structure

 

User Menu  System Preferences  Journal Entries Structure


Refer to this page for more details "Journal Entries Structure" page in ZenHR offers a powerful set of tools to customize and automate journal entry processes for payroll and accounting. Here’s a concise overview of what can be achieved:

  • General Configuration:
    • Match journal entries using clearing accounts, accrued salary differences, or employee-level data.
    • Set the number of employees per journal (e.g., all employees or a specific limit).
    • Choose detailed or summary journal types.
    • Group entries by branch, department, or other criteria.
    • Prevent deletion, editing, or resending of sent transactions.
    • Deduct absences from the basic salary automatically.
  • Off-Cycle Payments:
    • Auto-generate separate journals for off-cycle payments and vacation in-advance salaries.
  • Company Contributions and Expenses:
    • Create separate journals for company contributions and expenses.
  • Provisions Management:
    • Automatically calculate employee provisions with payroll.
    • Generate provision entries within payroll journals or as separate journals (by provision type or employee).
    • Base calculations on cut-off dates or termination settlements.
  • Cost Centers:
    • Activate and auto-generate cost center journals with payroll.
    • Create separate journals per cost center and exclude off-cycle payments.
    • Select detailed or summary journal types.
  • Bank Transfers:
    • Activate bank transfer journals with customizable journal types (detailed or summary).
    • Group entries by specific levels (e.g., branch or department).
  • Exporting Journal Entries:
    • Enable the journal entries exporter for easy data export.

This page provides a flexible, automated solution for managing journal entries, ensuring precision and alignment with organizational needs.


 



 

Step 2: Generate API Keys

  • Go to Marketplace IntegrationsOther Financial Integration SetupAdd API Keys.
    • Fill in the API key name, select the Authentication type, and make sure to fill in all of the required related fields.

 

  

Step 3: Set up Other Financial Integrations

  •      On ZenHR, click your user icon in the upper right corner and go to Marketplace Integrations → Other Financial Integration Setup.

     

 

  • Enter the Name of the financial system.
  • Activate the toggles in the Employee Data and Journal Entry sections.
  • Add the Employee URL and the Journal entries URL retrieved from your financial system’s account.
  • Then click “Save”.


Things needed to be done on ZenHR

To ensure proper integration between ZenHR and your financial system, the following configurations must be completed within ZenHR.

  1. GL Accounts Page
    Navigate to: Marketplace Integrations → Other Financial Integrations Setup → GL Accounts
    On this page, and its related tabs (Incomes & Deductions, Company Expenses, Overview, Loans, Leaves and Vacations), enter the GL Account IDs matching those in your financial system. These IDs will appear in the journal entry JSON payload sent to your system. Here is an article that explains our main GLs GL Accounts Explanation

  2. Connected People Page
    Navigate to: Marketplace Integrations → Other Financial Integrations Setup → Connected PeopleFor each employee, populate the Integration ID field with the internal employee ID from your financial system. This ensures employee JSON payloads include the correct identifiers.

  3. Organizational Levels Page
    Navigate to: Marketplace Integrations → Other Financial Integrations Setup → Organizational Levels
    For each organizational level, enter the corresponding internal ID from your financial system. These will be reflected in the organizational levels section of the journal entry JSON payload.

  4. Cost Centers Page (if applicable)
    Navigate to: Marketplace Integrations → Other Financial Integrations Setup → Cost Centers
    If your financial system uses cost centers, enter the relevant internal IDs here to ensure correct mapping in the exported data.

 

That’s it, your financial integration will now be complete! You can now post journal entries directly from ZenHR.

 Posting Salaries From ZenHR to Other Financial Integrations:

 

        To post salaries from ZenHR to Other Financial Integrations, follow these steps: 

 

  • On the left side of the page, go to Main Menu → Payroll  Manage Salaries. 
  • Filter the desired salary "Year" and "Month" for all employees, and click “Filter”.
  • Then click “Send to (Other Financial Integration Name)”, and your salaries will be transferred as journals.

 

 
 


Post Off-Cycle Payments From ZenHR to Other Financial Integrations:

 

  • To auto-generate separate journals for off-cycle payments and post them with your payroll journal entries, follow these steps: 
    • Click your user icon in the upper right corner and go to System Preferences Journal Entries Structure. 
    • Activate the Auto-generate separate journals for off-cycle payments checkbox and click “Save”.


  

 


  •      You can then post salaries from ZenHR to Other Financial Integrations, and the transferred journals will include separate journal entries for your off-cycle payments.

  

To manually generate your off-cycle payments journal entries, follow these steps:


  • Click your user icon in the upper right corner and go to System Preferences Integration Setup Financial Integrations Journal Entries Structure. 

  • Clear the Auto-generate separate journals for off-cycle payments checkbox and click “Save”.

 

 

  • Go to Main Menu Payroll Manage Financial Transactions → Off-Cycle Payments
  • Use the “Date from” and “to” filters to filter out the duration of the transactions you wish to include in your journal entries, and click “Filter”.
  • In the Employee ID column, select the transactions you wish to include in your journal entries.
  • Then click “Send to (Other Financial Integration Name)”, and your off-cycle payments will be transferred as journals.


 

 

Post Off-Cycle Vacation In-Advance Salaries From ZenHR to Other Financial Integrations

 

To auto-generate separate journals for off-cycle vacation in-advance salaries and post them with your payroll journal entries, follow these steps:

  • Click your user icon in the upper right corner and go to System Preferences Integration Setup Financial Integrations Journal Entries Structure 
  • Activate the Auto-generate separate journals for off-cycle vacation in-advance salaries checkbox and click “Save”.



 

 

  •      You can then post salaries from ZenHR to  Other Financial Integrations, and the transferred journals will include separate journal entries for your off-cycle vacation in-advance salaries.

To manually generate your off-cycle vacation in-advance journal entries, follow these steps:

  • Click your user icon in the upper right corner and go to System Preferences Journal Entries Structure.
  • Clear the Auto-generate separate journals for off-cycle vacation in-advance checkbox.
  • Then click “Save”.

 


  

  • Go to Main Menu Payroll Manage Vacation In-Advance Salary.
  • Filter out the vacation in-advance salaries that fall within a specific time period by using the “In-advance from date” and  “In-advance to date” filters.
  • Select “Off-cycle” in the Payroll status filter.
  •  In the Employee No olumn, select the in-advance salaries you wish to include in your exported journal entries. Or you can select all the filtered salaries by clicking the “Select all” checkbox.
  • Then click “Send to (Other Financial Integration Name)”, and your off-cycle vacation in-advance salaries will be transferred as journals.

 

 

Other Financial Integrations Event Viewer

  • To retry sending failed posts, go to User Menu System Preferences Marketplace Integration Setup Financial Integrations Other Financial Integrations.
  • On the Event Viewer page, click “Retry” to send journal entries again.

 

Exporting Journal Entries

To activate the Journal Entries Exporter, follow these steps:

  • Click your user icon in the upper right corner and go to User Menu  System Preferences  Integration Setup → Financial Integrations  Journal Entries Structure.
  • On the Journal Entries Structure page, check the “Activate journal entries exporter” box, and click “Save”to activate the Journal Entries Exporter.


 

  •      Once it’s activated, the option to export your journal entries will appear on all related pages.

To export your payroll journal entries, follow these steps:

  • Go to Main Menu → Payroll Manage Financials Manage Salaries. 
  • On the Manage Salaries page,  filter out the year and month of the salaries you wish to export
  • Then click the “Export Journal Entries” button


 

  •      A pop-up will then appear, click “Export” to export your payroll journal entries for the selected month according to your defined Journal Entries Structure.

 

  

To export your off-cycle payments journal entries, follow these steps:

  • Go to Main Menu → Payroll Manage Financials Manage Financial Transactions Off-Cycle Payments.
  • Use the “Date from” and “to” filters to filter out the duration of the transactions you wish to include in your journal entries.
  • In the Employee ID column, select the transactions you wish to include in your journal entries. Or select all the filtered transactions by clicking the Select all checkbox.
  • Click on the “Export Journal Entries” button.


 

  •       A pop-up will then appear; click “Export” to export your selected off-cycle payments journal entries according to your defined Journal Entries Structure.

 

 

Note: Multiple off-cycle payment journal entries might be created based on the effective dates of the selected exported transactions. 

 

To export your off-cycle vacation in-advance salaries journal entries, follow these steps:

  • Go to Main Menu → Payroll  Manage Financials Manage Vacation In-Advance Salary
  • Filter out the vacation in-advance salaries that fall within a specific time period by using the “In-advance from date” and  “In-advance to date” filters.
  • On the Payroll status filter, select “Off-cycle” and click “Apply Filters”.
  • In the Employee No. column, select the in-advance salaries you wish to include in your exported journal entries. Or you can select all the filtered salaries by clicking the “Select all” checkbox.
  • Click on the “Export Journal Entries” button.

 

  •      A pop-up will then appear, click “Export” to export your selected off-cycle vacation in-advance journal entries according to your defined Journal Entries Structure.

 



Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article