Menu

Agreements and commitments

What the company has signed and promised, for companies where it is switched on: agreements (rent, leases, loans, subscriptions, insurance, permits, IP rights, domains, guarantees) with their expected payments observed against the bank and their notice and end dates, ställda säkerheter and eventualförpliktelser with the årsredovisning note texts they give, and the group structure. Writes are registers only: nothing is booked.

Endpoints


GET /api/v1/companies/:companyId/agreement-obligations

agreements.list-obligations · scope companies:read

List the payments the agreements say fall due, oldest first, with whether each arrived in the bank.

From 60 days back by default (from, to narrow it). status expected: not seen yet; matched: a bank transaction (transaction_id) has the amount and date; missed: nothing arrived two weeks after the due date. Observation only: nothing is booked from these rows.

Use when: You need the upcoming payments of the company's agreements, or to see which rent or instalment was missed.

Don't use for: Supplier invoices or bank payments (they have their own lists).

Pitfalls

  • COMMITMENTS_UNAVAILABLE: Avtal och åtaganden is not switched on for this company yet.
  • AGREEMENT_NOT_FOUND: agreement_id is not an agreement of the company.

Risk: low · Idempotent: yes · Reversible: no · Dry-run supported: no

Query parameters

NameTypeRequiredDescription
agreement_idstringnoOnly this agreement's payments.
status"expected" | "matched" | "missed" | "waived"no
fromstringnoyyyy-MM-dd, default 60 days back.
tostringnoyyyy-MM-dd, inclusive.

Response fields

NameTypeDescription
obligations[].obligation_idstring
obligations[].agreement_idstring
obligations[].agreement_titlestring
obligations[].kindstring
obligations[].due_onstring
obligations[].amountnumber
obligations[].currencystring
obligations[].direction"out" | "in"
obligations[].status"expected" | "matched" | "missed" | "waived"
obligations[].amount_is_estimateboolean
obligations[].transaction_idstring | nullThe bank transaction the payment was matched to.

Example response

{
  "data": {
    "obligations": [
      {
        "obligation_id": "c1d2…",
        "agreement_id": "6b2e…",
        "agreement_title": "Hyresavtal kontor Vasagatan",
        "kind": "payment",
        "due_on": "2026-11-01",
        "amount": 12500,
        "currency": "SEK",
        "direction": "out",
        "status": "expected",
        "amount_is_estimate": false,
        "transaction_id": null
      }
    ]
  },
  "meta": {
    "request_id": "req_…",
    "api_version": "2026-05-12"
  }
}

GET /api/v1/companies/:companyId/agreements

agreements.list · scope companies:read

List the company's agreements (rent, leases, loans, subscriptions, insurance, permits, IP, domains, guarantees and more) with the next payment and the notice and end dates.

Both the agreements registered by hand (origin manual) and the ones the archive read from documents (origin derived). next_payment is observed against the bank daily and never booked from; notice_deadline and end_deadline are the dates in Viktiga datum.

Use when: You need to know what the company has signed: what it pays and when, and when something must be terminated or renewed.

Don't use for: Booking payments (the agreements never post) or reading the agreement text (read the linked document).

Pitfalls

  • COMMITMENTS_UNAVAILABLE: Avtal och åtaganden is not switched on for this company yet.

Risk: low · Idempotent: yes · Reversible: no · Dry-run supported: no

Query parameters

NameTypeRequiredDescription
status"active" | "ended"noOnly active or ended agreements.
kind"rental" | "lease" | "loan" | "subscription" | "insurance" | "employment" | "shareholder" | "investment" | "customer" | "permit" | "ip_right" | "domain" | "guarantee" | "other"noOnly this kind.
origin"derived" | "manual"noOnly derived or manual agreements.

Response fields

NameTypeDescription
agreements[].agreement_idstring
agreements[].kindstring
agreements[].origin"derived" | "manual"derived: read from an archived document by the Arkiv pipeline (read only here); manual: registered by a person or an API client.
agreements[].titlestring
agreements[].status"active" | "ended"
agreements[].counterparty_party_idstring | null
agreements[].counterparty_namestring | null
agreements[].starts_onstring | null
agreements[].ends_onstring | null
agreements[].notice_monthsnumber | null
agreements[].renewal_termsstring | null
agreements[].amountnumber | null
agreements[].currencystring
agreements[].period"monthly" | "quarterly" | "yearly" | "one_time" | null
agreements[].first_due_onstring | null
agreements[].principalnumber | null
agreements[].interest_ratenumber | null
agreements[].document_idstring | null
agreements[].source_document_idstring | null
agreements[].notesstring | null
agreements[].next_paymentobject | nullThe next expected payment, else the latest missed one: observed against the bank daily, never booked from.
agreements[].notice_deadlineobject | nullThe last day to give notice, in Viktiga datum.
agreements[].end_deadlineobject | nullThe end, expiry or maturity date, in Viktiga datum.

