The generic SFTP integration allows you to sync data using the SFTP protocol, enabling clients using Global Payroll to integrate Deel with virtually any HRIS system without the need to build a custom integration.
With the SFTP integration, you'll be able to sync:
In this article
Before you begin
To set up the SFTP integration, you'll need:
- The credentials of an SFTP server where data is exported from your HRIS system
- A user with an admin role on Deel
- To whitelist Deel IP addresses to be able to connect
Configure export data
Set your HRIS system so that it exports data to the FTP organized in the following files, and follow a semi-colon (;) separated CSV format.
Unless otherwise indicated, make sure that the order and name of the columns in the export files match the format outlined in the following sections. Sync will fail if the data files don't match the expected format.
We also recommend allowing connections from Deel's public IP addresses to ensure that the integration works correctly.
Pay groups file
One of the files needed to sync data properly contains pay group information. You can use the prefix entities for the file, or a custom prefix you prefer.
For sync to complete successfully, make sure that the file has the following columns:
companyId;companyName
12345; Acme Corp Spain
Where:
| Value | Description | Format | Required |
|---|---|---|---|
companyId |
Unique identifier for the pay group. It can be any alphanumeric sequence. For example, UK. |
String | Yes |
companyName |
The pay group display name, used in the UI when setting up the entities. | String | Yes |
Employee data file
One of the files needed to sync data properly contains all the employee data. You can use the prefix employees for the file, or a custom prefix you prefer.
This file must contain all the information about your employee that you want to sync, both global and country-specific. The following is an example that contains columns for the basic mapping data that Deel expects, but you can customize the exported columns to your need, because you will map it to Deel-specific fields later when you set up the integration.
employeeNumber;addressLine1;mobilePhone;firstName;lastName;country;city;jobTitle;jobEffectiveDate;workEmail;startDate;fte;employmentType;employmentEffectiveDate;payGroupId;contractEndDate;compensationRate;zip;state;addressLine2;compensationEffectiveDate;compensationPaidPer
1;65, Rue Victor Hugo, 75001 Paris;75001;Jessica;Berry;France;Paris;Business Developer;02/01/2020;jberry@acmecorp.com;02/01/2020;1;Full Time;02/01/2020;UK;;14000;75001;Île-de-France;Building A;02/01/2020;month
customizable column in the tables indicates whether you can or cannot change the name of a value in your CSV. Changing the name of non-customizable values will result in processing errors.Where:
| Value | Description | Format | Required | Customizable |
|---|---|---|---|---|
employeeNumber |
The internal employee number in your HRIS system. It should be a unique identifier. | String | Yes | No |
addressLine1 |
The primary address line of the employee's residence or work location. | String | Yes | No |
zip |
Postal code of the employee's address | String | Yes | Yes |
firstName |
The employee's legal first name | String | Yes | Yes |
lastName |
The employee's legal last name | String | Yes | No |
country |
Country code in the ISO 3166-1 alpha-2 format. For example, US for the United States |
String | Yes | Yes |
city |
Employee's city of residence or work | String | Yes | Yes |
jobTitle |
The employee's job title as defined in the HRIS. | String | Yes | Yes |
jobEffectiveDate |
The date when the employee's current job title became effective. | Date (YYYY-MM-DD) | Yes | Yes |
workEmail |
The employee's work email address | String | Yes | No |
startDate |
The date when the employee started working at the company | Date (YYYY-MM-DD) | Yes | Yes |
fte |
Stands for full-time equivalent. A decimal value representing the employee's full-time or part-time employment arrangement. 1 represents full time and 0.5 represents a half-day part time. |
Number | Yes | Yes |
employmentType |
Defines the type of employment. Use Employee - FT for full-time employees and Employee - PT for part-time employees. |
String | Yes | Yes |
employmentEffectiveDate |
Date when the current employment type became effective | Date | Yes | Yes |
payGroupId |
The pay group the employee belongs to. Must match one of the companyId values in the pay groups file. For example, UK. |
String | Yes | No |
contractEndDate |
The contract's end date. If empty, indicates that the contract does not have an end date. | Date (YYYY-MM-DD) | No | Yes |
compensationRate |
The employee's salary or hourly rate | Number | No | Yes |
mobilePhone |
The employee's mobile phone number | String | No | Yes |
state |
In countries where it is applicable, the state or province of the employee's residence or work location. | String | No | Yes |
addressLine2 |
Second address line | String | No | Yes |
compensationEffectiveDate |
Compensation effective date | Date | No | Yes |
compensationPaidPer |
Compensation paid per | String | No | Yes |
(Optional) One-time payment (OTP) data
Configure the following files to sync one-time payment data.
OTP types file
The OTP types file ensures that each one-time payment is correctly categorized by its type. You can use the prefix otp_types for the file, or a custom prefix you prefer.
For sync to complete successfully, make sure that the file has the following structure:
reportItemId;description
123456;Performance Bonus
123457;Referral Bonus
Where:
| Value | Description | Format | Required |
|---|---|---|---|
reportItemId |
Unique identifier for the payment type in your HRIS system. | String | Yes |
description |
The one-time payment display name, used in the UI when mapping the OTP data. | Description of the OTP type, used in the UI for mapping purposes | Yes |
OTP data file
If you want to sync one-time payment data, you'll need to export a CSV file that contains it. You can use the prefix payments for the file, or a custom prefix you prefer.
For OTP data to sync successfully, make sure that the file has the following structure:
employeeProviderId;amount;reportItemId;occurrenceDate;reference
1;2000,00;P1280;2024-11-30;uid1
2;1000,00;P1280;2024-11-30;uid2
Where:
| Value | Description | Format | Required |
|---|---|---|---|
employeeProviderId |
Unique identifier of the employee in your HRIS system. It must match one of the employeeNumber values in the employee data file. |
String | Yes |
amount |
The amount of the one-time payment. | Number | Yes |
reportItemId |
Unique identifier for the payment type in your HRIS system. It must match one of the reportItemId values provided in the OTP types file. |
String | Yes |
occurrenceDate |
The date when the payment occurred. | Date (YYYY-MM-DD) | Yes |
reference |
A unique reference for the payment. | String | Yes |
(Optional) Paid-time-off (PTO) data
Configure the following files to sync paid-time-off data.
PTO types file
The PTO types file ensures that each paid-time-off is correctly categorized by its type. You can use the prefix pto_types for the file, or a custom prefix you prefer.
For sync to complete successfully, make sure that the file has the following structure:
typeId;typeName
1524;Vacation
66;Wedding
Where:
| Value | Description | Format | Required |
|---|---|---|---|
typeId |
Unique identifier for the PTO type in your HRIS system. | String | Yes |
typeName |
The PTO type display name, used in the UI when mapping the PTO data. | String | Yes |
PTO data file
The PTO data file ensures that each paid-time-off is correctly categorized by its type. You can use the prefix absences for the file, or a custom prefix you prefer.
For sync to complete successfully, make sure that the file has the following structure:
employeeProviderId;start;end;typeId;durationDays
1;29/11/2024;29/11/2024;66;1
Where:
| Value | Description | Format | Required |
|---|---|---|---|
employeeProviderId |
Unique identifier of the employee in your HRIS system. It must match one of the IDs provided in the employees file. | String | Yes |
start |
The start date of the PTO. | Date (YYYY-MM-DD) | Yes |
end |
The end date of the PTO. | Date (YYYY-MM-DD) | Yes |
typeId |
Unique identifier for the PTO type in your HRIS system. It must match one of the typeId values provided in the PTO types file. |
String | Yes |
durationDays |
The duration of the PTO in days. It supports decimals to indicate a fraction of the day. For example, 1 corresponds to 1 day and 0.5 to half a day. |
Number | Yes |
Connect the integration
Once the files are configured, you'll need to set up the integration in Deel.
To set up the integration:

