Generate Earnings - Flux Payroll API

Generate earnings from time entries and compensation

cURL

curl --request POST \
  --url https://api.staging.fluxpayroll.ai/api/mexico-payroll/generate-earnings \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "fillDefaultSchedule": true,
  "employees": [
    {
      "employeeId": "emp-001",
      "employeeStartDate": "2020-01-01",
      "compensation": {
        "type": "monthly",
        "amount": 91200
      },
      "workAddress": {
        "state": "BCN"
      }
    }
  ],
  "payrollConfig": {
    "startDate": "2026-01-01",
    "endDate": "2026-01-31",
    "period": "MONTHLY"
  }
}
'

Python Example

import requests

url = "https://api.staging.fluxpayroll.ai/api/mexico-payroll/generate-earnings"

payload = {
    "fillDefaultSchedule": True,
    "employees": [
        {
            "employeeId": "emp-001",
            "employeeStartDate": "2020-01-01",
            "compensation": {
                "type": "monthly",
                "amount": 91200
            },
            "workAddress": { "state": "BCN" }
        }
    ],
    "payrollConfig": {
        "startDate": "2026-01-01",
        "endDate": "2026-01-31",
        "period": "MONTHLY"
    }
}
headers = {
    "x-api-key": "<api-key>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)

JavaScript Example

const options = {
  method: 'POST',
  headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
  body: JSON.stringify({
    fillDefaultSchedule: true,
    employees: [
      {
        employeeId: 'emp-001',
        employeeStartDate: '2020-01-01',
        compensation: {type: 'monthly', amount: 91200},
        workAddress: {state: 'BCN'}
      }
    ],
    payrollConfig: {startDate: '2026-01-01', endDate: '2026-01-31', period: 'MONTHLY'}
  })
};

fetch('https://api.staging.fluxpayroll.ai/api/mexico-payroll/generate-earnings', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));

PHP Example

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://api.staging.fluxpayroll.ai/api/mexico-payroll/generate-earnings",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode([
    'fillDefaultSchedule' => true,
    'employees' => [[
            'employeeId' => 'emp-001',
            'employeeStartDate' => '2020-01-01',
            'compensation' => [
                'type' => 'monthly',
                'amount' => 91200
            ],
            'workAddress' => [
                'state' => 'BCN'
            ]
        ]
    ],
    'payrollConfig' => [
        'startDate' => '2026-01-01',
        'endDate' => '2026-01-31',
        'period' => 'MONTHLY'
    ]
  ]),
  CURLOPT_HTTPHEADER => [
    "Content-Type: application/json",
    "x-api-key: <api-key>"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

Go Example

package main

import (
    "fmt"
    "strings"
    "net/http"
    "io"
)

func main() {

url := "https://api.staging.fluxpayroll.ai/api/mexico-payroll/generate-earnings"

payload := strings.NewReader("{\n  \"fillDefaultSchedule\": true,\n  \"employees\": [\n    {\n      \"employeeId\": \"emp-001\",\n      \"employeeStartDate\": \"2020-01-01\",\n      \"compensation\": {\n        \"type\": \"monthly\",\n        \"amount\": 91200\n      },\n      \"workAddress\": {\n        \"state\": \"BCN\"\n      }\n    }\n  ],\n  \"payrollConfig\": {\n    \"startDate\": \"2026-01-01\",\n    \"endDate\": \"2026-01-31\",\n    \"period\": \"MONTHLY\"\n  }\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("x-api-key", "<api-key>")
    req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
    body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))
}

Response Examples

{
  "results": [
    {
      "employeeId": "emp-001",
      "dailyWage": 3000,
      "earnings": [
        {
          "earningCode": "SALARY",
          "amount": 91200
        }
      ]
    }
  ]
}
{
  "error": "VALIDATION_ERROR",
  "message": "Invalid input data provided",
  "details": [
    {
      "field": "<string>",
      "message": "<string>"
    }
  ]
}