Example response

{
  "data": {
    "agreements": [
      {
        "agreement_id": "6b2e…",
        "kind": "rental",
        "origin": "manual",
        "title": "Hyresavtal kontor Vasagatan",
        "status": "active",
        "counterparty_party_id": null,
        "counterparty_name": "Fastighets AB Kvarnen",
        "starts_on": "2026-01-01",
        "ends_on": "2028-12-31",
        "notice_months": 9,
        "renewal_terms": "Förlängs tre år i taget",
        "amount": 12500,
        "currency": "SEK",
        "period": "monthly",
        "first_due_on": null,
        "principal": null,
        "interest_rate": null,
        "document_id": null,
        "source_document_id": null,
        "notes": null,
        "next_payment": {
          "due_on": "2026-11-01",
          "amount": 12500,
          "currency": "SEK",
          "status": "expected",
          "direction": "out"
        },
        "notice_deadline": {
          "due_date": "2028-03-31",
          "title": "Sista dag att säga upp: Hyresavtal kontor Vasagatan"
        },
        "end_deadline": {
          "due_date": "2028-12-31",
          "title": "Hyresavtal kontor Vasagatan löper ut, förlängs annars"
        }
      }
    ]
  },
  "meta": {
    "request_id": "req_…",
    "api_version": "2026-05-12"
  }
}

group-links.list · scope companies:read

List the company's group structure: its parent, subsidiaries and associates with ownership and votes over time.

applies is false for a legal form that prepares no årsredovisning (an enskild firma). The parent link that holds on the balance date prefills the koncernförhållanden note.

Use when: You need the parent company for the årsredovisning, or which companies the company owns.

Don't use for: Consolidated accounts (koncernredovisning is not prepared here).

Pitfalls

  • COMMITMENTS_UNAVAILABLE: Avtal och åtaganden is not switched on for this company yet.

Risk: low · Idempotent: yes · Reversible: no · Dry-run supported: no

Response fields

NameType
group_linksobject[]
appliesboolean

Example response

{
  "data": {
    "group_links": [
      {
        "group_link_id": "3a77…",
        "relation": "parent",
        "counterparty_name": "Ägarbolaget AB",
        "counterparty_org_number": "559000-0000",
        "counterparty_registered_office": "Stockholm",
        "party_id": null,
        "ownership_percent": 100,
        "voting_percent": 100,
        "valid_from": "2024-01-01",
        "valid_to": null,
        "bas_account": null,
        "linked_company_id": null,
        "notes": null
      }
    ],
    "applies": true
  },
  "meta": {
    "request_id": "req_…",
    "api_version": "2026-05-12"
  }
}

GET /api/v1/companies/:companyId/securities

securities.list · scope companies:read

List ställda säkerheter and eventualförpliktelser, with the årsredovisning note texts they give on a balance date.

Rows are dated (valid_from, valid_to); the note texts count the rows that hold on balance_date (default today), per K2 type, with borgen always stated and what was given for group companies apart. A manual text on the årsredovisning overrides them.

Use when: You prepare the årsredovisning notes, or need to know what the company has pledged or guaranteed.

Don't use for: Loans themselves (agreements of kind loan).

Pitfalls

  • COMMITMENTS_UNAVAILABLE: Avtal och åtaganden is not switched on for this company yet.

Risk: low · Idempotent: yes · Reversible: no · Dry-run supported: no

Query parameters

NameTypeRequiredDescription
balance_datestringnoyyyy-MM-dd the note texts are stated per; default today.

Response fields

NameType
securitiesobject[]
balance_datestring
note_textsobject

Example response

{
  "data": {
    "securities": [
      {
        "security_id": "91c0…",
        "kind": "foretagsinteckning",
        "pledged": true,
        "description": "Företagsinteckning för checkkredit",
        "amount": 500000,
        "in_favour_of_party_id": null,
        "in_favour_of_name": "Handelsbanken",
        "for_group_company": false,
        "agreement_id": null,
        "valid_from": "2025-03-01",
        "valid_to": null,
        "document_id": null,
        "notes": null
      }
    ],
    "balance_date": "2026-12-31",
    "note_texts": {
      "securities_pledged": "Företagsinteckningar 500 000 kr.",
      "contingent_liabilities": null
    }
  },
  "meta": {
    "request_id": "req_…",
    "api_version": "2026-05-12"
  }
}

POST /api/v1/companies/:companyId/agreements

agreements.create · scope companies:write

Register an agreement by hand: what it is, the counterparty, the dates, notice and what it costs.

