Payroll API
API референца
Базен URL https://api.payroll.merot.com
Пресметки
Пресметки за еден вработен и во серија (batch), конверзија бруто/нето и пропорционирање.
Пресметајте плата за еден вработен
# POST /v1/calculations
Задолжително е или grossSalary (пресметка од бруто — вообичаениот случај според Законот за работните односи во МК) или targetNet (пресметка од нето — договореното нето се пресметува наназад до законското бруто што го произведува). Видете Основни поими за плата во МК за тоа кога кој начин се користи.
Параметри
X-Company-Id (header)stringЗадолжително кога вашиот клуч има пристап до повеќе од еден работодавач (компанија) — важи за сметководствени бироа и клучеви за софтверски куќи (vendor).
Тело на барањето
grossSalarystring | nullДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
targetNetstring | nullДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
netBasedbooleanДодатоците на час се пресметуваат од нето часовната стапка наместо од бруто, а законското бруто повторно се изведува (нето-договори).
Стандардна вредност:
falsecontractorbooleanПерсонален данок на доход по рамна стапка (10%), без придонеси за социјално осигурување и без лично ослободување (договор за дело).
Стандардна вредност:
falseworkingHoursnumberДоговорени месечни часови; стандардно е месечниот фонд на работни часови (176).
seniorityPercentagenumber | nullДодаток за минат труд — процент од основната бруто плата.
seniorityobject | nullАлтернатива на `seniorityPercentage` — се пресметува од месеци работен стаж заклучно со одреден датум, по стапка за секоја завршена година.
Прикажи вгнездени параметри
monthsintegerasOfstringratePerYearnumberСтандардна вредност:
0.5periodYearinteger | nullperiodMonthinteger | null
overtimeHoursnumber | nullovertimeRatenumber | nullВкупен % од основната часовна стапка; стандардно 135 (основа + 35% додаток).
nightHoursnumber | nullnightHoursRatenumber | nullСтандардно 135.
holidayHoursnumber | nullholidayHoursRatenumber | nullСтандардно 150.
sundayHoursnumber | nullsundayHoursRatenumber | nullСтандардно 150.
holidayNightHoursnumber | nullКомбинирани часови со додаток за празник и ноќна работа.
holidayNightRatenumber | nullСтандардно 185.
sundayNightHoursnumber | nullsundayNightRatenumber | nullСтандардно 185.
sundayHolidayHoursnumber | nullsundayHolidayRatenumber | nullСтандардно 200.
sickFundHoursnumber | nullБоледување на товар на ФЗОМ (фондот за здравствено осигурување) — само часови; фондот директно му исплаќа на вработениот.
sickFundRatenumber | nullСтандардно 70 (% од основната часовна стапка).
sickCompanyHoursnumber | nullБоледување на товар на работодавачот.
sickCompanyRatenumber | nullСтандардно 70.
shift1Hoursnumber | nullshift1Ratenumber | nullСтандардно 100.
shift2Hoursnumber | nullshift2Ratenumber | nullСтандардно 100.
shift3Hoursnumber | nullshift3Ratenumber | nullСтандардно 135.
specialHoursnumber | nullspecialRatenumber | nullСтандардно 100.
unpaidHoursnumber | nullabsentHoursnumber | nullЧасови надвор од периодот на вработување во делумен месец (неплатени, без надомест) — видете и `period`/`placements`.
maternityHoursnumber | nullЧасови на породилно отсуство на товар на ФЗОМ, без трошок за работодавачот.
fundHoursnumber | nullЦелосниот месечен фонд на часови, кога `workingHours` е договорена скратена бројка — ја дава пропорцијата за минималната основица за придонеси и за личното ослободување.
minBaseModeenum | nullКога да се доплатат придонесите до законската минимална основица (50% од просечната плата): само во делумни месеци (стандардно), секогаш, или никогаш.
proratedalwaysoffperiodobject | nullАлтернатива на `absentHours` — целниот месец; се комбинира со `placements` за Merot да ја пресмета пропорцијата вместо вас.
Прикажи вгнездени параметри
yearintegermonthinteger
placementsarray of object | nullПрикажи вгнездени параметри
startDatestringendDatestring | null
hoursInformationalbooleanГи евидентира часовите со додаток без промена на бруто/нето — договорената плата веќе ги покрива.
Стандардна вредност:
falseseniorityInformationalbooleanГо евидентира процентот за минат труд без да го додава на бруто/нето.
Стандардна вредност:
falsebonusAmountstring | nullДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
bonusBasisenum"net" (стандардно): нетото се зголемува точно за bonusAmount, бруто се пресметува наназад. "gross": bonusAmount се додава на бруто, нетото следи.
grossnetСтандардна вредност:
"net"pitExemptbooleanСтандардна вредност:
falsenoPersonalAllowancebooleanГо отфрла личното ослободување (вработениот го користи кај друг, примарен работодавач).
Стандардна вредност:
falsepersonalAllowancestring | nullДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
averageSalarystring | nullДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
deductionsarray of object | nullОдбитоци по нетото (осигурување, синдикални членарини, извршување, ...) — го намалуваат само netPaid, никогаш бруто или придонесите.
Прикажи вгнездени параметри
descriptionstringзадолжителноamountstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
rateOverridesobject | nullНапредно — ги заменува одделни законски стапки (видете `GET /v1/rates`) само за оваа пресметка.
effectiveDatestring | nullСтапките на сила на овој датум; стандардно е сега.
Враќа
- 200
Резултатот од пресметката.
- 422
validation_failed — едно или повеќе полиња не поминаа валидација.
### POST /v1/calculations
Пресметајте плата за еден вработен
Задолжително е или `grossSalary` (пресметка од бруто — вообичаениот случај според
Законот за работните односи во МК) или `targetNet` (пресметка од нето — договореното
нето се пресметува наназад до законското бруто што го произведува). Видете [Основни
поими за плата во МК](/mk/payroll/concepts) за тоа кога кој начин се користи.
```bash
curl -X POST "https://api.payroll.merot.com/v1/calculations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"grossSalary": "45000",
"workingHours": 176,
"overtimeHours": 8,
"nightHours": 4
}'
```
**Пример-одговор**
```json
{
"salaryGross": "49142",
"baseGross": "45000",
"pension": "9779",
"health": "3686",
"employmentContrib": "49",
"additionalHealth": "246",
"totalContributions": "13760",
"pensionTopUp": "0",
"healthTopUp": "0",
"disabilityTopUp": "0",
"employmentTopUp": "0",
"personalAllowance": "10932",
"taxableIncome": "24450",
"pit": "2445",
"salaryNet": "32937",
"deductionsTotal": "0",
"netPaid": "32937",
"workingHours": 176,
"seniorityPercentage": 0,
"seniority": "0",
"bonusAmount": "0",
"bonusBasis": "net",
"overtimeHours": 8,
"overtimePay": "2761",
"nightHours": 4,
"nightPay": "1381",
"holidayHours": 0,
"holidayPay": "0",
"sundayHours": 0,
"sundayPay": "0",
"sickHours": 0,
"sickRate": 70,
"sickPay": "0",
"sickFundHours": 0,
"sickFundRate": 70,
"sickFundPay": "0",
"sickCompanyHours": 0,
"sickCompanyRate": 70,
"sickCompanyPay": "0",
"shift1Hours": 0,
"shift1Rate": 100,
"shift1Pay": "0",
"shift2Hours": 0,
"shift2Rate": 100,
"shift2Pay": "0",
"shift3Hours": 0,
"shift3Rate": 135,
"shift3Pay": "0",
"specialHours": 0,
"specialRate": 100,
"specialPay": "0",
"unpaidHours": 0,
"absentHours": 0,
"maternityHours": 0,
"holidayNightHours": 0,
"holidayNightRate": 185,
"holidayNightPay": "0",
"sundayNightHours": 0,
"sundayNightRate": 185,
"sundayNightPay": "0",
"sundayHolidayHours": 0,
"sundayHolidayRate": 200,
"sundayHolidayPay": "0"
}
``` cURL
curl -X POST "https://api.payroll.merot.com/v1/calculations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"grossSalary": "45000",
"workingHours": 176,
"overtimeHours": 8,
"nightHours": 4
}' const response = await fetch("https://api.payroll.merot.com/v1/calculations", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
"grossSalary": "45000",
"workingHours": 176,
"overtimeHours": 8,
"nightHours": 4
}),
});
const data = await response.json();
console.log(data); import requests
response = requests.post(
"https://api.payroll.merot.com/v1/calculations",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"grossSalary": "45000",
"workingHours": 176,
"overtimeHours": 8,
"nightHours": 4
},
)
print(response.json()) <?php
// composer require guzzlehttp/guzzle
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.payroll.merot.com/v1/calculations', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
],
'json' => [
'grossSalary' => '45000',
'workingHours' => 176,
'overtimeHours' => 8,
'nightHours' => 4,
],
]);
echo $response->getBody(); using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.payroll.merot.com/v1/calculations");
request.Headers.Add("Authorization", "Bearer YOUR_API_KEY");
var json = /* lang=json */ @"{
""grossSalary"": ""45000"",
""workingHours"": 176,
""overtimeHours"": 8,
""nightHours"": 4
}";
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body); import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.payroll.merot.com/v1/calculations"))
.headers("Authorization", "Bearer YOUR_API_KEY", "Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(/* JSON */ "{ \"grossSalary\": \"45000\", \"workingHours\": 176, \"overtimeHours\": 8, \"nightHours\": 4 }"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); {
"salaryGross": "49142",
"baseGross": "45000",
"pension": "9779",
"health": "3686",
"employmentContrib": "49",
"additionalHealth": "246",
"totalContributions": "13760",
"pensionTopUp": "0",
"healthTopUp": "0",
"disabilityTopUp": "0",
"employmentTopUp": "0",
"personalAllowance": "10932",
"taxableIncome": "24450",
"pit": "2445",
"salaryNet": "32937",
"deductionsTotal": "0",
"netPaid": "32937",
"workingHours": 176,
"seniorityPercentage": 0,
"seniority": "0",
"bonusAmount": "0",
"bonusBasis": "net",
"overtimeHours": 8,
"overtimePay": "2761",
"nightHours": 4,
"nightPay": "1381",
"holidayHours": 0,
"holidayPay": "0",
"sundayHours": 0,
"sundayPay": "0",
"sickHours": 0,
"sickRate": 70,
"sickPay": "0",
"sickFundHours": 0,
"sickFundRate": 70,
"sickFundPay": "0",
"sickCompanyHours": 0,
"sickCompanyRate": 70,
"sickCompanyPay": "0",
"shift1Hours": 0,
"shift1Rate": 100,
"shift1Pay": "0",
"shift2Hours": 0,
"shift2Rate": 100,
"shift2Pay": "0",
"shift3Hours": 0,
"shift3Rate": 135,
"shift3Pay": "0",
"specialHours": 0,
"specialRate": 100,
"specialPay": "0",
"unpaidHours": 0,
"absentHours": 0,
"maternityHours": 0,
"holidayNightHours": 0,
"holidayNightRate": 185,
"holidayNightPay": "0",
"sundayNightHours": 0,
"sundayNightRate": 185,
"sundayNightPay": "0",
"sundayHolidayHours": 0,
"sundayHolidayRate": 200,
"sundayHolidayPay": "0"
} Пресметајте плата за до 500 вработени
# POST /v1/calculations/batch
Параметри
X-Company-Id (header)stringЗадолжително кога вашиот клуч има пристап до повеќе од еден работодавач (компанија) — важи за сметководствени бироа и клучеви за софтверски куќи (vendor).
Тело на барањето
inputsarray of objectзадолжителноПрикажи вгнездени параметри
grossSalarystring | nullДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
targetNetstring | nullДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
netBasedbooleanДодатоците на час се пресметуваат од нето часовната стапка наместо од бруто, а законското бруто повторно се изведува (нето-договори).
Стандардна вредност:
falsecontractorbooleanПерсонален данок на доход по рамна стапка (10%), без придонеси за социјално осигурување и без лично ослободување (договор за дело).
Стандардна вредност:
falseworkingHoursnumberДоговорени месечни часови; стандардно е месечниот фонд на работни часови (176).
seniorityPercentagenumber | nullДодаток за минат труд — процент од основната бруто плата.
seniorityobject | nullАлтернатива на `seniorityPercentage` — се пресметува од месеци работен стаж заклучно со одреден датум, по стапка за секоја завршена година.
Прикажи вгнездени параметри
monthsintegerasOfstringratePerYearnumberСтандардна вредност:
0.5periodYearinteger | nullperiodMonthinteger | null
overtimeHoursnumber | nullovertimeRatenumber | nullВкупен % од основната часовна стапка; стандардно 135 (основа + 35% додаток).
nightHoursnumber | nullnightHoursRatenumber | nullСтандардно 135.
holidayHoursnumber | nullholidayHoursRatenumber | nullСтандардно 150.
sundayHoursnumber | nullsundayHoursRatenumber | nullСтандардно 150.
holidayNightHoursnumber | nullКомбинирани часови со додаток за празник и ноќна работа.
holidayNightRatenumber | nullСтандардно 185.
sundayNightHoursnumber | nullsundayNightRatenumber | nullСтандардно 185.
sundayHolidayHoursnumber | nullsundayHolidayRatenumber | nullСтандардно 200.
sickFundHoursnumber | nullБоледување на товар на ФЗОМ (фондот за здравствено осигурување) — само часови; фондот директно му исплаќа на вработениот.
sickFundRatenumber | nullСтандардно 70 (% од основната часовна стапка).
sickCompanyHoursnumber | nullБоледување на товар на работодавачот.
sickCompanyRatenumber | nullСтандардно 70.
shift1Hoursnumber | nullshift1Ratenumber | nullСтандардно 100.
shift2Hoursnumber | nullshift2Ratenumber | nullСтандардно 100.
shift3Hoursnumber | nullshift3Ratenumber | nullСтандардно 135.
specialHoursnumber | nullspecialRatenumber | nullСтандардно 100.
unpaidHoursnumber | nullabsentHoursnumber | nullЧасови надвор од периодот на вработување во делумен месец (неплатени, без надомест) — видете и `period`/`placements`.
maternityHoursnumber | nullЧасови на породилно отсуство на товар на ФЗОМ, без трошок за работодавачот.
fundHoursnumber | nullЦелосниот месечен фонд на часови, кога `workingHours` е договорена скратена бројка — ја дава пропорцијата за минималната основица за придонеси и за личното ослободување.
minBaseModeenum | nullКога да се доплатат придонесите до законската минимална основица (50% од просечната плата): само во делумни месеци (стандардно), секогаш, или никогаш.
proratedalwaysoffperiodobject | nullАлтернатива на `absentHours` — целниот месец; се комбинира со `placements` за Merot да ја пресмета пропорцијата вместо вас.
Прикажи вгнездени параметри
yearintegermonthinteger
placementsarray of object | nullПрикажи вгнездени параметри
startDatestringendDatestring | null
hoursInformationalbooleanГи евидентира часовите со додаток без промена на бруто/нето — договорената плата веќе ги покрива.
Стандардна вредност:
falseseniorityInformationalbooleanГо евидентира процентот за минат труд без да го додава на бруто/нето.
Стандардна вредност:
falsebonusAmountstring | nullДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
bonusBasisenum"net" (стандардно): нетото се зголемува точно за bonusAmount, бруто се пресметува наназад. "gross": bonusAmount се додава на бруто, нетото следи.
grossnetСтандардна вредност:
"net"pitExemptbooleanСтандардна вредност:
falsenoPersonalAllowancebooleanГо отфрла личното ослободување (вработениот го користи кај друг, примарен работодавач).
Стандардна вредност:
falsepersonalAllowancestring | nullДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
averageSalarystring | nullДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
deductionsarray of object | nullОдбитоци по нетото (осигурување, синдикални членарини, извршување, ...) — го намалуваат само netPaid, никогаш бруто или придонесите.
Прикажи вгнездени параметри
descriptionstringзадолжителноamountstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
rateOverridesobject | nullНапредно — ги заменува одделни законски стапки (видете `GET /v1/rates`) само за оваа пресметка.
effectiveDatestring | nullСтапките на сила на овој датум; стандардно е сега.
Враќа
- 200
Резултат за секој внес, по истиот редослед.
- 422
validation_failed — едно или повеќе полиња не поминаа валидација.
### POST /v1/calculations/batch
Пресметајте плата за до 500 вработени
```bash
curl -X POST "https://api.payroll.merot.com/v1/calculations/batch" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
``` cURL
curl -X POST "https://api.payroll.merot.com/v1/calculations/batch" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' const response = await fetch("https://api.payroll.merot.com/v1/calculations/batch", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({}),
});
const data = await response.json();
console.log(data); import requests
response = requests.post(
"https://api.payroll.merot.com/v1/calculations/batch",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={},
)
print(response.json()) <?php
// composer require guzzlehttp/guzzle
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.payroll.merot.com/v1/calculations/batch', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
],
'json' => [],
]);
echo $response->getBody(); using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.payroll.merot.com/v1/calculations/batch");
request.Headers.Add("Authorization", "Bearer YOUR_API_KEY");
var json = /* lang=json */ @"{}";
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body); import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.payroll.merot.com/v1/calculations/batch"))
.headers("Authorization", "Bearer YOUR_API_KEY", "Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(/* JSON */ "{}"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); Конвертирајте помеѓу договорено нето и законско бруто
# POST /v1/calculations/convert
Основната конверзија на плата, без додатоци на час, минат труд или бонус — истата инверзија што targetNet ја користи внатрешно во POST /v1/calculations, изложена самостојно за екрани за внес на плата. Дадете gross или net.
Тело на барањето
grossstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
netstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
contractorbooleanСтандардна вредност:
falserateOverridesobjectAdvanced — override individual statutory rate keys (see `GET /v1/rates`) for this calculation only.
effectiveDatestringRates in force on this date; defaults to now.
Враќа
- 200
Двете вредности, точни до денар.
### POST /v1/calculations/convert
Конвертирајте помеѓу договорено нето и законско бруто
Основната конверзија на плата, без додатоци на час, минат труд или бонус — истата
инверзија што `targetNet` ја користи внатрешно во `POST /v1/calculations`, изложена
самостојно за екрани за внес на плата. Дадете `gross` или `net`.
```bash
curl -X POST "https://api.payroll.merot.com/v1/calculations/convert" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"net": "35000.00"
}'
```
**Пример-одговор**
```json
{
"gross": "52324.00",
"net": "35000.00"
}
``` cURL
curl -X POST "https://api.payroll.merot.com/v1/calculations/convert" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"net": "35000.00"
}' const response = await fetch("https://api.payroll.merot.com/v1/calculations/convert", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
"net": "35000.00"
}),
});
const data = await response.json();
console.log(data); import requests
response = requests.post(
"https://api.payroll.merot.com/v1/calculations/convert",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"net": "35000.00"
},
)
print(response.json()) <?php
// composer require guzzlehttp/guzzle
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.payroll.merot.com/v1/calculations/convert', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
],
'json' => [
'net' => '35000.00',
],
]);
echo $response->getBody(); using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.payroll.merot.com/v1/calculations/convert");
request.Headers.Add("Authorization", "Bearer YOUR_API_KEY");
var json = /* lang=json */ @"{
""net"": ""35000.00""
}";
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body); import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.payroll.merot.com/v1/calculations/convert"))
.headers("Authorization", "Bearer YOUR_API_KEY", "Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(/* JSON */ "{ \"net\": \"35000.00\" }"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); {
"gross": "52324.00",
"net": "35000.00"
} Пропорционирајте периоди на вработување во календарски месец
# POST /v1/calculations/prorate
За еден или повеќе периоди на вработување (placements) и целен месец, враќа денови на осигурување, платени/отсутни часови и ден во месецот на вработување/напуштање — сè што му треба на делумен-месечен МПИН запис (МПИН полиња 3.5, 3.6, 3.27, 3.28) — без каква било парична пресметка. POST /v1/calculations може ова да го направи во еден чекор преку сопствените полиња period/placements; користете го овој endpoint кога ви требаат само денови/часови.
Тело на барањето
yearintegerзадолжителноmonthintegerзадолжителноfundHoursnumberзадолжителноThe month's full fund of hours (e.g. 176).
placementsarray of objectзадолжителноПрикажи вгнездени параметри
startDatestringзадолжителноendDatestring | null
Враќа
- 200
Резултат од пропорционирањето.
### POST /v1/calculations/prorate
Пропорционирајте периоди на вработување во календарски месец
За еден или повеќе периоди на вработување (`placements`) и целен месец, враќа денови
на осигурување, платени/отсутни часови и ден во месецот на вработување/напуштање —
сè што му треба на делумен-месечен МПИН запис (МПИН полиња 3.5, 3.6, 3.27, 3.28) — без
каква било парична пресметка. `POST /v1/calculations` може ова да го направи во еден
чекор преку сопствените полиња `period`/`placements`; користете го овој endpoint кога
ви требаат само денови/часови.
```bash
curl -X POST "https://api.payroll.merot.com/v1/calculations/prorate" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"year": 2026,
"month": 9,
"fundHours": 176,
"placements": [
{
"startDate": "2026-09-19",
"endDate": null
}
]
}'
``` cURL
curl -X POST "https://api.payroll.merot.com/v1/calculations/prorate" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"year": 2026,
"month": 9,
"fundHours": 176,
"placements": [
{
"startDate": "2026-09-19",
"endDate": null
}
]
}' const response = await fetch("https://api.payroll.merot.com/v1/calculations/prorate", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
"year": 2026,
"month": 9,
"fundHours": 176,
"placements": [
{
"startDate": "2026-09-19",
"endDate": null
}
]
}),
});
const data = await response.json();
console.log(data); import requests
response = requests.post(
"https://api.payroll.merot.com/v1/calculations/prorate",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"year": 2026,
"month": 9,
"fundHours": 176,
"placements": [
{
"startDate": "2026-09-19",
"endDate": None
}
]
},
)
print(response.json()) <?php
// composer require guzzlehttp/guzzle
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.payroll.merot.com/v1/calculations/prorate', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
],
'json' => [
'year' => 2026,
'month' => 9,
'fundHours' => 176,
'placements' => [
[
'startDate' => '2026-09-19',
'endDate' => null,
],
],
],
]);
echo $response->getBody(); using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.payroll.merot.com/v1/calculations/prorate");
request.Headers.Add("Authorization", "Bearer YOUR_API_KEY");
var json = /* lang=json */ @"{
""year"": 2026,
""month"": 9,
""fundHours"": 176,
""placements"": [
{
""startDate"": ""2026-09-19"",
""endDate"": null
}
]
}";
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body); import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.payroll.merot.com/v1/calculations/prorate"))
.headers("Authorization", "Bearer YOUR_API_KEY", "Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(/* JSON */ "{ \"year\": 2026, \"month\": 9, \"fundHours\": 176, \"placements\": [ { \"startDate\": \"2026-09-19\", \"endDate\": null } ] }"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); Стапки
Тековни и историски законски стапки за придонеси и данок.
Endpoint-и
### GET /v1/rates
Тековни законски стапки за МК
```bash
curl -X GET "https://api.payroll.merot.com/v1/rates" \
-H "Authorization: Bearer YOUR_API_KEY"
```
**Пример-одговор**
```json
{
"pension_rate": "0.199",
"health_rate": "0.075",
"disability_rate": "0.005",
"employment_rate": "0.001",
"pit_rate": "0.1",
"personal_allowance": "10932",
"average_salary": "69141",
"max_contribution_multiplier": "16",
"min_contribution_base_ratio": "0.5",
"default_working_hours": "176",
"overtime_rate": "135",
"night_hours_rate": "135",
"holiday_hours_rate": "150",
"sunday_hours_rate": "150"
}
``` cURL
curl -X GET "https://api.payroll.merot.com/v1/rates" \
-H "Authorization: Bearer YOUR_API_KEY" const response = await fetch("https://api.payroll.merot.com/v1/rates", {
method: "GET",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
},
});
const data = await response.json();
console.log(data); import requests
response = requests.get(
"https://api.payroll.merot.com/v1/rates",
headers={
"Authorization": "Bearer YOUR_API_KEY",
},
)
print(response.json()) <?php
// composer require guzzlehttp/guzzle
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.payroll.merot.com/v1/rates', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
],
]);
echo $response->getBody(); using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Get, "https://api.payroll.merot.com/v1/rates");
request.Headers.Add("Authorization", "Bearer YOUR_API_KEY");
using var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body); import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.payroll.merot.com/v1/rates"))
.headers("Authorization", "Bearer YOUR_API_KEY")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); {
"pension_rate": "0.199",
"health_rate": "0.075",
"disability_rate": "0.005",
"employment_rate": "0.001",
"pit_rate": "0.1",
"personal_allowance": "10932",
"average_salary": "69141",
"max_contribution_multiplier": "16",
"min_contribution_base_ratio": "0.5",
"default_working_hours": "176",
"overtime_rate": "135",
"night_hours_rate": "135",
"holiday_hours_rate": "150",
"sunday_hours_rate": "150"
} Историја на промени на стапки
# GET /v1/rates/history
Секоја верзија на секоја стапка, по датум на важност, најновата прва.
Враќа
- 200
Историја на стапки, групирана по клуч.
### GET /v1/rates/history
Историја на промени на стапки
Секоја верзија на секоја стапка, по датум на важност, најновата прва.
```bash
curl -X GET "https://api.payroll.merot.com/v1/rates/history" \
-H "Authorization: Bearer YOUR_API_KEY"
```
**Пример-одговор**
```json
{
"history": {
"pension_rate": [
{
"rateValue": "0.199",
"effectiveFrom": "2026-07-01",
"effectiveTo": null,
"description": "Сл. весник 148/2026 — ПИО 18.8% → 19.9%"
},
{
"rateValue": "0.188",
"effectiveFrom": "2020-01-01",
"effectiveTo": "2026-06-30",
"description": null
}
]
}
}
``` cURL
curl -X GET "https://api.payroll.merot.com/v1/rates/history" \
-H "Authorization: Bearer YOUR_API_KEY" const response = await fetch("https://api.payroll.merot.com/v1/rates/history", {
method: "GET",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
},
});
const data = await response.json();
console.log(data); import requests
response = requests.get(
"https://api.payroll.merot.com/v1/rates/history",
headers={
"Authorization": "Bearer YOUR_API_KEY",
},
)
print(response.json()) <?php
// composer require guzzlehttp/guzzle
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.payroll.merot.com/v1/rates/history', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
],
]);
echo $response->getBody(); using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Get, "https://api.payroll.merot.com/v1/rates/history");
request.Headers.Add("Authorization", "Bearer YOUR_API_KEY");
using var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body); import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.payroll.merot.com/v1/rates/history"))
.headers("Authorization", "Bearer YOUR_API_KEY")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); {
"history": {
"pension_rate": [
{
"rateValue": "0.199",
"effectiveFrom": "2026-07-01",
"effectiveTo": null,
"description": "Сл. весник 148/2026 — ПИО 18.8% → 19.9%"
},
{
"rateValue": "0.188",
"effectiveFrom": "2020-01-01",
"effectiveTo": "2026-06-30",
"description": null
}
]
}
} Годишен одмор
Акумулација на годишен одмор, пренос на крајот на годината и исплата при престанок.
Заработени и остварени денови годишен одмор
# POST /v1/leave/accrual
МК ЗРО (Закон за работните односи), чл. 139–140.
Тело на барањето
hireDatestringзадолжителноasOfDatestringзадолжителноemploymentTypeenumfull_timecontractorСтандардна вредност:
"full_time"partTimePercentnumberСтандардна вредност:
100careerSeniorityYearsnumberСтандардна вредност:
0under18booleanСтандардна вредност:
falseeffectiveDatestring | null
Враќа
- 200
Резултат за акумулација на одмор.
### POST /v1/leave/accrual
Заработени и остварени денови годишен одмор
МК ЗРО (Закон за работните односи), чл. 139–140.
```bash
curl -X POST "https://api.payroll.merot.com/v1/leave/accrual" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"hireDate": "2024-03-01",
"asOfDate": "2026-09-26",
"employmentType": "full_time",
"partTimePercent": 100,
"careerSeniorityYears": 6,
"under18": false
}'
```
**Пример-одговор**
```json
{
"entitledDays": 22,
"accruedDays": 22,
"vested": true,
"seniorityBonusDays": 2,
"nextAccrualDate": "2026-10-01",
"notes": [],
"effectiveDate": "2026-09-26T00:00:00.000Z"
}
``` cURL
curl -X POST "https://api.payroll.merot.com/v1/leave/accrual" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"hireDate": "2024-03-01",
"asOfDate": "2026-09-26",
"employmentType": "full_time",
"partTimePercent": 100,
"careerSeniorityYears": 6,
"under18": false
}' const response = await fetch("https://api.payroll.merot.com/v1/leave/accrual", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
"hireDate": "2024-03-01",
"asOfDate": "2026-09-26",
"employmentType": "full_time",
"partTimePercent": 100,
"careerSeniorityYears": 6,
"under18": false
}),
});
const data = await response.json();
console.log(data); import requests
response = requests.post(
"https://api.payroll.merot.com/v1/leave/accrual",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"hireDate": "2024-03-01",
"asOfDate": "2026-09-26",
"employmentType": "full_time",
"partTimePercent": 100,
"careerSeniorityYears": 6,
"under18": False
},
)
print(response.json()) <?php
// composer require guzzlehttp/guzzle
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.payroll.merot.com/v1/leave/accrual', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
],
'json' => [
'hireDate' => '2024-03-01',
'asOfDate' => '2026-09-26',
'employmentType' => 'full_time',
'partTimePercent' => 100,
'careerSeniorityYears' => 6,
'under18' => false,
],
]);
echo $response->getBody(); using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.payroll.merot.com/v1/leave/accrual");
request.Headers.Add("Authorization", "Bearer YOUR_API_KEY");
var json = /* lang=json */ @"{
""hireDate"": ""2024-03-01"",
""asOfDate"": ""2026-09-26"",
""employmentType"": ""full_time"",
""partTimePercent"": 100,
""careerSeniorityYears"": 6,
""under18"": false
}";
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body); import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.payroll.merot.com/v1/leave/accrual"))
.headers("Authorization", "Bearer YOUR_API_KEY", "Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(/* JSON */ "{ \"hireDate\": \"2024-03-01\", \"asOfDate\": \"2026-09-26\", \"employmentType\": \"full_time\", \"partTimePercent\": 100, \"careerSeniorityYears\": 6, \"under18\": false }"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); {
"entitledDays": 22,
"accruedDays": 22,
"vested": true,
"seniorityBonusDays": 2,
"nextAccrualDate": "2026-10-01",
"notes": [],
"effectiveDate": "2026-09-26T00:00:00.000Z"
} Пренос и губење денови на крајот на годината
# POST /v1/leave/carry-over
Тело на барањето
yearintegerзадолжителноbalanceRemainingAtYearEndnumberзадолжителноemployerPreventedbooleanTrue lifts the carry-over cap (the employer, not the employee, prevented the leave from being used).
Стандардна вредност:
falseeffectiveDatestring
Враќа
- 200
Резултат за пренос на одмор.
### POST /v1/leave/carry-over
Пренос и губење денови на крајот на годината
```bash
curl -X POST "https://api.payroll.merot.com/v1/leave/carry-over" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"year": 2026,
"balanceRemainingAtYearEnd": 8,
"employerPrevented": false
}'
```
**Пример-одговор**
```json
{
"carriedInDays": 8,
"forfeitedDays": 0,
"deadline": "2027-06-30",
"effectiveDate": "2026-09-26T00:00:00.000Z"
}
``` cURL
curl -X POST "https://api.payroll.merot.com/v1/leave/carry-over" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"year": 2026,
"balanceRemainingAtYearEnd": 8,
"employerPrevented": false
}' const response = await fetch("https://api.payroll.merot.com/v1/leave/carry-over", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
"year": 2026,
"balanceRemainingAtYearEnd": 8,
"employerPrevented": false
}),
});
const data = await response.json();
console.log(data); import requests
response = requests.post(
"https://api.payroll.merot.com/v1/leave/carry-over",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"year": 2026,
"balanceRemainingAtYearEnd": 8,
"employerPrevented": False
},
)
print(response.json()) <?php
// composer require guzzlehttp/guzzle
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.payroll.merot.com/v1/leave/carry-over', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
],
'json' => [
'year' => 2026,
'balanceRemainingAtYearEnd' => 8,
'employerPrevented' => false,
],
]);
echo $response->getBody(); using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.payroll.merot.com/v1/leave/carry-over");
request.Headers.Add("Authorization", "Bearer YOUR_API_KEY");
var json = /* lang=json */ @"{
""year"": 2026,
""balanceRemainingAtYearEnd"": 8,
""employerPrevented"": false
}";
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body); import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.payroll.merot.com/v1/leave/carry-over"))
.headers("Authorization", "Bearer YOUR_API_KEY", "Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(/* JSON */ "{ \"year\": 2026, \"balanceRemainingAtYearEnd\": 8, \"employerPrevented\": false }"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); {
"carriedInDays": 8,
"forfeitedDays": 0,
"deadline": "2027-06-30",
"effectiveDate": "2026-09-26T00:00:00.000Z"
} Исплата на неискористен годишен одмор при престанок
# POST /v1/leave/termination-cash-out
МК ЗРО, чл. 145 — неискористени денови × просечна дневна бруто плата во претходните 12 месеци.
Тело на барањето
remainingDaysnumberзадолжителноlast12MonthsGrossarray of stringзадолжителноterminationDatestringзадолжителноcurrencystringзадолжителноeffectiveDatestring
Враќа
- 200
Износ на исплатата и ставка.
### POST /v1/leave/termination-cash-out
Исплата на неискористен годишен одмор при престанок
МК ЗРО, чл. 145 — неискористени денови × просечна дневна бруто плата во претходните 12 месеци.
```bash
curl -X POST "https://api.payroll.merot.com/v1/leave/termination-cash-out" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
``` cURL
curl -X POST "https://api.payroll.merot.com/v1/leave/termination-cash-out" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' const response = await fetch("https://api.payroll.merot.com/v1/leave/termination-cash-out", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({}),
});
const data = await response.json();
console.log(data); import requests
response = requests.post(
"https://api.payroll.merot.com/v1/leave/termination-cash-out",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={},
)
print(response.json()) <?php
// composer require guzzlehttp/guzzle
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.payroll.merot.com/v1/leave/termination-cash-out', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
],
'json' => [],
]);
echo $response->getBody(); using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.payroll.merot.com/v1/leave/termination-cash-out");
request.Headers.Add("Authorization", "Bearer YOUR_API_KEY");
var json = /* lang=json */ @"{}";
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body); import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.payroll.merot.com/v1/leave/termination-cash-out"))
.headers("Authorization", "Bearer YOUR_API_KEY", "Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(/* JSON */ "{}"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); Датотеки
Генерирање датотеки МПИН, е-ППД и ПДД-ГИ за прикачување до УЈП.
Генерирајте МПИН XML датотека
# POST /v1/files/mpin/xml
МПИН е месечната пријава на УЈП за плата, придонеси и данок. Ова враќа XML датотека за едно правно лице и период, изградена од серијата (batch) и записите по вработен што ги давате. Стандардно, датотеката се проверува со истите УЈП-правила што ги користи POST /v1/files/mpin/validate; блокирачките проблеми го одбиваат барањето со 422 — проследете force: true за сепак да генерирате.
Тело на барањето
companyobjectзадолжителноПрикажи вгнездени параметри
taxIdstring | nullregistrationNumberstring | nullnamestringзадолжителноnameCyrstring | nulladdressstring | nulladdressStreetstring | nulladdressNumberstring | nulladdressAreastring | nullpostalCodestring | nullfaxstring | nullcitystring | nullmunicipalityCodestring | nullmanagerNamestring | nullphonestring | nullemailstring | nullareaCodestring | nullМПИН 2.3 — се изведува од `city` кога недостасува.
fzomBranchstring | nullМПИН 3.4б — филијала на ФЗО (фондот за здравствено осигурување) за седиштето; се изведува од `city` кога недостасува.
batchobjectзадолжителноПрикажи вгнездени параметри
periodMonthintegerзадолжителноperiodYearintegerзадолжителноworkingHoursnumberМесечниот фонд на часови; се презема 176 за секој запис што нема сопствена вредност.
Стандардна вредност:
176vidObvrskastring | nullМПИН 1.3 — вид на обврска. Стандардно 101 (редовна). 103 = исправка.
vidObvrznikstring | nullМПИН 1.4 — вид на обврзник. Стандардно 110 (правно лице).
filingVariantenum | nullНапредно, ретко потребно: `no_payment_declared` (внатрешно 555) ја поднесува истата пресметка со полето за исплатено нето пријавено како 0.00 — се користи кога придонесите мора да се пријават пред самата плата да биде исплатена. `vid_700` го репродуцира поднесувањето со вид на обврска 700 што УЈП го прифати за една исплата на плата во 08/2026; неговото точно значење надвор од ова не е документирано од УЈП и се нуди „како што е".
regularno_payment_declaredvid_700
recordsarray of objectзадолжителноПрикажи вгнездени параметри
salaryGrossstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
salaryNetstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
pensionstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
healthstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
additionalHealthstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
employmentContribstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
pitstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
personalAllowancestringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
overtimeHoursnumberСтандардна вредност:
0overtimePaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
nightHoursnumberСтандардна вредност:
0nightPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
holidayHoursnumberСтандардна вредност:
0holidayPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
sundayHoursnumberСтандардна вредност:
0sundayPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
workingHoursnumber | nullСтандардно се презема `workingHours` од серијата (batch).
sickFundHoursnumber | nullsickFundRatenumber | nullsickFundPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
sickCompanyHoursnumber | nullsickCompanyRatenumber | nullsickCompanyPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
unpaidHoursnumber | nullabsentHoursnumber | nullМПИН 3.5 — часови надвор од пласманот во делумен месец.
serviceDaysnumber | nullpensionTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
healthTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
disabilityTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
employmentTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
hireDayinteger | nullМПИН 3.27 — ден во месецот на вработување, ако е во периодот.
leaveDayinteger | nullМПИН 3.28 — ден во месецот на напуштање, ако е во периодот.
contractNointeger | nullМПИН 3.30 — 2 или повеќе за повторно вработување во истиот месец.
insuranceCodestring | nullМПИН 3.17 — вид на стаж.
sickFundCodestring | nullsickFundBasestringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
maternityHoursnumber | nullМПИН 3.24 — часови на породилно отсуство на товар на ФЗОМ (поле 3.23 = 128).
maternityBasestringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
maternityPartialHoursnumber | nullОдработени часови по предвремено враќање од породилно отсуство (поле 3.23 = 129).
clientTaxIdstring | nullnetPaidstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
employeeobjectзадолжителноПрикажи вгнездени параметри
embgstring | nullЕМБГ на вработениот.
firstNamestringзадолжителноlastNamestringзадолжителноfirstNameCyrstring | nulllastNameCyrstring | nullbankAccountstring | nullmunicipalityCodestring | nullfzomBranchstring | null
forcebooleanГенерирај дури и ако валидацијата најде блокирачки проблеми.
Стандардна вредност:
false
Враќа
- 200
МПИН XML датотеката.
- 422
mpin_validation_failed — блокирачки проблеми; одговорот ги наведува (или проследете
force: true).
### POST /v1/files/mpin/xml
Генерирајте МПИН XML датотека
МПИН е месечната пријава на УЈП за плата, придонеси и данок. Ова враќа XML датотека за
едно правно лице и период, изградена од серијата (batch) и записите по вработен што ги
давате. Стандардно, датотеката се проверува со истите УЈП-правила што ги користи
`POST /v1/files/mpin/validate`; блокирачките проблеми го одбиваат барањето со 422 —
проследете `force: true` за сепак да генерирате.
```bash
curl -X POST "https://api.payroll.merot.com/v1/files/mpin/xml" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
``` cURL
curl -X POST "https://api.payroll.merot.com/v1/files/mpin/xml" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' const response = await fetch("https://api.payroll.merot.com/v1/files/mpin/xml", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({}),
});
const data = await response.json();
console.log(data); import requests
response = requests.post(
"https://api.payroll.merot.com/v1/files/mpin/xml",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={},
)
print(response.json()) <?php
// composer require guzzlehttp/guzzle
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.payroll.merot.com/v1/files/mpin/xml', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
],
'json' => [],
]);
echo $response->getBody(); using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.payroll.merot.com/v1/files/mpin/xml");
request.Headers.Add("Authorization", "Bearer YOUR_API_KEY");
var json = /* lang=json */ @"{}";
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body); import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.payroll.merot.com/v1/files/mpin/xml"))
.headers("Authorization", "Bearer YOUR_API_KEY", "Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(/* JSON */ "{}"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); application/xml — бинарен одговор (датотека), нема JSON тело за преглед.
Генерирајте МПИН TXT датотека
# POST /v1/files/mpin/txt
Постариот формат со фиксна ширина (TXT), прифатен и од сопствениот софтвер на УЈП, кодиран точно како што бара УЈП: UTF-16LE со ознака за редослед на бајти (BOM) и CRLF крајови на редови.
Тело на барањето
companyobjectзадолжителноПрикажи вгнездени параметри
taxIdstring | nullregistrationNumberstring | nullnamestringзадолжителноnameCyrstring | nulladdressstring | nulladdressStreetstring | nulladdressNumberstring | nulladdressAreastring | nullpostalCodestring | nullfaxstring | nullcitystring | nullmunicipalityCodestring | nullmanagerNamestring | nullphonestring | nullemailstring | nullareaCodestring | nullМПИН 2.3 — се изведува од `city` кога недостасува.
fzomBranchstring | nullМПИН 3.4б — филијала на ФЗО (фондот за здравствено осигурување) за седиштето; се изведува од `city` кога недостасува.
batchobjectзадолжителноПрикажи вгнездени параметри
periodMonthintegerзадолжителноperiodYearintegerзадолжителноworkingHoursnumberМесечниот фонд на часови; се презема 176 за секој запис што нема сопствена вредност.
Стандардна вредност:
176vidObvrskastring | nullМПИН 1.3 — вид на обврска. Стандардно 101 (редовна). 103 = исправка.
vidObvrznikstring | nullМПИН 1.4 — вид на обврзник. Стандардно 110 (правно лице).
filingVariantenum | nullНапредно, ретко потребно: `no_payment_declared` (внатрешно 555) ја поднесува истата пресметка со полето за исплатено нето пријавено како 0.00 — се користи кога придонесите мора да се пријават пред самата плата да биде исплатена. `vid_700` го репродуцира поднесувањето со вид на обврска 700 што УЈП го прифати за една исплата на плата во 08/2026; неговото точно значење надвор од ова не е документирано од УЈП и се нуди „како што е".
regularno_payment_declaredvid_700
recordsarray of objectзадолжителноПрикажи вгнездени параметри
salaryGrossstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
salaryNetstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
pensionstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
healthstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
additionalHealthstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
employmentContribstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
pitstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
personalAllowancestringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
overtimeHoursnumberСтандардна вредност:
0overtimePaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
nightHoursnumberСтандардна вредност:
0nightPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
holidayHoursnumberСтандардна вредност:
0holidayPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
sundayHoursnumberСтандардна вредност:
0sundayPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
workingHoursnumber | nullСтандардно се презема `workingHours` од серијата (batch).
sickFundHoursnumber | nullsickFundRatenumber | nullsickFundPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
sickCompanyHoursnumber | nullsickCompanyRatenumber | nullsickCompanyPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
unpaidHoursnumber | nullabsentHoursnumber | nullМПИН 3.5 — часови надвор од пласманот во делумен месец.
serviceDaysnumber | nullpensionTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
healthTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
disabilityTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
employmentTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
hireDayinteger | nullМПИН 3.27 — ден во месецот на вработување, ако е во периодот.
leaveDayinteger | nullМПИН 3.28 — ден во месецот на напуштање, ако е во периодот.
contractNointeger | nullМПИН 3.30 — 2 или повеќе за повторно вработување во истиот месец.
insuranceCodestring | nullМПИН 3.17 — вид на стаж.
sickFundCodestring | nullsickFundBasestringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
maternityHoursnumber | nullМПИН 3.24 — часови на породилно отсуство на товар на ФЗОМ (поле 3.23 = 128).
maternityBasestringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
maternityPartialHoursnumber | nullОдработени часови по предвремено враќање од породилно отсуство (поле 3.23 = 129).
clientTaxIdstring | nullnetPaidstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
employeeobjectзадолжителноПрикажи вгнездени параметри
embgstring | nullЕМБГ на вработениот.
firstNamestringзадолжителноlastNamestringзадолжителноfirstNameCyrstring | nulllastNameCyrstring | nullbankAccountstring | nullmunicipalityCodestring | nullfzomBranchstring | null
forcebooleanГенерирај дури и ако валидацијата најде блокирачки проблеми.
Стандардна вредност:
false
Враќа
- 200
МПИН TXT датотеката (
text/plain; charset=utf-16le). - 422
mpin_validation_failed
### POST /v1/files/mpin/txt
Генерирајте МПИН TXT датотека
Постариот формат со фиксна ширина (TXT), прифатен и од сопствениот софтвер на УЈП,
кодиран точно како што бара УЈП: UTF-16LE со ознака за редослед на бајти (BOM) и CRLF
крајови на редови.
```bash
curl -X POST "https://api.payroll.merot.com/v1/files/mpin/txt" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
``` cURL
curl -X POST "https://api.payroll.merot.com/v1/files/mpin/txt" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' const response = await fetch("https://api.payroll.merot.com/v1/files/mpin/txt", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({}),
});
const data = await response.json();
console.log(data); import requests
response = requests.post(
"https://api.payroll.merot.com/v1/files/mpin/txt",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={},
)
print(response.json()) <?php
// composer require guzzlehttp/guzzle
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.payroll.merot.com/v1/files/mpin/txt', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
],
'json' => [],
]);
echo $response->getBody(); using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.payroll.merot.com/v1/files/mpin/txt");
request.Headers.Add("Authorization", "Bearer YOUR_API_KEY");
var json = /* lang=json */ @"{}";
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body); import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.payroll.merot.com/v1/files/mpin/txt"))
.headers("Authorization", "Bearer YOUR_API_KEY", "Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(/* JSON */ "{}"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); text/plain — бинарен одговор (датотека), нема JSON тело за преглед.
Генерирајте една комбинирана МПИН TXT за повеќе серии
# POST /v1/files/mpin/txt/combined
Едно поднесување за повеќе серии (batch) на исто правно лице и период (на пр. редовна плата плус исправка), записите подредени по кирилско презиме, како што бара УЈП.
Тело на барањето
companyobjectзадолжителноПрикажи вгнездени параметри
taxIdstring | nullregistrationNumberstring | nullnamestringзадолжителноnameCyrstring | nulladdressstring | nulladdressStreetstring | nulladdressNumberstring | nulladdressAreastring | nullpostalCodestring | nullfaxstring | nullcitystring | nullmunicipalityCodestring | nullmanagerNamestring | nullphonestring | nullemailstring | nullareaCodestring | nullМПИН 2.3 — се изведува од `city` кога недостасува.
fzomBranchstring | nullМПИН 3.4б — филијала на ФЗО (фондот за здравствено осигурување) за седиштето; се изведува од `city` кога недостасува.
batchobjectзадолжителноПрикажи вгнездени параметри
periodMonthintegerзадолжителноperiodYearintegerзадолжителноworkingHoursnumberМесечниот фонд на часови; се презема 176 за секој запис што нема сопствена вредност.
Стандардна вредност:
176vidObvrskastring | nullМПИН 1.3 — вид на обврска. Стандардно 101 (редовна). 103 = исправка.
vidObvrznikstring | nullМПИН 1.4 — вид на обврзник. Стандардно 110 (правно лице).
filingVariantenum | nullНапредно, ретко потребно: `no_payment_declared` (внатрешно 555) ја поднесува истата пресметка со полето за исплатено нето пријавено како 0.00 — се користи кога придонесите мора да се пријават пред самата плата да биде исплатена. `vid_700` го репродуцира поднесувањето со вид на обврска 700 што УЈП го прифати за една исплата на плата во 08/2026; неговото точно значење надвор од ова не е документирано од УЈП и се нуди „како што е".
regularno_payment_declaredvid_700
batchesarray of objectзадолжителноПрикажи вгнездени параметри
recordsarray of objectПрикажи вгнездени параметри
salaryGrossstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
salaryNetstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
pensionstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
healthstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
additionalHealthstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
employmentContribstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
pitstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
personalAllowancestringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
overtimeHoursnumberСтандардна вредност:
0overtimePaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
nightHoursnumberСтандардна вредност:
0nightPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
holidayHoursnumberСтандардна вредност:
0holidayPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
sundayHoursnumberСтандардна вредност:
0sundayPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
workingHoursnumber | nullСтандардно се презема `workingHours` од серијата (batch).
sickFundHoursnumber | nullsickFundRatenumber | nullsickFundPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
sickCompanyHoursnumber | nullsickCompanyRatenumber | nullsickCompanyPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
unpaidHoursnumber | nullabsentHoursnumber | nullМПИН 3.5 — часови надвор од пласманот во делумен месец.
serviceDaysnumber | nullpensionTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
healthTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
disabilityTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
employmentTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
hireDayinteger | nullМПИН 3.27 — ден во месецот на вработување, ако е во периодот.
leaveDayinteger | nullМПИН 3.28 — ден во месецот на напуштање, ако е во периодот.
contractNointeger | nullМПИН 3.30 — 2 или повеќе за повторно вработување во истиот месец.
insuranceCodestring | nullМПИН 3.17 — вид на стаж.
sickFundCodestring | nullsickFundBasestringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
maternityHoursnumber | nullМПИН 3.24 — часови на породилно отсуство на товар на ФЗОМ (поле 3.23 = 128).
maternityBasestringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
maternityPartialHoursnumber | nullОдработени часови по предвремено враќање од породилно отсуство (поле 3.23 = 129).
clientTaxIdstring | nullnetPaidstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
employeeobjectзадолжителноПрикажи вгнездени параметри
embgstring | nullЕМБГ на вработениот.
firstNamestringзадолжителноlastNamestringзадолжителноfirstNameCyrstring | nulllastNameCyrstring | nullbankAccountstring | nullmunicipalityCodestring | nullfzomBranchstring | null
Враќа
- 200
Комбинираната МПИН TXT датотека.
### POST /v1/files/mpin/txt/combined
Генерирајте една комбинирана МПИН TXT за повеќе серии
Едно поднесување за повеќе серии (batch) на исто правно лице и период (на пр. редовна плата плус исправка), записите подредени по кирилско презиме, како што бара УЈП.
```bash
curl -X POST "https://api.payroll.merot.com/v1/files/mpin/txt/combined" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
``` cURL
curl -X POST "https://api.payroll.merot.com/v1/files/mpin/txt/combined" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' const response = await fetch("https://api.payroll.merot.com/v1/files/mpin/txt/combined", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({}),
});
const data = await response.json();
console.log(data); import requests
response = requests.post(
"https://api.payroll.merot.com/v1/files/mpin/txt/combined",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={},
)
print(response.json()) <?php
// composer require guzzlehttp/guzzle
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.payroll.merot.com/v1/files/mpin/txt/combined', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
],
'json' => [],
]);
echo $response->getBody(); using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.payroll.merot.com/v1/files/mpin/txt/combined");
request.Headers.Add("Authorization", "Bearer YOUR_API_KEY");
var json = /* lang=json */ @"{}";
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body); import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.payroll.merot.com/v1/files/mpin/txt/combined"))
.headers("Authorization", "Bearer YOUR_API_KEY", "Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(/* JSON */ "{}"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); text/plain — бинарен одговор (датотека), нема JSON тело за преглед.
Извршете УЈП-проверки без генерирање датотека
# POST /v1/files/mpin/validate
Тело на барањето
companyobjectзадолжителноПрикажи вгнездени параметри
taxIdstring | nullregistrationNumberstring | nullnamestringзадолжителноnameCyrstring | nulladdressstring | nulladdressStreetstring | nulladdressNumberstring | nulladdressAreastring | nullpostalCodestring | nullfaxstring | nullcitystring | nullmunicipalityCodestring | nullmanagerNamestring | nullphonestring | nullemailstring | nullareaCodestring | nullМПИН 2.3 — се изведува од `city` кога недостасува.
fzomBranchstring | nullМПИН 3.4б — филијала на ФЗО (фондот за здравствено осигурување) за седиштето; се изведува од `city` кога недостасува.
batchobjectзадолжителноПрикажи вгнездени параметри
periodMonthintegerзадолжителноperiodYearintegerзадолжителноworkingHoursnumberМесечниот фонд на часови; се презема 176 за секој запис што нема сопствена вредност.
Стандардна вредност:
176vidObvrskastring | nullМПИН 1.3 — вид на обврска. Стандардно 101 (редовна). 103 = исправка.
vidObvrznikstring | nullМПИН 1.4 — вид на обврзник. Стандардно 110 (правно лице).
filingVariantenum | nullНапредно, ретко потребно: `no_payment_declared` (внатрешно 555) ја поднесува истата пресметка со полето за исплатено нето пријавено како 0.00 — се користи кога придонесите мора да се пријават пред самата плата да биде исплатена. `vid_700` го репродуцира поднесувањето со вид на обврска 700 што УЈП го прифати за една исплата на плата во 08/2026; неговото точно значење надвор од ова не е документирано од УЈП и се нуди „како што е".
regularno_payment_declaredvid_700
recordsarray of objectзадолжителноПрикажи вгнездени параметри
salaryGrossstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
salaryNetstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
pensionstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
healthstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
additionalHealthstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
employmentContribstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
pitstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
personalAllowancestringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
overtimeHoursnumberСтандардна вредност:
0overtimePaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
nightHoursnumberСтандардна вредност:
0nightPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
holidayHoursnumberСтандардна вредност:
0holidayPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
sundayHoursnumberСтандардна вредност:
0sundayPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
workingHoursnumber | nullСтандардно се презема `workingHours` од серијата (batch).
sickFundHoursnumber | nullsickFundRatenumber | nullsickFundPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
sickCompanyHoursnumber | nullsickCompanyRatenumber | nullsickCompanyPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
unpaidHoursnumber | nullabsentHoursnumber | nullМПИН 3.5 — часови надвор од пласманот во делумен месец.
serviceDaysnumber | nullpensionTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
healthTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
disabilityTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
employmentTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
hireDayinteger | nullМПИН 3.27 — ден во месецот на вработување, ако е во периодот.
leaveDayinteger | nullМПИН 3.28 — ден во месецот на напуштање, ако е во периодот.
contractNointeger | nullМПИН 3.30 — 2 или повеќе за повторно вработување во истиот месец.
insuranceCodestring | nullМПИН 3.17 — вид на стаж.
sickFundCodestring | nullsickFundBasestringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
maternityHoursnumber | nullМПИН 3.24 — часови на породилно отсуство на товар на ФЗОМ (поле 3.23 = 128).
maternityBasestringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
maternityPartialHoursnumber | nullОдработени часови по предвремено враќање од породилно отсуство (поле 3.23 = 129).
clientTaxIdstring | nullnetPaidstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
employeeobjectзадолжителноПрикажи вгнездени параметри
embgstring | nullЕМБГ на вработениот.
firstNamestringзадолжителноlastNamestringзадолжителноfirstNameCyrstring | nulllastNameCyrstring | nullbankAccountstring | nullmunicipalityCodestring | nullfzomBranchstring | null
forcebooleanГенерирај дури и ако валидацијата најде блокирачки проблеми.
Стандардна вредност:
false
Враќа
- 200
Резултат од валидацијата.
### POST /v1/files/mpin/validate
Извршете УЈП-проверки без генерирање датотека
```bash
curl -X POST "https://api.payroll.merot.com/v1/files/mpin/validate" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
```
**Пример-одговор**
```json
{
"ok": true,
"issues": []
}
``` cURL
curl -X POST "https://api.payroll.merot.com/v1/files/mpin/validate" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' const response = await fetch("https://api.payroll.merot.com/v1/files/mpin/validate", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({}),
});
const data = await response.json();
console.log(data); import requests
response = requests.post(
"https://api.payroll.merot.com/v1/files/mpin/validate",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={},
)
print(response.json()) <?php
// composer require guzzlehttp/guzzle
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.payroll.merot.com/v1/files/mpin/validate', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
],
'json' => [],
]);
echo $response->getBody(); using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.payroll.merot.com/v1/files/mpin/validate");
request.Headers.Add("Authorization", "Bearer YOUR_API_KEY");
var json = /* lang=json */ @"{}";
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body); import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.payroll.merot.com/v1/files/mpin/validate"))
.headers("Authorization", "Bearer YOUR_API_KEY", "Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(/* JSON */ "{}"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); {
"ok": true,
"issues": []
} Генерирајте ПДД-ГИ XML датотека за исплати на хонорарци
# POST /v1/files/pddgi
ПДД-ГИ пријавува персонален данок на доход задржан при исплати на хонорар/договор за дело од серија (batch) за плата.
Тело на барањето
companyobjectзадолжителноПрикажи вгнездени параметри
taxIdstring | nullnamestringзадолжителноemailstring | nullphonestring | nullcontactPersonstring | nullmunicipalityCodestring | null
monthintegerзадолжителноyearintegerзадолжителноrecordsarray of objectзадолжителноПрикажи вгнездени параметри
salaryGrossstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
employeeobjectзадолжителноПрикажи вгнездени параметри
embgstring | nullfirstNamestringзадолжителноlastNamestringзадолжителноbankAccountstring | null
Враќа
- 200
ПДД-ГИ XML датотеката.
### POST /v1/files/pddgi
Генерирајте ПДД-ГИ XML датотека за исплати на хонорарци
ПДД-ГИ пријавува персонален данок на доход задржан при исплати на хонорар/договор за дело од серија (batch) за плата.
```bash
curl -X POST "https://api.payroll.merot.com/v1/files/pddgi" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
``` cURL
curl -X POST "https://api.payroll.merot.com/v1/files/pddgi" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' const response = await fetch("https://api.payroll.merot.com/v1/files/pddgi", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({}),
});
const data = await response.json();
console.log(data); import requests
response = requests.post(
"https://api.payroll.merot.com/v1/files/pddgi",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={},
)
print(response.json()) <?php
// composer require guzzlehttp/guzzle
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.payroll.merot.com/v1/files/pddgi', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
],
'json' => [],
]);
echo $response->getBody(); using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.payroll.merot.com/v1/files/pddgi");
request.Headers.Add("Authorization", "Bearer YOUR_API_KEY");
var json = /* lang=json */ @"{}";
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body); import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.payroll.merot.com/v1/files/pddgi"))
.headers("Authorization", "Bearer YOUR_API_KEY", "Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(/* JSON */ "{}"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); application/xml — бинарен одговор (датотека), нема JSON тело за преглед.
Генерирајте самостојна е-ППД ГИ XML датотека
# POST /v1/files/epdd
е-ППД пријавува персонален данок на доход за исплата надвор од редовната серија (batch) за плата (ujp_ppf_acc_calc).
Тело на барањето
issuerobjectзадолжителноПрикажи вгнездени параметри
edbstringзадолжителноnamestringзадолжителноbankAccountstring | nullemailstring | nullphonestring | null
periodFromstringзадолжителноperiodTostringзадолжителноcommentstring | nullrowsarray of objectзадолжителноПрикажи вгнездени параметри
embgstringзадолжителноfirstNamestringзадолжителноlastNamestringзадолжителноmunicipalityCodestring | nullsubtypeIncomestring | nullgrossIncomestringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
bankAccountstring | null
Враќа
- 200
е-ППД XML датотеката.
### POST /v1/files/epdd
Генерирајте самостојна е-ППД ГИ XML датотека
е-ППД пријавува персонален данок на доход за исплата надвор од редовната серија (batch) за плата (`ujp_ppf_acc_calc`).
```bash
curl -X POST "https://api.payroll.merot.com/v1/files/epdd" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
``` cURL
curl -X POST "https://api.payroll.merot.com/v1/files/epdd" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' const response = await fetch("https://api.payroll.merot.com/v1/files/epdd", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({}),
});
const data = await response.json();
console.log(data); import requests
response = requests.post(
"https://api.payroll.merot.com/v1/files/epdd",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={},
)
print(response.json()) <?php
// composer require guzzlehttp/guzzle
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.payroll.merot.com/v1/files/epdd', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
],
'json' => [],
]);
echo $response->getBody(); using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.payroll.merot.com/v1/files/epdd");
request.Headers.Add("Authorization", "Bearer YOUR_API_KEY");
var json = /* lang=json */ @"{}";
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body); import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.payroll.merot.com/v1/files/epdd"))
.headers("Authorization", "Bearer YOUR_API_KEY", "Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(/* JSON */ "{}"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); application/xml — бинарен одговор (датотека), нема JSON тело за преглед.
Пресметајте бруто од нето за е-ППД (рамен персонален данок 10%)
# POST /v1/files/epdd/gross-from-net
Тело на барањето
netstringзадолжителноДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
Враќа
- 200
Бруто износ.
### POST /v1/files/epdd/gross-from-net
Пресметајте бруто од нето за е-ППД (рамен персонален данок 10%)
```bash
curl -X POST "https://api.payroll.merot.com/v1/files/epdd/gross-from-net" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"net": "20000"
}'
```
**Пример-одговор**
```json
{
"net": "20000",
"gross": "22222"
}
``` cURL
curl -X POST "https://api.payroll.merot.com/v1/files/epdd/gross-from-net" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"net": "20000"
}' const response = await fetch("https://api.payroll.merot.com/v1/files/epdd/gross-from-net", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
"net": "20000"
}),
});
const data = await response.json();
console.log(data); import requests
response = requests.post(
"https://api.payroll.merot.com/v1/files/epdd/gross-from-net",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"net": "20000"
},
)
print(response.json()) <?php
// composer require guzzlehttp/guzzle
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.payroll.merot.com/v1/files/epdd/gross-from-net', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
],
'json' => [
'net' => '20000',
],
]);
echo $response->getBody(); using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.payroll.merot.com/v1/files/epdd/gross-from-net");
request.Headers.Add("Authorization", "Bearer YOUR_API_KEY");
var json = /* lang=json */ @"{
""net"": ""20000""
}";
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body); import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.payroll.merot.com/v1/files/epdd/gross-from-net"))
.headers("Authorization", "Bearer YOUR_API_KEY", "Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(/* JSON */ "{ \"net\": \"20000\" }"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); {
"net": "20000",
"gross": "22222"
} Платни листи
Генерирање PDF платни листи на MK, SQ и EN.
Endpoint-и
Генерирајте PDF платна листа
# POST /v1/payslips
Генерира PDF платна листа од резултат на пресметка (од POST /v1/calculations или ваша сопствена серија), податоците за вработениот/компанијата и јазик. Го враќа PDF-от директно.
Тело на барањето
companyobjectзадолжителноПрикажи вгнездени параметри
namestringзадолжителноtaxIdstring | nulladdressstring | null
employeeobjectзадолжителноПрикажи вгнездени параметри
firstNamestringзадолжителноlastNamestringзадолжителноembgstring | nullpositionstring | null
periodobjectзадолжителноПрикажи вгнездени параметри
yearintegerзадолжителноmonthintegerзадолжително
calculationobjectзадолжителноПрикажи вгнездени параметри
salaryGrossstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
baseGrossstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
pensionstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
healthstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
employmentContribstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
additionalHealthstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
totalContributionsstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
pensionTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
healthTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
disabilityTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
employmentTopUpstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
personalAllowancestringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
taxableIncomestringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
pitstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
salaryNetstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
deductionsTotalstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
netPaidstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
workingHoursnumberseniorityPercentagenumbersenioritystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
bonusAmountstringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
bonusBasisenumgrossnetovertimeHoursnumberovertimePaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
nightHoursnumbernightPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
holidayHoursnumberholidayPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
sundayHoursnumbersundayPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
sickHoursnumbersickRatenumbersickPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
sickFundHoursnumbersickFundRatenumbersickFundPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
sickCompanyHoursnumbersickCompanyRatenumbersickCompanyPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
shift1Hoursnumbershift1Ratenumbershift1PaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
shift2Hoursnumbershift2Ratenumbershift2PaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
shift3Hoursnumbershift3Ratenumbershift3PaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
specialHoursnumberspecialRatenumberspecialPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
unpaidHoursnumberabsentHoursnumbermaternityHoursnumberholidayNightHoursnumberholidayNightRatenumberholidayNightPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
sundayNightHoursnumbersundayNightRatenumbersundayNightPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
sundayHolidayHoursnumbersundayHolidayRatenumbersundayHolidayPaystringДецимален износ во денари, како текстуална вредност (string), никогаш како JSON број.
prorationobject | nullПрисутно само кога барањето користело `period` + `placements`.
Прикажи вгнездени параметри
serviceDaysnumber | nullabsentHoursnumberpaidHoursnumber | nullhireDayinteger | nullleaveDayinteger | null
languageenumзадолжителноmksqenСтандардна вредност:
"mk"
Враќа
- 200
PDF платната листа.
- 422
validation_failed — едно или повеќе полиња не поминаа валидација.
### POST /v1/payslips
Генерирајте PDF платна листа
Генерира PDF платна листа од резултат на пресметка (од `POST /v1/calculations` или ваша
сопствена серија), податоците за вработениот/компанијата и јазик. Го враќа PDF-от
директно.
```bash
curl -X POST "https://api.payroll.merot.com/v1/payslips" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
``` cURL
curl -X POST "https://api.payroll.merot.com/v1/payslips" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' const response = await fetch("https://api.payroll.merot.com/v1/payslips", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({}),
});
const data = await response.json();
console.log(data); import requests
response = requests.post(
"https://api.payroll.merot.com/v1/payslips",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={},
)
print(response.json()) <?php
// composer require guzzlehttp/guzzle
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.payroll.merot.com/v1/payslips', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
],
'json' => [],
]);
echo $response->getBody(); using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.payroll.merot.com/v1/payslips");
request.Headers.Add("Authorization", "Bearer YOUR_API_KEY");
var json = /* lang=json */ @"{}";
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body); import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.payroll.merot.com/v1/payslips"))
.headers("Authorization", "Bearer YOUR_API_KEY", "Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(/* JSON */ "{}"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); application/pdf — бинарен одговор (датотека), нема JSON тело за преглед.
Статус
Јавен endpoint за статус (без автентикација).
Endpoint-и
### GET /v1/health
Статус на сервисот
```bash
curl -X GET "https://api.payroll.merot.com/v1/health"
```
**Пример-одговор**
```json
{
"status": "ok",
"version": "2026-09-26"
}
``` cURL
curl -X GET "https://api.payroll.merot.com/v1/health" const response = await fetch("https://api.payroll.merot.com/v1/health", {
method: "GET",
headers: {
},
});
const data = await response.json();
console.log(data); import requests
response = requests.get(
"https://api.payroll.merot.com/v1/health",
headers={
},
)
print(response.json()) <?php
// composer require guzzlehttp/guzzle
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.payroll.merot.com/v1/health', [
'headers' => [
],
]);
echo $response->getBody(); using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Get, "https://api.payroll.merot.com/v1/health");
using var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body); import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.payroll.merot.com/v1/health"))
.headers()
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); {
"status": "ok",
"version": "2026-09-26"
}