Cedolini

Elabora, consulta e finalizza le buste paga per i contratti domestici. Il flusso prevede tre passaggi: validazione del periodo, calcolo delle settimane contributive, ed esecuzione del cedolino.

Flusso di elaborazione

Per elaborare un cedolino: (1) validare il periodo con validate-before-run, (2) ottenere le settimane contributive con contribution-weeks, (3) eseguire il calcolo con run-payroll. Al termine, finalizzare il cedolino per renderlo definitivo.


GET/v1/domestic-payslips

Restituisce l'elenco dei cedolini per un contratto domestico. Supporta paginazione.

Parametri query

ParametroTipoObbligatorioDescrizione
domesticContractIdstringID del contratto domestico.
pageintegerNoNumero di pagina (default 1).
limitintegerNoNumero massimo di risultati (default 20, max 100).
sortFieldstringNoCampo per l'ordinamento.
sortDirectionstringNoDirezione ordinamento: asc o desc.

Risposta

{
  "data": [
    {
      "id": "pay_01H9Y4N",
      "domesticContractId": "dc_01H9Y4N",
      "organizationId": "org_01H8X3K",
      "status": "draft",
      "startDate": "2026-03-01",
      "endDate": "2026-03-31",
      "isThirteenth": false,
      "isSeveranceLiquidation": false,
      "isEmploymentEnded": false,
      "totalGross": "1250.00",
      "totalDeductions": "50.00",
      "totalEmployeeTaxes": "120.00",
      "totalEmployerTaxes": "180.00",
      "totalNet": "1080.00",
      "totalCost": "1430.00",
      "createdAt": "2026-03-28T10:00:00Z",
      "updatedAt": "2026-03-28T10:00:00Z"
    }
  ]
}

GET/v1/domestic-payslips/{id}

Restituisce i dettagli completi di un cedolino, incluse tutte le voci di competenza, trattenuta, contributi, e gli stati di ferie, TFR, tredicesima, malattia e infortunio.

Parametri path

ParametroTipoObbligatorioDescrizione
idstringID del cedolino.

Risposta (struttura completa)

{
  "id": "pay_01H9Y4N",
  "domesticContractId": "dc_01H9Y4N",
  "organizationId": "org_01H8X3K",
  "status": "draft",
  "startDate": "2026-03-01",
  "endDate": "2026-03-31",
  "isThirteenth": false,
  "isSeveranceLiquidation": false,
  "isEmploymentEnded": false,
  "earningElements": [
    {
      "id": "item_001",
      "type": "earning",
      "code": "0",
      "name": "Retribuzione ordinaria",
      "value": "1000.00",
      "periodType": "hour",
      "periodDuration": "100",
      "rate": "10.00",
      "includedInBaseWage": false,
      "ytd": "3000.00"
    }
  ],
  "deductionElements": [],
  "imputedElements": [],
  "employeeTaxesElements": [
    {
      "id": "item_010",
      "type": "employee_tax",
      "code": "300",
      "name": "Contributi INPS c/dipendente",
      "value": "90.00",
      "periodType": "period",
      "periodDuration": "1",
      "rate": "0.00",
      "includedInBaseWage": false,
      "ytd": "270.00"
    }
  ],
  "employerTaxesElements": [
    {
      "id": "item_020",
      "type": "employer_tax",
      "code": "400",
      "name": "Contributi INPS c/datore",
      "value": "135.00",
      "periodType": "period",
      "periodDuration": "1",
      "rate": "0.00",
      "includedInBaseWage": false,
      "ytd": "405.00"
    }
  ],
  "inpsContributions": [
    {
      "id": "contrib_001",
      "type": "inps",
      "weekStart": "2026-03-02",
      "weekEnd": "2026-03-08",
      "hours": "25.00",
      "rate": "0.0919",
      "employerRate": "0.0919",
      "employeeRate": "0.0919",
      "amount": "36.76",
      "effectiveWageRate": "10.00",
      "isFromNextPeriod": false
    }
  ],
  "cassacolfContributions": [],
  "vacationState": {
    "accrued": "8.33",
    "used": "0.00",
    "previousYearLeft": "0.00",
    "accruedThisYear": "8.33",
    "usedThisYear": "0.00",
    "totalLeft": "8.33"
  },
  "severanceState": {
    "utilWage": "1250.00",
    "accrued": "92.59",
    "liquidated": "0.00",
    "accruedThisYear": "92.59",
    "accruedPreviousYears": "0.00",
    "totalLiquidated": "0.00",
    "totalLeft": "92.59"
  },
  "thirteenthState": {
    "utilWage": "1250.00",
    "accrued": "104.17",
    "liquidated": "0.00",
    "accruedThisYear": "104.17",
    "totalLiquidated": "0.00",
    "totalLeft": "104.17"
  },
  "sickState": {
    "paidHalfDays": "0.00",
    "paidFullDays": "0.00",
    "nonPaidDays": "0.00",
    "totalPaidHalfDays": "0.00",
    "totalPaidFullDays": "0.00",
    "totalNonPaidDays": "0.00"
  },
  "injuryState": {
    "paidFullDays": "0.00",
    "nonPaidDays": "0.00",
    "totalPaidFullDays": "0.00",
    "totalNonPaidDays": "0.00"
  },
  "totalGross": "1250.00",
  "ytdTotalGross": "3750.00",
  "totalDeductions": "50.00",
  "ytdTotalDeductions": "150.00",
  "totalAfterDeductionsGross": "1200.00",
  "ytdTotalAfterDeductionsGross": "3600.00",
  "totalEmployeeTaxes": "120.00",
  "ytdTotalEmployeeTaxes": "360.00",
  "totalEmployeeInpsTaxes": "90.00",
  "ytdTotalEmployeeInpsTaxes": "270.00",
  "totalEmployeeCassacolfTaxes": "30.00",
  "ytdTotalEmployeeCassacolfTaxes": "90.00",
  "totalTaxableGross": "1080.00",
  "ytdTotalTaxableGross": "3240.00",
  "totalEmployerTaxes": "180.00",
  "ytdTotalEmployerTaxes": "540.00",
  "totalCost": "1430.00",
  "ytdTotalCost": "4290.00",
  "totalNet": "1080.00",
  "ytdTotalNet": "3240.00",
  "createdAt": "2026-03-28T10:00:00Z",
  "updatedAt": "2026-03-28T10:00:00Z"
}