With amount and period, the expected payments a year ahead are written and compared with the bank daily. With ends_on, the end (or a loan's maturity) goes to Viktiga datum, and with notice_months also the last day to give notice. A document is linked by document_id, never read into fields. Dry-runnable.

Use when: The company has an agreement the books should remember: rent, a lease, a loan, a subscription, an insurance, a permit, an IP right, a domain, a guarantee.

Don't use for: Booking anything (agreements never post) or changing an agreement the archive read from a document (origin derived).

Pitfalls

  • COMMITMENTS_UNAVAILABLE: Avtal och åtaganden is not switched on for this company yet.
  • VALIDATION_ERROR: an amount needs a period, and ends_on cannot be before starts_on.
  • COMMITMENTS_REFERENCE_NOT_FOUND: counterparty_party_id or document_id is not the company's (details.field).

Risk: low · Idempotent: yes · Reversible: no · Dry-run supported: yes · Stage for approval: yes (?stage=true)

Query parameters

NameTypeRequiredDescription
dry_runstringnotrue (any case) previews the write without committing it, like the X-Dry-Run: true header. Any other value commits.
stagestringnotrue stages the write for approval instead of committing it: 202 with the pending operation to approve via POST /pending-operations/{id}/approve. Absent or false commits; other values are 400. A reason in the body (why you propose it, at most 500 characters) is shown to the approver as agent_reason and kept with the decision.

Request body

NameTypeRequiredDescription
kind"rental" | "lease" | "loan" | "subscription" | "insurance" | "employment" | "shareholder" | "investment" | "customer" | "permit" | "ip_right" | "domain" | "guarantee" | "other"yesrental, lease, loan, subscription, insurance, employment, shareholder, investment, customer, permit, ip_right, domain, guarantee or other.
titlestringyesWhat the agreement is, as the company calls it (e.g. Hyresavtal kontor Vasagatan).
counterparty_namestring | nullnoThe other party as named in the agreement.
counterparty_party_idstring | nullnoThe counterparty in the company's parties (party_id), when known.
starts_onstring | nullnoyyyy-MM-dd the agreement starts.
ends_onstring | nullnoyyyy-MM-dd it ends or expires (bindningstid, maturity, expiry of a permit or domain).
notice_monthsnumber | nullnoUppsägningstid in months before ends_on; gives a notice date in Viktiga datum.
renewal_termsstring | nullnoHow it renews when not terminated, e.g. Förlängs 12 månader i taget.
amountnumber | nullnoThe recurring payment (or the one payment), SEK unless currency says otherwise.
currencystringnoISO 4217, default SEK.
period"monthly" | "quarterly" | "yearly" | "one_time" | nullnoHow often amount falls due.
first_due_onstring | nullnoyyyy-MM-dd of the first payment when it is not starts_on; later ones follow by period.
principalnumber | nullnoA loan: the amount borrowed.
interest_ratenumber | nullnoA loan: the annual interest rate in percent.
document_idstring | nullnoThe archived document the agreement is in (document_id). Linked, never read into fields.
notesstring | nullno

Response fields

NameTypeDescription
agreement_idstring
kindstring
origin"derived" | "manual"derived: read from an archived document by the Arkiv pipeline (read only here); manual: registered by a person or an API client.
titlestring
status"active" | "ended"
counterparty_party_idstring | null
counterparty_namestring | null
starts_onstring | null
ends_onstring | null
notice_monthsnumber | null
renewal_termsstring | null
amountnumber | null
currencystring
period"monthly" | "quarterly" | "yearly" | "one_time" | null
first_due_onstring | null
principalnumber | null
interest_ratenumber | null
document_idstring | null
source_document_idstring | null
notesstring | null
next_paymentobject | nullThe next expected payment, else the latest missed one: observed against the bank daily, never booked from.
notice_deadlineobject | nullThe last day to give notice, in Viktiga datum.
end_deadlineobject | nullThe end, expiry or maturity date, in Viktiga datum.

Example request

{
  "kind": "rental",
  "title": "Hyresavtal kontor Vasagatan",
  "counterparty_name": "Fastighets AB Kvarnen",
  "starts_on": "2026-01-01",
  "ends_on": "2028-12-31",
  "notice_months": 9,
  "amount": 12500,
  "period": "monthly"
}

Example response

{
  "data": {
    "agreement_id": "6b2e…",
    "kind": "rental",
    "origin": "manual",
    "title": "Hyresavtal kontor Vasagatan",
    "status": "active",
    "counterparty_party_id": null,
    "counterparty_name": "Fastighets AB Kvarnen",
    "starts_on": "2026-01-01",
    "ends_on": "2028-12-31",
    "notice_months": 9,
    "renewal_terms": "Förlängs tre år i taget",
    "amount": 12500,
    "currency": "SEK",
    "period": "monthly",
    "first_due_on": null,
    "principal": null,
    "interest_rate": null,
    "document_id": null,
    "source_document_id": null,
    "notes": null,
    "next_payment": {
      "due_on": "2026-11-01",
      "amount": 12500,
      "currency": "SEK",
      "status": "expected",
      "direction": "out"
    },
    "notice_deadline": {
      "due_date": "2028-03-31",
      "title": "Sista dag att säga upp: Hyresavtal kontor Vasagatan"
    },
    "end_deadline": {
      "due_date": "2028-12-31",
      "title": "Hyresavtal kontor Vasagatan löper ut, förlängs annars"
    }
  },
  "meta": {
    "request_id": "req_…",
    "api_version": "2026-05-12"
  }
}

POST /api/v1/companies/:companyId/agreements/:id/end

agreements.end · scope companies:write

End a manual agreement: no more expected payments after the day it ended, its dates leave Viktiga datum.

ended_on defaults to today; an earlier ends_on stays. Ending twice answers the same. Dry-runnable.

Use when: The agreement was terminated, expired or replaced.

Don't use for: Removing an agreement that never existed (end it with the day it started) or an agreement the archive read from a document.

Pitfalls

  • COMMITMENTS_UNAVAILABLE: Avtal och åtaganden is not switched on for this company yet.
  • AGREEMENT_DERIVED
  • AGREEMENT_NOT_FOUND

Risk: low · Idempotent: yes · Reversible: yes · Dry-run supported: yes · Stage for approval: yes (?stage=true)

Query parameters

NameTypeRequiredDescription
dry_runstringnotrue (any case) previews the write without committing it, like the X-Dry-Run: true header. Any other value commits.
stagestringnotrue stages the write for approval instead of committing it: 202 with the pending operation to approve via POST /pending-operations/{id}/approve. Absent or false commits; other values are 400. A reason in the body (why you propose it, at most 500 characters) is shown to the approver as agent_reason and kept with the decision.

Request body

NameTypeRequiredDescription
ended_onstringnoyyyy-MM-dd the agreement ended; default today. An earlier ends_on stays.

Response fields

NameTypeDescription
agreement_idstring
kindstring
origin"derived" | "manual"derived: read from an archived document by the Arkiv pipeline (read only here); manual: registered by a person or an API client.
titlestring
status"active" | "ended"
counterparty_party_idstring | null
counterparty_namestring | null
starts_onstring | null
ends_onstring | null
notice_monthsnumber | null
renewal_termsstring | null
amountnumber | null
currencystring
period"monthly" | "quarterly" | "yearly" | "one_time" | null
first_due_onstring | null
principalnumber | null
interest_ratenumber | null
document_idstring | null
source_document_idstring | null
notesstring | null
next_paymentobject | nullThe next expected payment, else the latest missed one: observed against the bank daily, never booked from.
notice_deadlineobject | nullThe last day to give notice, in Viktiga datum.
end_deadlineobject | nullThe end, expiry or maturity date, in Viktiga datum.

Example request

{
  "ended_on": "2026-10-31"
}

Example response

{
  "data": {
    "agreement_id": "6b2e…",
    "kind": "rental",
    "origin": "manual",
    "title": "Hyresavtal kontor Vasagatan",
    "status": "ended",
    "counterparty_party_id": null,
    "counterparty_name": "Fastighets AB Kvarnen",
    "starts_on": "2026-01-01",
    "ends_on": "2026-10-31",
    "notice_months": 9,
    "renewal_terms": "Förlängs tre år i taget",
    "amount": 12500,
    "currency": "SEK",
    "period": "monthly",
    "first_due_on": null,
    "principal": null,
    "interest_rate": null,
    "document_id": null,
    "source_document_id": null,
    "notes": null,
    "next_payment": {
      "due_on": "2026-11-01",
      "amount": 12500,
      "currency": "SEK",
      "status": "expected",
      "direction": "out"
    },
    "notice_deadline": {
      "due_date": "2028-03-31",
      "title": "Sista dag att säga upp: Hyresavtal kontor Vasagatan"
    },
    "end_deadline": {
      "due_date": "2028-12-31",
      "title": "Hyresavtal kontor Vasagatan löper ut, förlängs annars"
    }
  },
  "meta": {
    "request_id": "req_…",
    "api_version": "2026-05-12"
  }
}

POST /api/v1/companies/:companyId/group-links

group-links.create · scope companies:write

Register a parent, subsidiary or associate of the company.

counterparty_registered_office (säte) and counterparty_org_number go into the koncernförhållanden note for a parent. linked_company_id names the same company in Accounted when it is in the caller's team. Dry-runnable.

Use when: The company is owned by another company, or owns shares in one.

Don't use for: Individual shareholders (the aktiebok) or an enskild firma (no group structure).

Pitfalls

  • COMMITMENTS_UNAVAILABLE: Avtal och åtaganden is not switched on for this company yet.
  • GROUP_LINKS_NOT_FOR_LEGAL_FORM: only companies that prepare an årsredovisning have a group structure here.
  • GROUP_LINK_COMPANY_NOT_IN_TEAM: linked_company_id must be another company in the same team.

Risk: low · Idempotent: yes · Reversible: no · Dry-run supported: yes · Stage for approval: yes (?stage=true)

Query parameters

NameTypeRequiredDescription
dry_runstringnotrue (any case) previews the write without committing it, like the X-Dry-Run: true header. Any other value commits.
stagestringnotrue stages the write for approval instead of committing it: 202 with the pending operation to approve via POST /pending-operations/{id}/approve. Absent or false commits; other values are 400. A reason in the body (why you propose it, at most 500 characters) is shown to the approver as agent_reason and kept with the decision.

Request body

NameTypeRequiredDescription
relation"parent" | "subsidiary" | "associate"yesparent (holds this company), subsidiary (dotterföretag) or associate (intresseföretag).
counterparty_namestringyesThe other company's name.
counterparty_org_numberstring | nullnoIts organisation number (a foreign one as registered there).
counterparty_registered_officestring | nullnoIts säte, for the koncernförhållanden note.
party_idstring | nullnoThe company in the parties register (party_id), when known.
ownership_percentnumber | nullnoShare of the capital held, percent.
voting_percentnumber | nullnoShare of the votes held, percent.
valid_fromstring | nullnoyyyy-MM-dd the relation began.
valid_tostring | nullnoyyyy-MM-dd it ended; open while it holds.
bas_accountstring | nullnoThe 13xx account (finansiella anläggningstillgångar) the holding or claim is booked on, as a string.
linked_company_idstring | nullnoThe same company in Accounted, when it is in the caller's team.
notesstring | nullno

Response fields

NameType
group_link_idstring
relation"parent" | "subsidiary" | "associate"
counterparty_namestring
counterparty_org_numberstring | null
counterparty_registered_officestring | null
party_idstring | null
ownership_percentnumber | null
voting_percentnumber | null
valid_fromstring | null
valid_tostring | null
bas_accountstring | null
linked_company_idstring | null
notesstring | null

Example request

{
  "relation": "parent",
  "counterparty_name": "Ägarbolaget AB",
  "counterparty_org_number": "559000-0000",
  "counterparty_registered_office": "Stockholm",
  "ownership_percent": 100,
  "voting_percent": 100,
  "valid_from": "2024-01-01"
}

Example response

{
  "data": {
    "group_link_id": "3a77…",
    "relation": "parent",
    "counterparty_name": "Ägarbolaget AB",
    "counterparty_org_number": "559000-0000",
    "counterparty_registered_office": "Stockholm",
    "party_id": null,
    "ownership_percent": 100,
    "voting_percent": 100,
    "valid_from": "2024-01-01",
    "valid_to": null,
    "bas_account": null,
    "linked_company_id": null,
    "notes": null
  },
  "meta": {
    "request_id": "req_…",
    "api_version": "2026-05-12"
  }
}

POST /api/v1/companies/:companyId/securities

securities.create · scope companies:write

Register a ställd säkerhet or an eventualförpliktelse.

amount is the mortgage amount (pantbrev, företagsinteckning), the book value of the pledged asset or the guaranteed amount, in SEK. for_group_company marks what was given for a group company (stated apart). A released one gets valid_to through PATCH; rows are never deleted. Dry-runnable.

Use when: The bank took a företagsinteckning, a property is mortgaged, an asset was bought under äganderättsförbehåll, the company signed a borgen.

Don't use for: The loan itself (POST /agreements, kind loan; link it with agreement_id).

Pitfalls

  • COMMITMENTS_UNAVAILABLE: Avtal och åtaganden is not switched on for this company yet.
  • COMMITMENTS_REFERENCE_NOT_FOUND: in_favour_of_party_id, agreement_id or document_id is not the company's (details.field).

Risk: low · Idempotent: yes · Reversible: no · Dry-run supported: yes · Stage for approval: yes (?stage=true)

Query parameters

NameTypeRequiredDescription
dry_runstringnotrue (any case) previews the write without committing it, like the X-Dry-Run: true header. Any other value commits.
stagestringnotrue stages the write for approval instead of committing it: 202 with the pending operation to approve via POST /pending-operations/{id}/approve. Absent or false commits; other values are 400. A reason in the body (why you propose it, at most 500 characters) is shown to the approver as agent_reason and kept with the decision.

Request body

NameTypeRequiredDescription
kind"foretagsinteckning" | "fastighetsinteckning" | "aganderattsforbehall" | "belanad_fordran" | "other_security" | "borgen" | "other_contingency"yesStälld säkerhet: foretagsinteckning, fastighetsinteckning, aganderattsforbehall, belanad_fordran, other_security. Eventualförpliktelse: borgen, other_contingency.
descriptionstringyesWhat is pledged or promised, e.g. Företagsinteckning i Handelsbanken för checkkredit.
amountnumberyesSEK: the mortgage amount (pantbrev, företagsinteckning), the book value of the pledged asset or the amount of the guarantee.
in_favour_of_namestring | nullnoWho the security or guarantee is given to.
in_favour_of_party_idstring | nullnoThat party in the company's parties (party_id), when known.
for_group_companybooleannoGiven for or to a group company (ÅRL 5 kap. 16 §): stated apart in the note.
agreement_idstring | nullnoThe loan agreement the security is for (agreement_id).
valid_fromstring | nullnoyyyy-MM-dd it was given.
valid_tostring | nullnoyyyy-MM-dd it was released; open while it holds.
document_idstring | nullnoThe archived document (pantförskrivning, borgensförbindelse).
notesstring | nullno

Response fields

NameTypeDescription
security_idstring
kind"foretagsinteckning" | "fastighetsinteckning" | "aganderattsforbehall" | "belanad_fordran" | "other_security" | "borgen" | "other_contingency"
pledgedbooleantrue: a ställd säkerhet; false: an eventualförpliktelse.
descriptionstring
amountnumber
in_favour_of_party_idstring | null
in_favour_of_namestring | null
for_group_companyboolean
agreement_idstring | null
valid_fromstring | null
valid_tostring | null
document_idstring | null
notesstring | null

Example request

{
  "kind": "foretagsinteckning",
  "description": "Företagsinteckning för checkkredit",
  "amount": 500000,
  "in_favour_of_name": "Handelsbanken",
  "valid_from": "2025-03-01"
}

Example response

{
  "data": {
    "security_id": "91c0…",
    "kind": "foretagsinteckning",
    "pledged": true,
    "description": "Företagsinteckning för checkkredit",
    "amount": 500000,
    "in_favour_of_party_id": null,
    "in_favour_of_name": "Handelsbanken",
    "for_group_company": false,
    "agreement_id": null,
    "valid_from": "2025-03-01",
    "valid_to": null,
    "document_id": null,
    "notes": null
  },
  "meta": {
    "request_id": "req_…",
    "api_version": "2026-05-12"
  }
}

PATCH /api/v1/companies/:companyId/agreements/:id

agreements.update · scope companies:write

Change a manual agreement; its expected payments and its dates follow.

Send only the fields that change; null clears one. Payments already matched or missed stay. Dry-runnable.

Use when: The rent changed, the agreement was extended, the notice period was wrong.

Don't use for: Ending an agreement (POST /agreements/{id}/end) or an agreement the archive read from a document.

Pitfalls

  • COMMITMENTS_UNAVAILABLE: Avtal och åtaganden is not switched on for this company yet.
  • AGREEMENT_DERIVED: the agreement was read from an archived document; correct the reading there.
  • AGREEMENT_NOT_FOUND

Risk: low · Idempotent: yes · Reversible: yes · Dry-run supported: yes · Stage for approval: yes (?stage=true)

Query parameters

NameTypeRequiredDescription
dry_runstringnotrue (any case) previews the write without committing it, like the X-Dry-Run: true header. Any other value commits.
stagestringnotrue stages the write for approval instead of committing it: 202 with the pending operation to approve via POST /pending-operations/{id}/approve. Absent or false commits; other values are 400. A reason in the body (why you propose it, at most 500 characters) is shown to the approver as agent_reason and kept with the decision.

Request body

NameTypeRequiredDescription
kind"rental" | "lease" | "loan" | "subscription" | "insurance" | "employment" | "shareholder" | "investment" | "customer" | "permit" | "ip_right" | "domain" | "guarantee" | "other"no
titlestringnoWhat the agreement is, as the company calls it (e.g. Hyresavtal kontor Vasagatan).
counterparty_namestring | nullnoThe other party as named in the agreement.
counterparty_party_idstring | nullnoThe counterparty in the company's parties (party_id), when known.
starts_onstring | nullnoyyyy-MM-dd the agreement starts.
ends_onstring | nullnoyyyy-MM-dd it ends or expires (bindningstid, maturity, expiry of a permit or domain).
notice_monthsnumber | nullnoUppsägningstid in months before ends_on; gives a notice date in Viktiga datum.
renewal_termsstring | nullnoHow it renews when not terminated, e.g. Förlängs 12 månader i taget.
amountnumber | nullnoThe recurring payment (or the one payment), SEK unless currency says otherwise.
currencystringnoISO 4217, default SEK.
period"monthly" | "quarterly" | "yearly" | "one_time" | nullnoHow often amount falls due.
first_due_onstring | nullnoyyyy-MM-dd of the first payment when it is not starts_on; later ones follow by period.
principalnumber | nullnoA loan: the amount borrowed.
interest_ratenumber | nullnoA loan: the annual interest rate in percent.
document_idstring | nullnoThe archived document the agreement is in (document_id). Linked, never read into fields.
notesstring | nullno

Response fields

NameTypeDescription
agreement_idstring
kindstring
origin"derived" | "manual"derived: read from an archived document by the Arkiv pipeline (read only here); manual: registered by a person or an API client.
titlestring
status"active" | "ended"
counterparty_party_idstring | null
counterparty_namestring | null
starts_onstring | null
ends_onstring | null
notice_monthsnumber | null
renewal_termsstring | null
amountnumber | null
currencystring
period"monthly" | "quarterly" | "yearly" | "one_time" | null
first_due_onstring | null
principalnumber | null
interest_ratenumber | null
document_idstring | null
source_document_idstring | null
notesstring | null
next_paymentobject | nullThe next expected payment, else the latest missed one: observed against the bank daily, never booked from.
notice_deadlineobject | nullThe last day to give notice, in Viktiga datum.
end_deadlineobject | nullThe end, expiry or maturity date, in Viktiga datum.

Example request

{
  "amount": 13000
}

Example response

{
  "data": {
    "agreement_id": "6b2e…",
    "kind": "rental",
    "origin": "manual",
    "title": "Hyresavtal kontor Vasagatan",
    "status": "active",
    "counterparty_party_id": null,
    "counterparty_name": "Fastighets AB Kvarnen",
    "starts_on": "2026-01-01",
    "ends_on": "2028-12-31",
    "notice_months": 9,
    "renewal_terms": "Förlängs tre år i taget",
    "amount": 13000,
    "currency": "SEK",
    "period": "monthly",
    "first_due_on": null,
    "principal": null,
    "interest_rate": null,
    "document_id": null,
    "source_document_id": null,
    "notes": null,
    "next_payment": {
      "due_on": "2026-11-01",
      "amount": 12500,
      "currency": "SEK",
      "status": "expected",
      "direction": "out"
    },
    "notice_deadline": {
      "due_date": "2028-03-31",
      "title": "Sista dag att säga upp: Hyresavtal kontor Vasagatan"
    },
    "end_deadline": {
      "due_date": "2028-12-31",
      "title": "Hyresavtal kontor Vasagatan löper ut, förlängs annars"
    }
  },
  "meta": {
    "request_id": "req_…",
    "api_version": "2026-05-12"
  }
}

group-links.update · scope companies:write

Change a group link, or end it with valid_to.

Send only the fields that change; null clears one. Dry-runnable.

Use when: Ownership changed, the parent sold the company, a subsidiary was wound up.

Don't use for: Removing history: an ended relation keeps its row with valid_to.

Pitfalls

  • COMMITMENTS_UNAVAILABLE: Avtal och åtaganden is not switched on for this company yet.
  • GROUP_LINK_NOT_FOUND
  • GROUP_LINKS_NOT_FOR_LEGAL_FORM

Risk: low · Idempotent: yes · Reversible: yes · Dry-run supported: yes · Stage for approval: yes (?stage=true)

Query parameters

NameTypeRequiredDescription
dry_runstringnotrue (any case) previews the write without committing it, like the X-Dry-Run: true header. Any other value commits.
stagestringnotrue stages the write for approval instead of committing it: 202 with the pending operation to approve via POST /pending-operations/{id}/approve. Absent or false commits; other values are 400. A reason in the body (why you propose it, at most 500 characters) is shown to the approver as agent_reason and kept with the decision.

Request body

NameTypeRequiredDescription
relation"parent" | "subsidiary" | "associate"no
counterparty_namestringnoThe other company's name.
counterparty_org_numberstring | nullnoIts organisation number (a foreign one as registered there).
counterparty_registered_officestring | nullnoIts säte, for the koncernförhållanden note.
party_idstring | nullnoThe company in the parties register (party_id), when known.
ownership_percentnumber | nullnoShare of the capital held, percent.
voting_percentnumber | nullnoShare of the votes held, percent.
valid_fromstring | nullnoyyyy-MM-dd the relation began.
valid_tostring | nullnoyyyy-MM-dd it ended; open while it holds.
bas_accountstring | nullnoThe 13xx account (finansiella anläggningstillgångar) the holding or claim is booked on, as a string.
linked_company_idstring | nullnoThe same company in Accounted, when it is in the caller's team.
notesstring | nullno

Response fields

NameType
group_link_idstring
relation"parent" | "subsidiary" | "associate"
counterparty_namestring
counterparty_org_numberstring | null
counterparty_registered_officestring | null
party_idstring | null
ownership_percentnumber | null
voting_percentnumber | null
valid_fromstring | null
valid_tostring | null
bas_accountstring | null
linked_company_idstring | null
notesstring | null

Example request

{
  "ownership_percent": 60
}

Example response

{
  "data": {
    "group_link_id": "3a77…",
    "relation": "parent",
    "counterparty_name": "Ägarbolaget AB",
    "counterparty_org_number": "559000-0000",
    "counterparty_registered_office": "Stockholm",
    "party_id": null,
    "ownership_percent": 60,
    "voting_percent": 100,
    "valid_from": "2024-01-01",
    "valid_to": null,
    "bas_account": null,
    "linked_company_id": null,
    "notes": null
  },
  "meta": {
    "request_id": "req_…",
    "api_version": "2026-05-12"
  }
}

PATCH /api/v1/companies/:companyId/securities/:id

securities.update · scope companies:write

Change a ställd säkerhet or an eventualförpliktelse, or release it with valid_to.

Send only the fields that change; null clears one. Dry-runnable.

Use when: A mortgage was raised, a borgen released, the book value of a pledged asset changed.

Don't use for: Removing history: a released security keeps its row with valid_to.

Pitfalls

  • COMMITMENTS_UNAVAILABLE: Avtal och åtaganden is not switched on for this company yet.
  • SECURITY_NOT_FOUND

Risk: low · Idempotent: yes · Reversible: yes · Dry-run supported: yes · Stage for approval: yes (?stage=true)

Query parameters

NameTypeRequiredDescription
dry_runstringnotrue (any case) previews the write without committing it, like the X-Dry-Run: true header. Any other value commits.
stagestringnotrue stages the write for approval instead of committing it: 202 with the pending operation to approve via POST /pending-operations/{id}/approve. Absent or false commits; other values are 400. A reason in the body (why you propose it, at most 500 characters) is shown to the approver as agent_reason and kept with the decision.

Request body

NameTypeRequiredDescription
kind"foretagsinteckning" | "fastighetsinteckning" | "aganderattsforbehall" | "belanad_fordran" | "other_security" | "borgen" | "other_contingency"no
descriptionstringnoWhat is pledged or promised, e.g. Företagsinteckning i Handelsbanken för checkkredit.
amountnumbernoSEK: the mortgage amount (pantbrev, företagsinteckning), the book value of the pledged asset or the amount of the guarantee.
in_favour_of_namestring | nullnoWho the security or guarantee is given to.
in_favour_of_party_idstring | nullnoThat party in the company's parties (party_id), when known.
for_group_companybooleannoGiven for or to a group company (ÅRL 5 kap. 16 §): stated apart in the note.
agreement_idstring | nullnoThe loan agreement the security is for (agreement_id).
valid_fromstring | nullnoyyyy-MM-dd it was given.
valid_tostring | nullnoyyyy-MM-dd it was released; open while it holds.
document_idstring | nullnoThe archived document (pantförskrivning, borgensförbindelse).
notesstring | nullno

Response fields

NameTypeDescription
security_idstring
kind"foretagsinteckning" | "fastighetsinteckning" | "aganderattsforbehall" | "belanad_fordran" | "other_security" | "borgen" | "other_contingency"
pledgedbooleantrue: a ställd säkerhet; false: an eventualförpliktelse.
descriptionstring
amountnumber
in_favour_of_party_idstring | null
in_favour_of_namestring | null
for_group_companyboolean
agreement_idstring | null
valid_fromstring | null
valid_tostring | null
document_idstring | null
notesstring | null

Example request

{
  "valid_to": "2026-06-30"
}

Example response

{
  "data": {
    "security_id": "91c0…",
    "kind": "foretagsinteckning",
    "pledged": true,
    "description": "Företagsinteckning för checkkredit",
    "amount": 500000,
    "in_favour_of_party_id": null,
    "in_favour_of_name": "Handelsbanken",
    "for_group_company": false,
    "agreement_id": null,
    "valid_from": "2025-03-01",
    "valid_to": "2026-06-30",
    "document_id": null,
    "notes": null
  },
  "meta": {
    "request_id": "req_…",
    "api_version": "2026-05-12"
  }
}