Ukko API (0.8.0)

Download OpenAPI specification:Download

Attachments

Attachments

Store new attachment

Request Body schema: application/json
required

Attachment request

file
required
string

Base64 encoded file, currently supported mime types:

  • image/jpeg,
  • image/png,
  • image/gif,
  • application/pdf,
  • application/vnd.ms-office,
  • application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
file_name
required
string

File name

target_model_type
string

Type of resource

target_model_id
integer

ID of resource where want link this attachment.

document_type
string
Enum: "POWER-OF-ATTORNEY" "GUARDIANS-CONSENT" "TAX-CARD" "IDENTIFICATION" "PASSPORT" "RESIDENCE-PERMIT" "OTHER"

Type of document. Currently used only when target_model_type is 'USER'

Responses

Request samples

Content type
application/json
{
  • "file": "iVBORw0KGgoAAAANSUhEUgAAAGQAAABkBAMAAACCzIhnAAAAG1BMVEUAAAD///+fn58/Pz8fHx+/v7/f399/f39fX1/PwBUlAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABOUlEQVRYhe2SvU7DQBCEV/GPUvIIoSGtJYhpjaKkRiCilJHsEJcpSO8i5rnZvdmzskGGioodKc55Ps/d3t0SuVwul8vlcv2RloU80/tvQC1w1a28lPvNkSh5fztcAbXAVas7JklN6QuDglYzA9RSruseciZ5F34tG60BaimHyk7IJ4+mz9Md//UGqAWu5IOEzGXam4mU+0Sy37MCtcCHzQjZyqDJZOm8WleYUYBa4CZSy+A1FJ8V/D2nANQCN5EwwTaXD3neOVYNEVjgP0TWj7PfI6Ywvr5qiIwWZrZP6X4A49s3h0yTvotg/JBLkqtKdhSusk+bCNQCN5HQEEXoDu6mBi0wNEwd+WUkadGWnfQg158dYwSW8ssILdD8G+n0E9ddRwBLudUynGv6cO1HC9zlcrlcLtd/0hccA0mFpeebygAAAABJRU5ErkJggg==",
  • "file_name": "sample-file.png",
  • "target_model_type": "TAX_CARD | INVOICE | RECEIPT_EXPENSE | TRAVEL_EXPENSE (DEPRECATED) | TRIP | USER",
  • "target_model_id": 0,
  • "document_type": "POWER-OF-ATTORNEY | GUARDIANS-CONSENT | TAX-CARD | IDENTIFICATION | PASSPORT | RESIDENCE-PERMIT | OTHER"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get attachment object

path Parameters
attachment_id
required
integer

Attachment id

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Deletes Attachment

path Parameters
attachment_id
required
integer

Attachment's id

Responses

Download attachment

path Parameters
attachment_id
required
integer

Attachment id

Responses

Show attachment content base64 string

path Parameters
attachment_id
required
integer

Attachment id

Responses

Gets user's attachments by target_model_type, document_type being optional

path Parameters
target_model_type
required
string
Example: USER | INVOICE | RECEIPT_EXPENSE | TRAVEL_EXPENSE

Type of attachment list: user | invoice | receipt-expense | travel-expense

document_type
required
string
Example: POWER_OF_ATTORNEY |GUARDIANS_CONSENT | TAX_CARD | * IDENTIFICATION | PASSPORT | RESIDENCE PERMIT | OTHER

Optional parameter for document type list. Used currently for User related documents

query Parameters
page
integer

Pagination page id

limit
integer
Example: limit=50

Limit per page. Default 50, max 1000

sort
string
Example: sort=document_type | created_at | mime_type

Sort by ascending order, add '-' prefix to get * descending order, ie. -total. To sort by * client_name, use company_name, contact_person

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Perform Receipt Expense Document analysis for attachment

path Parameters
attachment_id
required
integer
Example: 123

Attachment Id

Responses

Response samples

Content type
application/json
{
  • "place_of_purchase": "string",
  • "purchase_date": "2020-09-20",
  • "rows": [
    ]
}

Client Management

Client Management

Gets all user's clients

query Parameters
page
integer

Pagination page id

limit
integer
Example: limit=50

Limit per page. Default 50, max 1000

sort
string
Example: sort=company_name | type | contact_person | email | * | street_address1 | street_address2 | zip_code * | city | country | company_name, contact_person

Sort by ascending order, add -company_name to * get descending order. To sort by client_name, use * company_name, contact_person.

filter[*field_name*]
string
Example: filter[*field_name*]=filter[common_search] = 'foobar', other keys: * type | company_name | contact_person | email | city * | street_address1 | street_address2 | zip_code * | city | country | client_name

Search from fields. Array field, so * filter[common_search] = 'string. * Note common_search searches from multiple fields

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Gets full data of user's one Client

path Parameters
client_id
required
integer

Client id

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Deletes User Client

path Parameters
client_id
required
integer

Client id

Responses

Creates new Company

Request Body schema: application/json
required

CompanyRequest

occupation_id
integer
business_id
string

Business Id (Y-tunnus in Finnish)

einvoice_address
string

EINvoice/Finvoice address

einvoice_operator
string

EInvoice/Finvoice operator

company_name
string

Company name

contact_person
string

Contact Person

email
string

email

street_address1
string

Street address of the client

zip_code
string

Zipcode of the client

city
string

City of the client

country
string

Client's country as ISO short code (FI, GB, RU etc)

phone
string

Phone number

delivery_method
string
Enum: "EINVOICE" "MAIL" "EMAIL"

Default Invoice Delivery Option

display_vat_rate_id
integer

Id of the display vat rate. Required if vat_rate is not set

vat_rate
string

Default VAT rate for the Client's invoices. Related endpoint: /system/vat-rates/invoice

notify_overdue_and_automatic_debt_collection
boolean

Default value for Client's overdue and automatic debt collection setting

language
string

Short country code, ie. FI, SV, EN, EE, RU

clients_reference
string

Clients own invoicing reference

Responses

Request samples

Content type
application/json
{
  • "occupation_id": 0,
  • "business_id": "1234567-8",
  • "einvoice_address": "string",
  • "einvoice_operator": "string",
  • "company_name": "string",
  • "contact_person": "string",
  • "email": "string",
  • "street_address1": "string",
  • "zip_code": "string",
  • "city": "string",
  • "country": "FI",
  • "phone": "+3581234567",
  • "delivery_method": "EMAIL",
  • "display_vat_rate_id": 0,
  • "vat_rate": "VAT_REGULAR",
  • "notify_overdue_and_automatic_debt_collection": true,
  • "language": "FI",
  • "clients_reference": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Updates a Client Company, if passed Person Client, this will convert it to Company. * NOTE: validation rules will change to Company client.

path Parameters
client_id
required
integer

Client id

Request Body schema: application/json
required

CompanyRequest

occupation_id
integer
business_id
string

Business Id (Y-tunnus in Finnish)

einvoice_address
string

EINvoice/Finvoice address

einvoice_operator
string

EInvoice/Finvoice operator

company_name
string

Company name

contact_person
string

Contact Person

email
string

email

street_address1
string

Street address of the client

zip_code
string

Zipcode of the client

city
string

City of the client

country
string

Client's country as ISO short code (FI, GB, RU etc)

phone
string

Phone number

delivery_method
string
Enum: "EINVOICE" "MAIL" "EMAIL"

Default Invoice Delivery Option

display_vat_rate_id
integer

Id of the display vat rate. Required if vat_rate is not set

vat_rate
string

Default VAT rate for the Client's invoices. Related endpoint: /system/vat-rates/invoice

notify_overdue_and_automatic_debt_collection
boolean

Default value for Client's overdue and automatic debt collection setting

language
string

Short country code, ie. FI, SV, EN, EE, RU

clients_reference
string

Clients own invoicing reference

Responses

Request samples

Content type
application/json
{
  • "occupation_id": 0,
  • "business_id": "1234567-8",
  • "einvoice_address": "string",
  • "einvoice_operator": "string",
  • "company_name": "string",
  • "contact_person": "string",
  • "email": "string",
  • "street_address1": "string",
  • "zip_code": "string",
  • "city": "string",
  • "country": "FI",
  • "phone": "+3581234567",
  • "delivery_method": "EMAIL",
  • "display_vat_rate_id": 0,
  • "vat_rate": "VAT_REGULAR",
  • "notify_overdue_and_automatic_debt_collection": true,
  • "language": "FI",
  • "clients_reference": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Creates new Person Client

Request Body schema: application/json
required

PersonRequest

occupation_id
integer
einvoice_address
string

EINvoice/Finvoice address

einvoice_operator
string

EInvoice/Finvoice operator

contact_person
string

Contact Person

email
string

email

street_address1
string

Street address of the client

zip_code
string

Zipcode of the client

city
string

City of the client

country
string

Client's country as ISO short code (FI, GB, RU etc)

phone
string

Phone number

delivery_method
string
Enum: "EINVOICE" "MAIL" "EMAIL"

Default Invoice Delivery Option

display_vat_rate_id
integer

Id of the display vat rate. Required if vat_rate is not set

vat_rate
string

Default VAT rate for the Client's invoices. Related endpoint: /system/vat-rates/invoice

notify_overdue_and_automatic_debt_collection
boolean

Default value for Client's overdue and automatic debt collection setting

language
string

Short country code, ie. FI, SV, EN, EE, RU

clients_reference
string

Clients own invoicing reference

Responses

Request samples

Content type
application/json
{
  • "occupation_id": 0,
  • "einvoice_address": "string",
  • "einvoice_operator": "string",
  • "contact_person": "string",
  • "email": "string",
  • "street_address1": "string",
  • "zip_code": "string",
  • "city": "string",
  • "country": "FI",
  • "phone": "+3581234567",
  • "delivery_method": "EMAIL",
  • "display_vat_rate_id": 0,
  • "vat_rate": "VAT_REGULAR",
  • "notify_overdue_and_automatic_debt_collection": true,
  • "language": "FI",
  • "clients_reference": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Updates Client Person, if passed Company Client, this will convert it to Person. * NOTE: validation rules will change to Person client.

path Parameters
client_id
required
integer

Client id

Request Body schema: application/json
required

PersonRequest

occupation_id
integer
einvoice_address
string

EINvoice/Finvoice address

einvoice_operator
string

EInvoice/Finvoice operator

contact_person
string

Contact Person

email
string

email

street_address1
string

Street address of the client

zip_code
string

Zipcode of the client

city
string

City of the client

country
string

Client's country as ISO short code (FI, GB, RU etc)

phone
string

Phone number

delivery_method
string
Enum: "EINVOICE" "MAIL" "EMAIL"

Default Invoice Delivery Option

display_vat_rate_id
integer

Id of the display vat rate. Required if vat_rate is not set

vat_rate
string

Default VAT rate for the Client's invoices. Related endpoint: /system/vat-rates/invoice

notify_overdue_and_automatic_debt_collection
boolean

Default value for Client's overdue and automatic debt collection setting

language
string

Short country code, ie. FI, SV, EN, EE, RU

clients_reference
string

Clients own invoicing reference

Responses

Request samples

Content type
application/json
{
  • "occupation_id": 0,
  • "einvoice_address": "string",
  • "einvoice_operator": "string",
  • "contact_person": "string",
  • "email": "string",
  • "street_address1": "string",
  • "zip_code": "string",
  • "city": "string",
  • "country": "FI",
  • "phone": "+3581234567",
  • "delivery_method": "EMAIL",
  • "display_vat_rate_id": 0,
  • "vat_rate": "VAT_REGULAR",
  • "notify_overdue_and_automatic_debt_collection": true,
  • "language": "FI",
  • "clients_reference": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Document Analysis

Document Analysis

Perform Receipt Expense Document analysis for attachment

path Parameters
attachment_id
required
integer
Example: 123

Attachment Id

Responses

Response samples

Content type
application/json
{
  • "place_of_purchase": "string",
  • "purchase_date": "2020-09-20",
  • "rows": [
    ]
}

Receipt Expenses

Receipt Expenses

Perform Receipt Expense Document analysis for attachment

path Parameters
attachment_id
required
integer
Example: 123

Attachment Id

Responses

Response samples

Content type
application/json
{
  • "place_of_purchase": "string",
  • "purchase_date": "2020-09-20",
  • "rows": [
    ]
}

Discards invoices receiptExpenses

Discard receiptExpenses

path Parameters
invoice_id
required
integer

Invoice id

Responses

Get receipt expenses by invoice

path Parameters
invoice_id
required
string
query Parameters
sort
string
Enum: "purchase_date" "place_of_purchase" "client_name" "total_sum"
Example: sort=purchase_date | place_of_purchase | client_name | total_sum

Sort by ascending order, add -place_of_purchase to get descending order

limit
integer
Example: limit=50

Limit per page. Default 50, max 1000

page
integer

Pagination page id

filter[*field_name*]
string
Example: filter[*field_name*]=filter[place_of_purchase] = 'prisma', other keys: type | purchase_date_start | purchase_end_date | common_search

Sort fields. Array field, so filter[email] = foobar@doobar.com

  •              filter[search_date_between] = 2022-01-01|2022-01-31
    
  •                  If you omit the start date use |2022-01-31
    

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Create receipt expense

Request Body schema: application/json
required

Receipt Expense

place_of_purchase
string

Name of the place where the product/service was purchased from

additional_information
string

Additional information text field

purchase_date
string <date>

When product/service was purchased

deduction_type
string
Enum: "MATERIAL" "TRAVEL"

Type of the deduction

invoice_id
integer

Id of receipt expense's invoice

include_to_invoice_row
boolean

Is the expense charged from client as part of the invoice

Array of objects

Responses

Request samples

Content type
application/json
{
  • "place_of_purchase": "string",
  • "additional_information": "string",
  • "purchase_date": "2019-08-24",
  • "deduction_type": "MATERIAL",
  • "invoice_id": 0,
  • "include_to_invoice_row": true,
  • "rows": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get one receipt expense by id

path Parameters
receipt_expense_id
required
integer

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Deletes Receipt Expense

path Parameters
receipt_expense_id
required
integer

Responses

Update receipt expense

path Parameters
receipt_expense_id
required
integer
Request Body schema: application/json
required

Receipt Expense

place_of_purchase
string

Name of the place where the product/service was purchased from

additional_information
string

Additional information text field

purchase_date
string <date>

When product/service was purchased

deduction_type
string
Enum: "MATERIAL" "TRAVEL"

Type of the deduction

invoice_id
integer

Id of receipt expense's invoice

include_to_invoice_row
boolean

Is the expense charged from client as part of the invoice

Array of objects

Responses

Request samples

Content type
application/json
{
  • "place_of_purchase": "string",
  • "additional_information": "string",
  • "purchase_date": "2019-08-24",
  • "deduction_type": "MATERIAL",
  • "invoice_id": 0,
  • "include_to_invoice_row": true,
  • "rows": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Gets calculated VAT values and totals

path Parameters
receipt_expense_id
required
integer

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Gets calculated VAT values and totals from receipt expense request

Request Body schema: application/json
required

Receipt Expense

place_of_purchase
string

Name of the place where the product/service was purchased from

additional_information
string

Additional information text field

purchase_date
string <date>

When product/service was purchased

deduction_type
string
Enum: "MATERIAL" "TRAVEL"

Type of the deduction

invoice_id
integer

Id of receipt expense's invoice

include_to_invoice_row
boolean

Is the expense charged from client as part of the invoice

Array of objects

Responses

Request samples

Content type
application/json
{
  • "place_of_purchase": "string",
  • "additional_information": "string",
  • "purchase_date": "2019-08-24",
  • "deduction_type": "MATERIAL",
  • "invoice_id": 0,
  • "include_to_invoice_row": true,
  • "rows": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get all users receipt expense by type

path Parameters
type
required
string
Example: empty/all | draft | in_review * | rejected | discarded | approved * | waiting_for_invoice_sending | user_action_required

Type of Receipt Expense list: all | draft | in_review * | rejected | discarded | approved * | waiting_for_invoice_sending | user_action_required

query Parameters
sort
string
Enum: "purchase_date" "place_of_purchase" "client_name" "total_sum"
Example: sort=purchase_date | place_of_purchase | client_name | total_sum

Sort by ascending order, add -place_of_purchase to get descending order

limit
integer
Example: limit=50

Limit per page. Default 50, max 1000

page
integer

Pagination page id

filter[*field_name*]
string
Example: filter[*field_name*]=filter[place_of_purchase] = 'prisma', other keys: type | purchase_date_start | purchase_end_date | common_search

Sort fields. Array field, so filter[email] = foobar@doobar.com

  •              filter[search_date_between] = 2022-01-01|2022-01-31
    
  •                  If you omit the start date use |2022-01-31
    

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Users

Users

Gets service agreement PDF

Responses

Gets proof of assignment PDF

Request Body schema: application/json
required

ProofOfAssignmentRequest

start_date
string <date>
end_date
string <date>
options
Array of strings
Items Enum: "NUMBER_OF_ASSIGNMENTS" "SUM_OF_ASSIGNMENTS" "WORK_HOURS" "PAID_GROSS_SALARY" "PAID_NET_SALARY" "UNPAID_GROSS_SALARY"

Responses

Request samples

Content type
application/json
{
  • "start_date": "2020-12-12",
  • "end_date": "2020-12-12",
  • "options": [
    ]
}

Gets travel expense report PDF

path Parameters
year
required
integer
Example: 2024

Report year

Responses

Gets expense report PDF

path Parameters
year
required
integer
Example: 2024

Report year

Responses

Registers user and send verification email

Request Body schema: application/json
required

RegisterRequest

email
required
string (email)

User's registration email

first_name
required
string

User's first name

last_name
required
string

User's last name

phone
string

User's phone number

language
string
Enum: "fi" "en" "sv" "et" "ru"

User's locale

utmcsr
integer

Referring user id for referer bonus

utmccn
string
Enum: "" "inviteFriend" "nordea"

User referral parameter, should be inviteFriend when utmcsr is filled

utmcmd
string
Enum: "" "inviteFriend"

User referral code, should be inviteFriend when utmcsr is filled

Responses

Request samples

Content type
application/json
{
  • "email": "matti.meikalainen@example.com",
  • "first_name": "Matti",
  • "last_name": "Meikäläinen",
  • "phone": "+358401234567",
  • "language": "fi",
  • "utmcsr": "1234",
  • "utmccn": "inviteFriend",
  • "utmcmd": "inviteFriend"
}

Verifies user's email activation token and logs in with it

Request Body schema: application/json
required

Registration Email Verification Request

new_password
required
string

New Password. Rules: Must have 8 characters, with small and big letters and numbers

new_password_confirmation
required
string

Must match with the new_password field

Responses

Request samples

Content type
application/json
{
  • "new_password": "string",
  • "new_password_confirmation": "string"
}

Response samples

Content type
application/json
{ }

Logs current token session out

Responses

Logs all user's token sessions out

Responses

Creates password reset token and sends it to user's email

Request Body schema: application/json
required

Password Reset Request

email
required
string

User's email address

Responses

Request samples

Content type
application/json
{
  • "email": "foobar@example.org"
}

Reset user's password with emailed hash

path Parameters
hash
required
string
Example: qkl3jrl2jrlj4rl24j24lkj2lk4j1ewflkj

Password change token hash sent in the email

Request Body schema: application/json
required

Password Change Request

new_password
required
string

New Password. Rules: Must have 8 characters, with small and big letters and numbers

new_password_confirmation
required
string

Must match with the new_password field

Responses

Request samples

Content type
application/json
{
  • "new_password": "string",
  • "new_password_confirmation": "string"
}

Accept agreement of type

path Parameters
type
required
string
Example: terms-of-service / industry-restrictions / has-confirmed-no-business-id

Type of service agreement: terms-of-service / industry-restrictions / has-confirmed-no-business-id

Responses

Approve loyalty membership terms

Responses

Returns currently logged in user's id

Responses

Response samples

Content type
application/json
{
  • "id": 0
}

Returns currently logged in user's basic data

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update user

Request Body schema: application/json
first_name
string

User's first name. Currently can be changed until the strong identification has been done.

last_name
string

User's last name. Currently can be changed until the strong identification has been done.

marketing_name
string
profession
string
show_primary_phone_number_on_invoice
boolean

Responses

Request samples

Content type
application/json
{
  • "first_name": "string",
  • "last_name": "string",
  • "marketing_name": "string",
  • "profession": "string",
  • "show_primary_phone_number_on_invoice": true
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Sets logged in user's email

Request Body schema: application/json
email
string (Email)

User's new email

password
string (Password)

User's password

Responses

Request samples

Content type
application/json
{
  • "email": "matti.meikalainen@example.com",
  • "password": "Salasana123"
}

Sets logged in user's primary or secondary phone number

The phone number must be in international format (starts with '+') and only contain numeric * characters (other than the '+' sign of course) e.g. '+358501234567'

path Parameters
type
required
string
Example: primary

Type of phone number. Must be either 'primary' or 'secondary'

Request Body schema: application/json
phone
string (Phone number)

User's new phone number

Responses

Request samples

Content type
application/json
{
  • "phone": "+358501234567"
}

Adds logged in user's primary phone number for the first time, cannot be done after INTRO_DONE

The phone number must be in international format (starts with '+') and only contain numeric * characters (other than the '+' sign of course) e.g. '+358501234567'

Request Body schema: application/json
phone
string (Phone number)

User's phone number

Responses

Request samples

Content type
application/json
{
  • "phone": "+358501234567"
}

Sets logged in user's home address, zip code, city and country

Request Body schema: application/json
street_address1
string (Street Address 1)

User's home address; number 1 at the end is just for consistency, member table has only 1 street address

zip_code
string (Zip Code)

User's home address zip code

city
string (City)

User's home city

country
string (Country)

User's home country's ISO code (i.e. 'FI', 'RU') or 'OTHER'

Responses

Request samples

Content type
application/json
{
  • "street_address1": "Tunkkaajakuja 1",
  • "zip_code": "69420",
  • "city": "Vantaa",
  • "country": "FI"
}

Deactivate user account

Responses

Sets user's nationality. Can be done only once after INTRO_DONE

Request Body schema: application/json
nationality
string (Nationality)

String ISO code or 'OTHER', examples: FI or RU or OTHER

Responses

Request samples

Content type
application/json
{
  • "nationality": "FI"
}

Sets logged in user's iban and reference number

Request Body schema: application/json
password
string (Password)

User's password

iban
string (Iban)

User's bank account's iban number

is_fast_payment_enabled
boolean (Fast payment enabled)

Should users salary always be paid as fast payment

salary_payment_setting
string (Salary payment setting)
Enum: "PAY_MYSELF" "IMMEDIATE" "TWICE_PER_MONTH" "LAST_OF_MONTH" "IN_MID_MONTH" "BEGINNING_OF_MONTH"

When users salary should be paid

Responses

Request samples

Content type
application/json
{
  • "password": "kissa123",
  • "iban": "FI58 4702 8173 0000 15",
  • "is_fast_payment_enabled": true,
  • "salary_payment_setting": "PAY_MYSELF"
}

Checks and validates if user's iban is allowed

Request Body schema: application/json
iban
string (Iban)

User's bank account's iban number

Responses

Request samples

Content type
application/json
{
  • "iban": "FI58 4702 8173 0000 15"
}

Changes logged in user's password

Request Body schema: application/json
old_password
string (Old Password)

User's old password

new_password
string (New Password)

User's new password

Responses

Request samples

Content type
application/json
{
  • "old_password": "kissa123",
  • "new_password": "kissa1234"
}

Changes logged in user's language selection. Affects emails etc

Request Body schema: application/json
language
string (language)

New selected language

Responses

Request samples

Content type
application/json
{
  • "language": "FI, EN, SV, RU, ET"
}

Add discount to user

Request Body schema: application/json
code
string

Discount code

Responses

Request samples

Content type
application/json
{
  • "code": "string"
}

Current User

Current User

Gets service agreement PDF

Responses

Gets proof of assignment PDF

Request Body schema: application/json
required

ProofOfAssignmentRequest

start_date
string <date>
end_date
string <date>
options
Array of strings
Items Enum: "NUMBER_OF_ASSIGNMENTS" "SUM_OF_ASSIGNMENTS" "WORK_HOURS" "PAID_GROSS_SALARY" "PAID_NET_SALARY" "UNPAID_GROSS_SALARY"

Responses

Request samples

Content type
application/json
{
  • "start_date": "2020-12-12",
  • "end_date": "2020-12-12",
  • "options": [
    ]
}

Gets travel expense report PDF

path Parameters
year
required
integer
Example: 2024

Report year

Responses

Gets expense report PDF

path Parameters
year
required
integer
Example: 2024

Report year

Responses

Get users unanswered questionnaire

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update questionnaire answer

path Parameters
questionnaire
required
integer
Example: 123

Questionnaire id

Request Body schema: application/json
required

QuestionnaireRequest

health_insurance_obligated
required
string
Enum: "YES" "NO" "OLD_AGE_PENSION" "INSURANCE_ELSEWHERE"

Is user health insurance obligated?

Responses

Request samples

Content type
application/json
{
  • "health_insurance_obligated": "YES"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Logs current token session out

Responses

Logs all user's token sessions out

Responses

Creates password reset token and sends it to user's email

Request Body schema: application/json
required

Password Reset Request

email
required
string

User's email address

Responses

Request samples

Content type
application/json
{
  • "email": "foobar@example.org"
}

Reset user's password with emailed hash

path Parameters
hash
required
string
Example: qkl3jrl2jrlj4rl24j24lkj2lk4j1ewflkj

Password change token hash sent in the email

Request Body schema: application/json
required

Password Change Request

new_password
required
string

New Password. Rules: Must have 8 characters, with small and big letters and numbers

new_password_confirmation
required
string

Must match with the new_password field

Responses

Request samples

Content type
application/json
{
  • "new_password": "string",
  • "new_password_confirmation": "string"
}

Get active invitation bonus campaign

Responses

Response samples

Content type
application/json
{
  • "from": "2020-09-20",
  • "to": "2020-09-20",
  • "bonus_invoice_sum": 0,
  • "invoicing_limit": 0
}

Override tax withholding percent

Request Body schema: application/json
required

DebtRequest

tax_percent
number <float>

Responses

Request samples

Content type
application/json
{
  • "tax_percent": "15.5"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete override tax withholding percent, fetches new tax card from VeroAPi

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Returns if the user can send invoices

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Returns items that require users actions

Responses

Response samples

Content type
application/json
{
  • "overdue": [
    ],
  • "rejected": [
    ],
  • "drafts": [
    ]
}

Returns overview of user's sent invoices

Responses

Response samples

Content type
application/json
{
  • "invoices_customer_paid_recently": [
    ],
  • "invoices_soon_to_overdue": [
    ],
  • "invoices_sent": [
    ],
  • "invoices_in_review": [
    ]
}

Returns user customer loyalty program related basic data

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Approve loyalty membership terms

Responses

Creates new MFA secret for user and sends SMS for verification

Responses

Verifies MFA secret with MFA code

Responses

Deactivates MFA for user

Responses

Sends SMS with deactivation code

Responses

Lists unread notifications

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Marks unread notification as read

path Parameters
notification_id
required
string <uuid>

Id of the notification which needs to be marked as read

Responses

Gives the current user an overview of their invoicing statistics

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Gives the current user an overview of their invoicing statistics monthly

query Parameters
year
int
Example: year=2024

Year to get the statistics from

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Gives the current user an overview of their invoicing statistics weekly

query Parameters
year
int
Example: year=2024

Year to get the statistics from

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Gives the current user an overview of their invoicing statistics

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Gives the current user an overview of their invoicing statistics for use in donut graph

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Gives the current user an overview of their travel and receipt expense statistics for use in donut graph

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Returns currently logged in user's id

Responses

Response samples

Content type
application/json
{
  • "id": 0
}

Returns currently logged in user's basic data

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update user

Request Body schema: application/json
first_name
string

User's first name. Currently can be changed until the strong identification has been done.

last_name
string

User's last name. Currently can be changed until the strong identification has been done.

marketing_name
string
profession
string
show_primary_phone_number_on_invoice
boolean

Responses

Request samples

Content type
application/json
{
  • "first_name": "string",
  • "last_name": "string",
  • "marketing_name": "string",
  • "profession": "string",
  • "show_primary_phone_number_on_invoice": true
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Updates the UserMetaData values by key

path Parameters
key
required
string
Example: INTRO_DONE

Key for the UserMetaData that we want to change

Responses

Update user's notification settings

Request Body schema: application/json
required

NotificationRequest

salary_paid
required
Array of strings
Items Enum: "sms" "email"

Notify about paid salary through sms and/or email or not. Empty array disables all.

invoice_paid
required
Array of strings
Items Enum: "sms" "email"

Notify about paid invoice through sms and/or email or not. Empty array disables all.

invoice_overdue
required
Array of strings
Items Enum: "sms" "email"

Notify about overdue invoice through sms and/or email or not. Empty array disables all.

is_missing_tax_card_notifications_enabled
boolean

Whether we need to notify the user about missing tax card or not

allow_marketing_email
boolean

Changes whether the user wants to receive marketing emails or not

Responses

Request samples

Content type
application/json
{
  • "salary_paid": [
    ],
  • "invoice_paid": [
    ],
  • "invoice_overdue": [
    ],
  • "is_missing_tax_card_notifications_enabled": true,
  • "allow_marketing_email": true
}

Sets logged in user's email

Request Body schema: application/json
email
string (Email)

User's new email

password
string (Password)

User's password

Responses

Request samples

Content type
application/json
{
  • "email": "matti.meikalainen@example.com",
  • "password": "Salasana123"
}

Sets logged in user's primary or secondary phone number

The phone number must be in international format (starts with '+') and only contain numeric * characters (other than the '+' sign of course) e.g. '+358501234567'

path Parameters
type
required
string
Example: primary

Type of phone number. Must be either 'primary' or 'secondary'

Request Body schema: application/json
phone
string (Phone number)

User's new phone number

Responses

Request samples

Content type
application/json
{
  • "phone": "+358501234567"
}

Adds logged in user's primary phone number for the first time, cannot be done after INTRO_DONE

The phone number must be in international format (starts with '+') and only contain numeric * characters (other than the '+' sign of course) e.g. '+358501234567'

Request Body schema: application/json
phone
string (Phone number)

User's phone number

Responses

Request samples

Content type
application/json
{
  • "phone": "+358501234567"
}

Sets logged in user's home address, zip code, city and country

Request Body schema: application/json
street_address1
string (Street Address 1)

User's home address; number 1 at the end is just for consistency, member table has only 1 street address

zip_code
string (Zip Code)

User's home address zip code

city
string (City)

User's home city

country
string (Country)

User's home country's ISO code (i.e. 'FI', 'RU') or 'OTHER'

Responses

Request samples

Content type
application/json
{
  • "street_address1": "Tunkkaajakuja 1",
  • "zip_code": "69420",
  • "city": "Vantaa",
  • "country": "FI"
}

Deactivate user account

Responses

Sets user's nationality. Can be done only once after INTRO_DONE

Request Body schema: application/json
nationality
string (Nationality)

String ISO code or 'OTHER', examples: FI or RU or OTHER

Responses

Request samples

Content type
application/json
{
  • "nationality": "FI"
}

Sets logged in user's iban and reference number

Request Body schema: application/json
password
string (Password)

User's password

iban
string (Iban)

User's bank account's iban number

is_fast_payment_enabled
boolean (Fast payment enabled)

Should users salary always be paid as fast payment

salary_payment_setting
string (Salary payment setting)
Enum: "PAY_MYSELF" "IMMEDIATE" "TWICE_PER_MONTH" "LAST_OF_MONTH" "IN_MID_MONTH" "BEGINNING_OF_MONTH"

When users salary should be paid

Responses

Request samples

Content type
application/json
{
  • "password": "kissa123",
  • "iban": "FI58 4702 8173 0000 15",
  • "is_fast_payment_enabled": true,
  • "salary_payment_setting": "PAY_MYSELF"
}

Checks and validates if user's iban is allowed

Request Body schema: application/json
iban
string (Iban)

User's bank account's iban number

Responses

Request samples

Content type
application/json
{
  • "iban": "FI58 4702 8173 0000 15"
}

Changes logged in user's password

Request Body schema: application/json
old_password
string (Old Password)

User's old password

new_password
string (New Password)

User's new password

Responses

Request samples

Content type
application/json
{
  • "old_password": "kissa123",
  • "new_password": "kissa1234"
}

Changes logged in user's language selection. Affects emails etc

Request Body schema: application/json
language
string (language)

New selected language

Responses

Request samples

Content type
application/json
{
  • "language": "FI, EN, SV, RU, ET"
}

Return user's pension

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Return user's foreclosure

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Return user's default occupation from last sent invoice

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Add discount to user

Request Body schema: application/json
code
string

Discount code

Responses

Request samples

Content type
application/json
{
  • "code": "string"
}

Make Strong Identity Verification / Strong Authentication with Telia

Request Body schema: application/json
code
string

Exchange Code from Telias authentication system

Responses

Request samples

Content type
application/json
{
  • "code": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Gets current user's Pending Name Change data

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Selects and verifies the IDP provided name

Request Body schema: application/json
selected_first_name
string

Teppo

Responses

Request samples

Content type
application/json
{
  • "selected_first_name": "string"
}

Documents

Documents

Gets service agreement PDF

Responses

Gets proof of assignment PDF

Request Body schema: application/json
required

ProofOfAssignmentRequest

start_date
string <date>
end_date
string <date>
options
Array of strings
Items Enum: "NUMBER_OF_ASSIGNMENTS" "SUM_OF_ASSIGNMENTS" "WORK_HOURS" "PAID_GROSS_SALARY" "PAID_NET_SALARY" "UNPAID_GROSS_SALARY"

Responses

Request samples

Content type
application/json
{
  • "start_date": "2020-12-12",
  • "end_date": "2020-12-12",
  • "options": [
    ]
}

Gets travel expense report PDF

path Parameters
year
required
integer
Example: 2024

Report year

Responses

Gets expense report PDF

path Parameters
year
required
integer
Example: 2024

Report year

Responses

Health insurance questionnaire

Health insurance questionnaire

Get users unanswered questionnaire

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update questionnaire answer

path Parameters
questionnaire
required
integer
Example: 123

Questionnaire id

Request Body schema: application/json
required

QuestionnaireRequest

health_insurance_obligated
required
string
Enum: "YES" "NO" "OLD_AGE_PENSION" "INSURANCE_ELSEWHERE"

Is user health insurance obligated?

Responses

Request samples

Content type
application/json
{
  • "health_insurance_obligated": "YES"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

OAuth

OAuth

Logs current token session out

Responses

Logs all user's token sessions out

Responses

Utilities

Utilities

Return basic company information for Ukko.fi

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Invoices

Invoices

Returns industry categories and subcategories or searched industries with search parameter

Display a listing of the resource.

query Parameters
search
string

(Optional) search industries by name e.g. /invoices/industries?search=tarkastaja

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Returns a top level category's subcategories, a subcategory or industries

Display the specified resource.

path Parameters
category
required
integer
Example: 100

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Gets all user's non- team invoices by category_type and type

path Parameters
category_type
required
string
Example: empty / own / team / partof

Type of Invoices list: empty / own / team / partof

type
required
string
Example: empty/all | paid | unpaid | open | user_action_required

Type of Invoices list: empty/all | paid | unpaid | open | user_action_required

query Parameters
page
integer

Pagination page id

limit
integer
Example: limit=50

Limit per page. Default 50, max 1000

sort
string
Example: sort=created_at | updated_at | invoice_number * | due_date | company_name | contact_person * | total_sum_with_vat | delivery_method | status * | company_name, contact_person

Sort by ascending order, add '-' prefix to get * descending order, ie. -total. To sort by * client_name, use company_name, contact_person

filter[*field_name*]
string
Example: filter[*field_name*]=filter[common_search] = 'foobar', other keys: * common_search * | created_at | updated_at | invoice_number * | due_date | contact_person | company_name * | client_name | delivery_method * | due_date_start (format: YYYY-m-d) * | due_date_end (format: YYYY-m-d) * | search_date_between (format: YYYY-m-d|YYYY-m-d) * either one can be omitted

Sort fields. Array of filtered fields, so * filter[email] = foobar@doobar.com * filter[due_date_start] = 2022-01-01 * filter[due_date_end] = 2022-01-31 * NOTE: This is an AND search

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Create invoice

Request Body schema: application/json
required

Invoice

company_name
string

Name of the client company

business_id
string

Finnish Business Id (Y-tunnus) or Registered Association id or so

einvoice_address
string

EINvoice/Finvoice address

contact_person
string

Client contact person

client_type
string
Enum: "COMPANY" "PERSON"

The type of the client

language
string
Enum: "FI" "EN" "SV"

Language of the invoice

street_address1
string

Street address of the client

zip_code
string

Zipcode of the client

city
string

City of the client

country
string

Client's country as ISO short code (FI, GB, RU etc)

email
string <email>

Client's email. Required if the delivery_method is EMAIL

additional_email_recipients
Array of strings <email> [ items <email > ]

Additional invoice recipients email addresses as array list, MAX: 5

clients_reference
string

Client's preferred reference string

message_for_admin
string

User given message for admins processing the invoice

occupation_id
integer

Id of the occupation the work done relates to

user_confirmed_work_in_finland
boolean

User's assurance that the work was performed in Finland if the country is other than FI. Not required if country is FI

autocollect
boolean
Deprecated

Deprecated When true UKKO.fi takes care of invoice follow-up, overdue notices and debt collection

notify_overdue_and_automatic_debt_collection
boolean

When true UKKO.fi takes care of invoice follow-up, overdue notices and debt collection

term_of_payment
integer

Term of payment in days from now

display_vat_rate_id
integer

Id of the display vat rate. Required if vat_rate is not set

vat_rate
string
Enum: "VAT_REGULAR" "VAT_ARTISTS_REWARD" "VAT_COMPANY_IN_ANOTHER_EU_COUNTRY" "VAT_CONSTRUCTION_REVERSE_CHARGE" "VAT_COPYRIGHT" "VAT_DOMESTIC_SHIPPING_WORK" "VAT_EUROPEAN_UNION" "VAT_EXERCISE_GUIDANCE" "VAT_INVOICING_OUTSIDE_OF_EU" "VAT_WORK_ON_A_FOREIGN_SHIP"

Vat rate of the invoice. Required if display_vat_rate_id is not set

vat_rate_explanation
string

Not required for REGULAR, RESTAURANT_AND_CATERING_SERVICES

delivery_method
string
Enum: "EINVOICE" "MAIL" "EMAIL"

Invoice Delivery Option, EINVOICE allowed only for companies, if country is OTHER, then only email is allowed

fast_payment
boolean

null, true, false

sent_to_public_sector_operator
boolean

null, true, false

cost_center
string

Cost center

order_number
string

Order number

agreement_number
string

Agreement number

Array of objects

Send only user created rows, never rows with row_type being anything else but null

  •                      (ie. RECEIPT_EXPENSE or TRAVEL_EXPENSE)
    
Array of objects

Emails and profit of the team members. Not including the owner.

Responses

Request samples

Content type
application/json
{
  • "company_name": "string",
  • "business_id": "6811327-1",
  • "einvoice_address": "FIxxxxxxxxxxxxxxxx",
  • "contact_person": "string",
  • "client_type": "COMPANY",
  • "language": "FI",
  • "street_address1": "string",
  • "zip_code": "string",
  • "city": "string",
  • "country": "FI",
  • "email": "user@example.com",
  • "additional_email_recipients": [
    ],
  • "clients_reference": "12342352345",
  • "message_for_admin": "Added missing attachment",
  • "occupation_id": 0,
  • "user_confirmed_work_in_finland": true,
  • "autocollect": true,
  • "notify_overdue_and_automatic_debt_collection": true,
  • "term_of_payment": "14",
  • "display_vat_rate_id": 0,
  • "vat_rate": "VAT_REGULAR",
  • "vat_rate_explanation": "Text",
  • "delivery_method": "EMAIL",
  • "fast_payment": true,
  • "sent_to_public_sector_operator": true,
  • "cost_center": "Text",
  • "order_number": "Text",
  • "agreement_number": "Text",
  • "rows": [
    ],
  • "team_members": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Sends invoice to processing

path Parameters
invoice_id
required
string

Invoice to be sent to processing

Responses

Gets full data of user's one Invoice

path Parameters
invoice_id
required
integer

Invoice id

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Deletes Invoice

path Parameters
invoice_id
required
integer

Responses

Update invoice

path Parameters
invoice_id
required
integer

Invoice id

Request Body schema: application/json
required

Invoice

company_name
string

Name of the client company

business_id
string

Finnish Business Id (Y-tunnus) or Registered Association id or so

einvoice_address
string

EINvoice/Finvoice address

contact_person
string

Client contact person

client_type
string
Enum: "COMPANY" "PERSON"

The type of the client

language
string
Enum: "FI" "EN" "SV"

Language of the invoice

street_address1
string

Street address of the client

zip_code
string

Zipcode of the client

city
string

City of the client

country
string

Client's country as ISO short code (FI, GB, RU etc)

email
string <email>

Client's email. Required if the delivery_method is EMAIL

additional_email_recipients
Array of strings <email> [ items <email > ]

Additional invoice recipients email addresses as array list, MAX: 5

clients_reference
string

Client's preferred reference string

message_for_admin
string

User given message for admins processing the invoice

occupation_id
integer

Id of the occupation the work done relates to

user_confirmed_work_in_finland
boolean

User's assurance that the work was performed in Finland if the country is other than FI. Not required if country is FI

autocollect
boolean
Deprecated

Deprecated When true UKKO.fi takes care of invoice follow-up, overdue notices and debt collection

notify_overdue_and_automatic_debt_collection
boolean

When true UKKO.fi takes care of invoice follow-up, overdue notices and debt collection

term_of_payment
integer

Term of payment in days from now

display_vat_rate_id
integer

Id of the display vat rate. Required if vat_rate is not set

vat_rate
string
Enum: "VAT_REGULAR" "VAT_ARTISTS_REWARD" "VAT_COMPANY_IN_ANOTHER_EU_COUNTRY" "VAT_CONSTRUCTION_REVERSE_CHARGE" "VAT_COPYRIGHT" "VAT_DOMESTIC_SHIPPING_WORK" "VAT_EUROPEAN_UNION" "VAT_EXERCISE_GUIDANCE" "VAT_INVOICING_OUTSIDE_OF_EU" "VAT_WORK_ON_A_FOREIGN_SHIP"

Vat rate of the invoice. Required if display_vat_rate_id is not set

vat_rate_explanation
string

Not required for REGULAR, RESTAURANT_AND_CATERING_SERVICES

delivery_method
string
Enum: "EINVOICE" "MAIL" "EMAIL"

Invoice Delivery Option, EINVOICE allowed only for companies, if country is OTHER, then only email is allowed

fast_payment
boolean

null, true, false

sent_to_public_sector_operator
boolean

null, true, false

cost_center
string

Cost center

order_number
string

Order number

agreement_number
string

Agreement number

Array of objects

Send only user created rows, never rows with row_type being anything else but null

  •                      (ie. RECEIPT_EXPENSE or TRAVEL_EXPENSE)
    
Array of objects

Emails and profit of the team members. Not including the owner.

Responses

Request samples

Content type
application/json
{
  • "company_name": "string",
  • "business_id": "6811327-1",
  • "einvoice_address": "FIxxxxxxxxxxxxxxxx",
  • "contact_person": "string",
  • "client_type": "COMPANY",
  • "language": "FI",
  • "street_address1": "string",
  • "zip_code": "string",
  • "city": "string",
  • "country": "FI",
  • "email": "user@example.com",
  • "additional_email_recipients": [
    ],
  • "clients_reference": "12342352345",
  • "message_for_admin": "Added missing attachment",
  • "occupation_id": 0,
  • "user_confirmed_work_in_finland": true,
  • "autocollect": true,
  • "notify_overdue_and_automatic_debt_collection": true,
  • "term_of_payment": "14",
  • "display_vat_rate_id": 0,
  • "vat_rate": "VAT_REGULAR",
  • "vat_rate_explanation": "Text",
  • "delivery_method": "EMAIL",
  • "fast_payment": true,
  • "sent_to_public_sector_operator": true,
  • "cost_center": "Text",
  • "order_number": "Text",
  • "agreement_number": "Text",
  • "rows": [
    ],
  • "team_members": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Gets public PDF version of the Invoice

path Parameters
invoice_id
required
integer

Invoice id

hash
required
string

hash

Responses

Gets PDF version of the Invoice

path Parameters
invoice_id
required
integer

Invoice id

Responses

Get Trips by invoice

path Parameters
invoice_id
required
string

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Get travel expenses by invoice

path Parameters
invoice_id
required
string

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Get receipt expenses by invoice

path Parameters
invoice_id
required
string
query Parameters
sort
string
Enum: "purchase_date" "place_of_purchase" "client_name" "total_sum"
Example: sort=purchase_date | place_of_purchase | client_name | total_sum

Sort by ascending order, add -place_of_purchase to get descending order

limit
integer
Example: limit=50

Limit per page. Default 50, max 1000

page
integer

Pagination page id

filter[*field_name*]
string
Example: filter[*field_name*]=filter[place_of_purchase] = 'prisma', other keys: type | purchase_date_start | purchase_end_date | common_search

Sort fields. Array field, so filter[email] = foobar@doobar.com

  •              filter[search_date_between] = 2022-01-01|2022-01-31
    
  •                  If you omit the start date use |2022-01-31
    

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get salary estimate for invoice

path Parameters
invoice_id
required
string
user_id
required
string
query Parameters
withholding_tax_percentage
number
Example: withholding_tax_percentage=20.00

If the user hasn't given his/her tax card withholding tax percentage, it can be given here

Responses

Response samples

Content type
application/json
{
  • "id": "2022",
  • "invoicing_vat_percent": "24",
  • "total_invoicing_sum_with_vat": {
    },
  • "total_invoicing_sum_without_vat": {
    },
  • "total_invoicing_sum_vat": {
    },
  • "work_hours": "20.3",
  • "company_fees": {
    },
  • "company_fees_sum": {
    },
  • "total_invoicing_sum_without_vat_minus_company_fees": {
    },
  • "combined_expenses_sum_with_vat": {
    },
  • "combined_expenses_sum_without_vat": {
    },
  • "combined_expenses_vat_sum": {
    },
  • "receipt_expenses_without_vat_sum": {
    },
  • "receipt_expenses_with_vat_sum": {
    },
  • "receipt_expenses_vat_sum": {
    },
  • "travel_expenses": {
    },
  • "travel_expenses_sum": {
    },
  • "base_salary": {
    },
  • "employer_fees": { },
  • "gross_salary": {
    },
  • "employee_fees": {
    },
  • "employee_fees_percent": "24.00",
  • "employee_fees_sum": {
    },
  • "holiday_compensation_percent": "24.00",
  • "salary_without_holiday_compensation": {
    },
  • "holiday_compensation": {
    },
  • "legacy_health_insurance_percent": "0.74",
  • "legacy_health_insurance_fee": {
    },
  • "health_insurance_debt_amount": {
    },
  • "net_salary": {
    },
  • "is_yel_enabled": "true",
  • "is_required_yel_payments_paid": "true",
  • "yel": {
    },
  • "withheld_health_insurance_fee_without_vat": {
    },
  • "withheld_health_insurance_fee_vat_sum": {
    },
  • "withheld_health_insurance_fee_with_vat": {
    },
  • "withheld_health_insurance_percent": "0.74",
  • "withheld_health_insurance_vat_percent": "24.0",
  • "sum_to_calculate_foreclosure_from": {
    },
  • "sum_before_foreclosure": {
    },
  • "foreclosure": {
    },
  • "sum_after_foreclosure": {
    },
  • "salary_fees_without_vat_sum": {
    },
  • "salary_fees_vat_sum": {
    },
  • "salary_fees_with_vat_sum": {
    },
  • "salary_fees": {
    },
  • "sum_after_salary_fees": {
    },
  • "final_salary": {
    },
  • "final_salary_with_expenses": {
    },
  • "final_expenses": {
    },
  • "personal_deductions_sum": {
    },
  • "country": "",
  • "calculation_year": "2020",
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00",
  • "calculation_date": "2020-09-20T18:30:00+03:00",
  • "user_age": "18",
  • "user_birth_year": "1980",
  • "is_strict_checked": "true",
  • "is_fast_payment_enabled": "true",
  • "is_extra_service_fee_enabled": "true",
  • "adjusted_tax_percent": "true",
  • "paid_salary_id": "123124",
  • "paid_salary_date": "2020-09-20T18:30:00+03:00",
  • "salary_buckets": [
    ],
  • "is_salary_too_small_for_fast_payment": "true",
  • "juel_total_sum": {
    }
}

DEPRECATED Get a legacy salary estimate for invoice

path Parameters
invoice_id
required
string
user_id
required
number
query Parameters
withholding_tax_percentage
number
Example: withholding_tax_percentage=20.00

If the user hasn't given his/her tax card withholding tax percentage, it can be given here

Responses

Is salary valid with new additional travel expense sum

path Parameters
invoice_id
required
integer
required
object (Money)

Money value schema

travel_expense_id
required
number

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Is user (by email) valid for team invoice

path Parameters
invoice_id
required
integer
Request Body schema: application/json
email
string

email of user who is checked to be valid for team invoice

Responses

Request samples

Content type
application/json
{
  • "email": "string"
}

Is salary valid with new additional receipt expense sum

path Parameters
invoice_id
required
integer
required
object (Money)

Money value schema

expense_vat_percent
required
number
receipt_expense_id
required
integer

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Is salary valid for invoice without expenses

path Parameters
invoice_id
required
integer

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Duplicate invoice

path Parameters
invoice_id
required
integer

Invoice id

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Create credit note (hyvityslasku) from invoice

path Parameters
invoice_id
required
integer

Invoice id from which the credit note is created from

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Validate einvoice address

Request Body schema: application/json
einvoice_address
string

Einvoice address to validate

Responses

Request samples

Content type
application/json
{
  • "einvoice_address": "003702246922"
}

Public

Public

Gets public PDF version of the Invoice

path Parameters
invoice_id
required
integer

Invoice id

hash
required
string

hash

Responses

Travel Expenses V3

Travel Expenses V3

Get Trips by invoice

path Parameters
invoice_id
required
string

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Discards invoices trips

Discard trips

path Parameters
invoice_id
required
integer

Invoice id

Responses

Set invoices trips to in review

Set invoices trips to in review

path Parameters
invoice_id
required
integer

invoice's id

Responses

Get all routes of travel day

path Parameters
trip
required
integer

Trip ID

travel_day
required
integer

Trip ID

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Creates new Route Points

path Parameters
trip_id
required
integer

Trip ID

travel_day_id
required
integer

Trip ID

Request Body schema: application/json
required

Route Point

Array of objects (Travel expense route)

Responses

Request samples

Content type
application/json
{
  • "": [
    ]
}

Response samples

Content type
application/json
{
  • "": {
    }
}

Get all trip's travel days

path Parameters
trip
required
integer

Trip ID

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Delete trip travel day

path Parameters
trip_id
required
integer

Trip ID

travel_day_id
required
integer

Trip ID

Responses

Patch trip's travel days

path Parameters
trip_id
required
integer

Trip ID

travel_day_id
required
integer

Trip ID

Request Body schema: application/json
required

Trip's travel day

travel_end_date
string (Date)

date in Y-m-d format

travel_start_time
string (Time)

time in H:i:s format

travel_end_time
string (Time)

time in H:i:s format

apply_for_daily_allowances
boolean

Does this travel day include daily allowances (haen_päivärahoja)

apply_for_kilometer_allowances
boolean

Does this travel day include kilometer allowances (haen_kilometri_korvauksia)

apply_for_meal_money
boolean

Does this travel day include meal allowances (haen_ateria_korvauksia)

is_roundtrip
boolean

is this travel day a round trip

provided_free_meals
integer

Amount of free meals

work_time
integer

Work time in minutes

Responses

Request samples

Content type
application/json
{
  • "travel_end_date": "2020-09-20",
  • "travel_start_time": "18:30:00",
  • "travel_end_time": "18:30:00",
  • "apply_for_daily_allowances": true,
  • "apply_for_kilometer_allowances": true,
  • "apply_for_meal_money": true,
  • "is_roundtrip": true,
  • "provided_free_meals": "0, 1, 2",
  • "work_time": "1440"
}

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Duplicate travel day to the end of the trip

path Parameters
trip_id
required
integer

Trip's id

travel_day_id
required
integer

Travel Day's id

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "trip_id": 0,
  • "country": {
    },
  • "city": {
    },
  • "apply_for_kilometer_allowances": true,
  • "apply_for_daily_allowances": true,
  • "is_roundtrip": true,
  • "provided_free_meals": 0,
  • "allowances": {
    },
  • "work_time": 1440,
  • "created_at": "2020-09-20T18:30:00+03:00",
  • "updated_at": "2020-09-20T18:30:00+03:00",
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00"
}

Get travel days allowances

path Parameters
trip_id
required
integer

Trip's id

travel_day_id
required
integer

Travel Day's id

Responses

Response samples

Content type
application/json
{
  • "total_travel_day_count": 0,
  • "allowances": {
    }
}

Select travel days allowances

path Parameters
trip_id
required
integer

Trip's id

travel_day_id
required
integer

Travel Day's id

Request Body schema: application/json
required

Allowance request

object

Responses

Request samples

Content type
application/json
{
  • "allowances": {
    }
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "trip_id": 0,
  • "country": {
    },
  • "city": {
    },
  • "apply_for_kilometer_allowances": true,
  • "apply_for_daily_allowances": true,
  • "is_roundtrip": true,
  • "provided_free_meals": 0,
  • "allowances": {
    },
  • "work_time": 1440,
  • "created_at": "2020-09-20T18:30:00+03:00",
  • "updated_at": "2020-09-20T18:30:00+03:00",
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00"
}

Copy travel day settings to trip's other travel days

path Parameters
trip_id
required
integer

Trip's id

travel_day_id
required
integer

Travel Day's id

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get all users travel expenses by type

path Parameters
type
required
string
Example: empty/all | draft | in_review | rejected | discarded | approved | waiting_for_invoice_sending | user_action_required

Type of Receipt Expense list: all | draft | in_review | rejected | discarded | approved | waiting_for_invoice_sending | user_action_required

query Parameters
page
integer

Pagination page id

limit
integer
Example: limit=50

Limit per page. Default 50, max 1000

sort
string
Example: sort=-start_date

Sort by ascending order, add '-' prefix to get descending order, ie. -total.

filter[*field_name*]
string

Filter fields. Array of filtered fields, so filter[common_search] = 'Foo' or '5.00` etc filter[client_description] = 'Foo', filter[work_description] = 'Bar', filter[search_date_between] = 2022-01-01|2022-01-31. If you omit the start date use |2022-01-31. NOTE: This is an AND search

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get trip by id

path Parameters
trip_id
required
integer

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "invoice_id": 0,
  • "default_country": "FI",
  • "default_city_id": 0,
  • "invoice_from_customer": true,
  • "apply_for_kilometers": true,
  • "apply_for_allowances": true,
  • "client_description": "string",
  • "work_description": "string",
  • "type": "string",
  • "additional_information": "string",
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00",
  • "default_vehicle_register_plate": "string",
  • "default_vehicle_type": "CAR",
  • "status": "DRAFT",
  • "allowances": {
    },
  • "total_sum": {
    },
  • "first_routepoint_address": "string",
  • "last_routepoint_address": "string",
  • "created_at": "2020-09-20T18:30:00+03:00",
  • "updated_at": "2020-09-20T18:30:00+03:00",
  • "invoice": [
    ],
  • "action_message": [
    ]
}

Does user have overlapping trips for the current date

query Parameters
trip
integer
date
required
string
Example: date=2024-04-04

For checking other date for overlaps than the trip's current one

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Creates new Trip

Request Body schema: application/json
required

Travel Expense Trip

apply_for_allowances
boolean

Does this travel expense include daily allowances (haen_päivärahoja)

apply_for_kilometers
boolean

Does this travel expense include kilometer allowances (haen_kilometrejä)

default_country
string

(Takes ISO code of the country in countries table and saves id in the database)

default_city_id
integer

Id of the city in cities table (GET /countries endpoint returns all caountries and their cities name and id)

client_description
string

Customers name or work item

work_description
string

Description of the work that was done

additional_information
string

Additional information

type
string
Enum: "MULTI_DAY" "PER_DAY"

Type of the trip

start_date
string (DateTime)

date time in Y-m-d\TH:i:sP format

end_date
string (DateTime)

date time in Y-m-d\TH:i:sP format

register_plate
string

Is one-day trip from home / work back to home or work instead of spanning into one long multi-day trip?

vehicle_type
string (VehicleType)
Enum: "CAR" "MOTOR_BOAT_MAX_50_HP" "MOTOR_BOAT_OVER_50_HP" "SNOWMOBILE" "ATV" "MOTORCYCLE" "MOPED" "BICYCLE"

Type of vehicle

Responses

Request samples

Content type
application/json
{
  • "apply_for_allowances": true,
  • "apply_for_kilometers": true,
  • "default_country": "FI",
  • "default_city_id": 0,
  • "client_description": "string",
  • "work_description": "string",
  • "additional_information": "string",
  • "type": "MULTI_DAY",
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00",
  • "register_plate": "BOI-111",
  • "vehicle_type": "CAR"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Add travel expense to invoice row

path Parameters
trip
required
integer

Trips's id

Request Body schema: application/json
required

Travel Expense Trip

apply_for_allowances
boolean

Does this travel expense include daily allowances (haen_päivärahoja)

apply_for_kilometers
boolean

Does this travel expense include kilometer allowances (haen_kilometrejä)

default_country
string

(Takes ISO code of the country in countries table and saves id in the database)

default_city_id
integer

Id of the city in cities table (GET /countries endpoint returns all caountries and their cities name and id)

client_description
string

Customers name or work item

work_description
string

Description of the work that was done

additional_information
string

Additional information

type
string
Enum: "MULTI_DAY" "PER_DAY"

Type of the trip

start_date
string (DateTime)

date time in Y-m-d\TH:i:sP format

end_date
string (DateTime)

date time in Y-m-d\TH:i:sP format

register_plate
string

Is one-day trip from home / work back to home or work instead of spanning into one long multi-day trip?

vehicle_type
string (VehicleType)
Enum: "CAR" "MOTOR_BOAT_MAX_50_HP" "MOTOR_BOAT_OVER_50_HP" "SNOWMOBILE" "ATV" "MOTORCYCLE" "MOPED" "BICYCLE"

Type of vehicle

Responses

Request samples

Content type
application/json
{
  • "apply_for_allowances": true,
  • "apply_for_kilometers": true,
  • "default_country": "FI",
  • "default_city_id": 0,
  • "client_description": "string",
  • "work_description": "string",
  • "additional_information": "string",
  • "type": "MULTI_DAY",
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00",
  • "register_plate": "BOI-111",
  • "vehicle_type": "CAR"
}

Updates a Trip

path Parameters
travel_expense_id
required
integer

Travel expense's id

Request Body schema: application/json
required

Travel Expense Trip

apply_for_allowances
boolean

Does this travel expense include daily allowances (haen_päivärahoja)

apply_for_kilometers
boolean

Does this travel expense include kilometer allowances (haen_kilometrejä)

default_country
string

(Takes ISO code of the country in countries table and saves id in the database)

default_city_id
integer

Id of the city in cities table (GET /countries endpoint returns all caountries and their cities name and id)

client_description
string

Customers name or work item

work_description
string

Description of the work that was done

additional_information
string

Additional information

type
string
Enum: "MULTI_DAY" "PER_DAY"

Type of the trip

start_date
string (DateTime)

date time in Y-m-d\TH:i:sP format

end_date
string (DateTime)

date time in Y-m-d\TH:i:sP format

register_plate
string

Is one-day trip from home / work back to home or work instead of spanning into one long multi-day trip?

vehicle_type
string (VehicleType)
Enum: "CAR" "MOTOR_BOAT_MAX_50_HP" "MOTOR_BOAT_OVER_50_HP" "SNOWMOBILE" "ATV" "MOTORCYCLE" "MOPED" "BICYCLE"

Type of vehicle

Responses

Request samples

Content type
application/json
{
  • "apply_for_allowances": true,
  • "apply_for_kilometers": true,
  • "default_country": "FI",
  • "default_city_id": 0,
  • "client_description": "string",
  • "work_description": "string",
  • "additional_information": "string",
  • "type": "MULTI_DAY",
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00",
  • "register_plate": "BOI-111",
  • "vehicle_type": "CAR"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Attach invoice to trip

path Parameters
trip_id
required
integer

Trip's id

invoice_id
required
integer

Invoice's id

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Calculate Trip totals

Calculate and save sums to Trip from the Trip's TravelDays

path Parameters
trip_id
required
integer

Trip's id

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Overview data for trip

Overview data for trip

path Parameters
trip_id
required
integer

Trip's id

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Sets trip ready to processing

Check that trip & salary calculation is valid + sets trip to processing

path Parameters
trip_id
required
integer

Trip's id

Responses

Duplicate Trip

Duplicates Trip, TravelDays, RoutePoints and Passengers

path Parameters
trip_id
required
integer

Original trip's id

Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "data": {
    }
}

Travel Expenses

Travel Expenses

Get travel expenses by invoice

path Parameters
invoice_id
required
string

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Get travel expense by id

path Parameters
travel_expense_id
required
integer

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get's all children of a parent travel expense

path Parameters
parent_travel_expense_id
required
integer

Parent travel expense's id

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get's childs parent travel expense

path Parameters
child_travel_expense_id
required
integer

Child travel expense's id

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "purpose_of_trip": "Alkusammuttimen tarkastus & huolto",
  • "trip_destination": "Itämerenkatu 1, 00180 Helsinki",
  • "invoice": [
    ],
  • "timespan": "PER_DAY",
  • "country": "FI",
  • "daily_allowance_city_id": "123",
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00",
  • "whole_trip_start_date": "2020-09-20T18:30:00+03:00",
  • "whole_trip_end_date": "2020-09-20T18:30:00+03:00",
  • "provided_free_meals": 0,
  • "work_time": 0,
  • "assure_work_is_temporary": true,
  • "additional_info": "string",
  • "include_to_invoice_row": true,
  • "is_round_trip": true,
  • "status": "string",
  • "vehicle": {
    },
  • "calculate_kilometer_allowances": true,
  • "calculate_daily_allowances": true,
  • "calculate_meal_allowances": true,
  • "routes": [
    ],
  • "passengers": [
    ],
  • "allowances": {
    },
  • "rejection_note": {
    },
  • "attachments": [
    ]
}

Get all user's parent travel expense by type

path Parameters
type
required
string
Example: empty/all | draft | in_review * | rejected | discarded | approved * | waiting_for_invoice_sending | user_action_required

Type of Receipt Expense list: all | draft | in_review * | rejected | discarded | approved * | waiting_for_invoice_sending | user_action_required

query Parameters
page
integer

Pagination page id

limit
integer
Example: limit=50

Limit per page. Default 50, max 1000

sort
string
Example: sort=@TODO

Sort by ascending order, add '-' prefix to get * descending order, ie. -total.

filter[*field_name*]
string

Filter fields. Array of filtered fields, so * filter[common_search] = 'Nuorgam' or '5.00` etc * filter[trip_destination] = 'Nuorgam' * filter[search_date_between] = 2022-01-01|2022-01-31 * If you omit the start date use |2022-01-31 * NOTE: This is an AND search

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Calculates and returns the whole trip overview of the parent Travel expense and its children

path Parameters
travel_expense_id
required
integer

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Calculated salary

Calculated salary

Get salary estimate for invoice

path Parameters
invoice_id
required
string
user_id
required
string
query Parameters
withholding_tax_percentage
number
Example: withholding_tax_percentage=20.00

If the user hasn't given his/her tax card withholding tax percentage, it can be given here

Responses

Response samples

Content type
application/json
{
  • "id": "2022",
  • "invoicing_vat_percent": "24",
  • "total_invoicing_sum_with_vat": {
    },
  • "total_invoicing_sum_without_vat": {
    },
  • "total_invoicing_sum_vat": {
    },
  • "work_hours": "20.3",
  • "company_fees": {
    },
  • "company_fees_sum": {
    },
  • "total_invoicing_sum_without_vat_minus_company_fees": {
    },
  • "combined_expenses_sum_with_vat": {
    },
  • "combined_expenses_sum_without_vat": {
    },
  • "combined_expenses_vat_sum": {
    },
  • "receipt_expenses_without_vat_sum": {
    },
  • "receipt_expenses_with_vat_sum": {
    },
  • "receipt_expenses_vat_sum": {
    },
  • "travel_expenses": {
    },
  • "travel_expenses_sum": {
    },
  • "base_salary": {
    },
  • "employer_fees": { },
  • "gross_salary": {
    },
  • "employee_fees": {
    },
  • "employee_fees_percent": "24.00",
  • "employee_fees_sum": {
    },
  • "holiday_compensation_percent": "24.00",
  • "salary_without_holiday_compensation": {
    },
  • "holiday_compensation": {
    },
  • "legacy_health_insurance_percent": "0.74",
  • "legacy_health_insurance_fee": {
    },
  • "health_insurance_debt_amount": {
    },
  • "net_salary": {
    },
  • "is_yel_enabled": "true",
  • "is_required_yel_payments_paid": "true",
  • "yel": {
    },
  • "withheld_health_insurance_fee_without_vat": {
    },
  • "withheld_health_insurance_fee_vat_sum": {
    },
  • "withheld_health_insurance_fee_with_vat": {
    },
  • "withheld_health_insurance_percent": "0.74",
  • "withheld_health_insurance_vat_percent": "24.0",
  • "sum_to_calculate_foreclosure_from": {
    },
  • "sum_before_foreclosure": {
    },
  • "foreclosure": {
    },
  • "sum_after_foreclosure": {
    },
  • "salary_fees_without_vat_sum": {
    },
  • "salary_fees_vat_sum": {
    },
  • "salary_fees_with_vat_sum": {
    },
  • "salary_fees": {
    },
  • "sum_after_salary_fees": {
    },
  • "final_salary": {
    },
  • "final_salary_with_expenses": {
    },
  • "final_expenses": {
    },
  • "personal_deductions_sum": {
    },
  • "country": "",
  • "calculation_year": "2020",
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00",
  • "calculation_date": "2020-09-20T18:30:00+03:00",
  • "user_age": "18",
  • "user_birth_year": "1980",
  • "is_strict_checked": "true",
  • "is_fast_payment_enabled": "true",
  • "is_extra_service_fee_enabled": "true",
  • "adjusted_tax_percent": "true",
  • "paid_salary_id": "123124",
  • "paid_salary_date": "2020-09-20T18:30:00+03:00",
  • "salary_buckets": [
    ],
  • "is_salary_too_small_for_fast_payment": "true",
  • "juel_total_sum": {
    }
}

DEPRECATED Get a legacy salary estimate for invoice

path Parameters
invoice_id
required
string
user_id
required
number
query Parameters
withholding_tax_percentage
number
Example: withholding_tax_percentage=20.00

If the user hasn't given his/her tax card withholding tax percentage, it can be given here

Responses

Is salary valid with new additional travel expense sum

path Parameters
invoice_id
required
integer
required
object (Money)

Money value schema

travel_expense_id
required
number

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Is salary valid with new additional receipt expense sum

path Parameters
invoice_id
required
integer
required
object (Money)

Money value schema

expense_vat_percent
required
number
receipt_expense_id
required
integer

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Is salary valid for invoice without expenses

path Parameters
invoice_id
required
integer

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Gets PDF version of the calculated salary

path Parameters
calculated_salary_id
required
integer

calculated salary id

Responses

Legal Entities

Legal Entities

Gets public basic data of Finnish Companies

path Parameters
business_id
required
string
Example: 1234567-8

Finnish Business Id (Y-tunnus)

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Gets European Company VAT data

path Parameters
vat_id
required
string
Example: FI12345678

VAT Id in country specific format

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Search for company by name

path Parameters
query
required
string

Search query string

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Questionnaires

Questionnaires

Starts and creates new AnswerSet for Questionnaire

path Parameters
questionnaire_slug
required
string

Questionnaire slug that's used for every questionnaire

query Parameters
language
string
Example: language=EN

Defines what language is used for questions and answers (FI, EN, SV, RU, ET), fallbacks to FI

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Answer one question in the Questionnaire

path Parameters
questionnaire_slug
required
string

Questionnaire slug that's used for every questionnaire

answer_set_id
required
integer

User's Answer Set id

question_id
required
integer

Question id the user answered

query Parameters
language
string
Example: language=EN

Defines what language is used for questions and answers (FI, EN, SV, RU, ET), fallbacks to FI

Request Body schema: application/json
required

Answer to Questionnaire Question

option_id
required
any (Option id)

Id for option the user has selected

Responses

Request samples

Content type
application/json
{
  • "option_id": "321"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Links the Answer set to the certain related business object (ie. Travel Expense) by its id

path Parameters
questionnaire_slug
required
string

Questionnaire slug that's used for every questionnaire

answer_set_id
required
integer

Users Answer Set id

target_model_id
required
integer

Target Model Id (ie. TravelExpense.id) to be attached to the answerset

query Parameters
language
string
Example: language=EN

Defines what language is used for questions and answers (FI, EN, SV, RU, ET), fallbacks to FI

Responses

Deletes user's Answer Set and its answers

path Parameters
questionnaire_slug
required
string

Questionnaire slug that's used for every questionnaire

answer_set_id
required
integer

Users Answer Set id

Responses

Duplicated User's finalized (has decision) Answer Set with Answers and Decisions

path Parameters
questionnaire_slug
required
string

Questionnaire slug that's used for every questionnaire

answer_set_id
required
integer

Users Answer Set id

query Parameters
language
string
Example: language=EN

Defines what language is used for questions and answers (FI, EN, SV, RU, ET), fallbacks to FI

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Returns finalized (has decision) AnswerSet related to Target Model

path Parameters
questionnaire_slug
required
string

Questionnaire slug that's used for every questionnaire

target_model_id
required
integer

Target Model's id

query Parameters
language
string
Example: language=EN

Defines what language is used for questions and answers (FI, EN, SV, RU, ET), fallbacks to FI

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Returns latest finalized (has decision) AnswerSet

path Parameters
questionnaire_slug
required
string

Questionnaire slug that's used for every questionnaire

query Parameters
language
string
Example: language=EN

Defines what language is used for questions and answers (FI, EN, SV, RU, ET), fallbacks to FI

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Returns latest answer set that is not linked to target model & has decision

path Parameters
questionnaire_slug
required
string

Questionnaire slug that's used for every questionnaire

query Parameters
language
string
Example: language=EN

Defines what language is used for questions and answers (FI, EN, SV, RU, ET), fallbacks to FI

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Deletes latests answer and return previous question

path Parameters
questionnaire_slug
required
string

Questionnaire slug that's used for every questionnaire

answer_set_id
required
integer

User's Answer Set id

previous_question_id
required
integer

Previous question id the user answered

query Parameters
language
string
Example: language=EN

Defines what language is used for questions and answers (FI, EN, SV, RU, ET), fallbacks to FI

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get answer sets decision answer text

path Parameters
questionnaire_slug
required
string

Questionnaire slug that's used for every questionnaire

answer_set_id
required
integer

User's Answer Set id

query Parameters
language
string
Example: language=EN

Defines what language is used for questions and answers (FI, EN, SV, RU, ET), fallbacks to FI

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Set decision answer for answer set

path Parameters
questionnaire_slug
required
string

Questionnaire slug that's used for every questionnaire

answer_set_id
required
integer

User's Answer Set id

query Parameters
language
string
Example: language=EN

Defines what language is used for questions and answers (FI, EN, SV, RU, ET), fallbacks to FI

Responses

Salaries

Salaries

Get calculated salaries. See /users/{user_id}/salaries/calculated for search parameters

path Parameters
list_type
required
string

List type: 'all' or 'unpaid'

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get logged in user's unpaid calculated salaries. See /users/{user_id}/salaries/calculated for search parameters

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get calculated salary by id

path Parameters
calculated_salary_id
required
integer

Calculated salary id

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get salary calculation details by calculated salary id

Satisfy V1 by returning calculated_salary.dataJson like it is.

path Parameters
calculated_salary_id
required
integer

Calculated salary id

Responses

Response samples

Content type
application/json
{ }

Get salary calculation details by calculated salary id

Satisfy SPA and modern consumers by returning calculated_salary.dataJson like it is.

path Parameters
calculated_salary_id
required
integer

Calculated salary id

Responses

Response samples

Content type
application/json
{
  • "id": "2022",
  • "invoicing_vat_percent": "24",
  • "total_invoicing_sum_with_vat": {
    },
  • "total_invoicing_sum_without_vat": {
    },
  • "total_invoicing_sum_vat": {
    },
  • "work_hours": "20.3",
  • "company_fees": {
    },
  • "company_fees_sum": {
    },
  • "total_invoicing_sum_without_vat_minus_company_fees": {
    },
  • "combined_expenses_sum_with_vat": {
    },
  • "combined_expenses_sum_without_vat": {
    },
  • "combined_expenses_vat_sum": {
    },
  • "receipt_expenses_without_vat_sum": {
    },
  • "receipt_expenses_with_vat_sum": {
    },
  • "receipt_expenses_vat_sum": {
    },
  • "travel_expenses": {
    },
  • "travel_expenses_sum": {
    },
  • "base_salary": {
    },
  • "employer_fees": { },
  • "gross_salary": {
    },
  • "employee_fees": {
    },
  • "employee_fees_percent": "24.00",
  • "employee_fees_sum": {
    },
  • "holiday_compensation_percent": "24.00",
  • "salary_without_holiday_compensation": {
    },
  • "holiday_compensation": {
    },
  • "legacy_health_insurance_percent": "0.74",
  • "legacy_health_insurance_fee": {
    },
  • "health_insurance_debt_amount": {
    },
  • "net_salary": {
    },
  • "is_yel_enabled": "true",
  • "is_required_yel_payments_paid": "true",
  • "yel": {
    },
  • "withheld_health_insurance_fee_without_vat": {
    },
  • "withheld_health_insurance_fee_vat_sum": {
    },
  • "withheld_health_insurance_fee_with_vat": {
    },
  • "withheld_health_insurance_percent": "0.74",
  • "withheld_health_insurance_vat_percent": "24.0",
  • "sum_to_calculate_foreclosure_from": {
    },
  • "sum_before_foreclosure": {
    },
  • "foreclosure": {
    },
  • "sum_after_foreclosure": {
    },
  • "salary_fees_without_vat_sum": {
    },
  • "salary_fees_vat_sum": {
    },
  • "salary_fees_with_vat_sum": {
    },
  • "salary_fees": {
    },
  • "sum_after_salary_fees": {
    },
  • "final_salary": {
    },
  • "final_salary_with_expenses": {
    },
  • "final_expenses": {
    },
  • "personal_deductions_sum": {
    },
  • "country": "",
  • "calculation_year": "2020",
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00",
  • "calculation_date": "2020-09-20T18:30:00+03:00",
  • "user_age": "18",
  • "user_birth_year": "1980",
  • "is_strict_checked": "true",
  • "is_fast_payment_enabled": "true",
  • "is_extra_service_fee_enabled": "true",
  • "adjusted_tax_percent": "true",
  • "paid_salary_id": "123124",
  • "paid_salary_date": "2020-09-20T18:30:00+03:00",
  • "salary_buckets": [
    ],
  • "is_salary_too_small_for_fast_payment": "true",
  • "juel_total_sum": {
    }
}

Get sum of withdrawable salary of user's all calculated salaries

Responses

Response samples

Content type
application/json
{
  • "withdrawable_amount": {
    }
}

Gets calculated sum of user's debts

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Calculates salary for OY

Request Body schema: application/json
required

InvoicingSumFromTargetSalaryRequest

object (Money)

Money value schema

object (Money)

Money value schema

contains_vat
boolean
invoicing_vat_percentage
number <float>
withholding_tax_percentage
number <float>
yel_obligated
boolean
yel_start_date
string <date>
age
integer

Ages between 18 and 67 get YEL calculations based on this

country
string

Client's country as ISO short code (FI, GB, RU etc)

object
object

Responses

Request samples

Content type
application/json
{
  • "target_salary": {
    },
  • "price_per_hour": {
    },
  • "contains_vat": "true",
  • "invoicing_vat_percentage": "24.00",
  • "withholding_tax_percentage": "60.00",
  • "yel_obligated": "true",
  • "yel_start_date": "2020-06-09",
  • "age": "30",
  • "country": "FI",
  • "travel_expenses": {
    },
  • "receipt_expenses": {
    }
}

Response samples

Content type
application/json
{ }

Gets user's paid salaries

query Parameters
page
integer

Pagination page id

limit
integer
Example: limit=50

Limit per page. Default 50, max 1000

sort
string
Example: sort=payment_date | gross_salary | withheld_yel | travel_expenses_sum | * receipt_expenses_with_vat_sum | foreclosure_sum | final_salary

Sort by ascending order, add '-' prefix to get * descending order, ie. -final_salary

filter[*field_name*]
string

Search fields. Array of filtered fields, so * filter[common_search] = 5.00 or 5,00 * filter[search_date_between] (format: YYYY-m-d|YYYY-m-d) * either one can be omitted

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get paid salary calculation details by paid salary id

Satisfy V1 by returning calculated_salary.dataJson like it is.

path Parameters
paid_salary_id
required
integer

Paid salary id

Responses

Response samples

Content type
application/json
{ }

Get paid salary calculation details by paid salary id

Satisfy SPA and other API consumers by returning paid_salary.dataJson as modern PaidSalaryResult.

path Parameters
paid_salary_id
required
integer

Paid salary id

Responses

Response samples

Content type
application/json
{
  • "calculation_period_start_date": "2020",
  • "calculation_period_end_date": "2020",
  • "start_date": "2020",
  • "end_date": "2020",
  • "payment_date": "2020",
  • "calculated_salary_periods": [
    ],
  • "total_invoicing_sum_with_vat": {
    },
  • "total_invoicing_sum_without_vat": {
    },
  • "company_fees": [
    ],
  • "receipt_expenses_with_vat_sum": {
    },
  • "receipt_expenses_without_vat_sum": {
    },
  • "receipt_expenses": [
    ],
  • "travel_expenses_sum": {
    },
  • "travel_expenses": [
    ],
  • "gross_salary": {
    },
  • "average_employee_fee_percent": "24.00",
  • "average_health_insurance_fee_percent": "24.00",
  • "average_legacy_health_insurance_fee_percent": "24.00",
  • "average_health_insurance_fee_without_vat_percent": "24.00",
  • "employee_fees_sum": {
    },
  • "average_yel_percent": "24.00",
  • "employee_fees": [
    ],
  • "net_salary": {
    },
  • "yel_sum": {
    },
  • "is_required_yel_payments_paid": true,
  • "yel_fees": [
    ],
  • "is_yel_discount": true,
  • "withheld_health_insurance_fee_with_vat": {
    },
  • "withheld_health_insurance_fee_without_vat": {
    },
  • "withheld_health_insurance_fee_vat_sum": {
    },
  • "health_insurance_fees": [
    ],
  • "is_fast_payment_enabled": true,
  • "payment_calculation_starting_sum": {
    },
  • "fast_payment": {
    },
  • "sum_to_foreclose": {
    },
  • "foreclosure": {
    },
  • "sum_before_salary_fees": {
    },
  • "salary_fees_vat_sum": {
    },
  • "salary_fees_with_vat_sum": {
    },
  • "salary_fees_without_vat_sum": {
    },
  • "combined_expenses_sum_with_vat": {
    },
  • "sum_to_calculate_foreclosure_from": {
    },
  • "combined_expenses_sum_without_vat": {
    },
  • "salary_fees": [
    ],
  • "sum_after_salary_fees": {
    },
  • "final_salary": {
    },
  • "final_salary_with_expenses": {
    },
  • "juel_total_sum": {
    },
  • "created_at": "2020",
  • "personal_deductions": {
    },
  • "personal_deductions_sum": {
    },
  • "work_hours": "24.00",
  • "holiday_compensation": {
    },
  • "salary_without_holiday_compensation": {
    },
  • "legacy_health_insurance_sum_with_vat": {
    },
  • "legacy_health_insurance_sum_without_vat": {
    },
  • "legacy_health_insurance_vat_sum": {
    },
  • "user_id": "123124",
  • "payer_user_id": "123124",
  • "calculated_salary_ids": [
    ],
  • "invoice_ids": [
    ],
  • "bank_account": "string",
  • "periods": [
    ]
}

Withdraws/pays bunch of calculated salaries

path Parameters
user_id
required
integer

User id

Request Body schema: application/json
required
any (WithdrawSalaryRequest)

Responses

Request samples

Content type
application/json
null

Response samples

Content type
application/json
{
  • "calculation_period_start_date": "2020",
  • "calculation_period_end_date": "2020",
  • "start_date": "2020",
  • "end_date": "2020",
  • "payment_date": "2020",
  • "calculated_salary_periods": [
    ],
  • "total_invoicing_sum_with_vat": {
    },
  • "total_invoicing_sum_without_vat": {
    },
  • "company_fees": [
    ],
  • "receipt_expenses_with_vat_sum": {
    },
  • "receipt_expenses_without_vat_sum": {
    },
  • "receipt_expenses": [
    ],
  • "travel_expenses_sum": {
    },
  • "travel_expenses": [
    ],
  • "gross_salary": {
    },
  • "average_employee_fee_percent": "24.00",
  • "average_health_insurance_fee_percent": "24.00",
  • "average_legacy_health_insurance_fee_percent": "24.00",
  • "average_health_insurance_fee_without_vat_percent": "24.00",
  • "employee_fees_sum": {
    },
  • "average_yel_percent": "24.00",
  • "employee_fees": [
    ],
  • "net_salary": {
    },
  • "yel_sum": {
    },
  • "is_required_yel_payments_paid": true,
  • "yel_fees": [
    ],
  • "is_yel_discount": true,
  • "withheld_health_insurance_fee_with_vat": {
    },
  • "withheld_health_insurance_fee_without_vat": {
    },
  • "withheld_health_insurance_fee_vat_sum": {
    },
  • "health_insurance_fees": [
    ],
  • "is_fast_payment_enabled": true,
  • "payment_calculation_starting_sum": {
    },
  • "fast_payment": {
    },
  • "sum_to_foreclose": {
    },
  • "foreclosure": {
    },
  • "sum_before_salary_fees": {
    },
  • "salary_fees_vat_sum": {
    },
  • "salary_fees_with_vat_sum": {
    },
  • "salary_fees_without_vat_sum": {
    },
  • "combined_expenses_sum_with_vat": {
    },
  • "sum_to_calculate_foreclosure_from": {
    },
  • "combined_expenses_sum_without_vat": {
    },
  • "salary_fees": [
    ],
  • "sum_after_salary_fees": {
    },
  • "final_salary": {
    },
  • "final_salary_with_expenses": {
    },
  • "juel_total_sum": {
    },
  • "created_at": "2020",
  • "personal_deductions": {
    },
  • "personal_deductions_sum": {
    },
  • "work_hours": "24.00",
  • "holiday_compensation": {
    },
  • "salary_without_holiday_compensation": {
    },
  • "legacy_health_insurance_sum_with_vat": {
    },
  • "legacy_health_insurance_sum_without_vat": {
    },
  • "legacy_health_insurance_vat_sum": {
    },
  • "user_id": "123124",
  • "payer_user_id": "123124",
  • "calculated_salary_ids": [
    ],
  • "invoice_ids": [
    ],
  • "bank_account": "string",
  • "periods": [
    ]
}

Calculate Paid Salary Overview from Calculated Salary

Modern version of the above but for SPA.

Satisfy SPA and other API consumers by returning ModernPaidSalaryResult.

Request Body schema: application/json
required
any (WithdrawSalaryRequest)

Responses

Request samples

Content type
application/json
null

Response samples

Content type
application/json
{
  • "calculation_period_start_date": "2020",
  • "calculation_period_end_date": "2020",
  • "start_date": "2020",
  • "end_date": "2020",
  • "payment_date": "2020",
  • "calculated_salary_periods": [
    ],
  • "total_invoicing_sum_with_vat": {
    },
  • "total_invoicing_sum_without_vat": {
    },
  • "company_fees": [
    ],
  • "receipt_expenses_with_vat_sum": {
    },
  • "receipt_expenses_without_vat_sum": {
    },
  • "receipt_expenses": [
    ],
  • "travel_expenses_sum": {
    },
  • "travel_expenses": [
    ],
  • "gross_salary": {
    },
  • "average_employee_fee_percent": "24.00",
  • "average_health_insurance_fee_percent": "24.00",
  • "average_legacy_health_insurance_fee_percent": "24.00",
  • "average_health_insurance_fee_without_vat_percent": "24.00",
  • "employee_fees_sum": {
    },
  • "average_yel_percent": "24.00",
  • "employee_fees": [
    ],
  • "net_salary": {
    },
  • "yel_sum": {
    },
  • "is_required_yel_payments_paid": true,
  • "yel_fees": [
    ],
  • "is_yel_discount": true,
  • "withheld_health_insurance_fee_with_vat": {
    },
  • "withheld_health_insurance_fee_without_vat": {
    },
  • "withheld_health_insurance_fee_vat_sum": {
    },
  • "health_insurance_fees": [
    ],
  • "is_fast_payment_enabled": true,
  • "payment_calculation_starting_sum": {
    },
  • "fast_payment": {
    },
  • "sum_to_foreclose": {
    },
  • "foreclosure": {
    },
  • "sum_before_salary_fees": {
    },
  • "salary_fees_vat_sum": {
    },
  • "salary_fees_with_vat_sum": {
    },
  • "salary_fees_without_vat_sum": {
    },
  • "combined_expenses_sum_with_vat": {
    },
  • "sum_to_calculate_foreclosure_from": {
    },
  • "combined_expenses_sum_without_vat": {
    },
  • "salary_fees": [
    ],
  • "sum_after_salary_fees": {
    },
  • "final_salary": {
    },
  • "final_salary_with_expenses": {
    },
  • "juel_total_sum": {
    },
  • "created_at": "2020",
  • "personal_deductions": {
    },
  • "personal_deductions_sum": {
    },
  • "work_hours": "24.00",
  • "holiday_compensation": {
    },
  • "salary_without_holiday_compensation": {
    },
  • "legacy_health_insurance_sum_with_vat": {
    },
  • "legacy_health_insurance_sum_without_vat": {
    },
  • "legacy_health_insurance_vat_sum": {
    },
  • "user_id": "123124",
  • "payer_user_id": "123124",
  • "calculated_salary_ids": [
    ],
  • "invoice_ids": [
    ],
  • "bank_account": "string",
  • "periods": [
    ]
}

Get paid salary by id

path Parameters
paid_salary_id
required
integer

Paid salary id

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Calculates how much user needs to invoice

Request Body schema: application/json
required

InvoicingSumFromTargetSalaryRequest

object (Money)

Money value schema

object (Money)

Money value schema

contains_vat
boolean
invoicing_vat_percentage
number <float>
withholding_tax_percentage
number <float>
yel_obligated
boolean
yel_start_date
string <date>
age
integer

Ages between 18 and 67 get YEL calculations based on this

country
string

Client's country as ISO short code (FI, GB, RU etc)

object
object

Responses

Request samples

Content type
application/json
{
  • "target_salary": {
    },
  • "price_per_hour": {
    },
  • "contains_vat": "true",
  • "invoicing_vat_percentage": "24.00",
  • "withholding_tax_percentage": "60.00",
  • "yel_obligated": "true",
  • "yel_start_date": "2020-06-09",
  • "age": "30",
  • "country": "FI",
  • "travel_expenses": {
    },
  • "receipt_expenses": {
    }
}

Response samples

Content type
application/json
{ }

Get Country specific allowance prices

path Parameters
country
required
string
Example: FI

Responses

Response samples

Content type
application/json
{ }

Calculates salary estimate

Request Body schema: application/json
required

SalaryFromInvoicingSumRequest

object (Money)

Money value schema

object (Money)

Money value schema

contains_vat
boolean
invoicing_vat_percentage
number <float>
withholding_tax_percentage
number <float>
yel_obligated
boolean
yel_start_date
string <date>
age
integer

Ages between 18 and 67 get YEL calculations based on this

country
string

Client's country as ISO short code (FI, GB, RU etc)

commission_percent
number <float>

Custom commission percent

object
object

Responses

Request samples

Content type
application/json
{
  • "total_invoicing_sum": {
    },
  • "price_per_hour": {
    },
  • "contains_vat": "true",
  • "invoicing_vat_percentage": "24.00",
  • "withholding_tax_percentage": "60.00",
  • "yel_obligated": "true",
  • "yel_start_date": "2020-06-09",
  • "age": "30",
  • "country": "FI",
  • "commission_percent": "5.0",
  • "travel_expenses": {
    },
  • "receipt_expenses": {
    }
}

Response samples

Content type
application/json
{ }

Calculates how much user needs to invoice

Request Body schema: application/json
required

InvoicingSumFromTargetSalaryRequest

object (Money)

Money value schema

object (Money)

Money value schema

contains_vat
boolean
invoicing_vat_percentage
number <float>
withholding_tax_percentage
number <float>
yel_obligated
boolean
yel_start_date
string <date>
age
integer

Ages between 18 and 67 get YEL calculations based on this

country
string

Client's country as ISO short code (FI, GB, RU etc)

object
object

Responses

Request samples

Content type
application/json
{
  • "target_salary": {
    },
  • "price_per_hour": {
    },
  • "contains_vat": "true",
  • "invoicing_vat_percentage": "24.00",
  • "withholding_tax_percentage": "60.00",
  • "yel_obligated": "true",
  • "yel_start_date": "2020-06-09",
  • "age": "30",
  • "country": "FI",
  • "travel_expenses": {
    },
  • "receipt_expenses": {
    }
}

Response samples

Content type
application/json
{ }

Calculated Salaries

Calculated Salaries

Get calculated salaries. See /users/{user_id}/salaries/calculated for search parameters

path Parameters
list_type
required
string

List type: 'all' or 'unpaid'

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get logged in user's unpaid calculated salaries. See /users/{user_id}/salaries/calculated for search parameters

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get calculated salary by id

path Parameters
calculated_salary_id
required
integer

Calculated salary id

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get salary calculation details by calculated salary id

Satisfy V1 by returning calculated_salary.dataJson like it is.

path Parameters
calculated_salary_id
required
integer

Calculated salary id

Responses

Response samples

Content type
application/json
{ }

Get salary calculation details by calculated salary id

Satisfy SPA and modern consumers by returning calculated_salary.dataJson like it is.

path Parameters
calculated_salary_id
required
integer

Calculated salary id

Responses

Response samples

Content type
application/json
{
  • "id": "2022",
  • "invoicing_vat_percent": "24",
  • "total_invoicing_sum_with_vat": {
    },
  • "total_invoicing_sum_without_vat": {
    },
  • "total_invoicing_sum_vat": {
    },
  • "work_hours": "20.3",
  • "company_fees": {
    },
  • "company_fees_sum": {
    },
  • "total_invoicing_sum_without_vat_minus_company_fees": {
    },
  • "combined_expenses_sum_with_vat": {
    },
  • "combined_expenses_sum_without_vat": {
    },
  • "combined_expenses_vat_sum": {
    },
  • "receipt_expenses_without_vat_sum": {
    },
  • "receipt_expenses_with_vat_sum": {
    },
  • "receipt_expenses_vat_sum": {
    },
  • "travel_expenses": {
    },
  • "travel_expenses_sum": {
    },
  • "base_salary": {
    },
  • "employer_fees": { },
  • "gross_salary": {
    },
  • "employee_fees": {
    },
  • "employee_fees_percent": "24.00",
  • "employee_fees_sum": {
    },
  • "holiday_compensation_percent": "24.00",
  • "salary_without_holiday_compensation": {
    },
  • "holiday_compensation": {
    },
  • "legacy_health_insurance_percent": "0.74",
  • "legacy_health_insurance_fee": {
    },
  • "health_insurance_debt_amount": {
    },
  • "net_salary": {
    },
  • "is_yel_enabled": "true",
  • "is_required_yel_payments_paid": "true",
  • "yel": {
    },
  • "withheld_health_insurance_fee_without_vat": {
    },
  • "withheld_health_insurance_fee_vat_sum": {
    },
  • "withheld_health_insurance_fee_with_vat": {
    },
  • "withheld_health_insurance_percent": "0.74",
  • "withheld_health_insurance_vat_percent": "24.0",
  • "sum_to_calculate_foreclosure_from": {
    },
  • "sum_before_foreclosure": {
    },
  • "foreclosure": {
    },
  • "sum_after_foreclosure": {
    },
  • "salary_fees_without_vat_sum": {
    },
  • "salary_fees_vat_sum": {
    },
  • "salary_fees_with_vat_sum": {
    },
  • "salary_fees": {
    },
  • "sum_after_salary_fees": {
    },
  • "final_salary": {
    },
  • "final_salary_with_expenses": {
    },
  • "final_expenses": {
    },
  • "personal_deductions_sum": {
    },
  • "country": "",
  • "calculation_year": "2020",
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00",
  • "calculation_date": "2020-09-20T18:30:00+03:00",
  • "user_age": "18",
  • "user_birth_year": "1980",
  • "is_strict_checked": "true",
  • "is_fast_payment_enabled": "true",
  • "is_extra_service_fee_enabled": "true",
  • "adjusted_tax_percent": "true",
  • "paid_salary_id": "123124",
  • "paid_salary_date": "2020-09-20T18:30:00+03:00",
  • "salary_buckets": [
    ],
  • "is_salary_too_small_for_fast_payment": "true",
  • "juel_total_sum": {
    }
}

Get paid salary calculation details by paid salary id

Satisfy V1 by returning calculated_salary.dataJson like it is.

path Parameters
paid_salary_id
required
integer

Paid salary id

Responses

Response samples

Content type
application/json
{ }

Get paid salary calculation details by paid salary id

Satisfy SPA and other API consumers by returning paid_salary.dataJson as modern PaidSalaryResult.

path Parameters
paid_salary_id
required
integer

Paid salary id

Responses

Response samples

Content type
application/json
{
  • "calculation_period_start_date": "2020",
  • "calculation_period_end_date": "2020",
  • "start_date": "2020",
  • "end_date": "2020",
  • "payment_date": "2020",
  • "calculated_salary_periods": [
    ],
  • "total_invoicing_sum_with_vat": {
    },
  • "total_invoicing_sum_without_vat": {
    },
  • "company_fees": [
    ],
  • "receipt_expenses_with_vat_sum": {
    },
  • "receipt_expenses_without_vat_sum": {
    },
  • "receipt_expenses": [
    ],
  • "travel_expenses_sum": {
    },
  • "travel_expenses": [
    ],
  • "gross_salary": {
    },
  • "average_employee_fee_percent": "24.00",
  • "average_health_insurance_fee_percent": "24.00",
  • "average_legacy_health_insurance_fee_percent": "24.00",
  • "average_health_insurance_fee_without_vat_percent": "24.00",
  • "employee_fees_sum": {
    },
  • "average_yel_percent": "24.00",
  • "employee_fees": [
    ],
  • "net_salary": {
    },
  • "yel_sum": {
    },
  • "is_required_yel_payments_paid": true,
  • "yel_fees": [
    ],
  • "is_yel_discount": true,
  • "withheld_health_insurance_fee_with_vat": {
    },
  • "withheld_health_insurance_fee_without_vat": {
    },
  • "withheld_health_insurance_fee_vat_sum": {
    },
  • "health_insurance_fees": [
    ],
  • "is_fast_payment_enabled": true,
  • "payment_calculation_starting_sum": {
    },
  • "fast_payment": {
    },
  • "sum_to_foreclose": {
    },
  • "foreclosure": {
    },
  • "sum_before_salary_fees": {
    },
  • "salary_fees_vat_sum": {
    },
  • "salary_fees_with_vat_sum": {
    },
  • "salary_fees_without_vat_sum": {
    },
  • "combined_expenses_sum_with_vat": {
    },
  • "sum_to_calculate_foreclosure_from": {
    },
  • "combined_expenses_sum_without_vat": {
    },
  • "salary_fees": [
    ],
  • "sum_after_salary_fees": {
    },
  • "final_salary": {
    },
  • "final_salary_with_expenses": {
    },
  • "juel_total_sum": {
    },
  • "created_at": "2020",
  • "personal_deductions": {
    },
  • "personal_deductions_sum": {
    },
  • "work_hours": "24.00",
  • "holiday_compensation": {
    },
  • "salary_without_holiday_compensation": {
    },
  • "legacy_health_insurance_sum_with_vat": {
    },
  • "legacy_health_insurance_sum_without_vat": {
    },
  • "legacy_health_insurance_vat_sum": {
    },
  • "user_id": "123124",
  • "payer_user_id": "123124",
  • "calculated_salary_ids": [
    ],
  • "invoice_ids": [
    ],
  • "bank_account": "string",
  • "periods": [
    ]
}

Calculate Paid Salary Overview from Calculated Salary

Modern version of the above but for SPA.

Satisfy SPA and other API consumers by returning ModernPaidSalaryResult.

Request Body schema: application/json
required
any (WithdrawSalaryRequest)

Responses

Request samples

Content type
application/json
null

Response samples

Content type
application/json
{
  • "calculation_period_start_date": "2020",
  • "calculation_period_end_date": "2020",
  • "start_date": "2020",
  • "end_date": "2020",
  • "payment_date": "2020",
  • "calculated_salary_periods": [
    ],
  • "total_invoicing_sum_with_vat": {
    },
  • "total_invoicing_sum_without_vat": {
    },
  • "company_fees": [
    ],
  • "receipt_expenses_with_vat_sum": {
    },
  • "receipt_expenses_without_vat_sum": {
    },
  • "receipt_expenses": [
    ],
  • "travel_expenses_sum": {
    },
  • "travel_expenses": [
    ],
  • "gross_salary": {
    },
  • "average_employee_fee_percent": "24.00",
  • "average_health_insurance_fee_percent": "24.00",
  • "average_legacy_health_insurance_fee_percent": "24.00",
  • "average_health_insurance_fee_without_vat_percent": "24.00",
  • "employee_fees_sum": {
    },
  • "average_yel_percent": "24.00",
  • "employee_fees": [
    ],
  • "net_salary": {
    },
  • "yel_sum": {
    },
  • "is_required_yel_payments_paid": true,
  • "yel_fees": [
    ],
  • "is_yel_discount": true,
  • "withheld_health_insurance_fee_with_vat": {
    },
  • "withheld_health_insurance_fee_without_vat": {
    },
  • "withheld_health_insurance_fee_vat_sum": {
    },
  • "health_insurance_fees": [
    ],
  • "is_fast_payment_enabled": true,
  • "payment_calculation_starting_sum": {
    },
  • "fast_payment": {
    },
  • "sum_to_foreclose": {
    },
  • "foreclosure": {
    },
  • "sum_before_salary_fees": {
    },
  • "salary_fees_vat_sum": {
    },
  • "salary_fees_with_vat_sum": {
    },
  • "salary_fees_without_vat_sum": {
    },
  • "combined_expenses_sum_with_vat": {
    },
  • "sum_to_calculate_foreclosure_from": {
    },
  • "combined_expenses_sum_without_vat": {
    },
  • "salary_fees": [
    ],
  • "sum_after_salary_fees": {
    },
  • "final_salary": {
    },
  • "final_salary_with_expenses": {
    },
  • "juel_total_sum": {
    },
  • "created_at": "2020",
  • "personal_deductions": {
    },
  • "personal_deductions_sum": {
    },
  • "work_hours": "24.00",
  • "holiday_compensation": {
    },
  • "salary_without_holiday_compensation": {
    },
  • "legacy_health_insurance_sum_with_vat": {
    },
  • "legacy_health_insurance_sum_without_vat": {
    },
  • "legacy_health_insurance_vat_sum": {
    },
  • "user_id": "123124",
  • "payer_user_id": "123124",
  • "calculated_salary_ids": [
    ],
  • "invoice_ids": [
    ],
  • "bank_account": "string",
  • "periods": [
    ]
}

Oy Salary Calculator

Oy Salary Calculator

Calculates salary for OY

Request Body schema: application/json
required

InvoicingSumFromTargetSalaryRequest

object (Money)

Money value schema

object (Money)

Money value schema

contains_vat
boolean
invoicing_vat_percentage
number <float>
withholding_tax_percentage
number <float>
yel_obligated
boolean
yel_start_date
string <date>
age
integer

Ages between 18 and 67 get YEL calculations based on this

country
string

Client's country as ISO short code (FI, GB, RU etc)

object
object

Responses

Request samples

Content type
application/json
{
  • "target_salary": {
    },
  • "price_per_hour": {
    },
  • "contains_vat": "true",
  • "invoicing_vat_percentage": "24.00",
  • "withholding_tax_percentage": "60.00",
  • "yel_obligated": "true",
  • "yel_start_date": "2020-06-09",
  • "age": "30",
  • "country": "FI",
  • "travel_expenses": {
    },
  • "receipt_expenses": {
    }
}

Response samples

Content type
application/json
{ }

Paid Salaries

Paid Salaries

Withdraws/pays bunch of calculated salaries

path Parameters
user_id
required
integer

User id

Request Body schema: application/json
required
any (WithdrawSalaryRequest)

Responses

Request samples

Content type
application/json
null

Response samples

Content type
application/json
{
  • "calculation_period_start_date": "2020",
  • "calculation_period_end_date": "2020",
  • "start_date": "2020",
  • "end_date": "2020",
  • "payment_date": "2020",
  • "calculated_salary_periods": [
    ],
  • "total_invoicing_sum_with_vat": {
    },
  • "total_invoicing_sum_without_vat": {
    },
  • "company_fees": [
    ],
  • "receipt_expenses_with_vat_sum": {
    },
  • "receipt_expenses_without_vat_sum": {
    },
  • "receipt_expenses": [
    ],
  • "travel_expenses_sum": {
    },
  • "travel_expenses": [
    ],
  • "gross_salary": {
    },
  • "average_employee_fee_percent": "24.00",
  • "average_health_insurance_fee_percent": "24.00",
  • "average_legacy_health_insurance_fee_percent": "24.00",
  • "average_health_insurance_fee_without_vat_percent": "24.00",
  • "employee_fees_sum": {
    },
  • "average_yel_percent": "24.00",
  • "employee_fees": [
    ],
  • "net_salary": {
    },
  • "yel_sum": {
    },
  • "is_required_yel_payments_paid": true,
  • "yel_fees": [
    ],
  • "is_yel_discount": true,
  • "withheld_health_insurance_fee_with_vat": {
    },
  • "withheld_health_insurance_fee_without_vat": {
    },
  • "withheld_health_insurance_fee_vat_sum": {
    },
  • "health_insurance_fees": [
    ],
  • "is_fast_payment_enabled": true,
  • "payment_calculation_starting_sum": {
    },
  • "fast_payment": {
    },
  • "sum_to_foreclose": {
    },
  • "foreclosure": {
    },
  • "sum_before_salary_fees": {
    },
  • "salary_fees_vat_sum": {
    },
  • "salary_fees_with_vat_sum": {
    },
  • "salary_fees_without_vat_sum": {
    },
  • "combined_expenses_sum_with_vat": {
    },
  • "sum_to_calculate_foreclosure_from": {
    },
  • "combined_expenses_sum_without_vat": {
    },
  • "salary_fees": [
    ],
  • "sum_after_salary_fees": {
    },
  • "final_salary": {
    },
  • "final_salary_with_expenses": {
    },
  • "juel_total_sum": {
    },
  • "created_at": "2020",
  • "personal_deductions": {
    },
  • "personal_deductions_sum": {
    },
  • "work_hours": "24.00",
  • "holiday_compensation": {
    },
  • "salary_without_holiday_compensation": {
    },
  • "legacy_health_insurance_sum_with_vat": {
    },
  • "legacy_health_insurance_sum_without_vat": {
    },
  • "legacy_health_insurance_vat_sum": {
    },
  • "user_id": "123124",
  • "payer_user_id": "123124",
  • "calculated_salary_ids": [
    ],
  • "invoice_ids": [
    ],
  • "bank_account": "string",
  • "periods": [
    ]
}

Get paid salary by id

path Parameters
paid_salary_id
required
integer

Paid salary id

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Paid salary

Paid salary

Gets PDF version of the paid salary

path Parameters
paid_salary_id
required
integer

paid salary id

Responses

Simple Salary Calculator

Simple Salary Calculator

Calculates how much user needs to invoice

Request Body schema: application/json
required

InvoicingSumFromTargetSalaryRequest

object (Money)

Money value schema

object (Money)

Money value schema

contains_vat
boolean
invoicing_vat_percentage
number <float>
withholding_tax_percentage
number <float>
yel_obligated
boolean
yel_start_date
string <date>
age
integer

Ages between 18 and 67 get YEL calculations based on this

country
string

Client's country as ISO short code (FI, GB, RU etc)

object
object

Responses

Request samples

Content type
application/json
{
  • "target_salary": {
    },
  • "price_per_hour": {
    },
  • "contains_vat": "true",
  • "invoicing_vat_percentage": "24.00",
  • "withholding_tax_percentage": "60.00",
  • "yel_obligated": "true",
  • "yel_start_date": "2020-06-09",
  • "age": "30",
  • "country": "FI",
  • "travel_expenses": {
    },
  • "receipt_expenses": {
    }
}

Response samples

Content type
application/json
{ }

Get Country specific allowance prices

path Parameters
country
required
string
Example: FI

Responses

Response samples

Content type
application/json
{ }

Calculates salary estimate

Request Body schema: application/json
required

SalaryFromInvoicingSumRequest

object (Money)

Money value schema

object (Money)

Money value schema

contains_vat
boolean
invoicing_vat_percentage
number <float>
withholding_tax_percentage
number <float>
yel_obligated
boolean
yel_start_date
string <date>
age
integer

Ages between 18 and 67 get YEL calculations based on this

country
string

Client's country as ISO short code (FI, GB, RU etc)

commission_percent
number <float>

Custom commission percent

object
object

Responses

Request samples

Content type
application/json
{
  • "total_invoicing_sum": {
    },
  • "price_per_hour": {
    },
  • "contains_vat": "true",
  • "invoicing_vat_percentage": "24.00",
  • "withholding_tax_percentage": "60.00",
  • "yel_obligated": "true",
  • "yel_start_date": "2020-06-09",
  • "age": "30",
  • "country": "FI",
  • "commission_percent": "5.0",
  • "travel_expenses": {
    },
  • "receipt_expenses": {
    }
}

Response samples

Content type
application/json
{ }

Calculates how much user needs to invoice

Request Body schema: application/json
required

InvoicingSumFromTargetSalaryRequest

object (Money)

Money value schema

object (Money)

Money value schema

contains_vat
boolean
invoicing_vat_percentage
number <float>
withholding_tax_percentage
number <float>
yel_obligated
boolean
yel_start_date
string <date>
age
integer

Ages between 18 and 67 get YEL calculations based on this

country
string

Client's country as ISO short code (FI, GB, RU etc)

object
object

Responses

Request samples

Content type
application/json
{
  • "target_salary": {
    },
  • "price_per_hour": {
    },
  • "contains_vat": "true",
  • "invoicing_vat_percentage": "24.00",
  • "withholding_tax_percentage": "60.00",
  • "yel_obligated": "true",
  • "yel_start_date": "2020-06-09",
  • "age": "30",
  • "country": "FI",
  • "travel_expenses": {
    },
  • "receipt_expenses": {
    }
}

Response samples

Content type
application/json
{ }

Salary Advance

Salary Advance

Discards Salary Advance

Discards Salary Advance

path Parameters
uuid
required
string
Example: 61ef29a9-2e7c-459c-882d-d2bea5bd34d1

Uuid of the Salary Advance

Responses

Approves Salary Advance

Approves Salary Advance

path Parameters
uuid
required
string
Example: 61ef29a9-2e7c-459c-882d-d2bea5bd34d1

Uuid of the Salary Advance

Responses

Countries

Countries

Returns all countries and each country's cities

Display a listing of the resource.

path Parameters
type
required
string
Enum: "allow_for_invoicing" "allow_for_nationality" "allow_for_iban_payments" "allow_for_travel_expense"

(Optional) filter countries by attribute e.g. /countries/allow_for_invoicing

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Returns all countries and cities that have daily allowance set

Display a countries and cities with daily allowances.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

System

System

Returns all display VAT rates

query Parameters
date
string
Example: date=2024-04-04

Date that defines if VAT_REGULAR is 24% / 25.5%

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Returns service agreement by type

path Parameters
type
required
string

Type of service agreement; terms-of-service

query Parameters
language
string
Example: language=FI

Defines the language of service agreement (FI, EN, SV, RU, ET), fallbacks to FI

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Accept agreement of type

path Parameters
type
required
string
Example: terms-of-service / industry-restrictions / has-confirmed-no-business-id

Type of service agreement: terms-of-service / industry-restrictions / has-confirmed-no-business-id

Responses

Returns all enabled VAT rates by type

path Parameters
type
required
string

Type of VAT rates; invoice/receipt-expense

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Returns post office associated with the zip code

path Parameters
zip_code
required
string

Zip code, for example 99999

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Is bank account IBAN valid for fast payment

path Parameters
iban
required
string

IBAN

Responses

Response samples

Content type
application/json
{
  • "can_enable_fast_payment": true
}

Occupations

Occupations

Get all occupations

query Parameters
lang
required
string

Language, options: en|fi

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Search occupations by language and filter

query Parameters
lang
string

Language, options: en|fi

filter
string

Hakusana

Responses

Response samples

Content type
application/json
{
  • "Industry's name": [
    ]
}

Tax Cards

Tax Cards

Get and create new tax card from api

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get and create new tax card from api for user

path Parameters
user_id
required
integer

User id

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Create new tax card

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get full data of tax card

path Parameters
tax_card_id
required
integer

Tax card id

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete selected tax card

path Parameters
tax_card_id
required
integer

Tax card id

Responses

Override tax withholding percent

Request Body schema: application/json
required

DebtRequest

tax_percent
number <float>

Responses

Request samples

Content type
application/json
{
  • "tax_percent": "15.5"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete override tax withholding percent, fetches new tax card from VeroAPi

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Customer Loyalty Program

Customer Loyalty Program

Returns user customer loyalty program related basic data

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Approve loyalty membership terms

Responses

Notifications

Notifications

Lists unread notifications

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Marks unread notification as read

path Parameters
notification_id
required
string <uuid>

Id of the notification which needs to be marked as read

Responses

Pension

Pension

Return user's pension

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Foreclosure

Foreclosure

Return user's foreclosure

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Occupation

Occupation

Return user's default occupation from last sent invoice

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Strong Authentication

Strong Authentication

Make Strong Identity Verification / Strong Authentication with Telia

Request Body schema: application/json
code
string

Exchange Code from Telias authentication system

Responses

Request samples

Content type
application/json
{
  • "code": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Gets current user's Pending Name Change data

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Selects and verifies the IDP provided name

Request Body schema: application/json
selected_first_name
string

Teppo

Responses

Request samples

Content type
application/json
{
  • "selected_first_name": "string"
}

Signature

Signature

Get signature contract data

Get data of the contract

Responses

Response samples

Content type
application/json
{
  • "data": null
}

Start the process of creating a signature

Request Body schema: application/json
required

New start new signature

auth_method
string

Prod: tupas-osuuspankki,tupas-nordea,tupas-danske,tupas-spankki,tupas-handelsbanken,tupas-elisa,tupas-aktia,tupas-poppankki,tupas-sp,tupas-omasp,tupas-alandsbanken

Responses

Request samples

Content type
application/json
{
  • "auth_method": "string"
}

Response samples

Content type
application/json
{
  • "url": "string",
  • "signature": {
    }
}

Verify signature status

Verify signature status using signature id

path Parameters
signature_id
required
string

Tax signature_id id

Responses

Response samples

Content type
application/json
{
  • "status": true
}

Get signed contract pdf

Get pdf

Responses

Preview document

Endpoint will return preview of signable document

Responses

Get authentication methods

Get Vismasign authentication methods

Responses

Response samples

Content type
application/json
{}

Yel

Yel

Get user's yel data

Responses

Response samples

Content type
application/json
{
  • "withholding_enabled": true,
  • "obligation_verdict_reason": "string",
  • "percent": "18.8",
  • "manuallySetYelPercent": "18.8",
  • "is_discount_enabled": true,
  • "invoice_sum": {
    },
  • "invoice_due_date": "2020-09-20T18:30:00+03:00",
  • "invoice_sum_last_update": "2020-09-20T18:30:00+03:00",
  • "current_invoicing_estimate": {
    },
  • "current_income_estimate": {
    },
  • "current_income_estimate_start_date": "2020-09-20T18:30:00+03:00",
  • "current_income_estimate_set_by_user": null,
  • "estimate_periods": {
    },
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00",
  • "last_day_of_discount": "2020-09-20T18:30:00+03:00",
  • "payments": {
    },
  • "total_withheld": {
    },
  • "total_paid": {
    },
  • "total_refunded": {
    },
  • "refunds": {
    },
  • "payment_amount_left": {
    },
  • "withheld_amount": {
    },
  • "signed_with_ssn": "string",
  • "signed_date": "2020-09-20T18:30:00+03:00",
  • "contract_sent_date": "2020-09-20T18:30:00+03:00",
  • "occupation_id": 1,
  • "estimated_weekly_working_hours": 1,
  • "additional_employment_income_information": "I work as a light entrepreneur for a one day a week."
}

Get user's yel invoice data

Responses

Response samples

Content type
application/json
{
  • "withholding_enabled": true,
  • "obligation_verdict_reason": "string",
  • "percent": "18.8",
  • "manuallySetYelPercent": "18.8",
  • "is_discount_enabled": true,
  • "invoice_sum": {
    },
  • "invoice_due_date": "2020-09-20T18:30:00+03:00",
  • "invoice_sum_last_update": "2020-09-20T18:30:00+03:00",
  • "current_invoicing_estimate": {
    },
  • "current_income_estimate": {
    },
  • "current_income_estimate_start_date": "2020-09-20T18:30:00+03:00",
  • "current_income_estimate_set_by_user": null,
  • "estimate_periods": {
    },
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00",
  • "last_day_of_discount": "2020-09-20T18:30:00+03:00",
  • "payments": {
    },
  • "total_withheld": {
    },
  • "total_paid": {
    },
  • "total_refunded": {
    },
  • "refunds": {
    },
  • "payment_amount_left": {
    },
  • "withheld_amount": {
    },
  • "signed_with_ssn": "string",
  • "signed_date": "2020-09-20T18:30:00+03:00",
  • "contract_sent_date": "2020-09-20T18:30:00+03:00",
  • "occupation_id": 1,
  • "estimated_weekly_working_hours": 1,
  • "additional_employment_income_information": "I work as a light entrepreneur for a one day a week."
}

Get Yel configuration data

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get user's yel estimates

query Parameters
income_estimate
required
integer

Income estimate in cents

Responses

Response samples

Content type
application/json
{
  • "income_estimate": {
    },
  • "percent_estimate": "18.8",
  • "annual_estimate": {
    },
  • "daily_estimate": {
    }
}

Get user's yel report as a pdf file

Responses

Get YEL Contract Terms

Responses

Get user's gross salary sum on current contract period

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Terminates user's yel contract

Responses

Get user's yel contract periods

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Yel Questionnaire

Yel Questionnaire

Creates other YEL contract for user

Request Body schema: application/json
required

OtherContractRequest

start_date
string <date>

Responses

Request samples

Content type
application/json
{
  • "start_date": "2020-12-12"
}

Response samples

Content type
application/json
{
  • "withholding_enabled": true,
  • "obligation_verdict_reason": "string",
  • "percent": "18.8",
  • "manuallySetYelPercent": "18.8",
  • "is_discount_enabled": true,
  • "invoice_sum": {
    },
  • "invoice_due_date": "2020-09-20T18:30:00+03:00",
  • "invoice_sum_last_update": "2020-09-20T18:30:00+03:00",
  • "current_invoicing_estimate": {
    },
  • "current_income_estimate": {
    },
  • "current_income_estimate_start_date": "2020-09-20T18:30:00+03:00",
  • "current_income_estimate_set_by_user": null,
  • "estimate_periods": {
    },
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00",
  • "last_day_of_discount": "2020-09-20T18:30:00+03:00",
  • "payments": {
    },
  • "total_withheld": {
    },
  • "total_paid": {
    },
  • "total_refunded": {
    },
  • "refunds": {
    },
  • "payment_amount_left": {
    },
  • "withheld_amount": {
    },
  • "signed_with_ssn": "string",
  • "signed_date": "2020-09-20T18:30:00+03:00",
  • "contract_sent_date": "2020-09-20T18:30:00+03:00",
  • "occupation_id": 1,
  • "estimated_weekly_working_hours": 1,
  • "additional_employment_income_information": "I work as a light entrepreneur for a one day a week."
}

Finalizes UKKO YEL contract for user

Request Body schema: application/json
required

UkkoContractRequest

signature_id
integer

Internal id of of an Visma Sign Signature

start_date
string <date>
object (Money)

Money value schema

Array of objects

Array of start and end dates that user has had previous YEL periods

occupation_id
integer

Id of the selected occupation

estimated_weekly_working_hours
integer

Number of hours user has estimated to work per week

additional_employment_income_information
string

Responses

Request samples

Content type
application/json
{
  • "signature_id": "96",
  • "start_date": "2020-12-12",
  • "gross_salary": {
    },
  • "previous_yel_periods": "[ {start: 2022-01-01, end: 2022-02-01}, {start: 2022-04-01, end: 2022-05-01}, ]",
  • "occupation_id": "1234",
  • "estimated_weekly_working_hours": "24",
  • "additional_employment_income_information": "I work as a light entrepreneur for a one day a week. I also have a part-time job as a teacher in a local school."
}

Response samples

Content type
application/json
{
  • "withholding_enabled": true,
  • "obligation_verdict_reason": "string",
  • "percent": "18.8",
  • "manuallySetYelPercent": "18.8",
  • "is_discount_enabled": true,
  • "invoice_sum": {
    },
  • "invoice_due_date": "2020-09-20T18:30:00+03:00",
  • "invoice_sum_last_update": "2020-09-20T18:30:00+03:00",
  • "current_invoicing_estimate": {
    },
  • "current_income_estimate": {
    },
  • "current_income_estimate_start_date": "2020-09-20T18:30:00+03:00",
  • "current_income_estimate_set_by_user": null,
  • "estimate_periods": {
    },
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00",
  • "last_day_of_discount": "2020-09-20T18:30:00+03:00",
  • "payments": {
    },
  • "total_withheld": {
    },
  • "total_paid": {
    },
  • "total_refunded": {
    },
  • "refunds": {
    },
  • "payment_amount_left": {
    },
  • "withheld_amount": {
    },
  • "signed_with_ssn": "string",
  • "signed_date": "2020-09-20T18:30:00+03:00",
  • "contract_sent_date": "2020-09-20T18:30:00+03:00",
  • "occupation_id": 1,
  • "estimated_weekly_working_hours": 1,
  • "additional_employment_income_information": "I work as a light entrepreneur for a one day a week."
}

Sets user to old age pension

Responses

Response samples

Content type
application/json
{
  • "withholding_enabled": true,
  • "obligation_verdict_reason": "string",
  • "percent": "18.8",
  • "manuallySetYelPercent": "18.8",
  • "is_discount_enabled": true,
  • "invoice_sum": {
    },
  • "invoice_due_date": "2020-09-20T18:30:00+03:00",
  • "invoice_sum_last_update": "2020-09-20T18:30:00+03:00",
  • "current_invoicing_estimate": {
    },
  • "current_income_estimate": {
    },
  • "current_income_estimate_start_date": "2020-09-20T18:30:00+03:00",
  • "current_income_estimate_set_by_user": null,
  • "estimate_periods": {
    },
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00",
  • "last_day_of_discount": "2020-09-20T18:30:00+03:00",
  • "payments": {
    },
  • "total_withheld": {
    },
  • "total_paid": {
    },
  • "total_refunded": {
    },
  • "refunds": {
    },
  • "payment_amount_left": {
    },
  • "withheld_amount": {
    },
  • "signed_with_ssn": "string",
  • "signed_date": "2020-09-20T18:30:00+03:00",
  • "contract_sent_date": "2020-09-20T18:30:00+03:00",
  • "occupation_id": 1,
  • "estimated_weekly_working_hours": 1,
  • "additional_employment_income_information": "I work as a light entrepreneur for a one day a week."
}

Sets user's income estimate & yel withhelds to false

Request Body schema: application/json
required

NoYelObligationRequest

object (Money)

Money value schema

object (Money)

Money value schema

Responses

Request samples

Content type
application/json
{
  • "income_estimate": {
    },
  • "invoicing_estimate": {
    }
}

Response samples

Content type
application/json
{
  • "withholding_enabled": true,
  • "obligation_verdict_reason": "string",
  • "percent": "18.8",
  • "manuallySetYelPercent": "18.8",
  • "is_discount_enabled": true,
  • "invoice_sum": {
    },
  • "invoice_due_date": "2020-09-20T18:30:00+03:00",
  • "invoice_sum_last_update": "2020-09-20T18:30:00+03:00",
  • "current_invoicing_estimate": {
    },
  • "current_income_estimate": {
    },
  • "current_income_estimate_start_date": "2020-09-20T18:30:00+03:00",
  • "current_income_estimate_set_by_user": null,
  • "estimate_periods": {
    },
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00",
  • "last_day_of_discount": "2020-09-20T18:30:00+03:00",
  • "payments": {
    },
  • "total_withheld": {
    },
  • "total_paid": {
    },
  • "total_refunded": {
    },
  • "refunds": {
    },
  • "payment_amount_left": {
    },
  • "withheld_amount": {
    },
  • "signed_with_ssn": "string",
  • "signed_date": "2020-09-20T18:30:00+03:00",
  • "contract_sent_date": "2020-09-20T18:30:00+03:00",
  • "occupation_id": 1,
  • "estimated_weekly_working_hours": 1,
  • "additional_employment_income_information": "I work as a light entrepreneur for a one day a week."
}

Updates user's income estimate, occupation, weekly working hours and additional income information. Can only be updated every 20 days

Request Body schema: application/json
required

UpdateUkkoContractDetailsRequest

occupation_id
integer

Id of the selected occupation

estimated_weekly_working_hours
integer

Number of hours user has estimated to work per week

additional_employment_income_information
string

Responses

Request samples

Content type
application/json
{
  • "occupation_id": "1234",
  • "estimated_weekly_working_hours": "24",
  • "additional_employment_income_information": "I work as a light entrepreneur for a one day a week. I also have a part-time job as a teacher in a local school."
}

Response samples

Content type
application/json
{
  • "withholding_enabled": true,
  • "obligation_verdict_reason": "string",
  • "percent": "18.8",
  • "manuallySetYelPercent": "18.8",
  • "is_discount_enabled": true,
  • "invoice_sum": {
    },
  • "invoice_due_date": "2020-09-20T18:30:00+03:00",
  • "invoice_sum_last_update": "2020-09-20T18:30:00+03:00",
  • "current_invoicing_estimate": {
    },
  • "current_income_estimate": {
    },
  • "current_income_estimate_start_date": "2020-09-20T18:30:00+03:00",
  • "current_income_estimate_set_by_user": null,
  • "estimate_periods": {
    },
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00",
  • "last_day_of_discount": "2020-09-20T18:30:00+03:00",
  • "payments": {
    },
  • "total_withheld": {
    },
  • "total_paid": {
    },
  • "total_refunded": {
    },
  • "refunds": {
    },
  • "payment_amount_left": {
    },
  • "withheld_amount": {
    },
  • "signed_with_ssn": "string",
  • "signed_date": "2020-09-20T18:30:00+03:00",
  • "contract_sent_date": "2020-09-20T18:30:00+03:00",
  • "occupation_id": 1,
  • "estimated_weekly_working_hours": 1,
  • "additional_employment_income_information": "I work as a light entrepreneur for a one day a week."
}

User is YEL obligated but wants to take care of their YEL by themselves

Responses

Response samples

Content type
application/json
{
  • "withholding_enabled": true,
  • "obligation_verdict_reason": "string",
  • "percent": "18.8",
  • "manuallySetYelPercent": "18.8",
  • "is_discount_enabled": true,
  • "invoice_sum": {
    },
  • "invoice_due_date": "2020-09-20T18:30:00+03:00",
  • "invoice_sum_last_update": "2020-09-20T18:30:00+03:00",
  • "current_invoicing_estimate": {
    },
  • "current_income_estimate": {
    },
  • "current_income_estimate_start_date": "2020-09-20T18:30:00+03:00",
  • "current_income_estimate_set_by_user": null,
  • "estimate_periods": {
    },
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00",
  • "last_day_of_discount": "2020-09-20T18:30:00+03:00",
  • "payments": {
    },
  • "total_withheld": {
    },
  • "total_paid": {
    },
  • "total_refunded": {
    },
  • "refunds": {
    },
  • "payment_amount_left": {
    },
  • "withheld_amount": {
    },
  • "signed_with_ssn": "string",
  • "signed_date": "2020-09-20T18:30:00+03:00",
  • "contract_sent_date": "2020-09-20T18:30:00+03:00",
  • "occupation_id": 1,
  • "estimated_weekly_working_hours": 1,
  • "additional_employment_income_information": "I work as a light entrepreneur for a one day a week."
}

Sets user's income estimate, startdate and create optional yel contracts.

Request Body schema: application/json
required

YelObligatedWithoutHealthInsuranceRequest

object (Money)

Money value schema

object (Money)

Money value schema

Array of objects

Responses

Request samples

Content type
application/json
{
  • "income_estimate": {
    },
  • "invoicing_estimate": {
    },
  • "yel_contract_periods": [
    ]
}

Response samples

Content type
application/json
{
  • "withholding_enabled": true,
  • "obligation_verdict_reason": "string",
  • "percent": "18.8",
  • "manuallySetYelPercent": "18.8",
  • "is_discount_enabled": true,
  • "invoice_sum": {
    },
  • "invoice_due_date": "2020-09-20T18:30:00+03:00",
  • "invoice_sum_last_update": "2020-09-20T18:30:00+03:00",
  • "current_invoicing_estimate": {
    },
  • "current_income_estimate": {
    },
  • "current_income_estimate_start_date": "2020-09-20T18:30:00+03:00",
  • "current_income_estimate_set_by_user": null,
  • "estimate_periods": {
    },
  • "start_date": "2020-09-20T18:30:00+03:00",
  • "end_date": "2020-09-20T18:30:00+03:00",
  • "last_day_of_discount": "2020-09-20T18:30:00+03:00",
  • "payments": {
    },
  • "total_withheld": {
    },
  • "total_paid": {
    },
  • "total_refunded": {
    },
  • "refunds": {
    },
  • "payment_amount_left": {
    },
  • "withheld_amount": {
    },
  • "signed_with_ssn": "string",
  • "signed_date": "2020-09-20T18:30:00+03:00",
  • "contract_sent_date": "2020-09-20T18:30:00+03:00",
  • "occupation_id": 1,
  • "estimated_weekly_working_hours": 1,
  • "additional_employment_income_information": "I work as a light entrepreneur for a one day a week."
}

Get user's yel contract periods

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}