Tutti gli importi sono espressi come stringhe decimali (es. "1250.00"). I campi con prefisso ytd indicano i totali progressivi da inizio anno.


POST/v1/domestic-payslips/validate-before-run

Verifica che un contratto sia pronto per l'elaborazione del cedolino in un dato periodo. Restituisce eventuali errori o avvisi.

Parametri body

ParametroTipoObbligatorioDescrizione
domesticContractIdstringID del contratto domestico.
datestringPeriodo da validare (formato YYYY-MM).

Esempio

curl -X POST https://api.workledger.it/v1/domestic-payslips/validate-before-run \
  -H "Authorization: Bearer wl_test_abc123" \
  -H "Content-Type: application/json" \
  -d '{
    "domesticContractId": "dc_01H9Y4N",
    "date": "2026-03"
  }'

POST/v1/domestic-payslips/contribution-weeks

Calcola le settimane contributive per un periodo, necessarie come parametro per l'elaborazione del cedolino.

Parametri body

ParametroTipoObbligatorioDescrizione
domesticContractIdstringID del contratto domestico.
startDatestringData di inizio periodo (formato YYYY-MM-DD).
endDatestringData di fine periodo (formato YYYY-MM-DD).
employmentEndingbooleanNoIndica se il rapporto di lavoro termina in questo periodo.

Risposta

[
  {
    "hours": "25",
    "weekStart": "2026-03-02",
    "weekEnd": "2026-03-08",
    "isFromNextPeriod": false
  },
  {
    "hours": "25",
    "weekStart": "2026-03-09",
    "weekEnd": "2026-03-15",
    "isFromNextPeriod": false
  }
]

Esempio

curl -X POST https://api.workledger.it/v1/domestic-payslips/contribution-weeks \
  -H "Authorization: Bearer wl_test_abc123" \
  -H "Content-Type: application/json" \
  -d '{
    "domesticContractId": "dc_01H9Y4N",
    "startDate": "2026-03-01",
    "endDate": "2026-03-31"
  }'

POST/v1/domestic-payslips/run-payroll

Esegue il calcolo del cedolino per un contratto e un periodo specifici. Restituisce il cedolino completo in stato draft.

Parametri body

ParametroTipoObbligatorioDescrizione
domesticContractIdstringID del contratto domestico.
organizationIdstringID dell'organizzazione.
periodstringPeriodo di elaborazione (formato YYYY-MM).
contributionWeeksarraySettimane contributive ottenute dall'endpoint contribution-weeks.
notUsedVacationContributionHoursstringOre contributive per ferie non godute (default '0.00').
missingNoticeWeeksstringSettimane di mancato preavviso (default '0').
isThirteenthbooleanNoSe true, elabora il cedolino della tredicesima.
employmentEndDatestringNoData di fine rapporto (YYYY-MM-DD). Se presente, calcola le spettanze di fine rapporto.
missingNoticeTypestringNoTipo di mancato preavviso: EMPLOYER o EMPLOYEE.
missingNoticeDaysstringNoGiorni di mancato preavviso.
liquidateSeveranceWithEmploymentEndbooleanNoLiquida il TFR con la fine del rapporto.
severanceLiquidationPayslipbooleanNoCedolino di liquidazione TFR.
severanceAnticipationstringNoAnticipo TFR.
vacationAnticipationstringNoAnticipo ferie.
accommodationInCashstringNoIndennità vitto/alloggio in denaro.
accommodationInNaturestringNoIndennità vitto/alloggio in natura.
customEarningsarrayNoCompetenze aggiuntive personalizzate (vedi tabella sotto).
customDeductionsarrayNoTrattenute aggiuntive personalizzate.
customImputedElementsarrayNoVoci figurative personalizzate.
note1stringNoNota aggiuntiva 1.
note2stringNoNota aggiuntiva 2.

