Menu
Cookbooks
API reference
- Overview
- Companies
- Customers
- Invoices
- Articles
- Suppliers
- Supplier invoices
- Supplier payment files
- Expense claims
- Transactions
- Reconciliation
- Bank accounts
- Journal entries
- Voucher gap explanations
- Fiscal periods
- Accounts
- Fixed assets
- Documents
- Inbox items
- Dimensions
- Employees
- Salary runs
- Reports
- Imports
- Compliance check
- Skatteverket
- Peppol
- Webhooks
- Operations
- Health
Companies
List, create and read the companies the API key can access, and read and update their settings: payment, contact and invoicing, the tax and VAT profile, and the bookkeeping lock.
Endpoints
GET/api/v1/companies: List companies the API key can access.GET/api/v1/companies/:companyId/settings: Read the company settings.POST/api/v1/companies: Create a company and set it up for bookkeeping.PATCH/api/v1/companies/:companyId/settings: Partially update company settings (contact, invoicing, reminders, voucher series, toggles).PATCH/api/v1/companies/:companyId/settings/bookkeeping-lock: Set, move or remove the company-wide bookkeeping lock date.PATCH/api/v1/companies/:companyId/settings/tax-profile: Change the tax and legal profile: VAT, F-skatt, employer registration, fiscal year, accounting method.
GET /api/v1/companies
companies.list · scope companies:read
List companies the API key can access.
Returns every non-archived company the API key user is a member of, together with their role. Use the returned id as {companyId} in subsequent endpoints.
Use when: You need to discover which company IDs an API key has access to before calling company-scoped endpoints.
Don't use for: Fetching a single company you already know the id of: use GET /api/v1/companies/{companyId} for that.
Pitfalls
- Multi-company keys (e.g. consultants) will see >1 result. Always pass the correct companyId in subsequent paths.
- Archived companies are excluded; if a company disappears the user has been removed from it or it was archived.
Risk: low · Idempotent: yes · Reversible: no · Dry-run supported: no
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
cursor | string | no | Opaque cursor from the previous page's meta.next_cursor. Omit for the first page. |
limit | number | no | Page size, 1-100 (default 50). Larger values are clamped to 100. |
Response fields
| Name | Type |
|---|---|
[].id | string |
[].name | string |
[].org_number | string | null |
[].entity_type | string |
[].role | "owner" | "admin" | "member" | "viewer" |
[].created_at | string |
Example response
{
"data": [
{
"id": "8fd5b1f4-…",
"name": "Acme AB",
"org_number": "556677-8899",
"entity_type": "aktiebolag",
"role": "owner",
"created_at": "2025-01-04T08:00:00Z"
}
],
"meta": {
"request_id": "req_…",
"api_version": "2026-05-12",
"next_cursor": null
}
}
GET /api/v1/companies/:companyId/settings
settings.get · scope companies:read
Read the company settings.
Returns every company setting the API can write: contact and address, invoice payment details and layout, invoice email texts and recipients, reminders, voucher series, feature toggles, the tax profile (VAT/moms, F-skatt, employer registration, fiscal year, accounting method, share capital) and the bookkeeping lock, plus the fixed legal identity (entity_type, org_number). contact_person is the default "Vår referens" on new invoices.
Use when: Before creating invoices (payment details must exist), before any settings change, or to learn how the books are kept (accounting_method: accrual = faktureringsmetoden, cash = kontantmetoden; moms_period).
Don't use for: Payroll settings (GET /salary/settings) or fiscal periods and their locks (GET /fiscal-periods).
Pitfalls
- Fields that were never set read null, not a default.
- bookkeeping_locked_through is the company-wide lock: nothing on or before that date can be booked or changed.
Risk: low · Idempotent: yes · Reversible: no · Dry-run supported: no
Response fields
| Name | Type | Description |
|---|---|---|
company_id | string | |
entity_type | string | null | |
org_number | string | null | The company org number. For an enskild firma it is the owner's personnummer and the last four digits are masked. |
onboarding_complete | boolean | null | |
contact_person | string | null | Default "Vår referens" on new invoices (column default_our_reference). |
company_name | string | null | |
address_line1 | string | null | |
address_line2 | string | null | |
postal_code | string | null | |
city | string | null | |
country | string | null | |
phone | string | null | |
email | string | null | |
website | string | null | |
tax_contact_name | string | null | |
tax_contact_phone | string | null | |
tax_contact_email | string | null | |
bank_name | string | null | |
clearing_number | string | null | |
account_number | string | null | |
bankgiro | string | null | |
plusgiro | string | null | |
swish | string | null | |
iban | string | null | |
bic | string | null | |
invoice_prefix | string | null | |
invoice_default_notes | string | null | |
invoice_company_name_position | string | null | |
invoice_late_fee_text | string | null | |
invoice_credit_terms_text | string | null | |
invoice_email_reply_to | string | null | |
invoice_primary_color | string | null | |
invoice_accent_color | string | null | |
invoice_font_family | string | null | |
invoice_header_text | string | null | |
invoice_footer_text | string | null | |
default_voucher_series | string | null | |
sector_slug | string | null | |
salary_vacation_year_basis | string | null | |
vat_number | string | null | |
moms_period | string | null | |
vat_filing_method | string | null | |
periodisk_sammanstallning_period | string | null | |
periodisk_sammanstallning_filing_method | string | null | |
accounting_method | string | null | |
bookkeeping_locked_through | string | null | |
ore_rounding | boolean | null | |
invoice_show_ocr | boolean | null | |
invoice_show_bankgiro | boolean | null | |
invoice_show_plusgiro | boolean | null | |
invoice_show_swish | boolean | null | |
invoice_show_logo | boolean | null | |
invoice_show_company_name | boolean | null | |
invoice_payment_links_enabled | boolean | null | |
send_invoice_reminders | boolean | null | |
reminder_fee_enabled | boolean | null | |
dimensions_enabled | boolean | null | |
mileage_enabled | boolean | null | |
sales_orders_enabled | boolean | null | |
quotes_enabled | boolean | null | |
proforma_enabled | boolean | null | |
recurring_invoices_enabled | boolean | null | |
self_billing_enabled | boolean | null | |
f_skatt | boolean | null | |
vat_registered | boolean | null | |
vat_taxable_base_over_40m | boolean | null | |
vat_has_eu_trade | boolean | null | |
periodisk_sammanstallning_enabled | boolean | null | |
kontrolluppgifter_enabled | boolean | null | |
rot_rut_enabled | boolean | null | |
oss_enabled | boolean | null | |
ioss_enabled | boolean | null | |
intrastat_enabled | boolean | null | |
punktskatt_enabled | boolean | null | |
fyllnadsinbetalning_enabled | boolean | null | |
pays_salaries | boolean | null | |
employer_registered | boolean | null | |
employer_seasonal | boolean | null | |
defer_invoice_booking | boolean | null | |
next_invoice_number | number | null | |
next_arrival_number | number | null | |
invoice_default_days | number | null | |
reminder_days_level_1 | number | null | |
reminder_days_level_2 | number | null | |
reminder_days_level_3 | number | null | |
reminder_fee_amount | number | null | |
reminder_interest_rate_override | number | null | |
fiscal_year_start_month | number | null | |
preliminary_tax_monthly | number | null | |
aktiekapital | number | null | |
antal_aktier | number | null | |
auto_lock_period_days | number | null | |
invoice_payment_accounts | unknown (optional) | |
invoice_email_texts | unknown (optional) | |
invoice_email_cc_addresses | unknown (optional) | |
invoice_email_bcc_addresses | unknown (optional) | |
reminder_text_overrides | unknown (optional) | |
default_voucher_series_per_source_type | unknown (optional) | |
voucher_series_labels | unknown (optional) |
Example response
{
"data": {
"company_id": "aaaa1111-2222-4333-8444-555566667777",
"entity_type": "aktiebolag",
"company_name": "Acme AB",
"contact_person": "Anna Andersson",
"bankgiro": "991-2346",
"vat_registered": true,
"moms_period": "quarterly",
"accounting_method": "accrual",
"bookkeeping_locked_through": "2026-06-30"
},
"meta": {
"request_id": "req_...",
"api_version": "2026-05-12"
}
}
POST /api/v1/companies
companies.create · scope companies:write
Create a company and set it up for bookkeeping.
Creates a new company owned by the API key user (or attached to one of their teams) and sets it up in one call: owner membership, BAS chart of accounts for the company form, compliance settings, the first fiscal period and the automatic tax deadlines. A 30-day trial with every paid capability starts immediately. Intended for partner platforms provisioning client companies (byrå/vertical SaaS) and for agents onboarding a user.
Use when: A platform or agent needs to provision a company that does not exist in Accounted yet. The caller becomes its owner; invite the end customer afterwards.
Don't use for: Companies that already exist (list them with GET /api/v1/companies), or changing settings on an existing company (PATCH /api/v1/companies/{companyId}/settings).
Pitfalls
- A VAT-registered company MUST send moms_period (monthly / quarterly / yearly); the request is refused otherwise, because a missing period silently produces zero VAT deadlines.
- Bookkeeping duty under BFL starts when the company exists with a fiscal period: do not create companies to try things out. Use a test-mode key (dry run) for that.
- Enskild firma always runs on the calendar year; fiscal_year_start_month is ignored for it.
- first_fiscal_year is only for a company in its first year (BFL 3 kap.: up to 18 months). Omit it for an established company.
- Not idempotent, and Idempotency-Key is not honoured on this company-less route: a retry after a network failure creates a second company. List GET /api/v1/companies before retrying.
- org_number is required for a VAT-registered company (the invoice momsregistreringsnummer derives from it), and f_skatt must be stated explicitly: F-skatt approval is never assumed.
- accounting_method may be omitted: it then defaults by form (aktiebolag accrual, enskild firma cash) and the response shows the resolved value. The cash default is only legal when turnover normally stays under 3 MSEK (BFL 4 kap 4 §): send accrual explicitly for a larger enskild firma.
Risk: medium · Idempotent: no · Reversible: no · Dry-run supported: yes
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
dry_run | string | no | true (any case) previews the write without committing it, like the X-Dry-Run: true header. Any other value commits. |
Request body
| Name | Type | Required |
|---|---|---|
name | string | yes |
entity_type | "enskild_firma" | "aktiebolag" | "ideell_forening" | yes |
org_number | string | no |
vat_registered | boolean | yes |
moms_period | "monthly" | "quarterly" | "yearly" | null | no |
accounting_method | "accrual" | "cash" | no |
f_skatt | boolean | yes |
fiscal_year_start_month | number | no |
first_fiscal_year | object | no |
address_line1 | string | no |
postal_code | string | no |
city | string | no |
team_id | string | no |
Response fields
| Name | Type |
|---|---|
id | string |
name | string |
entity_type | "enskild_firma" | "aktiebolag" | "ideell_forening" |
org_number | string | null |
vat_registered | boolean |
moms_period | "monthly" | "quarterly" | "yearly" | null |
accounting_method | "accrual" | "cash" |
fiscal_period | object |
team_id | string | null |
Example request
{
"name": "Acme AB",
"entity_type": "aktiebolag",
"org_number": "5566778899",
"vat_registered": true,
"moms_period": "quarterly",
"accounting_method": "accrual",
"f_skatt": true
}
Example response
{
"data": {
"id": "8fd5b1f4-…",
"name": "Acme AB",
"entity_type": "aktiebolag",
"org_number": "5566778899",
"vat_registered": true,
"moms_period": "quarterly",
"accounting_method": "accrual",
"fiscal_period": {
"start_date": "2026-01-01",
"end_date": "2026-12-31",
"name": "Räkenskapsår 2026"
},
"team_id": null
},
"meta": {
"request_id": "req_…",
"api_version": "2026-05-12"
}
}
PATCH /api/v1/companies/:companyId/settings
settings.update · scope companies:write
Partially update company settings (contact, invoicing, reminders, voucher series, toggles).
Patches any subset of the non-legal company settings: contact and address, invoice payment details (bank account, Bankgiro, Plusgiro, Swish, IBAN/BIC, per-currency payment accounts), invoice numbering, layout and branding, invoice email texts and fixed copy recipients, reminders, voucher series, feature toggles and the vacation-year basis. Same rules as the settings page. Owner or admin only. Idempotent (mandatory Idempotency-Key). Dry-runnable.
Use when: The payment or contact details on invoices change, invoice texts or reminders should be adjusted, or a feature should be switched on or off.
Don't use for: VAT, F-skatt, fiscal year, accounting method or share capital (PATCH /settings/tax-profile), the bookkeeping lock (PATCH /settings/bookkeeping-lock), payroll settings (PATCH /salary/settings). entity_type and org_number are fixed.
Pitfalls
- Only an owner or admin of the company may change settings: other members get 403 FORBIDDEN.
- contact_person is stored as default_our_reference: the default "Vår referens" on new invoices.
- bankgiro and plusgiro must carry a valid Luhn check digit; null or empty string clears them.
- invoice_email_texts only accepts the placeholders {fakturanummer} {kundnamn} {förnamn} {företag} {förfallodatum} {belopp}.
- reminder_days_level_1 < _2 < _3 must hold after the change (stored values fill in the ones not sent).
- The booking engine reads default_voucher_series_per_source_type, not default_voucher_series: send the map to move bookings to another series.
- salary_vacation_year_basis cannot change while open vacation balances exist.
Risk: medium · Idempotent: yes · Reversible: yes · Dry-run supported: yes
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
dry_run | string | no | true (any case) previews the write without committing it, like the X-Dry-Run: true header. Any other value commits. |
Request body
| Name | Type | Required | Description |
|---|---|---|---|
company_name | string | no | |
address_line1 | string | no | |
address_line2 | string | no | |
postal_code | string | no | |
city | string | no | |
country | string | no | |
phone | string | no | |
email | string | "" | no | |
website | string | "" | no | |
tax_contact_name | string | null | no | |
tax_contact_phone | string | null | no | |
tax_contact_email | string | null | "" | no | |
bank_name | string | null | no | |
clearing_number | string | null | "" | no | |
account_number | string | null | "" | no | |
bankgiro | string | null | "" | no | 7-8 digit Bankgiro with a valid Luhn check digit. Null or empty string clears it. |
plusgiro | string | null | "" | no | Plusgiro with hyphen and a valid Luhn check digit. Null or empty string clears it. |
swish | string | null | no | |
iban | string | null | "" | no | |
bic | string | null | "" | no | |
invoice_payment_accounts | object | no | |
invoice_prefix | string | null | no | |
next_invoice_number | number | no | |
next_arrival_number | number | no | |
invoice_default_days | number | no | |
invoice_default_notes | string | null | no | |
ore_rounding | boolean | no | |
invoice_show_ocr | boolean | no | |
invoice_show_bankgiro | boolean | no | |
invoice_show_plusgiro | boolean | no | |
invoice_show_swish | boolean | no | |
invoice_show_logo | boolean | no | |
invoice_show_company_name | boolean | no | |
invoice_company_name_position | "header" | "footer" | no | |
invoice_late_fee_text | string | null | no | |
invoice_credit_terms_text | string | null | no | |
invoice_payment_links_enabled | boolean | no | |
invoice_email_texts | object | null | no | Per-language (sv, en) overrides of subject, greeting, body, signoff. Placeholders: {fakturanummer} {kundnamn} {förnamn} {företag} {förfallodatum} {belopp}. Null clears every override. |
invoice_email_cc_addresses | string[] | null | no | |
invoice_email_bcc_addresses | string[] | null | no | |
invoice_email_reply_to | string | null | no | |
invoice_primary_color | string | no | |
invoice_accent_color | string | no | |
invoice_font_family | "Helvetica" | "Times-Roman" | "Courier" | "Source Sans 3" | "Source Serif 4" | "Custom" | no | |
invoice_header_text | string | null | no | |
invoice_footer_text | string | null | no | |
send_invoice_reminders | boolean | no | |
reminder_days_level_1 | number | no | |
reminder_days_level_2 | number | no | |
reminder_days_level_3 | number | no | |
reminder_text_overrides | object | null | no | |
reminder_fee_enabled | boolean | no | |
reminder_fee_amount | number | no | |
reminder_interest_rate_override | number | null | no | |
default_voucher_series | string | no | |
default_voucher_series_per_source_type | object | no | |
voucher_series_labels | object | no | |
sector_slug | string | null | no | |
dimensions_enabled | boolean | no | |
mileage_enabled | boolean | no | |
sales_orders_enabled | boolean | no | |
quotes_enabled | boolean | no | |
proforma_enabled | boolean | no | |
recurring_invoices_enabled | boolean | no | |
self_billing_enabled | boolean | no | |
salary_vacation_year_basis | "calendar" | "statutory_apr_mar" | no | |
contact_person | string | null | no | Default "Vår referens" on new invoices. Null clears it. |
Response fields
| Name | Type | Description |
|---|---|---|
company_id | string | |
entity_type | string | null | |
org_number | string | null | The company org number. For an enskild firma it is the owner's personnummer and the last four digits are masked. |
onboarding_complete | boolean | null | |
contact_person | string | null | Default "Vår referens" on new invoices (column default_our_reference). |
company_name | string | null | |
address_line1 | string | null | |
address_line2 | string | null | |
postal_code | string | null | |
city | string | null | |
country | string | null | |
phone | string | null | |
email | string | null | |
website | string | null | |
tax_contact_name | string | null | |
tax_contact_phone | string | null | |
tax_contact_email | string | null | |
bank_name | string | null | |
clearing_number | string | null | |
account_number | string | null | |
bankgiro | string | null | |
plusgiro | string | null | |
swish | string | null | |
iban | string | null | |
bic | string | null | |
invoice_prefix | string | null | |
invoice_default_notes | string | null | |
invoice_company_name_position | string | null | |
invoice_late_fee_text | string | null | |
invoice_credit_terms_text | string | null | |
invoice_email_reply_to | string | null | |
invoice_primary_color | string | null | |
invoice_accent_color | string | null | |
invoice_font_family | string | null | |
invoice_header_text | string | null | |
invoice_footer_text | string | null | |
default_voucher_series | string | null | |
sector_slug | string | null | |
salary_vacation_year_basis | string | null | |
vat_number | string | null | |
moms_period | string | null | |
vat_filing_method | string | null | |
periodisk_sammanstallning_period | string | null | |
periodisk_sammanstallning_filing_method | string | null | |
accounting_method | string | null | |
bookkeeping_locked_through | string | null | |
ore_rounding | boolean | null | |
invoice_show_ocr | boolean | null | |
invoice_show_bankgiro | boolean | null | |
invoice_show_plusgiro | boolean | null | |
invoice_show_swish | boolean | null | |
invoice_show_logo | boolean | null | |
invoice_show_company_name | boolean | null | |
invoice_payment_links_enabled | boolean | null | |
send_invoice_reminders | boolean | null | |
reminder_fee_enabled | boolean | null | |
dimensions_enabled | boolean | null | |
mileage_enabled | boolean | null | |
sales_orders_enabled | boolean | null | |
quotes_enabled | boolean | null | |
proforma_enabled | boolean | null | |
recurring_invoices_enabled | boolean | null | |
self_billing_enabled | boolean | null | |
f_skatt | boolean | null | |
vat_registered | boolean | null | |
vat_taxable_base_over_40m | boolean | null | |
vat_has_eu_trade | boolean | null | |
periodisk_sammanstallning_enabled | boolean | null | |
kontrolluppgifter_enabled | boolean | null | |
rot_rut_enabled | boolean | null | |
oss_enabled | boolean | null | |
ioss_enabled | boolean | null | |
intrastat_enabled | boolean | null | |
punktskatt_enabled | boolean | null | |
fyllnadsinbetalning_enabled | boolean | null | |
pays_salaries | boolean | null | |
employer_registered | boolean | null | |
employer_seasonal | boolean | null | |
defer_invoice_booking | boolean | null | |
next_invoice_number | number | null | |
next_arrival_number | number | null | |
invoice_default_days | number | null | |
reminder_days_level_1 | number | null | |
reminder_days_level_2 | number | null | |
reminder_days_level_3 | number | null | |
reminder_fee_amount | number | null | |
reminder_interest_rate_override | number | null | |
fiscal_year_start_month | number | null | |
preliminary_tax_monthly | number | null | |
aktiekapital | number | null | |
antal_aktier | number | null | |
auto_lock_period_days | number | null | |
invoice_payment_accounts | unknown (optional) | |
invoice_email_texts | unknown (optional) | |
invoice_email_cc_addresses | unknown (optional) | |
invoice_email_bcc_addresses | unknown (optional) | |
reminder_text_overrides | unknown (optional) | |
default_voucher_series_per_source_type | unknown (optional) | |
voucher_series_labels | unknown (optional) |
Example request
{
"bankgiro": "991-2346",
"contact_person": "Anna Andersson"
}
Example response
{
"data": {
"company_id": "aaaa1111-2222-4333-8444-555566667777",
"bankgiro": "991-2346",
"contact_person": "Anna Andersson",
"email": "faktura@acme.example"
},
"meta": {
"request_id": "req_...",
"api_version": "2026-05-12"
}
}
PATCH /api/v1/companies/:companyId/settings/bookkeeping-lock
settings.update-bookkeeping-lock · scope companies:write
Set, move or remove the company-wide bookkeeping lock date.
Sets bookkeeping_locked_through (nothing dated on or before it can be booked, corrected or attached) and auto_lock_period_days. Moving the date back or clearing it reopens those dates, exactly as the settings page allows; the response then carries the warning BOOKKEEPING_LOCK_MOVED_BACKWARDS. Owner or admin only. Idempotent (mandatory Idempotency-Key). Dry-runnable.
Use when: A period is reconciled and filed and should be protected, or a locked date must be reopened for a correction.
Don't use for: Locking or closing a single fiscal period (POST /fiscal-periods/{id}/lock, /close), or correcting a posted verifikat (storno or rättelse).
Pitfalls
- Only an owner or admin of the company may change settings: other members get 403 FORBIDDEN.
- Refused while an SIE import is still holding a fiscal period (finish the import first).
- A backwards move is allowed but high risk. When it reopens a filed momsdeklaration period it is refused with 409 BOOKKEEPING_LOCK_REOPENS_FILED_VAT (details.filed_periods) unless acknowledge_filed_vat_periods is true: reopen a filed period only to book a correction and file a corrected declaration for it.
Risk: high · Idempotent: yes · Reversible: yes · Dry-run supported: yes
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
dry_run | string | no | true (any case) previews the write without committing it, like the X-Dry-Run: true header. Any other value commits. |
Request body
| Name | Type | Required | Description |
|---|---|---|---|
bookkeeping_locked_through | string | null | no | Lock every date on or before this one (YYYY-MM-DD). Null removes the lock. |
auto_lock_period_days | number | null | no | Lock each month automatically this many days after it ends (the settings page offers 30, 60, 90). Null turns it off. |
acknowledge_filed_vat_periods | boolean | no | Required as true when the move reopens a momsdeklaration period already filed: the refusal names those periods. |
Response fields
| Name | Type | Description |
|---|---|---|
company_id | string | |
entity_type | string | null | |
org_number | string | null | The company org number. For an enskild firma it is the owner's personnummer and the last four digits are masked. |
onboarding_complete | boolean | null | |
contact_person | string | null | Default "Vår referens" on new invoices (column default_our_reference). |
company_name | string | null | |
address_line1 | string | null | |
address_line2 | string | null | |
postal_code | string | null | |
city | string | null | |
country | string | null | |
phone | string | null | |
email | string | null | |
website | string | null | |
tax_contact_name | string | null | |
tax_contact_phone | string | null | |
tax_contact_email | string | null | |
bank_name | string | null | |
clearing_number | string | null | |
account_number | string | null | |
bankgiro | string | null | |
plusgiro | string | null | |
swish | string | null | |
iban | string | null | |
bic | string | null | |
invoice_prefix | string | null | |
invoice_default_notes | string | null | |
invoice_company_name_position | string | null | |
invoice_late_fee_text | string | null | |
invoice_credit_terms_text | string | null | |
invoice_email_reply_to | string | null | |
invoice_primary_color | string | null | |
invoice_accent_color | string | null | |
invoice_font_family | string | null | |
invoice_header_text | string | null | |
invoice_footer_text | string | null | |
default_voucher_series | string | null | |
sector_slug | string | null | |
salary_vacation_year_basis | string | null | |
vat_number | string | null | |
moms_period | string | null | |
vat_filing_method | string | null | |
periodisk_sammanstallning_period | string | null | |
periodisk_sammanstallning_filing_method | string | null | |
accounting_method | string | null | |
bookkeeping_locked_through | string | null | |
ore_rounding | boolean | null | |
invoice_show_ocr | boolean | null | |
invoice_show_bankgiro | boolean | null | |
invoice_show_plusgiro | boolean | null | |
invoice_show_swish | boolean | null | |
invoice_show_logo | boolean | null | |
invoice_show_company_name | boolean | null | |
invoice_payment_links_enabled | boolean | null | |
send_invoice_reminders | boolean | null | |
reminder_fee_enabled | boolean | null | |
dimensions_enabled | boolean | null | |
mileage_enabled | boolean | null | |
sales_orders_enabled | boolean | null | |
quotes_enabled | boolean | null | |
proforma_enabled | boolean | null | |
recurring_invoices_enabled | boolean | null | |
self_billing_enabled | boolean | null | |
f_skatt | boolean | null | |
vat_registered | boolean | null | |
vat_taxable_base_over_40m | boolean | null | |
vat_has_eu_trade | boolean | null | |
periodisk_sammanstallning_enabled | boolean | null | |
kontrolluppgifter_enabled | boolean | null | |
rot_rut_enabled | boolean | null | |
oss_enabled | boolean | null | |
ioss_enabled | boolean | null | |
intrastat_enabled | boolean | null | |
punktskatt_enabled | boolean | null | |
fyllnadsinbetalning_enabled | boolean | null | |
pays_salaries | boolean | null | |
employer_registered | boolean | null | |
employer_seasonal | boolean | null | |
defer_invoice_booking | boolean | null | |
next_invoice_number | number | null | |
next_arrival_number | number | null | |
invoice_default_days | number | null | |
reminder_days_level_1 | number | null | |
reminder_days_level_2 | number | null | |
reminder_days_level_3 | number | null | |
reminder_fee_amount | number | null | |
reminder_interest_rate_override | number | null | |
fiscal_year_start_month | number | null | |
preliminary_tax_monthly | number | null | |
aktiekapital | number | null | |
antal_aktier | number | null | |
auto_lock_period_days | number | null | |
invoice_payment_accounts | unknown (optional) | |
invoice_email_texts | unknown (optional) | |
invoice_email_cc_addresses | unknown (optional) | |
invoice_email_bcc_addresses | unknown (optional) | |
reminder_text_overrides | unknown (optional) | |
default_voucher_series_per_source_type | unknown (optional) | |
voucher_series_labels | unknown (optional) |
Example request
{
"bookkeeping_locked_through": "2026-06-30"
}
Example response
{
"data": {
"company_id": "aaaa1111-2222-4333-8444-555566667777",
"bookkeeping_locked_through": "2026-06-30",
"auto_lock_period_days": null
},
"meta": {
"request_id": "req_...",
"api_version": "2026-05-12"
}
}
PATCH /api/v1/companies/:companyId/settings/tax-profile
settings.update-tax-profile · scope companies:write
Change the tax and legal profile: VAT, F-skatt, employer registration, fiscal year, accounting method.
Patches the settings that decide how the books are kept and declared: VAT registration, VAT number and moms period, EU trade and periodisk sammanställning, F-skatt, preliminary tax, employer registration, fiscal year start month, accounting method (faktureringsmetoden/kontantmetoden), deferred invoice booking, share capital and the optional deadline reminders. Runs the settings page rules and, like it, regenerates the tax deadlines. Owner or admin only. Idempotent (mandatory Idempotency-Key). Dry-runnable.
Use when: The company registered or deregistered for VAT or as an employer, Skatteverket changed its moms period, or the fiscal year or accounting method was changed with the authorities.
Don't use for: Invoice, contact or payment details (PATCH /settings), the bookkeeping lock (PATCH /settings/bookkeeping-lock), entity type or org number (fixed).
Pitfalls
- Only an owner or admin of the company may change settings: other members get 403 FORBIDDEN.
- Saving regenerates the system tax deadlines for this year and next; completed deadlines keep their status.
- vat_registered=true needs vat_number (SE + 12 digits) and moms_period, stored or sent.
- vat_registered=false also turns off vat_taxable_base_over_40m, vat_has_eu_trade and periodisk_sammanstallning_enabled.
- vat_taxable_base_over_40m requires moms_period=monthly; periodisk sammanställning requires VAT registration and EU trade.
- An enskild firma must keep fiscal_year_start_month=1 (BFL 3 kap.).
- aktiekapital and antal_aktier are set or cleared together.
- accounting_method=cash turns defer_invoice_booking off (deferred booking is accrual only).
- defer_invoice_booking=true: sent customer invoices and registered supplier invoices get no verifikat until they are booked with POST /invoices/{id}/book (or /invoices/bulk-book) and POST /supplier-invoices/{id}/book.
- accounting_method can only change while the current fiscal year has no posted verifikat (409 ACCOUNTING_METHOD_CHANGE_MID_YEAR): the method governs the whole year (BFL 5 kap 2 §), and for VAT a move to bokslutsmetoden also needs Skatteverket (ML 7 kap 17 §).
Risk: high · Idempotent: yes · Reversible: yes · Dry-run supported: yes
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
dry_run | string | no | true (any case) previews the write without committing it, like the X-Dry-Run: true header. Any other value commits. |
Request body
| Name | Type | Required |
|---|---|---|
f_skatt | boolean | no |
vat_registered | boolean | no |
vat_number | string | null | no |
moms_period | "monthly" | "quarterly" | "yearly" | null | no |
vat_taxable_base_over_40m | boolean | no |
vat_has_eu_trade | boolean | no |
vat_filing_method | "electronic" | "paper" | no |
periodisk_sammanstallning_enabled | boolean | no |
periodisk_sammanstallning_period | "monthly" | "quarterly" | no |
periodisk_sammanstallning_filing_method | "electronic" | "paper" | no |
kontrolluppgifter_enabled | boolean | no |
rot_rut_enabled | boolean | no |
oss_enabled | boolean | no |
ioss_enabled | boolean | no |
intrastat_enabled | boolean | no |
punktskatt_enabled | boolean | no |
fyllnadsinbetalning_enabled | boolean | no |
fiscal_year_start_month | number | no |
preliminary_tax_monthly | number | null | no |
pays_salaries | boolean | no |
employer_registered | boolean | null | no |
employer_seasonal | boolean | no |
accounting_method | "accrual" | "cash" | no |
defer_invoice_booking | boolean | no |
aktiekapital | number | null | no |
antal_aktier | number | null | no |
Response fields
| Name | Type | Description |
|---|---|---|
company_id | string | |
entity_type | string | null | |
org_number | string | null | The company org number. For an enskild firma it is the owner's personnummer and the last four digits are masked. |
onboarding_complete | boolean | null | |
contact_person | string | null | Default "Vår referens" on new invoices (column default_our_reference). |
company_name | string | null | |
address_line1 | string | null | |
address_line2 | string | null | |
postal_code | string | null | |
city | string | null | |
country | string | null | |
phone | string | null | |
email | string | null | |
website | string | null | |
tax_contact_name | string | null | |
tax_contact_phone | string | null | |
tax_contact_email | string | null | |
bank_name | string | null | |
clearing_number | string | null | |
account_number | string | null | |
bankgiro | string | null | |
plusgiro | string | null | |
swish | string | null | |
iban | string | null | |
bic | string | null | |
invoice_prefix | string | null | |
invoice_default_notes | string | null | |
invoice_company_name_position | string | null | |
invoice_late_fee_text | string | null | |
invoice_credit_terms_text | string | null | |
invoice_email_reply_to | string | null | |
invoice_primary_color | string | null | |
invoice_accent_color | string | null | |
invoice_font_family | string | null | |
invoice_header_text | string | null | |
invoice_footer_text | string | null | |
default_voucher_series | string | null | |
sector_slug | string | null | |
salary_vacation_year_basis | string | null | |
vat_number | string | null | |
moms_period | string | null | |
vat_filing_method | string | null | |
periodisk_sammanstallning_period | string | null | |
periodisk_sammanstallning_filing_method | string | null | |
accounting_method | string | null | |
bookkeeping_locked_through | string | null | |
ore_rounding | boolean | null | |
invoice_show_ocr | boolean | null | |
invoice_show_bankgiro | boolean | null | |
invoice_show_plusgiro | boolean | null | |
invoice_show_swish | boolean | null | |
invoice_show_logo | boolean | null | |
invoice_show_company_name | boolean | null | |
invoice_payment_links_enabled | boolean | null | |
send_invoice_reminders | boolean | null | |
reminder_fee_enabled | boolean | null | |
dimensions_enabled | boolean | null | |
mileage_enabled | boolean | null | |
sales_orders_enabled | boolean | null | |
quotes_enabled | boolean | null | |
proforma_enabled | boolean | null | |
recurring_invoices_enabled | boolean | null | |
self_billing_enabled | boolean | null | |
f_skatt | boolean | null | |
vat_registered | boolean | null | |
vat_taxable_base_over_40m | boolean | null | |
vat_has_eu_trade | boolean | null | |
periodisk_sammanstallning_enabled | boolean | null | |
kontrolluppgifter_enabled | boolean | null | |
rot_rut_enabled | boolean | null | |
oss_enabled | boolean | null | |
ioss_enabled | boolean | null | |
intrastat_enabled | boolean | null | |
punktskatt_enabled | boolean | null | |
fyllnadsinbetalning_enabled | boolean | null | |
pays_salaries | boolean | null | |
employer_registered | boolean | null | |
employer_seasonal | boolean | null | |
defer_invoice_booking | boolean | null | |
next_invoice_number | number | null | |
next_arrival_number | number | null | |
invoice_default_days | number | null | |
reminder_days_level_1 | number | null | |
reminder_days_level_2 | number | null | |
reminder_days_level_3 | number | null | |
reminder_fee_amount | number | null | |
reminder_interest_rate_override | number | null | |
fiscal_year_start_month | number | null | |
preliminary_tax_monthly | number | null | |
aktiekapital | number | null | |
antal_aktier | number | null | |
auto_lock_period_days | number | null | |
invoice_payment_accounts | unknown (optional) | |
invoice_email_texts | unknown (optional) | |
invoice_email_cc_addresses | unknown (optional) | |
invoice_email_bcc_addresses | unknown (optional) | |
reminder_text_overrides | unknown (optional) | |
default_voucher_series_per_source_type | unknown (optional) | |
voucher_series_labels | unknown (optional) | |
deadlines_regenerated | boolean | Whether this save regenerated the tax deadlines. |
Example request
{
"vat_registered": true,
"vat_number": "SE556677889901",
"moms_period": "quarterly"
}
Example response
{
"data": {
"company_id": "aaaa1111-2222-4333-8444-555566667777",
"vat_registered": true,
"vat_number": "SE556677889901",
"moms_period": "quarterly",
"deadlines_regenerated": true
},
"meta": {
"request_id": "req_...",
"api_version": "2026-05-12"
}
}