- In the left sidebar, select Apps & Automation to expand its submenu.
- Select App Store.
- If the Welcome to your Deel Apps & Integrations dialog appears, select I'll do that later.

- In the Find apps field, enter Global HRIS.
- Select Global HRIS SFTP, identified by the description Easily sync employee data from any HRIS.

- On the Global HRIS SFTP integration details page, select Connect Global HRIS SFTP.

- Enter the SFTP host and SFTP username.
- Select Password or SSH Private Key, then provide the corresponding credential.
- Confirm the SFTP port. The default shown is
22; use another port only when instructed by your administrator. - Enter the SFTP file directory.
- Enter a notification recipient email and configure file prefixes as needed.
- Select Connect & go to settings after completing all required fields.
Prefixes must match the export files configured in your HRIS. The form is marked Auto-save, so incomplete entries may be retained when you leave and return.
The integration is now connected, and you can start setting up the various plugins to sync data.
Set up the integration
Set up the people data sync plugin
The people data sync plugin allows you to sync employee data from your SFTP server to Deel. Setting up this plugin is also required if you want to use other optional plugins to enable OTP and PTO data sync.
To set up the plugin:
1. After the connection succeeds and the integration settings page opens, locate People data sync and select Enable.
2. Map the Deel entity, configure the sync schedule, map fields from your HRIS to Deel fields, including global and country-specific fields, add notification recipients, and select Continue on the Review step.
3. To run a manual sync, select Sync Global HRIS on the integration page.
4. Check the Event Logs tab for sync details.
Set up paid-time-off (PTO) sync plugin
The time off plugin allows you to sync paid-time-off (PTO) data from your SFTP server to Deel. To use this plugin, you must first set up the people data sync plugin.
To enable the time off plugin:
1. On the connected Global HRIS SFTP integration settings page, locate Global Payroll - Time Off, also referred to as Deel Payroll - Time Off, and select Enable.
2. Click Configure next to the entity.
3. Map PTO types, then select Confirm and Enable sync.
4. Repeat for each entity.
Set up one-time payment (OTP) sync plugin
The OTP plugin allows you to sync one-time payment (OTP) data from your SFTP server to Deel. To use this plugin, you must first set up the people data sync plugin.
To enable the one-time payment plugin:
1. On the connected Global HRIS SFTP integration settings page, locate Global Payroll - One Time Payment, also referred to as Deel Payroll - One Time Payment, and select Enable.
2. Click Configure next to the entity.
3. Map OTP types, then select Confirm and Enable sync.
4. Repeat for each entity.
Reference
This section contains reference information for the Global HRIS integration. You can find information like the supported sync types and more.
Supported sync types
This section lists the types of data that can be synced using the Global HRIS integration.
Supported employee data
- Global data fields
- Country-specific data fields
Supported OTP data
- Bonus
- Commission
Supported PTO data
- Vacation
- Sick leave
- Other leave types
Deel IPs
Following is the list of public IPs from where Deel will be connecting to your SFTP server. Make sure to allow connections from these IP addresses.
54.155.86.1054.77.193.16834.250.87.168