contributionWeeks (elemento dell'array)

ParametroTipoObbligatorioDescrizione
hoursstringOre nella settimana contributiva.
weekStartstringInizio settimana (YYYY-MM-DD).
weekEndstringFine settimana (YYYY-MM-DD).
isFromNextPeriodbooleanSe la settimana appartiene al periodo successivo.

Voci personalizzate (customEarnings, customDeductions, customImputedElements)

ParametroTipoObbligatorioDescrizione
namestringNome della voce.
periodTypestringTipo periodo: period, week, hour, day, month, year.
periodDurationstringDurata del periodo (es. '1' per un periodo intero, '10' per 10 ore).
valuestringImporto della voce.

Esempio

curl -X POST https://api.workledger.it/v1/domestic-payslips/run-payroll \
  -H "Authorization: Bearer wl_test_abc123" \
  -H "Content-Type: application/json" \
  -d '{
    "domesticContractId": "dc_01H9Y4N",
    "organizationId": "org_01H8X3K",
    "period": "2026-03",
    "contributionWeeks": [
      {
        "hours": "25",
        "weekStart": "2026-03-02",
        "weekEnd": "2026-03-08",
        "isFromNextPeriod": false
      },
      {
        "hours": "25",
        "weekStart": "2026-03-09",
        "weekEnd": "2026-03-15",
        "isFromNextPeriod": false
      }
    ],
    "notUsedVacationContributionHours": "0.00",
    "missingNoticeWeeks": "0"
  }'

PATCH/v1/domestic-payslips/{id}

Aggiorna le note di un cedolino.

Parametri path

ParametroTipoObbligatorioDescrizione
idstringID del cedolino.

Parametri body

ParametroTipoObbligatorioDescrizione
note1stringNoNota aggiuntiva 1.
note2stringNoNota aggiuntiva 2.

POST/v1/domestic-payslips/{id}/finalize

Finalizza un cedolino in stato draft, rendendolo definitivo.

Parametri path

ParametroTipoObbligatorioDescrizione
idstringID del cedolino.

Operazione irreversibile

Un cedolino finalizzato non può essere modificato. Per correggere un cedolino finalizzato, è necessario eliminarlo e rielaborarlo.

Esempio

curl -X POST https://api.workledger.it/v1/domestic-payslips/pay_01H9Y4N/finalize \
  -H "Authorization: Bearer wl_test_abc123"

DELETE/v1/domestic-payslips/{id}

Elimina un cedolino.

Parametri path

ParametroTipoObbligatorioDescrizione
idstringID del cedolino.

L'eliminazione di un cedolino finalizzato richiede attenzione: i calcoli progressivi (ferie, TFR, tredicesima) dei cedolini successivi potrebbero risultare non aggiornati. Si consiglia di rielaborare i cedolini successivi dopo un'eliminazione.


Struttura del cedolino

Ogni cedolino contiene le seguenti sezioni principali:

SezioneDescrizione
earningElementsVoci di competenza (retribuzione ordinaria, straordinari, indennità)
deductionElementsTrattenute (anticipi, prestiti)
imputedElementsVoci figurative (vitto/alloggio in natura)
employeeTaxesElementsContributi a carico del lavoratore (INPS, Cassa Colf)
employerTaxesElementsContributi a carico del datore (INPS, Cassa Colf)
inpsContributionsDettaglio contributi INPS per settimana contributiva
cassacolfContributionsDettaglio contributi Cassa Colf per settimana contributiva
vacationStateStato ferie (maturate, godute, residue)
severanceStateStato TFR (maturato, liquidato, residuo)
thirteenthStateStato tredicesima (maturata, liquidata, residua)
sickStateStato malattia (giorni retribuiti e non)
injuryStateStato infortunio (giorni retribuiti e non)

Totali del cedolino

CampoDescrizione
totalGrossLordo totale
totalDeductionsTotale trattenute
totalAfterDeductionsGrossLordo al netto delle trattenute
totalEmployeeTaxesContributi totali a carico del lavoratore
totalEmployerTaxesContributi totali a carico del datore
totalTaxableGrossImponibile
totalCostCosto totale per il datore
totalNetNetto in busta

Ogni campo totale ha un corrispondente con prefisso ytd (year-to-date) che indica il progressivo da inizio anno.