[{"name":"Period","description":"Defines a period in time: start and end date.\nThis is compatible with Salaxy type DateRange for the most common use case: only start and end days required, no days count / array.","properties":[{"name":"start","type":"string","description":"The start date","optional":false,"nullable":false,"format":"date","example":"2026-01-01"},{"name":"end","type":"string","description":"The end date","optional":false,"nullable":false,"format":"date","example":"2026-01-31"}],"extends":[]},{"name":"ReportInput","description":"Input for generating a report.","properties":[{"name":"calculation","type":"Calculation","description":"The calculation based on which the report is generated.","optional":false,"nullable":false},{"name":"reportType","type":"salarySlip | employerReport | paymentReport | paymentSummaryReport | totalsReport","description":"The type of the report. Default is SalarySlip.","optional":true,"nullable":false,"example":"salarySlip"},{"name":"lang","type":"fi | sv | en","description":"The language of the report: Either \"fi\" (default), \"sv\" or \"en\".","optional":true,"nullable":false,"example":"fi"}],"extends":[]},{"name":"SimpleCalculatorInput","description":"Simple input for a calculator.\nThis is a simplified version of the SalaryCalculationInput in Salaxy API:\nContains the typically needed fields and only the fields that are useful in anonymous calculations.","properties":[{"name":"employmentId","type":"string","description":"The employment id.\nIn thesting, use typically \"example-default\". Use \"example-17\" for underage workers and \"example-pensioner\" for pensioners.\nEmpty defaults to \"example-default\".","optional":true,"nullable":false,"example":"example-default"},{"name":"salaryDate","type":"string","description":"The salary date is the date when the employee receives the salary on their back account.\nEmpty defaults to today.","optional":true,"nullable":false,"format":"date"},{"name":"period","type":"Period","description":"The work period from which the salary is paid.\nEmpty defaults to today's month.","optional":true,"nullable":false,"example":{"start":"2026-01-01","end":"2026-01-31"}},{"name":"rows","type":{"items":"SimplifiedRow"},"description":"The rows","optional":false,"nullable":false,"example":[{"rowType":"hourlySalary","price":15.5,"count":40},{"rowType":"phoneBenefit","price":20,"count":1}]}],"extends":[]},{"name":"SimpleSalaryReportInput","description":"Input for simpleSalaryReport function.","properties":[{"name":"type","type":"document | fragment","description":"The type of the report: \"document\" (default) or \"fragment\".","optional":true,"nullable":false,"example":"document"}],"extends":["SimpleCalculatorInput","Omit"]},{"name":"SimplifiedRow","description":"Row in a salary calculation.\nThis is a simplified version of the UserDefinedRow in Salaxy API:\nContains the typically needed fields and only the fields that are useful in anonymous calculations.","properties":[{"name":"rowType","type":"CalculationRowType","description":"Logical type of the row. See CalculationRowType for possible values.","optional":false,"nullable":false},{"name":"message","type":"string","description":"Description text of the row that is shown in reports.\nTypically, leave this undefined to get the language versioned text from the row type.\nAdd text only if you need to override the default text.","optional":true,"nullable":false},{"name":"count","type":"number","description":"Count for the row - default is one","optional":true,"nullable":false},{"name":"price","type":"number","description":"Price for the row","optional":false,"nullable":false},{"name":"accounting","type":"RowAccounting","description":"Accounting related data for the row.\nSet the object only if you need to add dimensions data, specify VAT for expenses etc. or override the accounts (credit / debit account numbers).","optional":true,"nullable":false},{"name":"period","type":"DateRange","description":"Period if different than the Period of calculation. Typically, leave this undefined to use the period of the calculation.\nWill be reported to the National Incomes registry, but also affect some other calculations, e.g. absences.","optional":true,"nullable":false},{"name":"data","type":{"name":"","description":"","properties":[],"extends":[]},"description":"Usecase specific data\nThis is a free-form object that is required for some row types. See documentation or skills for details.\nThe contents depends on the usecase.","optional":true,"nullable":false}],"extends":[]},{"name":"AbsencePeriod","description":"Period of absence","properties":[{"name":"id","type":"string","description":"Identifies a single leave.","optional":true,"nullable":true},{"name":"period","type":"DateRange","description":"Period for the absance.","optional":true,"nullable":true},{"name":"causeCode","type":"AbsenceCauseCode","description":"Cause / type of the absence","optional":true,"nullable":true},{"name":"isPaid","type":"boolean","description":"If true, the absence is paid by the employer.","optional":true,"nullable":true},{"name":"isHolidayAccrual","type":"boolean","description":"If true, annual leaves are accrued from the absence. If false, these days are deducted from the accrual.\n     By default, you may leave this null and it always follows the IsPaid.","optional":true,"nullable":true},{"name":"amount","type":"number","description":"Amount of salary that is paid for the absense.\n     Currently not in use: Would be used in Incomes Register integration.","optional":true,"nullable":true},{"name":"notes","type":"string","description":"Additional information as recorded by the Employer.","optional":true,"nullable":true},{"name":"sourceId","type":"string","description":"Identifier in the source system is a key defined by a source system / partner system.\n     This is a pass-through string that is passed to the result calculations.","optional":true,"nullable":true},{"name":"bonusDaysCount","type":"number","description":"Number of Bonus days to be paid. This is applicable only for {Palkkaus.Model.Worktime.Absences.AbsenceCauseCode.AnnualLeave}AnnualLeave.","optional":true,"nullable":true}],"extends":[]},{"name":"ApiValidation","description":"Common base class / interface for data validation.","properties":[{"name":"isValid","type":"boolean","description":"If true, the data is valid - no errors.","optional":true,"nullable":true},{"name":"hasAllRequiredFields","type":"boolean","description":"If true, has required fields missing data.","optional":true,"nullable":true},{"name":"errors","type":{"items":"ApiValidationError"},"description":"Validation errors on invalid field values.\n     Note that required fields missing error messages are not here. Only the invalid values.","optional":true,"nullable":true}],"extends":[]},{"name":"ApiValidationError","description":"Validation errors used in API output.","properties":[{"name":"key","type":"string","description":"Full path to Name of the property / field (Member name in JSON).\n     This may be null/empty for type General.","optional":true,"nullable":true},{"name":"type","type":"ApiValidationErrorType","description":"High level type: Specifies the relation to object and its Member.","optional":false,"nullable":false},{"name":"msg","type":"string","description":"Validation error message in the requested language.","optional":false,"nullable":false},{"name":"description","type":"string","description":"Validation error long description in the requested language.","optional":true,"nullable":true},{"name":"code","type":"string","description":"Some error providers may have a unique technical code for error or validator","optional":true,"nullable":true}],"extends":[]},{"name":"Avatar","description":"Defines an avatar for an account, profile etc. - mainly the image that should be shown, names and short description","properties":[{"name":"entityType","type":"LegalEntityType","description":"Entity type: person/company","optional":true,"nullable":true},{"name":"firstName","type":"string","description":"First name or company name","optional":true,"nullable":true},{"name":"lastName","type":"string","description":"Last name, for companies, this should be null","optional":true,"nullable":true},{"name":"displayName","type":"string","description":"Display name. For a person this is 'FirstName LastName' (auto-created).","optional":true,"nullable":true},{"name":"sortableName","type":"string","description":"Sortable name for ordered lists etc. For a person this is 'LastName, FirstName' (auto-created).\n     Depending on the data storage, this may be all-lowercase for easier sorting and search.","optional":true,"nullable":true},{"name":"pictureType","type":"AvatarPictureType","description":"Type of the Avatar picture.","optional":true,"nullable":true},{"name":"color","type":"string","description":"Color - currently only used by type Icon","optional":true,"nullable":true},{"name":"initials","type":"string","description":"Initials - currently only used by type Icon","optional":true,"nullable":true},{"name":"url","type":"string","description":"URL of the picture if specified as picture (null in a case of type Icon)","optional":true,"nullable":true},{"name":"description","type":"string","description":"Short description of the user.\n     This may be overriden by a context specific value by the business logic.","optional":true,"nullable":true},{"name":"id","type":"string","description":"Identifier of the object.","optional":true,"nullable":true},{"name":"createdAt","type":"string","description":"The date when the object was created.","optional":true,"nullable":true},{"name":"updatedAt","type":"string","description":"The time when the object was last updated.\n     Typically this should be a logical update by user (UserUpdatedAt in DTO), not technical updates.","optional":true,"nullable":true},{"name":"owner","type":"string","description":"Owner ID for this data","optional":true,"nullable":true},{"name":"isReadOnly","type":"boolean","description":"Indication that for the currently logged-in account, the data is generally read-only.","optional":true,"nullable":true},{"name":"partner","type":"string","description":"Primary partner information. Automatically updated from the storage container Partner.","optional":true,"nullable":true}],"extends":[]},{"name":"CalcEmployer","description":"Employer of a calculation","properties":[{"name":"avatar","type":"Avatar","description":"Display image information and type of employer.\n     NOTE: Recalculate-method retains the values for display purposes if AccountId or IsSelf is not set.\n     This is mainly for demo and testing in anonymous mode.\n     However, in storage methods, the value is reset based on values of AccountId or IsSelf\n     even if they are not set: Anything stored in Avatar will be ignored.","optional":true,"nullable":true},{"name":"accountId","type":"string","description":"The Palkkaus.fi Account identifier for the Employer.","optional":true,"nullable":true},{"name":"isSelf","type":"boolean","description":"True if Profile is the current Authorization.\n     If set to true, will set current Authorization as this contract party.\n     This overrides any value in AccountId, so be sure to switch this back to false if this is switchable.\n     Setting to False does not have any immediate effect.","optional":true,"nullable":true},{"name":"contact","type":"Contact","description":"Current address of the employer.\n     Please note that this is a read only field.","optional":true,"nullable":true},{"name":"officialId","type":"string","description":"Official id of the person or company.\n     Please note that this is a read only field.","optional":true,"nullable":true}],"extends":[]},{"name":"CalcInfo","description":"Informational object that stores data about the salary calculation / payment that is not directly related to calculating the salary.","properties":[{"name":"workStartDate","type":"string","description":"Start date of the work","optional":true,"nullable":true},{"name":"workEndDate","type":"string","description":"End date of the work","optional":true,"nullable":true},{"name":"workDescription","type":"string","description":"Description of the work for reporting purposes. Max 32 chars.","optional":true,"nullable":true},{"name":"workerMessage","type":"string","description":"Message from worker to employer - when worker sends the salary calculation to the employer.","optional":true,"nullable":true},{"name":"salarySlipMessage","type":"string","description":"Message which will be displayed in the payslip.","optional":true,"nullable":true},{"name":"paymentId","type":"string","description":"Payment reference number in payment service","optional":true,"nullable":true},{"name":"originalPaymentId","type":"string","description":"Original Payment reference number","optional":true,"nullable":true},{"name":"irSenderOfficialId","type":"string","description":"Earnings Payment Report Official id of the sender.","optional":true,"nullable":true},{"name":"paymentChannel","type":"PaymentChannel","description":"Channel that is used for payment.","optional":true,"nullable":true},{"name":"applicationId","type":"string","description":"Application id for invoicing etc. purposes.","optional":true,"nullable":true},{"name":"messageThreadId","type":"string","description":"The MessageThread Id, if this calculation is referred in a message thread.","optional":true,"nullable":true},{"name":"reportDate","type":"string","description":"Assumed earnings payment report date for the report.","optional":true,"nullable":true},{"name":"backofficeNotes","type":"string","description":"Notes related to the payment and other backoffice operations:\n     For example the justification why the sum is in calculation vs. Paytrail payment.","optional":true,"nullable":true},{"name":"occupationCode","type":"string","description":"Occupation classification, used at least for Accident insurance purposes, but may be used for other reporting.\n     For Finnish Salaries use the Statistics Finland\n     \"Classification of Occupations 2010\" (TK10): https://www.stat.fi/meta/luokitukset/ammatti/017-2018-05-15/index_en.html","optional":true,"nullable":true},{"name":"occupationCode2","type":"string","description":"Secondary occupation classification. Some earnings payment reports may require two occupation codes.","optional":true,"nullable":true},{"name":"cbaCode","type":"number","description":"Applicable collective agreement","optional":true,"nullable":true},{"name":"employeeGroup","type":"string","description":"Employee group.","optional":true,"nullable":true},{"name":"pensionPaymentDate","type":"string","description":"Calculated pension insurance payment date.","optional":true,"nullable":true},{"name":"pensionPaymentRef","type":"string","description":"Pension insurance reference number.","optional":true,"nullable":true},{"name":"pensionPaymentSpecifier","type":"string","description":"Pension insurance payment specifier.","optional":true,"nullable":true},{"name":"payrollId","type":"string","description":"The Payroll Id, if this calculation is part of a Payroll list.","optional":true,"nullable":true},{"name":"costCenter","type":"string","description":"Cost center for reporting purposes.","optional":true,"nullable":true},{"name":"workerSourceId","type":"string","description":"Identifier of the worker in a source system. Used in imports etc.\n     This is automatically set from the source id of the employment.","optional":true,"nullable":true},{"name":"sourceId","type":"string","description":"Identifier of the calculation in a source system. Used in imports etc.","optional":true,"nullable":true}],"extends":[]},{"name":"CalcTax","description":"Tax card information stored as part of the Calculation object","properties":[{"name":"taxcardId","type":"string","description":"Identifier for a stored tax card if one is applied to this calculation.\n     System updates the TaxCardId automatically in Recalculate / Save if it finds a better candidate\n     and also updates the Snapshot.","optional":true,"nullable":true},{"name":"snapshot","type":"TaxcardSnapshot","description":"Snapshot of the tax card for salary slip etc. purposes.\n     Updated in Recalculate / Save based on TaxCardId","optional":true,"nullable":true},{"name":"fixedTaxAmount","type":"number","description":"Possibility to set a fixed widthholding tax amount for this calculation regardless of\n     the percentage etc. in the tax card.","optional":true,"nullable":true},{"name":"isValid","type":"boolean","description":"The API returns true if there is a valid taxcard for the PaidAt date for this calculation\n     or if FixedTaxAmount is set for th calculation.","optional":true,"nullable":true},{"name":"estimatedTax","type":"number","description":"Calculated widthholding tax. Note that this is an estimation until the calculation is actually paid.\n     Also, if the salary is not paid as cash (e.g. fringe benefits), there may not be enough money to make the full deduction.","optional":true,"nullable":true},{"name":"hasNewSharedCard","type":"boolean","description":"A flag that during last recalculation, there was a new shared taxcard that was waiting approval.","optional":true,"nullable":true},{"name":"taxPercentForVisualization","type":"number","description":"Tax percent that is used in visualization. This is mainly used in Unit testing and anonymous calcultors.\n     Not used in real paid calculations. This is percent. I.e. for 50% set 50, not 0.5.\n     If PaymentData or AccountId lead to a valid tax card type and percent, or if there is FixedTaxAmount, this value is not used.","optional":true,"nullable":true}],"extends":[]},{"name":"CalcWorker","description":"Worker object for the current calculation","properties":[{"name":"accountId","type":"string","description":"Palkkaus.fi Account Id for the worker.\n     Alternatively you can set the Payment data with the required infromation","optional":true,"nullable":true},{"name":"employmentId","type":"string","description":"Employment Id for the worker.","optional":true,"nullable":true},{"name":"paymentData","type":"CalcWorkerPaymentData","description":"Data that is needed for salary payment.\n     This object may be null if AccountId has been set.\n     Also, if AccountId has been set, these properties will be ignored:\n     The Worker will decide on payment properties herself.","optional":true,"nullable":true},{"name":"avatar","type":"Avatar","description":"Display image and properties of the Worker.\n     Based on either the AccountId or PaymentData","optional":true,"nullable":true},{"name":"isSelf","type":"boolean","description":"True if Profile is the currently Account\n     If set to true, will set current Account as this contract party.\n     This overrides any value in AccountId, so be sure to switch this back to false if this is switchable.\n     Setting to False does not have any immediate effect.","optional":true,"nullable":true},{"name":"dateOfBirth","type":"string","description":"Date of birth for the Worker - this affects the side costs.\n     Please also set the DateOfBirthAccuracy, if you set this property.\n     If PaymentData or AccountId lead to a valid Social security number, it will override any age set here.","optional":true,"nullable":true},{"name":"dateOfBirthAccuracy","type":"DateOfBirthAccuracy","description":"Accuracy of the date of birth\n     If PaymentData or AccountId lead to a valid Social security number, it will override any age set here.","optional":true,"nullable":true},{"name":"tax","type":"CalcTax","description":"New Widthholding tax logic that is based on separately stored tax cards.","optional":true,"nullable":true},{"name":"contact","type":"Contact","description":"Current address of the worker.\n     Please note that this is a read only field.","optional":true,"nullable":true}],"extends":[]},{"name":"CalcWorkerPaymentData","description":"The required information for paying the Salary to Worker.","properties":[{"name":"firstName","type":"string","description":"First name of the person.","optional":true,"nullable":true},{"name":"lastName","type":"string","description":"Last name / Surname of the person.","optional":true,"nullable":true},{"name":"socialSecurityNumber","type":"string","description":"Gets the Social security number the way the user set it in input.\n     HOWEVER: The getter will change the string to upper invariant/trim and if the last character is \"*\", it will be replaced by calculated checksum.","optional":true,"nullable":true},{"name":"socialSecurityNumberValid","type":"string","description":"Social security number if valid or null","optional":true,"nullable":true},{"name":"ibanNumber","type":"string","description":"IBAN number for the Bank account","optional":true,"nullable":true},{"name":"email","type":"string","description":"Contact e-mail address.","optional":true,"nullable":true},{"name":"telephone","type":"string","description":"Telephone number","optional":true,"nullable":true}],"extends":[]},{"name":"CalcWorkflow","description":"Defines the properties of salary calculation workflow - typically the workflow from draft to Payment.","properties":[{"name":"status","type":"CalculationStatus","description":"Status of the calculation from Draft to PaymentSucceeded","optional":true,"nullable":true},{"name":"paidAt","type":"string","description":"Time when this calculation was paid (if it was paid) to Palkkaus service.","optional":true,"nullable":true},{"name":"salaryPaidAt","type":"string","description":"Time when the salary was paid by Palkkaus service.","optional":true,"nullable":true},{"name":"repairedAt","type":"string","description":"Last date and time when this calculation was repaired after payment.","optional":true,"nullable":true},{"name":"salaryDate","type":"string","description":"The estimated date when the salary is withdrawable by the worker.","optional":true,"nullable":true},{"name":"requestedSalaryDate","type":"string","description":"The requested date for the SalaryDate from the employer.","optional":true,"nullable":true},{"name":"salaryDateKind","type":"SalaryDateKind","description":"Defines the re-setting of the salary date in the calculation re-calculation.","optional":true,"nullable":true},{"name":"originalId","type":"string","description":"The original id the calculation which this calculation is a copy of.","optional":true,"nullable":true}],"extends":[]},{"name":"CalcWorktime","description":"Worktime data that is stored as part of Salary calculation: work days, absences, holidays and holiday accrual. In the future may also contain relevant part of timesheet data (work hours).","properties":[{"name":"employmentPeriod","type":"DateRange","description":"Employment period that is updated from employment at each recalculation (as opposed to holiday specification).","optional":true,"nullable":true},{"name":"wageBasis","type":"WageBasis","description":"Wage basis from the current employment relation.\n     This is for absences and does not presume that holiday years exist for the worker.","optional":true,"nullable":true},{"name":"workDays","type":"DateRange","description":"Describes the working days in the period.\n     Currently, uses the DaysCount, but later the full days array will be taken to use.\n     This includes the absence days (divider in AbsencesDaySalary).","optional":true,"nullable":true},{"name":"absencesPeriods","type":{"items":"AbsencePeriod"},"description":"Periods of 'absences'.","optional":true,"nullable":true},{"name":"absencesDailySalary","type":"number","description":"Price for a single absence day. Typically based on MonthlySalary, but may be modified.","optional":true,"nullable":true},{"name":"holidaySpec","type":"HolidaySpecificationForYear","description":"Specification for the holiday calculation","optional":true,"nullable":true},{"name":"leavesDailySalary","type":"number","description":"Price for a single holiday day","optional":true,"nullable":true},{"name":"bonusDailySalary","type":"number","description":"Price for a single bonus day","optional":true,"nullable":true},{"name":"holidayPayAccrualRemaining","type":"number","description":"Total remaining amount of holiday pay accrual.","optional":true,"nullable":true},{"name":"holidayBonusAccrualRemaining","type":"number","description":"Total remaining amount of holiday bonus accrual.","optional":true,"nullable":true},{"name":"accruals","type":{"items":"MonthlyHolidayAccrual"},"description":"Accruals for each calendar month in this calculation.","optional":true,"nullable":true},{"name":"accrualSpec","type":"HolidayAccrualCalcSpecification","description":"Specification for the accrual calculation","optional":true,"nullable":true}],"extends":[]},{"name":"Calculation","description":"Calculation is the most important model in the Palkkaus.fi API. We suggest you open the separately provided documentation and especially the class diagram to understand the whole model in detail.","properties":[{"name":"employer","type":"CalcEmployer","description":"The employer object for this calculation.\n     Typically, you do not need to set this before the actual payment process.","optional":true,"nullable":true},{"name":"worker","type":"CalcWorker","description":"The Worker (employee) that has performed the work.","optional":true,"nullable":true},{"name":"workflow","type":"CalcWorkflow","description":"Information about the workflow and state of the calculation.","optional":true,"nullable":true},{"name":"salary","type":"Salary","description":"The main salary element.\n     Alternatively the salary can be set in the Rows object - this will be the only way to set multiple salary rows (not yet supported).","optional":true,"nullable":true},{"name":"rows","type":{"items":"UserDefinedRow"},"description":"Set of rows that make up the salary calculation:\n     Expenses, Benefits, deductions etc. Note that side costs are not rows.","optional":true,"nullable":true},{"name":"framework","type":"TesParameters","description":"DEPRECIATED: Usecase will be replacing this functionality in a next major release.\n     The Framework Agreement (TES) parameters that affect the framework based side costs etc. of this calculation","optional":true,"nullable":true},{"name":"usecase","type":"UsecaseData","description":"A usecase for creating and editing salary calculations.\n     In practice, a usecase is either a user interface or a microservice that provides a salary calculation\n     and it may be implemented outside Salaxy.\n     Provides the possibility to store useacase specific data as part of calculation.\n     NOTE: This functionality will replace Framework property in a next major release.","optional":true,"nullable":true},{"name":"result","type":"CalculationResult","description":"The results of the calculation. In the API, this is a read-only object.","optional":true,"nullable":true},{"name":"info","type":"CalcInfo","description":"Information about the work that is not directly related to calculating salary and expenses.","optional":true,"nullable":true},{"name":"sharing","type":"CalculationSharing","description":"Sharing of the calculation. This object cannot be modified directly,\n     use specialized methods in Calculations service.","optional":true,"nullable":true},{"name":"accounting","type":"CalculationAccounting","description":"Contains calculation specific data for accounting (both cost and financial accounting).","optional":true,"nullable":true},{"name":"worktime","type":"CalcWorktime","description":"Worktime data that is stored as part of Salary calculation:\n     work days, absences, holidays and holiday accrual.\n     In the future may also contain relevant part of timesheet data (work hours).","optional":true,"nullable":true},{"name":"workflowData","type":"WorkflowData","description":"Readonly workflow data, which is exposed to API.","optional":true,"nullable":true},{"name":"id","type":"string","description":"Identifier of the object.","optional":true,"nullable":true},{"name":"createdAt","type":"string","description":"The date when the object was created.","optional":true,"nullable":true},{"name":"updatedAt","type":"string","description":"The time when the object was last updated.\n     Typically this should be a logical update by user (UserUpdatedAt in DTO), not technical updates.","optional":true,"nullable":true},{"name":"owner","type":"string","description":"Owner ID for this data","optional":true,"nullable":true},{"name":"isReadOnly","type":"boolean","description":"Indication that for the currently logged-in account, the data is generally read-only.","optional":true,"nullable":true},{"name":"partner","type":"string","description":"Primary partner information. Automatically updated from the storage container Partner.","optional":true,"nullable":true}],"extends":[]},{"name":"CalculationAccounting","description":"Contains calculation specific data for accounting (both cost and financial accounting).","properties":[{"name":"dimensions","type":{"items":"CostAccountingDimension"},"description":"Values for cost accounting dimensions","optional":true,"nullable":true}],"extends":[]},{"name":"CalculationResult","description":"","properties":[{"name":"totals","type":"TotalCalculationDTO","description":"Calculation totals that are common to both Worker and Employer.","optional":true,"nullable":true},{"name":"irRows","type":{"items":"IrRow"},"description":"Rows that are compatible with Incomes Register (tulorekisteri) process.\n     These are available only for calculations paid after 7.2.2019 (TODO: estimation as of writing).","optional":true,"nullable":true},{"name":"employerCalc","type":"EmployerCalculationDTO","description":"The calculation from the Employer point-of-view","optional":true,"nullable":true},{"name":"workerCalc","type":"WorkerCalculationDTO","description":"The calculation from the Worker point-of-view","optional":true,"nullable":true},{"name":"rows","type":{"items":"ResultRow"},"description":"The result rows. Note that this collection also contains the main Salary entry as one of the rows.","optional":true,"nullable":true},{"name":"responsibilities","type":"IEmployerResponsibilities","description":"Responsibilities of Employer and parameters that affect those responsibilities.","optional":true,"nullable":true},{"name":"validation","type":"ApiValidation","description":"The validation result for the current calculation.\n     Please note that this is not serialized into the data storage.","optional":true,"nullable":true}],"extends":[]},{"name":"CalculationSharing","description":"Defines the properties related to sharing and sending of the calculation.","properties":[{"name":"type","type":"SharingUriType","description":"Type of sharing for this calculation.","optional":true,"nullable":true},{"name":"uri","type":"string","description":"Sharing uri.","optional":true,"nullable":true},{"name":"lastSharedTo","type":"string","description":"Email address to which the calculation was shared last time.","optional":true,"nullable":true},{"name":"lastSharedCc","type":"string","description":"Email address which the calculation was shared as cc last time.","optional":true,"nullable":true},{"name":"lastSharedMessage","type":"string","description":"Last shared message to the employer","optional":true,"nullable":true}],"extends":[]},{"name":"CarBenefit","description":"Car benefit Mandatory data group, if the income type is \"Car benefit\". This data group may not be used with other income types.","properties":[{"name":"carBenefitCode","type":"CarBenefitCode","description":"Car benefit type","optional":true,"nullable":true},{"name":"ageGroupCode","type":"AgeGroupCode","description":"Car age group","optional":true,"nullable":true},{"name":"kilometers","type":"number","description":"Odometer reading\n\n     The value must be greater than or equal to 0","optional":true,"nullable":true},{"name":"emissionsValue","type":"number","description":"Car emissions value\n\n     The car emissions value must be greater than or equal to 0, and smaller than or\n     equal to 100. The car emissions value can only be reported if the payment date\n     or other reporting date is in 2022–2025.","optional":true,"nullable":true}],"extends":[]},{"name":"Contact","description":"Common contact information object for Person, Company, Location etc.","properties":[{"name":"email","type":"string","description":"Contact e-mail address. Always lower invariant, trimmed and empty string set to null.","optional":true,"nullable":true},{"name":"telephone","type":"string","description":"Telephone number","optional":true,"nullable":true},{"name":"street","type":"string","description":"Street address","optional":true,"nullable":true},{"name":"postalCode","type":"string","description":"Postal code","optional":true,"nullable":true},{"name":"city","type":"string","description":"City or community (postitoimipaikka)","optional":true,"nullable":true},{"name":"countryCode","type":"string","description":"This is the ISO code for country.\n     Currently, it should always be \"fi\".","optional":true,"nullable":true}],"extends":[]},{"name":"CostAccountingDimension","description":"Id of the cost accounting dimension with optional percentage for shared costs.","properties":[{"name":"id","type":"string","description":"Dimension Id.","optional":true,"nullable":true},{"name":"value","type":"string","description":"Cost accounting dimension value id.","optional":true,"nullable":true},{"name":"percent","type":"number","description":"Sharing percent for the dimension.","optional":true,"nullable":true}],"extends":[]},{"name":"DateRange","description":"Describes the range of dates from start to end and the number of days in between.","properties":[{"name":"start","type":"string","description":"Start date of the period","optional":true,"nullable":true},{"name":"end","type":"string","description":"End date of the period.","optional":true,"nullable":true},{"name":"daysCount","type":"number","description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it.","optional":true,"nullable":true},{"name":"days","type":{"items":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility.","optional":true,"nullable":true}],"extends":[]},{"name":"EmployerCalculationDTO","description":"Models the business logic of Employer side of the calculation. For documentation, see the IEmployerCalculation interface.","properties":[{"name":"allSideCosts","type":"number","description":"All side cost: The mandatory side costs + Palkkaus and partner fees","optional":true,"nullable":true},{"name":"finalCost","type":"number","description":"The final cost after household decuction from the tax authorities:\n     Add to the payment the deductions (paid by employer) and deduct House hold deduction (later potentially other such subsidies)","optional":true,"nullable":true},{"name":"householdDeduction","type":"number","description":"Household deduction that the tax man will reimburse in taxation.\n     This is an estimation: There is minimum and maximum limits etc.","optional":true,"nullable":true},{"name":"mandatorySideCosts","type":"number","description":"The mandatory side costs are Pension (TyEL), Social secuirty and Unemployment insurance.","optional":true,"nullable":true},{"name":"palkkaus","type":"number","description":"The Palkkaus.fi fee including potential partner fees.","optional":true,"nullable":true},{"name":"service","type":"number","description":"Extra service charge in addition to Palkkaus fee.","optional":true,"nullable":true},{"name":"pension","type":"number","description":"The part of the Pension that Employer pays","optional":true,"nullable":true},{"name":"socialSecurity","type":"number","description":"The social security payment- paid as part of taxation (ennakonpidätys).","optional":true,"nullable":true},{"name":"totalPayment","type":"number","description":"Total payment that is Paid to Palkkaus.fi","optional":true,"nullable":true},{"name":"totalPaymentLegacy","type":"number","description":"Total payment using pre Insiders register calculation logic.\n     DEPRICATED: This is provided for special scenarios and may be removed without warning","optional":true,"nullable":true},{"name":"totalSalaryCost","type":"number","description":"Total salary cost is the paid salary, deductions and side costs, but not expenses.","optional":true,"nullable":true},{"name":"unemployment","type":"number","description":"The part of the unemployment insurance that the employer pays","optional":true,"nullable":true},{"name":"totalDeductions","type":"number","description":"Total deductions that are made from the payment that is paid to Palkkaus and then to Worker","optional":true,"nullable":true},{"name":"deductionUnionPayment","type":"number","description":"Union payment if it is deducted from the final figure","optional":true,"nullable":true},{"name":"deductionPensionSelfPayment","type":"number","description":"Pension payments, when paid directly by the Employer - not by Palkkaus.fi","optional":true,"nullable":true},{"name":"deductionUnemploymentSelfPayment","type":"number","description":"Unemployment insurance (TVR) payments, when paid directly by the Employer - not by Palkkaus.fi","optional":true,"nullable":true},{"name":"deductionSalaryAdvance","type":"number","description":"Salary advance - this part has already been paid.","optional":true,"nullable":true},{"name":"deductionForeclosure","type":"number","description":"Foreclosure that has already been paid by the employer.","optional":true,"nullable":true},{"name":"deductionTaxAndSocialSecuritySelfPayment","type":"number","description":"Tax and social security payments, when paid directly by the Employer - not by Palkkaus.fi","optional":true,"nullable":true},{"name":"deductionWorkerSelfPayment","type":"number","description":"Worker salary and expense payments, when paid directly by the Employer - not by Palkkaus.fi","optional":true,"nullable":true},{"name":"foreclosureByPalkkaus","type":"number","description":"Foreclosure that Palkkaus.fi pays in behalf of employer.","optional":true,"nullable":true},{"name":"deductionOtherDeductions","type":"number","description":"Other deductions that are deducted from the net salary.","optional":true,"nullable":true}],"extends":[]},{"name":"EmployerGroups","description":"Employer groups that are set on Example calculations. These will be replaced by properties from Worker / Employer","properties":[{"name":"isPrivatePerson","type":"boolean","description":"If true, the Employer is a private person.\n     Otherwise Company or Unknown.","optional":true,"nullable":true}],"extends":[]},{"name":"HolidayAccrualCalcSpecification","description":"Info covering most important accrual year parameters.","properties":[{"name":"year","type":"number","description":"Year as integer","optional":true,"nullable":true},{"name":"code","type":"HolidayCode","description":"Defines how the holidays are handled for the worker.","optional":true,"nullable":true},{"name":"wageBasis","type":"WageBasis","description":"Wage basis for a Holiday Year.","optional":true,"nullable":true},{"name":"defaultAccrual","type":"number","description":"Default accrual for months where the Accrual occurs.","optional":true,"nullable":true}],"extends":[]},{"name":"HolidaySpecificationForYear","description":"Extends the Holiday specification with the properties of employment relation that are required for a specific year.","properties":[{"name":"wageBasis","type":"WageBasis","description":"Wage basis for a Holiday Year.\n     When this is changed, you need to make a rerun to the previous calculations in the holiday year.\n     NOTE: This is not in HolidaySpecification because, the same value is stored in Employment relation.","optional":true,"nullable":true},{"name":"employmentPeriod","type":"DateRange","description":"Employment period for the purposes of holiday calculation (annual leave accrual).\n     When this is changed, you need to make a rerun to the previous calculations in the holiday year.","optional":true,"nullable":true},{"name":"code","type":"HolidayCode","description":"Defines how the holidays are handled for the worker.","optional":true,"nullable":true},{"name":"holidayPayCalculation","type":"HolidayPayCalculation","description":"Defines how the holiday pay is calculated.","optional":true,"nullable":true},{"name":"accrualFixed","type":"number","description":"Defines the number of holidays that the worker is entitled per month worked.\n     If the value is set to 0 (default), the number is 2 for first year and 2,5 thereafter as defined in the law.\n     To actually se the daysPerMonth to zero, use code value other than Permanent14Days or Permanent35Hours.","optional":true,"nullable":true},{"name":"compensation","type":"number","description":"For {Palkkaus.Model.Worktime.Holidays.HolidayPayCalculation.HolidayCompensation} the compensation percent.\n     Holiday compensation as percent of salary (11.5% is 0.115)","optional":true,"nullable":true},{"name":"holidayPayPercent","type":"number","description":"For {Palkkaus.Model.Worktime.Holidays.HolidayPayCalculation.PercentageBasedPay} the percent.\n     Holiday pay as percent of salary (11.5% is 0.115)","optional":true,"nullable":true},{"name":"bonusMethod","type":"HolidayBonusPaymentMethod","description":"Method for paying holiday bonus in this salary calculation.","optional":true,"nullable":true},{"name":"bonus","type":"number","description":"Holiday bonus for the worker (lomaraha, lomaltapaluuraha).\n     Typically 0.5 for 50%.","optional":true,"nullable":true}],"extends":[]},{"name":"IEmployerResponsibilities","description":"Parameters that affect the calculation. EmployerResponsibilities is historical name - currentlty to object holds also other properties that are not well described as responsibilities. These based on the EmployerGroups selection or properties of the Employer and Worker snapshots as well as this Calculation","properties":[{"name":"employerGroups","type":"EmployerGroups","description":"Employer groups that are set on Example calculations.\n     These will be replaced by properties from Worker / Employer when these persons are set.","optional":true,"nullable":true},{"name":"noPensionPayment","type":"boolean","description":"Pension is not paid if the salary to this Worker is less than a certain amount in a month (about 60€)\n     or worker is less than 17 or more than 64 years old.","optional":true,"nullable":true},{"name":"noSocialSecurity","type":"boolean","description":"If worker is less than 16 or more than 67, social secuiry payment is not paid","optional":true,"nullable":true},{"name":"noTvr","type":"boolean","description":"If Worker is less than 17 or more than 64, TVR is not paid.\n     Also if the Employer has no accident insurance.","optional":true,"nullable":true},{"name":"pensionCompany","type":"PensionCompany","description":"The name of the Pension company because this affects the Pension percentage used in the calculation (only in contract situation).\n     It also needs to be shown in the reports.","optional":true,"nullable":true},{"name":"pensionDiscountPercent","type":"number","description":"Pension discount percent.","optional":true,"nullable":true},{"name":"pensionPercent","type":"number","description":"Customer specific pension percent.","optional":true,"nullable":true},{"name":"insuranceCompany","type":"InsuranceCompany","description":"Company for the current insurance","optional":true,"nullable":true},{"name":"insurancePercent","type":"number","description":"Percent for calculating the estimate for the accident insurance amount to pay.","optional":true,"nullable":true},{"name":"groupLifeInsurancePercent","type":"number","description":"Percent for calculating the estimate for the group life insurance amount to pay.","optional":true,"nullable":true},{"name":"insuranceContractNumber","type":"string","description":"Accident insurance contract number.","optional":true,"nullable":true},{"name":"pensionOldAgePayment","type":"boolean","description":"If the Worker is from 53 to 62 years old, more of the Pension payment\n     is deducted from the Worker side of the salary (less for the Employer).\n     NOTE: People from 63 to 67 years pay the same amount as 17-52 years old.","optional":true,"nullable":true},{"name":"pensionRegularEmployer","type":"boolean","description":"The employer should have a Pension contract (not a temporary employer).\n     It does not necessarily mean that the user has a contract yet.\n     NOTE: At the moment, this is not used for calculation - only in the Side costs visualizer tool.","optional":true,"nullable":true},{"name":"isPensionMonthlyContract","type":"boolean","description":"If true, the employer has a Pension contract and makes the payments\n     in a monthly schedule which means that Pension interest is calculated for the 20th of the next month.\n     Currently, this is only enabled to Etera - other companies will follow.","optional":true,"nullable":true},{"name":"unemploymentSelfPayment","type":"boolean","description":"If true, the employer pays the Unemployment insurance directly to TVR.\n     As of writing, this is true for all companies and with calculations starting 1.8.2018,\n     false for households or calculations before the date.","optional":true,"nullable":true},{"name":"calculationPaymentDate","type":"string","description":"The assumed salary payment date from the worker perspective.\n     The system calculates the nearest possible salary date if no any salary date has been given by the\n     employer. If given, the system confirms the given date.\n     This date affects the yearly percents used in the salary calculation.","optional":true,"nullable":true},{"name":"pensionAgeRange","type":"AgeRange","description":"The age range that is used in the business logic that determines the employer responsibilities.\n     This property replaces the EmployerGroups.AgeRange that was previous get/set.\n     This is based on WorkerDateOfBirth and CalculationPaymentDate.","optional":true,"nullable":true},{"name":"workerDateOfBirth","type":"string","description":"Date of birth for the Worker - this affects the side costs.\n     Please also set the DateOfBirthAccuracy, if you set this property.\n     If SocialSecurityNumber is set, it will override any value set here.","optional":true,"nullable":true},{"name":"workerDateOfBirthAccuracy","type":"DateOfBirthAccuracy","description":"Accuracy of the date of birth\n     If SocialSecurityNumber is set, it will override any value set here.","optional":true,"nullable":true},{"name":"pensionCalculation","type":"PensionCalculation","description":"Pension calculation type.","optional":true,"nullable":true},{"name":"pensionRule","type":"PensionRule","description":"Rules (e.g. effect of monthly lower limit) for pension calculation.","optional":true,"nullable":true},{"name":"employmentType","type":"EmploymentRelationType","description":"Type of the employment relation","optional":true,"nullable":true},{"name":"employmentTaxcard","type":"EmploymentRelationTaxcard","description":"Taxcard type from the employment point of view.","optional":true,"nullable":true},{"name":"salaryPaymentMethod","type":"EmploymentRelationSalaryPaymentMethod","description":"Worker's preferred salary payment method: bank account, external etc.","optional":true,"nullable":true},{"name":"irIncomeEarnerTypes","type":{"items":"IncomeEarnerType"},"description":"Type of additional income earner data by National Incomer Register classification . If several types apply, all of them should be selected.","optional":true,"nullable":true},{"name":"subOrgCode","type":"string","description":"Sub organization code for the Incomes Registry.","optional":true,"nullable":true},{"name":"employmentRegCode","type":"string","description":"Employment registration code for Incomes Registry.","optional":true,"nullable":true},{"name":"taxAndSocialSecuritySelfPayment","type":"boolean","description":"Tax and social security payments are paid directly by the Employer - not by Palkkaus.fi","optional":true,"nullable":true},{"name":"workerSelfPayment","type":"boolean","description":"Worker salary and expense payments are paid directly by the Employer - not by Palkkaus.fi","optional":true,"nullable":true},{"name":"pensionSelfPayment","type":"boolean","description":"Pension payments are paid directly by the Employer - not by Palkkaus.fi","optional":true,"nullable":true},{"name":"pensionContractNumber","type":"string","description":"Pension insurance contract number.","optional":true,"nullable":true},{"name":"unemploymentPayrollLimitStatus","type":"UnemploymentPayrollLimitStatus","description":"Status for indicating whether the total amount of paid salaries exceeds the thresold for higher unemployment insurance percent.","optional":true,"nullable":true},{"name":"salarySlipDeliveryMethods","type":{"items":"WorkerSalarySlipDeliveryMethod"},"description":"Options for the delivery of the payslip to the worker.","optional":true,"nullable":true}],"extends":[]},{"name":"IrDetails","description":"Reporting details to Incomes registry (Tulorekisteri).","properties":[{"name":"code","type":"number","description":"The number code in Incomes Register.","optional":true,"nullable":true},{"name":"flags","type":{"items":"IrFlags"},"description":"Boolean flags that can be set on transaction.","optional":true,"nullable":true},{"name":"insuranceExceptions","type":{"items":"IrInsuranceExceptions"},"description":"Defines the exceptions to Insurance / Sidecost defaults that are set by the row type.","optional":true,"nullable":true},{"name":"dailyAllowance","type":{"items":"AllowanceCode"},"description":"Daily allowance code.","optional":true,"nullable":true},{"name":"mealBenefitIsTaxValue","type":"boolean","description":"Set this to true if meak benefit is of tax value - false if it si not.\n     The value should be null if the row is not mealBenefit.","optional":true,"nullable":true},{"name":"carBenefit","type":"CarBenefit","description":"Provides the additional data needed for car benefit.","optional":true,"nullable":true},{"name":"noTransactionAmount","type":"boolean","description":"If true, report zero amount to IR.","optional":true,"nullable":true}],"extends":[]},{"name":"IrRow","description":"Business level modeling corresponding to WageReportsToIRTypes Transaction. Also contains additional data for accounting and integration purposes.","properties":[{"name":"type","type":"IrRowSourceType","description":"Type of the row - basically describes the source for this row:\n     Either Manual (default) or Usecase logic, which may be legacy / API v02 or new / API v03.","optional":true,"nullable":true},{"name":"message","type":"string","description":"Description text of the row that is shown in reports.","optional":true,"nullable":true},{"name":"count","type":"number","description":"Count for the row. Default is one.","optional":true,"nullable":true},{"name":"price","type":"number","description":"Price for the row.","optional":true,"nullable":true},{"name":"total","type":"number","description":"Simple multiplication: Count * Price - no other logic. Not used as Input.","optional":true,"nullable":true},{"name":"unit","type":"Unit","description":"Unit for the row. If specified as Undefined, set by the server-logic based on row type etc.","optional":true,"nullable":true},{"name":"irData","type":"IrDetails","description":"Details for the National Incomes registry","optional":true,"nullable":true},{"name":"calcData","type":"IrRowCalculationProperties","description":"Details from Salaxy internal calulcation point-of-view (logic not in IR).","optional":true,"nullable":true},{"name":"earningPeriod","type":"DateRange","description":"Earnings period if different than the report period.\n     Note that this property may be (and by default is) null.","optional":true,"nullable":true},{"name":"period","type":"DateRange","description":"Period for the calculation row. This is mainly used for absences (AbsencePeriod row type), leaves and holidays (HolidaySalary, HolidayBonus and HolidayCompensation).\n     Note that this property may be (and by default is) null.","optional":true,"nullable":true},{"name":"accounting","type":"RowAccounting","description":"Accounting related data for the row.","optional":true,"nullable":true},{"name":"data","type":{"name":"","description":"","properties":[],"extends":[]},"description":"Usecase specific data","optional":true,"nullable":true}],"extends":[]},{"name":"IrRowCalculationProperties","description":"Details from Salaxy internal calulcation point-of-view (logic not in IR).","properties":[{"name":"grouping","type":"CalcGroup","description":"Grouping for reports etc.","optional":true,"nullable":true},{"name":"behavior","type":{"items":"CalculationFlag"},"description":"Defines the behavior of the row in Salaxy calculation process.","optional":true,"nullable":true},{"name":"type","type":"string","description":"Wage type. Either a built in wage type in Salaxy or a custom wage type created by the user.\n     Please note that this type fully determines the <see cref=\"T:Palkkaus.Model.Calc.CalculationRowType\"></see> and the kind.","optional":true,"nullable":true}],"extends":[]},{"name":"MonthlyHolidayAccrual","description":"Holiday Accrual for a calendar month in releation to a calculation.","properties":[{"name":"month","type":"string","description":"First day of month for the holiday month","optional":true,"nullable":true},{"name":"daysAccrued","type":"number","description":"Holiday accrual for this month.\n     Note that -1 is indication that accrual should not be updated for this particylar month.\n     There is no possiblity for negative accrual.","optional":true,"nullable":true},{"name":"absencesDays","type":"number","description":"Number of absence days used in the calculation.","optional":true,"nullable":true},{"name":"workDays","type":"number","description":"Work days in determining the accrual for the month in 14 days rule.","optional":true,"nullable":true},{"name":"workHours","type":"number","description":"Work hours in determining the accrual fot the month in 35 hour rule.","optional":true,"nullable":true},{"name":"calcId","type":"string","description":"Id of the calculation that this accrual is related to.","optional":true,"nullable":true}],"extends":[]},{"name":"ResultRow","description":"Defines a Calculation row in the calculation results","properties":[{"name":"userRowIndex","type":"number","description":"Row index that matches this row to a user defined row (which is zero-based).\n     If the row is generated by calculation business logic (e.g. based on framework agreement), the index is -1.","optional":true,"nullable":true},{"name":"type","type":"string","description":"Wage type. Either a built in wage type in Salaxy or a custom wage type created by the user.\n     Please note that this type fully determines the <see cref=\"T:Palkkaus.Model.Calc.CalculationRowType\"></see> and the kind.","optional":true,"nullable":true},{"name":"rowType","type":"CalculationRowType","description":"Logical type of the row","optional":true,"nullable":true},{"name":"rowSource","type":"CalculationRowSource","description":"Source of the calculation row - affects how the row is handled in editing / recalculation scenarios.","optional":true,"nullable":true},{"name":"message","type":"string","description":"Description text of the row that is shown in reports. If null, will be set according to type.","optional":true,"nullable":true},{"name":"count","type":"number","description":"Count for the row - default is one","optional":true,"nullable":true},{"name":"price","type":"number","description":"Price for the row","optional":true,"nullable":true},{"name":"unit","type":"CalculationRowUnit","description":"Unit for the row","optional":true,"nullable":true},{"name":"total","type":"number","description":"Total for the row - always Price * Count","optional":true,"nullable":true},{"name":"totalBaseSalary","type":"number","description":"Base salary (Peruspalkka) is the monthly salary or total salary without addiotions (overtime, holidays etc.)","optional":true,"nullable":true},{"name":"totalGrossSalary","type":"number","description":"Gross salary (Bruttopalkka) is \"real\" salary including the additions (overtime, holidays etc.) but not benefits.","optional":true,"nullable":true},{"name":"totalTaxable","type":"number","description":"Taxable income (Ennakonpidätyksen alainen ansio) is the salary from taxation point-of-view. It is basically the Gross Salary plus benefits.","optional":true,"nullable":true},{"name":"totalSocialSecurityBase","type":"number","description":"Social Security Base (Sosiaaliturvan alainen ansio) is typically the same as TotalTaxable,\n     but e.g. child care subsidy (yksityisen hoidon tuki) is handled differently.","optional":true,"nullable":true},{"name":"totalExpenses","type":"number","description":"Taxfree expenses compensation","optional":true,"nullable":true},{"name":"totalDeduction","type":"number","description":"Deductions from the salary: Union payment, Advance, Foreclosure","optional":true,"nullable":true},{"name":"sourceId","type":"string","description":"Identifier in the source system is a key defined by a source system / partner system.\n     This is a pass-through string that is kept as-is in the Salaxy system.","optional":true,"nullable":true},{"name":"period","type":"DateRange","description":"Period if different than the Period of calculation.\n     Will be reported to the National Incomes registry, but also affect some other calculations.\n     Note that this property may be (and by default is) null.","optional":true,"nullable":true},{"name":"accounting","type":"RowAccounting","description":"Accounting related data for the row.","optional":true,"nullable":true},{"name":"data","type":{"name":"","description":"","properties":[],"extends":[]},"description":"Usecase specific data","optional":true,"nullable":true}],"extends":[]},{"name":"RowAccounting","description":"Provides row specific data for accounting (both cost and financial accounting).","properties":[{"name":"vatPercent","type":"number","description":"Percent for VAT calculation expressed as decimal: 24% is 0.24.","optional":true,"nullable":true},{"name":"vatEntries","type":{"items":"VatEntry"},"description":"Total VAT amount splitted by VAT rates.\n     Please note, that if both {Palkkaus.Model.Calc.RowAccounting.VatPercent} and the {Palkkaus.Model.Calc.RowAccounting.VatEntries} with some entries given,\n     the {Palkkaus.Model.Calc.RowAccounting.VatEntries} are applied.\n     Please note that this is null by default.","optional":true,"nullable":true},{"name":"dimensions","type":{"items":"CostAccountingDimension"},"description":"Values for cost accounting dimensions","optional":true,"nullable":true},{"name":"entry","type":"RowAccountingEntry","description":"Row accounting entries for overriding standard accounting logic.","optional":true,"nullable":true}],"extends":[]},{"name":"RowAccountingEntry","description":"Row accounting entry for overriding standard accounting logic.","properties":[{"name":"debitAccountNumber","type":"string","description":"Debit Account number.\n     If given will override the system resolved debit account number.","optional":true,"nullable":true},{"name":"creditAccountNumber","type":"string","description":"Credit Account number.\n     If given will override the system resolved credit account number.","optional":true,"nullable":true}],"extends":[]},{"name":"Salary","description":"Defines the main salary that is the bases for the calculation","properties":[{"name":"kind","type":"SalaryKind","description":"Type of the salary being calculated","optional":false,"nullable":false},{"name":"amount","type":"number","description":"Amount of e.g. hours, months for the salary. Default is 1.","optional":true,"nullable":true},{"name":"price","type":"number","description":"Price of one unit - e.g. hour, month.","optional":false,"nullable":false},{"name":"unit","type":"string","description":"E.g. hour, month. Typically this parameter can be left empty/null and the unit is set according to type.","optional":true,"nullable":true},{"name":"message","type":"string","description":"Optional message for the salary row that is shown in reports. If null, will be set according to type.","optional":true,"nullable":true},{"name":"isHouseholdDeductible","type":"boolean","description":"If set to true, will calculate the household deduction. Applies only to natural persons - as oppsed to companies.","optional":true,"nullable":true},{"name":"taxDeductionCategories","type":"TaxDeductionWorkCategories","description":"If tax IsHouseholdDeductible is set to true, please also select the category (categories).\n     Note that \"OwnPropety\" is a default, it does not need to be set: Only set RelativesProperty if necessary.","optional":true,"nullable":true}],"extends":[]},{"name":"TaxcardSnapshot","description":"Basic information about the taxcard: This object has the information printed in SalarySlip etc. but not the full salaries paid to the taxcard etc.","properties":[{"name":"forYear","type":"number","description":"Year that the tax card is valid for. Typically this means from February of this year to January of the following.","optional":false,"nullable":false},{"name":"validity","type":"DateRange","description":"Validity for the taxcard as expressed in the card.\n     Note that the end date may not be reliable if new taxcard has replaced this one.","optional":true,"nullable":true},{"name":"taxPercent","type":"number","description":"Tax percent as percent. I.e. for 50% set 50, not 0.5.","optional":true,"nullable":true},{"name":"incomeLimit","type":"number","description":"Income up to which the TaxPercent can be used.\n     Any income above the limit is taxed with ExcessTaxPercent.","optional":true,"nullable":true},{"name":"cumulativeIncome","type":"number","description":"Cumulative income on the taxcard - including this calculation.\n     Note that with shared taxcards, this may include income from other employers.","optional":true,"nullable":true},{"name":"taxPercent2","type":"number","description":"Tax percentage that is used in calculating the widthholding tax for the part of income above the IncomeLimit.\n     This is percent. I.e. for 50% set 50, not 0.5.","optional":true,"nullable":true},{"name":"taxPercentMin","type":"number","description":"A Worker may request a minimum percent that is deducted even if the effective tax percent would be lower.\n     This can be used if Worker knows that he/she will be earning more in the year than what was estimated when the taxcard was created.","optional":true,"nullable":true},{"name":"taxPercentMinOwned","type":"number","description":"TaxPercentMin set by owner of the card.\n     This overrides the tax percent min set by the taxcard sharer.","optional":true,"nullable":true},{"name":"incomeType","type":"TaxcardApiIncomeType","description":"The income type of the taxacard if fetched from the tax authorities taxcard API.","optional":true,"nullable":true},{"name":"kind","type":"TaxcardKind","description":"Type of the taxcard as of 2019, when the taxcards logic was simplified by the Finnish tazx authorities.","optional":true,"nullable":true},{"name":"fileUri","type":"string","description":"Uri to the file copy of the tax card.\n     Set by the system as part of the upload process, do not change in the API though it may be technically possible. This may have unintended results.","optional":true,"nullable":true},{"name":"previewUri","type":"string","description":"Uri to the preview image of the tax card.\n     Set by the system as part of the upload process, do not change in the API though it may be technically possible. This may have unintended results.","optional":true,"nullable":true},{"name":"lastChecked","type":"string","description":"Explicit value of when the item was last checked. At the moment, updated in API fetches only, but may be used later for other checks.\n     Undefined value is 1.1.2000","optional":true,"nullable":true}],"extends":[]},{"name":"TesParameters","description":"Captures the collection of parameters that different Framework agreements (TES) have.","properties":[{"name":"type","type":"FrameworkAgreement","description":"Type of the work framework","optional":true,"nullable":true},{"name":"subType","type":"TesSubtype","description":"Subtype when one framework has several options","optional":true,"nullable":true},{"name":"isTesIncludedInSalary","type":"boolean","description":"Marker that the payments defined by framework agreement are included in the salary (will not be added by the calculation).","optional":true,"nullable":true},{"name":"numberOfDays","type":"number","description":"Number of days may affect calculation of different payments calculated based on a Framework agreement","optional":true,"nullable":true},{"name":"dailyTravelExpenses","type":"number","description":"Travel expences per day","optional":true,"nullable":true},{"name":"dailyTravelExpensesKm","type":"number","description":"The amount of kilometers travelled by day - used to define the amount of travel expenses in aomse framework agreements.","optional":true,"nullable":true},{"name":"dailyExpenses","type":"number","description":"Daily expenses amount","optional":true,"nullable":true},{"name":"isYksityisenHoidonTuki","type":"boolean","description":"If true will calculate the Finnish child care subsidy","optional":true,"nullable":true},{"name":"yksityisenHoidonTukiAmount","type":"number","description":"Amount of Finnish child care subsidy","optional":true,"nullable":true}],"extends":[]},{"name":"TotalCalculationDTO","description":"Calculates the total numbers - the ones that are common to Employer and worker.","properties":[{"name":"pension","type":"number","description":"The total pension payment for this calculation","optional":true,"nullable":true},{"name":"unemployment","type":"number","description":"The total unemployment payment sum.","optional":true,"nullable":true},{"name":"total","type":"number","description":"The total of all calculation rows","optional":true,"nullable":true},{"name":"totalBaseSalary","type":"number","description":"The base salary without overtime and other such additions that are part of gross salary.","optional":true,"nullable":true},{"name":"totalGrossSalary","type":"number","description":"Gross salary is the salary including additions like overtime, but not benefits or expenses","optional":true,"nullable":true},{"name":"totalTaxable","type":"number","description":"Taxable salary is the salary from the taxation point of view - includes some benefits.","optional":true,"nullable":true},{"name":"taxAtSourceDeduction","type":"number","description":"Deduction from TotalTaxable to tax at source calculation.","optional":true,"nullable":true},{"name":"totalSocialSecurityBase","type":"number","description":"DEPRICATED: This is now the same as TotalPensionInsuranceBase. For other social insurances, you may want to use\n     TotalUnemploymentInsuranceBase, TotalHealthInsuranceBase or TotalAccidentInsuranceBase,","optional":true,"nullable":true},{"name":"totalPensionInsuranceBase","type":"number","description":"Base income for calculating the Pension insurance contributions.","optional":true,"nullable":true},{"name":"totalUnemploymentInsuranceBase","type":"number","description":"Base income for calculating the Unemployment insurance contributions.","optional":true,"nullable":true},{"name":"totalHealthInsuranceBase","type":"number","description":"Base income for calculating the Health insurance contributions.","optional":true,"nullable":true},{"name":"totalAccidentInsuranceBase","type":"number","description":"Base income for calculating the Accident insurance contributions.","optional":true,"nullable":true},{"name":"totalExpenses","type":"number","description":"Tax free expenses.","optional":true,"nullable":true},{"name":"totalPayable","type":"number","description":"Total sum of rows that are paid through Salaxy Customer Funds account.\n     This is the Gross sum before side costs, deductions etc., but it is not Gross salary as it includes expenses etc.","optional":true,"nullable":true}],"extends":[]},{"name":"UsecaseData","description":"A usecase for creating and editing salary calculations and other . In practice, a usecase is either a user interface or a microservice that provides the bases for the object. Provides the possibility to store useacase specific data as part of object. NOTE: For Calculations, this functionality will replace TesParameters in the 3.0 version.","properties":[{"name":"uri","type":"string","description":"Key for the usecase based on which it is resolved.\n     Later, this may resolve to a user interface, microservice or a to manifest registering one.\n     For now, just use a unique string starting with a domain you own.","optional":true,"nullable":true},{"name":"label","type":"string","description":"A short label of that can be shown to the end user.","optional":true,"nullable":true},{"name":"description","type":"string","description":"Optional description of the use case for the end user.\n     Shown in detail views when explaining the logic of the usecase.","optional":true,"nullable":true},{"name":"data","type":{"name":"","description":"","properties":[],"extends":[]},"description":"Usecase specific data","optional":true,"nullable":true}],"extends":[]},{"name":"UserDefinedRow","description":"This is a user defined calculation row as opposed to CalculationRow that may be either based on a user defined row or generated by the system based on e.g. TES parameters.","properties":[{"name":"rowIndex","type":"number","description":"Zero based row index that can be used to match the row to result rows or when deleting.\n     NOTE: The Row ID is given values on the fly so setting this will not have any effect at the moment.\n     It may reorder the entries in later implementations.","optional":true,"nullable":true},{"name":"type","type":"string","description":"Wage type. Either a built in wage type in Salaxy or a custom wage type created by the user.\n     Please note that this type fully determines the <see cref=\"T:Palkkaus.Model.Calc.CalculationRowType\"></see> and the kind.","optional":true,"nullable":true},{"name":"rowType","type":"CalculationRowType","description":"Logical type of the row","optional":true,"nullable":true},{"name":"message","type":"string","description":"Description text of the row that is shown in reports. If null, will be set according to type.","optional":true,"nullable":true},{"name":"count","type":"number","description":"Count for the row - default is one","optional":true,"nullable":true},{"name":"price","type":"number","description":"Price for the row","optional":true,"nullable":true},{"name":"unit","type":"CalculationRowUnit","description":"Unit for the row. Guessed based on the RowType and count, but you are better off setting it to be sure.","optional":true,"nullable":true},{"name":"source","type":"CalculationRowSource","description":"Source of the calculation row - affects how the row is handled in editing / recalculation scenarios.","optional":true,"nullable":true},{"name":"sourceId","type":"string","description":"Identifier in the source system is a key defined by a source system / partner system.\n     This is a pass-through string that is passed to the result calculations.","optional":true,"nullable":true},{"name":"accounting","type":"RowAccounting","description":"Accounting related data for the row.","optional":true,"nullable":true},{"name":"period","type":"DateRange","description":"Period if different than the Period of calculation.\n     Will be reported to the National Incomes registry, but also affect some other calculations.\n     Note that this property may be (and by default is) null.","optional":true,"nullable":true},{"name":"data","type":{"name":"","description":"","properties":[],"extends":[]},"description":"Usecase specific data","optional":true,"nullable":true}],"extends":[]},{"name":"VatEntry","description":"For VAT breakdown of a receipt (ALV-erittely) represents a single VAT rate and the revenue and tax with that rate.","properties":[{"name":"tax","type":"number","description":"Tax amount of specific VAT rate in euro.\n     This value is mandatory, if the collection of VatEntries contains more than one item.","optional":true,"nullable":true},{"name":"vatRate","type":"VatRate","description":"Applied VAT rate. This is always mandatory.","optional":true,"nullable":true},{"name":"taxPercent","type":"number","description":"Tax as percent of Net sales (0-1). Currently just informative, but may later be used for Custom non-standard VAT rates.","optional":true,"nullable":true},{"name":"gross","type":"number","description":"Gross sales for specific VAT rate including the tax (VAT).\n     This value is mandatory, if the collection of VatEntries contains more than one item.","optional":true,"nullable":true},{"name":"net","type":"number","description":"Net sales for specific VAT rate excluding the tax (VAT).\n     This value is mandatory, if the collection of VatEntries contains more than one item.","optional":true,"nullable":true}],"extends":[]},{"name":"WorkerCalculationDTO","description":"The Worker side of the calculation. SalarySlip is largely written based on this calculation.","properties":[{"name":"benefits","type":"number","description":"The benefits as valued by the tax authority.","optional":true,"nullable":true},{"name":"deductions","type":"number","description":"All the items that are deducted from the salary (this is also the order if there is not enough payable money):\n     SalaryAdvance + Tax + Pension + UnemploymentInsurance + UnionPayment + OtherDeductions","optional":true,"nullable":true},{"name":"salaryPayment","type":"number","description":"The payment that is made to the Worker based on salary after all deductions.\n     Does not include expenses.","optional":true,"nullable":true},{"name":"salaryAdvance","type":"number","description":"The salary advance that was paid to the Worker","optional":true,"nullable":true},{"name":"foreclosure","type":"number","description":"The foreclosure that been deducted from the salary by the employer.","optional":true,"nullable":true},{"name":"tax","type":"number","description":"Ennakonpidätys: The taxes that were deducted from the worker salary.","optional":true,"nullable":true},{"name":"taxAtSource","type":"number","description":"Lähdevero: The tax at source that were deducted from the worker salary.","optional":true,"nullable":true},{"name":"salaryAfterTax","type":"number","description":"Net salary after tax - before worker foreclosure or deductions of the side costs","optional":true,"nullable":true},{"name":"salaryAfterTaxAndForeclosure","type":"number","description":"Net salary after tax and foreclosure.","optional":true,"nullable":true},{"name":"pension","type":"number","description":"Part of the Pension that is taken from the Worker side of the salary.","optional":true,"nullable":true},{"name":"unemploymentInsurance","type":"number","description":"Workers part of the unemployment insurance.","optional":true,"nullable":true},{"name":"socialSecurity","type":"number","description":"The social security payment. NOT paid as a part of tax withhold .","optional":true,"nullable":true},{"name":"unionPayment","type":"number","description":"The union payment that is deducted from the Worker salarya s per workers request.","optional":true,"nullable":true},{"name":"fullTax","type":"number","description":"Widthholding tax: The original calulated version - there might not be enough money to finally pay this.","optional":true,"nullable":true},{"name":"fullTaxAtSource","type":"number","description":"Tax at source: The original calulated version - there might not be enough money to finally pay this.","optional":true,"nullable":true},{"name":"fullSalaryAdvance","type":"number","description":"The salary advance that was paid to the Worker\n     The original calulated version - there might not be enough money to finally pay this.","optional":true,"nullable":true},{"name":"fullPension","type":"number","description":"Part of the Pension that is taken from the Worker side of the salary.\n     The original calulated version - there might not be anough money to finally pay this.","optional":true,"nullable":true},{"name":"fullUnemploymentInsurance","type":"number","description":"Workers part of the unemployment insurance.\n     The original calulated version - there might not be anough money to finally pay this.","optional":true,"nullable":true},{"name":"fullSocialSecurity","type":"number","description":"The social security payment. NOT paid as a part of tax withhold .\n     The original calculted version.","optional":true,"nullable":true},{"name":"fullUnionPayment","type":"number","description":"The union payment that is deducted from the Worker salarya s per workers request.","optional":true,"nullable":true},{"name":"totalWorkerPayment","type":"number","description":"The sum that is at the end paid to the Worker:\n     Salary payment + expenses","optional":true,"nullable":true},{"name":"totalWorkerPaymentLegacy","type":"number","description":"Total payment using pre Insiders register calculation logic.\n     DEPRICATED: This is provided for special scenarios and may be removed without warning","optional":true,"nullable":true},{"name":"workerSideCosts","type":"number","description":"The side costs that are deducted from the Worker salary according to law:\n     Pension, Unemployment and Union payment. Tax is not included in this number.\n     This is not an official number, really used in the charts etc.","optional":true,"nullable":true},{"name":"fullOtherDeductions","type":"number","description":"Other deductions that are deducted from the net salary.\n     The original calulated version - there might not be enough money to finally deduct this.","optional":true,"nullable":true},{"name":"otherDeductions","type":"number","description":"Part of the other deductions that are deducted from the net salary.","optional":true,"nullable":true},{"name":"fullPrepaidExpenses","type":"number","description":"Prepaid expenses that are deducted from the expenses to be paid to the worker.\n     The original calulated version - there might not be enough money to finally deduct this.","optional":true,"nullable":true},{"name":"prepaidExpenses","type":"number","description":"Part of the prepaid expenses that are deducted from the expenses.","optional":true,"nullable":true}],"extends":[]},{"name":"WorkflowData","description":"Defines the data that IWorkflowItem must provide.","properties":[{"name":"events","type":{"items":"WorkflowEvent"},"description":"Workflow events for the item.","optional":true,"nullable":true}],"extends":[]},{"name":"WorkflowEvent","description":"Event in the workflow","properties":[{"name":"id","type":"string","description":"Event-provider specific identifier for the event.\n     For deletable events, this should identify , but do NOT trust this to be 100% unique.","optional":true,"nullable":true},{"name":"type","type":"string","description":"Type of the event. This typically maps to parent-object specific enumeration.","optional":true,"nullable":true},{"name":"message","type":"string","description":"Message for backoffice purposes from the User or system that created the event.","optional":true,"nullable":true},{"name":"ui","type":"BootstrapStyle","description":"User Interface styling of the event: Indicates the severity for the end-user.","optional":true,"nullable":true},{"name":"features","type":{"items":"WorkflowEventFeatures"},"description":"Features for this event.","optional":true,"nullable":true},{"name":"time","type":"string","description":"UTC time for when the event occured.","optional":true,"nullable":true},{"name":"user","type":"string","description":"User or system that created the event.","optional":true,"nullable":true},{"name":"assignedTo","type":"string","description":"Credential of the user which is responsible of the event.","optional":true,"nullable":true},{"name":"record","type":"string","description":"Record attached to this event.","optional":true,"nullable":true}],"extends":[]}]