Home AssignmentsFind freelance work InvoicingHow invoicing works PayoutsManage contractors SupportSupport and help
Country
Language
Create a free account

API/Payouts

Reference

Payouts

Create payouts for one or more contractors on a single consolidated invoice, and retrieve their status afterwards.

Contents
Note

All calls require Authorization: Bearer <token> and API-key: <uuid>. The base URL is https://app.easyfreelance.no/api/v1 in production and https://test.easyfreelance.no/api/v1 in test. See Authentication.

The payout object

FieldTypeDescription
idintegerThe payout ID.
user_idintegerThe contractor the payout applies to.
invoice_idinteger / nullThe invoice the payout belongs to.
statusstringThe state of the payout. Can be used as a filter on the list endpoints.
typestringpayment or salary.
salarystringThe salary base.
vacationstringStatutory provision calculated from the salary base.
pensionstringProvision associated with the payout.
net_salarystringAmount paid out after deductions.
net_vacationstringNet provision.
invoice_exclstringInvoice amount excluding VAT.
invoice_inclstringInvoice amount including VAT.
paid_atdate-time / nullWhen the payout was completed.
created_at, updated_atdate-timeTimestamps.

Endpoints

POST/payouts

Create payouts

Creates one or more payouts that are collected on a single invoice to you. Each item in payouts must contain exactly one of user_id, phone or ssn.

Recommended

Send the header Idempotency-key with a valid UUID on this endpoint. You can then safely retry without risking duplicate payouts. See Idempotency.

Body

FieldTypeDescription
due_datedaterequiredThe invoice due date.
send_typestringoptionalEmail or EHF.
payoutsarrayrequiredAt least one item. The fields below apply per item.

Each item in payouts

FieldTypeDescription
typestringrequiredpayment or salary.
datedaterequiredThe date the work was carried out.
hoursnumberrequiredNumber of hours.
productsarrayrequiredAt least one line item. See below.
user_idnumberoptionalOne of user_id / phone / ssn must be set.
phonestringoptionalMax 32 characters.
ssnstringoptionalMax 64 characters.
descriptionstringoptionalFree text on the payout. Max 4096 characters.

Each item in products

FieldTypeDescription
quantitynumberrequiredQuantity.
pricenumberrequiredUnit price.
descriptionstringoptionalLine item text on the invoice. Max 254 characters.

Example

POST /payouts
{
  "due_date": "2026-09-15",
  "send_type": "EHF",
  "payouts": [
    {
      "user_id": 123,
      "type": "salary",
      "date": "2026-08-28",
      "hours": 12,
      "description": "Produktfoto, uke 34",
      "products": [
        {
          "quantity": 12,
          "price": 1250,
          "description": "Fotografering per time"
        }
      ]
    }
  ]
}

Response

CodeDescription
201{ "count": 1, "results": "..." }
400Validation error in payouts, or the idempotency key is invalid or has already been used.
422Validation rejected by the framework.
401Not authenticated.
GET/payouts

Retrieve all payouts

Paginated list of payouts for all contractors linked to your partner account.

Query parameters

FieldTypeDescription
statusstringoptionalFilter by status. Exact match.
pageintegeroptionalPage number.
page_sizeintegeroptionalItems per page.
GET/users/{id}/payouts

Retrieve payouts for a single contractor

Paginated list of payouts for one specific contractor.

Parameters

FieldTypeDescription
idintegerrequiredUser ID in the path.
statusstringoptionalFilter by status. Exact match.

Response

CodeDescription
200Paginated envelope.
404The user does not exist, or is not linked to your account.
GET/payouts/{payout}

Retrieve a single payout

Retrieves a single payout by ID.

Response

CodeDescription
200The payout object.
403The payout belongs to another partner.
404Not found.
POST/payouts/{payout}/login-link

Create a login link to the payout

Magic link that logs the contractor in and takes them straight to the page for this payout. Set send_email to true to send it by email.

Response

201 Created
{
  "login_url": "https://app.easyfreelance.no/magic/eyJ0eXAiOiJKV1Qi...",
  "expires_at": "2026-08-31T09:14:00+00:00"
}