Menu

Errors

Every error returned by the Accounted REST API uses a stable code from this catalogue. Codes never change once shipped: agents can pattern-match on them safely. The docs_url field on every error envelope points at the catalogue entry for that specific code.

Envelope shape

{
  "error": {
    "code": "PERIOD_LOCKED",
    "message": "Den valda perioden är låst.",
    "message_en": "The selected period is locked.",
    "details": { "fiscal_period_id": "..." },
    "recovery_hint": "Unlock via /fiscal-periods/{id}/unlock or pick an open period.",
    "docs_url": "https://app.gnubok.se/docs/api/errors/PERIOD_LOCKED",
    "request_id": "req_..."
  }
}

The message field is Swedish (matches the dashboard); message_en is English (for agent and developer logs). recovery_hint (when present) is a one-line description of the canonical fix. request_id echoes the request for support and log correlation — note it lives inside error on failures (there is no top-level meta block on an error response, unlike the success envelope). docs_url is built from the code (…/docs/api/errors/<CODE>).

Generic

Cross-cutting codes returned by any endpoint.

COMPANY_CONTEXT_MISSING

HTTP 400: Bad request

No active company context resolved for the request.

Swedish: Ingen aktiv företagskontext. Välj ett företag och försök igen.

CONFLICT

HTTP 409: Conflict

Conflict.

Swedish: En konflikt uppstod. Ladda om sidan och försök igen.

FORBIDDEN

HTTP 403: Forbidden

Insufficient permissions.

Swedish: Du har inte behörighet att utföra denna åtgärd.

IDEMPOTENCY_KEY_REUSE

HTTP 409: Conflict

Idempotency key was previously used with a different request body.

Swedish: Idempotensnyckeln har redan använts med en annan begäran.

Remediation: Use a fresh UUID for a new operation, or send the original request body to replay.

INSUFFICIENT_SCOPE

HTTP 403: Forbidden

The current API key does not have the required scope.

Swedish: API-nyckeln saknar behörighet för denna åtgärd.

Remediation: Mint a new key with the missing scope or grant it through the API key settings. Related resource: Accounted://capabilities

INTERNAL_ERROR

HTTP 500: Server error

Internal server error.

Swedish: Ett oväntat serverfel uppstod. Försök igen senare.

MFA_REQUIRED

HTTP 403: Forbidden

MFA verification required.

Swedish: Tvåstegsverifiering krävs för att utföra åtgärden.

NOT_FOUND

HTTP 404: Not found

Resource not found.

Swedish: Resursen kunde inte hittas.

NOT_IMPLEMENTED

HTTP 501: Not implemented

This feature is accepted by the schema but not yet implemented.

Swedish: Funktionen är inte implementerad ännu.

RATE_LIMITED

HTTP 429: Rate limited

Rate limit exceeded.

Swedish: För många förfrågningar. Vänta en stund och försök igen.

UNAUTHORIZED

HTTP 401: Unauthorized

Authentication required.

Swedish: Din session har gått ut. Logga in igen.

UNKNOWN_ERROR

HTTP 500: Server error

An unexpected error occurred.

Swedish: Något gick fel. Försök igen.

VALIDATION_ERROR

HTTP 400: Bad request

Validation error.

Swedish: Förfrågan innehåller ogiltiga uppgifter.

Bookkeeping engine

Errors from the journal-entry lifecycle (create, commit, reverse, correct).

BOOKKEEPING_DATABASE_ERROR

HTTP 500: Server error

Bookkeeping database operation failed.

Swedish: Verifikationen kunde inte sparas. Försök igen.

BOOKKEEPING_LOCK_REOPENS_FILED_VAT

HTTP 409: Conflict

The lock date would reopen VAT periods already filed with Skatteverket. Send acknowledge_filed_vat_periods: true if a correction must be booked there (then file a corrected return).

Swedish: Låsdatumet skulle öppna momsperioder som redan är deklarerade till Skatteverket.

JOURNAL_ENTRY_NOTE_FAILED

HTTP 400: Bad request

The note could not be saved.

Swedish: Anteckningen kunde inte sparas.

JOURNAL_ENTRY_NOT_BALANCED

HTTP 400: Bad request

Debits and credits do not match.

Swedish: Verifikationen balanserar inte.

Remediation: Recalculate the lines so totals are equal before retrying.

JOURNAL_ENTRY_NOT_FOUND

HTTP 404: Not found

Journal entry not found.

Swedish: Verifikationen kunde inte hittas.

JOURNAL_ENTRY_UPDATE_FAILED

HTTP 400: Bad request

The draft journal entry could not be saved.

Swedish: Utkastet kunde inte sparas.

JOURNAL_LINE_BOTH_SIDES_NONZERO

HTTP 400: Bad request

A journal entry line cannot have both debit and credit non-zero.

Swedish: En verifikationsrad kan inte ha både debet och kredit nollskilda.

Remediation: Every line carries one side: net the two amounts onto the larger side, or split the line in two, before retrying.

JOURNAL_LINE_NEGATIVE_AMOUNT

HTTP 400: Bad request

A journal line has a negative amount. Book it on the opposite side instead.

Swedish: En verifikationsrad har ett negativt belopp. Boka beloppet på motsatt sida i stället.

Remediation: Every line carries one non-negative side: move a negative debit to credit_amount (and vice versa) before retrying.

JOURNAL_RATTELSE_FAILED

HTTP 500: Server error

The inline rättelse failed unexpectedly. Nothing was changed.

Swedish: Kunde inte rätta verifikationen. Försök igen.

JOURNAL_RATTELSE_LOG_FAILED

HTTP 500: Server error

Could not read the rättelse log.

Swedish: Kunde inte hämta rättelsehistorik.

JOURNAL_RATTELSE_PERIOD_LOCKED

HTTP 409: Conflict

Inline rättelse is only allowed in an open, unlocked period after the company lock date. Past a lock or close, storno is the only lawful correction (BFL 5 kap 5 §).

Swedish: Perioden är stängd eller låst: använd rättelseverifikat (storno).

Remediation: Correct the verifikat with storno (gnubok_correct_entry, POST /journal-entries/{id}/correct). Unlock the period only if the user explicitly asks for it. Related tool: gnubok_correct_entry

JOURNAL_RATTELSE_REFUSED

HTTP 409: Conflict

The inline rättelse was refused by a bookkeeping rule (the Swedish message names it). Correct the verifikat with storno instead: POST /journal-entries/{id}/correct.

Swedish: Rättelsen kan inte göras i samma verifikat. Använd rättelseverifikat (storno) i stället.

Remediation: Read the message. If the rule cannot be met inside the verifikat (linked underlag, foreign currency, bank-anchored amount, structural entry type), use the storno correction (gnubok_correct_entry) instead. Related tool: gnubok_correct_entry

Periods + year-end

Fiscal period locking, year-end closing, opening balances, FX revaluation.

FX_CLOSING_RATE_UNAVAILABLE

HTTP 502

No Riksbanken observation is available for the closing date. The revaluation was refused rather than posted from an estimated rate; details.missingRates lists each currency and date.

Swedish: Ingen valutakurs från Riksbanken finns för balansdagen. Valutaomvärderingen har inte bokförts: en uppskattad kurs får inte bokföras mot 3960/7960 (ÅRL 4 kap. 13 §). Försök igen när kursen är publicerad.

Remediation: Retry once Riksbanken has published the closing-date rate, or run the revaluation for a closing date that has a published observation.

PERIOD_ALREADY_CLOSED

HTTP 409: Conflict

Period is already closed: year-end has been run and the period is sealed.

Swedish: Perioden är redan stängd: bokslutet är genomfört och perioden kan inte öppnas igen.

Remediation: Nothing more to do on this period. gnubok_run_year_end locks, closes and seeds the next period's opening balances in one step, so gnubok_close_period, gnubok_lock_period and gnubok_set_opening_balances are not follow-up calls. Confirm the state with gnubok_list_fiscal_periods and continue in the next period. Related tool: gnubok_list_fiscal_periods

PERIOD_HAS_UNBOOKED_TRANSACTIONS

HTTP 400: Bad request

The period contains uncategorized business transactions.

Swedish: Perioden innehåller okategoriserade affärstransaktioner. Bokför eller markera dem som privata innan låsning.

Remediation: Categorize or mark uncategorized transactions before locking. Related tool: gnubok_list_uncategorized_transactions

PERIOD_LOCKED

HTTP 400: Bad request

Period is locked or closed; entries cannot be added.

Swedish: Bokföringen är låst för denna period.

Remediation: Either unlock the period via gnubok_unlock_period (if status is "locked", not "closed") or change the entry date to fall inside an open period. A bank transaction that is not a business event (duplicate, never executed) needs no verifikat: ignore it instead (POST /transactions/{id}/ignore, gnubok_ignore_transaction). Related tool: gnubok_unlock_period

PERIOD_LOCK_ALREADY_LOCKED

HTTP 409: Conflict

Period is already locked.

Swedish: Perioden är redan låst.

Remediation: A lock only freezes the period. If the intent is bokslut, do not lock first: gnubok_run_year_end posts the closing entry into the period and then locks and closes it itself, so it needs an unlocked period (gnubok_unlock_period reopens a locked, not closed, one). If the period should simply stay frozen, nothing more is needed. Related tool: gnubok_unlock_period

PERIOD_LOCK_FAILED

HTTP 400: Bad request

Failed to lock period.

Swedish: Perioden kunde inte låsas.

PERIOD_LOCK_HAS_DRAFTS

HTTP 400: Bad request

Period contains draft journal entries.

Swedish: Perioden innehåller verifikationsutkast som måste bokföras eller raderas innan låsning.

PERIOD_NOT_FOUND

HTTP 404: Not found

Fiscal period not found.

Swedish: Räkenskapsperioden kunde inte hittas.

PERIOD_NOT_LOCKED

HTTP 400: Bad request

Period must be locked before it can be closed.

Swedish: Perioden måste först låsas innan den kan stängas.

Remediation: Call gnubok_lock_period before closing. Related tool: gnubok_lock_period

PERIOD_REOPEN_NOT_CLOSED

HTTP 409: Conflict

Fiscal year is not closed.

Swedish: Räkenskapsåret är inte stängt.

PERIOD_REOPEN_NOT_EXTERNAL

HTTP 409: Conflict

The fiscal year was closed with a year-end run in Accounted and cannot be reopened here.

Swedish: Räkenskapsåret stängdes med ett bokslut i Accounted och kan inte öppnas igen här.

PERIOD_UNLOCK_CLOSED

HTTP 409: Conflict

A closed fiscal year cannot be unlocked. If the year was marked as closed in a previous system, reopen it from Fiscal years instead.

Swedish: Ett stängt räkenskapsår kan inte låsas upp. Klarmarkerades året som avslutat i ett tidigare program kan du i stället öppna det igen under Räkenskapsår.

PERIOD_UNLOCK_NOT_LOCKED

HTTP 409: Conflict

Period is not locked.

Swedish: Perioden är inte låst.

HTTP 400: Bad request

Year-end tax dispositions (periodiseringsfond, excess depreciation, corporate tax and special payroll tax) are not supported for this company's legal form.

Swedish: Bokslutsdispositioner (periodiseringsfond, överavskrivningar, bolagsskatt och särskild löneskatt) stöds inte för företagets företagsform.

YEAR_END_FAILED

HTTP 400: Bad request

Failed to execute year-end closing.

Swedish: Bokslutet kunde inte verkställas.

YEAR_END_NEXT_PERIOD_HAS_IB

HTTP 400: Bad request

Next fiscal period already has opening balances posted; reverse them before re-running year-end.

Swedish: Nästa räkenskapsperiod har redan ingående balanser bokförda. Storno dem innan du kör om bokslutet.

YEAR_END_NOT_RUN

HTTP 400: Bad request

Year-end closing must be executed before the period can be closed.

Swedish: Bokslutsåtgärder måste utföras innan perioden kan stängas.

YEAR_END_NO_ACTIVITY

HTTP 409: Conflict

The fiscal period has no posted activity, so no year-end voucher can be created. Post or import the period activity before running year-end closing.

Swedish: Räkenskapsperioden saknar bokförd aktivitet och kan därför inte skapa en bokslutsverifikation. Bokför eller importera periodens affärshändelser innan du kör bokslutet.

YEAR_END_PREVIEW_FAILED

HTTP 400: Bad request

Failed to preview year-end closing.

Swedish: Bokslutsförhandsgranskningen misslyckades.

YEAR_END_PRIOR_PERIOD_OPEN

HTTP 400: Bad request

A prior fiscal period is still open.

Swedish: En tidigare period är fortfarande öppen. Stäng den först.

YEAR_END_UNBALANCED_TRIAL

HTTP 400: Bad request

Trial balance does not balance.

Swedish: Resultaträkningens debet och kredit balanserar inte. Granska verifikationerna innan bokslut.

Invoices

Customer invoice lifecycle: draft, send, mark paid, credit.

CUSTOMER_COUNTRY_MISMATCH

HTTP 400: Bad request

The country does not agree with the customer type or the VAT number's country prefix.

Swedish: Landet stämmer inte med kundtypen eller VAT-numrets landsprefix.

CUSTOMER_CREATE_FAILED

HTTP 500: Server error

Failed to create customer.

Swedish: Kunden kunde inte skapas.

CUSTOMER_DELETE_FAILED

HTTP 500: Server error

Failed to delete customer.

Swedish: Kunden kunde inte tas bort.

CUSTOMER_DUPLICATE_ORG_NUMBER

HTTP 409: Conflict

A customer with that organisation number already exists.

Swedish: En kund med samma organisationsnummer finns redan.

CUSTOMER_HAS_INVOICES

HTTP 409: Conflict

Customer cannot be deleted while invoices reference it.

Swedish: Kunden har fakturor och kan inte tas bort.

CUSTOMER_NOT_FOUND

HTTP 404: Not found

Customer not found.

Swedish: Kunden kunde inte hittas.

CUSTOMER_NO_PERSONAL_NUMBER

HTTP 404: Not found

No personal number is stored for this customer.

Swedish: Kunden har inget sparat personnummer.

CUSTOMER_ORG_NUMBER_IS_PERSONAL

HTTP 400: Bad request

The org number looks like a Swedish personal identity number, which a foreign business cannot have. Choose the customer type Swedish business for a sole trader, or Individual for a private person.

Swedish: Organisationsnumret ser ut som ett personnummer, vilket ett utländskt företag inte kan ha. Välj kundtypen Svenskt företag för en enskild firma, eller Privatperson för en privatperson.

CUSTOMER_PERSONAL_NUMBER_CONFLICT

HTTP 400: Bad request

The customer was given two different personal identity numbers: one in personal_number and one in org_number. An individual customer keeps its personnummer in personal_number; leave org_number empty.

Swedish: Kunden fick två olika personnummer: ett i fältet personnummer och ett i fältet organisationsnummer. En privatperson har sitt personnummer i fältet personnummer; lämna organisationsnumret tomt.

CUSTOMER_PERSONAL_NUMBER_NOT_ALLOWED

HTTP 400: Bad request

Personal numbers can only be stored for individual customers.

Swedish: Personnummer kan endast sparas för privatkunder.

CUSTOMER_PERSONAL_NUMBER_UNREADABLE

HTTP 422: Unprocessable

The stored personal number cannot be read. Enter it again to replace it.

Swedish: Det sparade personnumret kan inte läsas. Skriv in det igen för att ersätta det.

CUSTOMER_UPDATE_FAILED

HTTP 500: Server error

Failed to update customer.

Swedish: Kunden kunde inte uppdateras.

INVOICE_ALREADY_SENT

HTTP 409: Conflict

The invoice is already sent or paid.

Swedish: Fakturan har redan skickats eller betalats.

INVOICE_BOOK_ALREADY_BOOKED

HTTP 400: Bad request

The invoice is already booked.

Swedish: Fakturan är redan bokförd.

INVOICE_BOOK_CASH_METHOD

HTTP 400: Bad request

Under the cash method the invoice is booked when it is paid.

Swedish: Vid kontantmetoden bokförs fakturan när den betalas.

INVOICE_BOOK_CONFLICT

HTTP 409: Conflict

The invoice was booked concurrently by another request. Reload the page.

Swedish: Fakturan bokfördes samtidigt av en annan begäran. Ladda om sidan.

INVOICE_BOOK_DEFERRED_DRAFT

HTTP 400: Bad request

This company books invoices in a separate step. Send or mark the draft as sent first, then book it.

Swedish: Företaget bokför fakturor i ett separat steg. Skicka eller markera utkastet som skickat först, bokför sedan.

INVOICE_BOOK_FAILED

HTTP 500: Server error

Failed to book the invoice.

Swedish: Fakturan kunde inte bokföras.

INVOICE_BOOK_INVALID_STATUS

HTTP 400: Bad request

Only sent or overdue invoices can be booked afterwards.

Swedish: Endast skickade eller förfallna fakturor kan bokföras i efterhand.

INVOICE_BOOK_NOT_BOOKABLE

HTTP 400: Bad request

Credit notes and other document types are not booked through this step.

Swedish: Kreditfakturor och andra dokumenttyper bokförs inte via detta steg.

INVOICE_BOOK_NO_FISCAL_PERIOD

HTTP 400: Bad request

No open fiscal period covers the invoice date. Create the fiscal year first.

Swedish: Inget öppet räkenskapsår täcker fakturadatumet. Skapa räkenskapsåret först.

INVOICE_CANCEL_RACE

HTTP 409: Conflict

Invoice was modified concurrently and could not be cancelled. Reload and retry.

Swedish: Fakturan ändrades samtidigt och kunde inte makuleras. Ladda om och försök igen.

INVOICE_CONVERT_NOT_CONVERTIBLE

HTTP 400: Bad request

Only proforma invoices and quotes can be converted to an invoice.

Swedish: Endast proformafakturor och offerter kan omvandlas till faktura.

INVOICE_CONVERT_QUOTE_DECLINED

HTTP 409: Conflict

The quote was declined. Mark it accepted before creating an invoice.

Swedish: Offerten är avböjd. Markera den som accepterad innan du skapar en faktura.

INVOICE_CONVERT_SOURCE_CANCELLED

HTTP 409: Conflict

This document is cancelled and cannot be converted.

Swedish: Dokumentet är makulerat och kan inte omvandlas.

INVOICE_CONVERT_SOURCE_CHANGED

HTTP 409: Conflict

The document changed concurrently (cancelled, converted or decided elsewhere). Reload and try again.

Swedish: Dokumentet ändrades samtidigt (makulerat, omvandlat eller beslutat på annat sätt). Ladda om och försök igen.

INVOICE_CREATE_ACCRUAL_INVALID

HTTP 400: Bad request

Periodisering cannot be used here. It requires the accrual method and is not supported for reverse charge, export, or proforma documents.

Swedish: Periodisering kan inte användas här. Den kräver faktureringsmetoden och stöds inte för omvänd skattskyldighet, export eller proforma.

INVOICE_CREATE_ARTICLE_INVALID

HTTP 400: Bad request

A supplied article does not exist in this company.

Swedish: En angiven artikel finns inte i företaget.

INVOICE_CREATE_INSERT_FAILED

HTTP 500: Server error

Invoice insert failed.

Swedish: Fakturan kunde inte sparas.

INVOICE_CREATE_ITEMS_FAILED

HTTP 500: Server error

Invoice items insert failed.

Swedish: Fakturaraderna kunde inte sparas.

INVOICE_CREATE_NUMBER_ASSIGN_FAILED

HTTP 500: Server error

Failed to assign invoice number on create.

Swedish: Kunde inte tilldela fakturanummer vid skapande.

INVOICE_CREATE_POSTING_ACCOUNT_VAT_CONFLICT

HTTP 400: Bad request

A balance-sheet account (class 1-2) can only be used on zero-VAT lines. Use a revenue account (3xxx) for VAT-bearing lines.

Swedish: Ett balanskonto (klass 1-2) kan bara användas på rader utan moms. Använd ett intäktskonto (3xxx) för momspliktiga rader.

INVOICE_CREATE_REVENUE_ACCOUNT_INVALID

HTTP 400: Bad request

A supplied posting account does not exist or is not an active balance-sheet or revenue account (class 1-3).

Swedish: Ett angivet bokföringskonto finns inte eller är inte ett aktivt balans- eller intäktskonto (klass 1-3).

INVOICE_CREATE_ROT_RUT_PERSONNUMMER_INVALID

HTTP 400: Bad request

The personnummer provided for the ROT/RUT deduction is invalid.

Swedish: Personnumret för ROT/RUT-avdraget är ogiltigt.

INVOICE_CREATE_ROT_RUT_VALIDATION

HTTP 400: Bad request

ROT/RUT deduction failed validation. Check personnummer and housing designation.

Swedish: ROT/RUT-avdraget kunde inte valideras. Kontrollera personnummer och fastighetsbeteckning.

INVOICE_CREATE_VAT_RULE_VIOLATION

HTTP 400: Bad request

The VAT rate is not allowed for this customer type.

Swedish: Momssatsen är inte tillåten för denna kundtyp.

INVOICE_CREDIT_ALREADY_CREDITED

HTTP 400: Bad request

Invoice has already been credited.

Swedish: Fakturan har redan krediterats.

INVOICE_CREDIT_ALREADY_ISSUED

HTTP 409: Conflict

The credit note has already been issued.

Swedish: Kreditfakturan har redan utfärdats.

INVOICE_CREDIT_ISSUE_INCOMPLETE

HTTP 500: Server error

The credit note could not be issued completely. No email was sent. Please try again.

Swedish: Kreditfakturan kunde inte utfärdas färdigt. Ingen e-post skickades. Försök igen.

INVOICE_CREDIT_NOT_INVOICE

HTTP 400: Bad request

Credit notes can only be created from standard invoices.

Swedish: Kreditfakturor kan endast skapas från riktiga fakturor.

INVOICE_CREDIT_NOT_SENT

HTTP 400: Bad request

Only sent, paid, or overdue invoices can be credited.

Swedish: Endast skickade, betalda eller förfallna fakturor kan krediteras.

INVOICE_CREDIT_NO_NUMBER

HTTP 400: Bad request

The original invoice has no invoice number and cannot be credited.

Swedish: Ursprungsfakturan saknar fakturanummer och kan inte krediteras.

INVOICE_CREDIT_ORIGINAL_NOT_FOUND

HTTP 404: Not found

Original invoice not found.

Swedish: Ursprungsfakturan kunde inte hittas.

INVOICE_CREDIT_PERIOD_LOCKED

HTTP 400: Bad request

Bookkeeping is locked for today's date; the credit note cannot be created.

Swedish: Bokföringen är låst för dagens datum. Kreditfakturan kan inte skapas.

Remediation: The credit note is dated today (Europe/Stockholm) and that date falls in a closed or locked period, or on/before the company lock date (details.reason). Unlock the period in the dashboard or wait for the next open period; the API cannot backdate or forward-date a credit note.

INVOICE_CREDIT_REPAIR_REQUIRED

HTTP 500: Server error

The credit-note voucher was created, but issuance must be completed. Retry or contact support.

Swedish: Kreditfakturans verifikat skapades, men utfärdandet måste slutföras. Försök igen eller kontakta support.

INVOICE_CREDIT_ROT_RUT_RECLAIMED

HTTP 400: Bad request

The invoice carries a refused ROT/RUT deduction booked as a customer receivable. Reverse that voucher before crediting the invoice, otherwise the credit note splits 1510 and 1513 wrongly.

Swedish: Fakturan har ett nekat ROT/RUT-avdrag bokfört som kundfordran. Makulera den bokningen (verifikationen med nekat avdrag) innan fakturan krediteras, annars stämmer inte kreditfakturans fördelning mellan konto 1510 och 1513.

INVOICE_CUSTOMER_NOT_FOUND

HTTP 404: Not found

Customer not found.

Swedish: Kunden kunde inte hittas.

INVOICE_DELETE_FAILED

HTTP 500: Server error

The invoice could not be deleted or cancelled.

Swedish: Fakturan kunde inte tas bort eller makuleras.

INVOICE_DELETE_NOT_DRAFT

HTTP 400: Bad request

Only draft invoices can be deleted; non-drafts must be credited.

Swedish: Endast utkast kan tas bort. Bokförda fakturor måste krediteras istället.

Remediation: Issue a credit note instead of deleting a posted invoice.

INVOICE_FINALIZE_INCOMPLETE

HTTP 500: Server error

The invoice number was assigned but the invoice could not be re-read. Reload the page and verify the invoice.

Swedish: Fakturanumret tilldelades men fakturan kunde inte läsas tillbaka. Ladda om sidan och kontrollera fakturan.

INVOICE_FINALIZE_NOT_DRAFT

HTTP 409: Conflict

Only unnumbered drafts can be finalized; this invoice already has a number or is not a draft.

Swedish: Endast onumrerade utkast kan skapas. Fakturan har redan ett nummer eller är inte ett utkast.

INVOICE_FX_RATE_MISSING

HTTP 400: Bad request

The invoice is in a foreign currency but has no exchange rate on file. Set the invoice exchange rate before booking; without it the amounts cannot be translated to SEK and the output VAT would be understated.

Swedish: Fakturan är i utländsk valuta men saknar växelkurs. Ange fakturans växelkurs innan den bokförs: utan kurs kan beloppen inte räknas om till kronor och momsen blir fel.

Remediation: Set exchange_rate on the invoice (the rate at the taxable-event date) and retry. On an unbooked invoice, POST /api/invoices/{id}/refresh-exchange-rate fetches it from Riksbanken.

INVOICE_FX_REFRESH_BOOKED

HTTP 409: Conflict

The invoice already has a verifikat, so its SEK conversion cannot be re-rated here. The SEK amounts are posted entries and may only be changed through one of the two sanctioned rättelse tracks (BFL 5 kap 5 §): storno + correcting entry, or the inline rättelse RPCs on an open unlocked period.

Swedish: Fakturan är redan bokförd, så växelkursen kan inte räknas om här. Beloppen i kronor sitter i verifikatet och får bara ändras genom rättelse: makulera med storno och bokför om, eller rätta verifikatet inifrån (BFL 5 kap. 5 §).

Remediation: Reverse the invoice verifikat (gnubok_reverse_journal_entry) and rebook it with the correct rate, or correct it inline via gnubok_correct_entry while the period is still open and unlocked. Never update invoice.exchange_rate behind a posted entry. Related tool: gnubok_reverse_journal_entry

INVOICE_FX_REFRESH_PERIOD_LOCKED

HTTP 409: Conflict

The fiscal period covering the invoice date is locked or closed, so the exchange rate cannot be updated. details.period_status carries the verdict; lookup_failed: true means the lock state could not be read and the request was refused fail-closed.

Swedish: Räkenskapsperioden för fakturadatumet är låst eller stängd, så växelkursen kan inte uppdateras. Öppna perioden eller rätta med storno i en öppen period.

Remediation: Unlock the period via gnubok_unlock_period (only if the status is "locked", not "closed"), then retry. Past a close, the correction belongs in an open period as a storno. Related tool: gnubok_unlock_period

INVOICE_FX_REFRESH_RATE_UNAVAILABLE

HTTP 502

No Riksbanken observation could be retrieved for the taxable-event date (delivery_date, falling back to invoice_date) and no cached rate was available either. The invoice was left unchanged rather than converted at an invented rate.

Swedish: Kunde inte hämta växelkursen från Riksbanken för leverans-/fakturadatumet. Fakturan är oförändrad: en gissad kurs får inte bokföras. Försök igen om en stund.

Remediation: Retry once Riksbanken responds. The permitted rate sources are the Nasdaq OMX mid-rate published by Riksbanken or the latest ECB rate (ML 8 kap 21-23 §); never substitute an estimate.

INVOICE_MARK_SENT_BOOK_FAILED

HTTP 500: Server error

The invoice could not be posted and remains a draft.

Swedish: Fakturan kunde inte bokföras och ligger kvar som utkast.

INVOICE_MARK_SENT_INVALID_STATUS

HTTP 400: Bad request

The invoice cannot be marked as sent in its current status.

Swedish: Fakturan kan inte markeras som skickad i nuvarande status.

INVOICE_MARK_SENT_LINES_INVALID

HTTP 400: Bad request

Custom journal lines are invalid: a row carries both debit and credit, or uses a 29xx interim account. Use line-level periodisering instead.

Swedish: Verifikationsraderna kan inte användas: en rad har både debet och kredit, eller använder ett interimskonto (29xx). Använd periodisering på fakturaraden istället.

INVOICE_MARK_SENT_LINES_UNBALANCED

HTTP 400: Bad request

Custom journal lines do not balance.

Swedish: Verifikationsraderna är inte balanserade (debet ≠ kredit).

INVOICE_MARK_SENT_RACE

HTTP 409: Conflict

The invoice was changed by another request. Reload and retry.

Swedish: Fakturan ändrades av en annan begäran. Ladda om och försök igen.

INVOICE_MARK_SENT_REPAIR_REQUIRED

HTTP 500: Server error

The voucher was created, but its invoice link must be repaired. Contact support.

Swedish: Verifikatet skapades, men kopplingen till fakturan måste återställas. Kontakta support.

INVOICE_MARK_SENT_STATUS_FAILED

HTTP 500: Server error

The invoice status could not be updated.

Swedish: Fakturans status kunde inte uppdateras.

INVOICE_NOT_A_QUOTE

HTTP 400: Bad request

This document is not a quote.

Swedish: Dokumentet är inte en offert.

INVOICE_NOT_FOUND

HTTP 404: Not found

Invoice not found.

Swedish: Fakturan kunde inte hittas.

INVOICE_PAID_BOOK_FAILED

HTTP 500: Server error

Failed to create payment journal entry.

Swedish: Kunde inte bokföra betalningen.

INVOICE_PAID_CASH_PARTIAL_UNSUPPORTED

HTTP 400: Bad request

The cash method cannot auto-book partial payments of an unbooked invoice: the generated entry always books the full invoice. Receive the full amount in one payment, switch to the accrual method, or book the payment manually as a journal entry.

Swedish: Kontantmetoden kan inte bokföra delbetalningar av en obokförd faktura automatiskt: hela fakturan bokförs vid betalning. Ta emot hela beloppet i en betalning, byt till faktureringsmetoden eller bokför betalningen manuellt som verifikation.

INVOICE_PAID_LIKELY_DUPLICATE

HTTP 409: Conflict

A likely-matching unlinked inbound bank transaction was found for this customer. Suggest linking it instead of creating a new payment entry.

Swedish: Det finns redan en obokförd inkommande banktransaktion som kan vara denna betalning. Länka den istället, eller markera som betald ändå om du är säker.

Remediation: Match the candidate transaction via POST /api/transactions/{id}/match-invoice, or resend mark-paid with force: true to create the payment entry anyway. When using the v1 endpoint, the force retry requires a fresh Idempotency-Key (the original key is bound to the body hash).

INVOICE_PAID_LINES_UNBALANCED

HTTP 400: Bad request

Custom journal lines do not balance.

Swedish: Verifikationsraderna är inte balanserade (debet ≠ kredit).

INVOICE_PAID_NOT_FOUND

HTTP 404: Not found

Invoice not found.

Swedish: Fakturan kunde inte hittas.

INVOICE_PAID_NOT_PAYABLE

HTTP 400: Bad request

Invoice is not in a payable status.

Swedish: Fakturan kan inte markeras som betald i nuvarande status.

INVOICE_PAID_NO_FISCAL_PERIOD

HTTP 400: Bad request

No open fiscal period covers the payment date.

Swedish: Ingen öppen räkenskapsperiod för betalningsdatumet.

INVOICE_PAID_RACE

HTTP 409: Conflict

Invoice was already paid by another request.

Swedish: Fakturan har redan betalats av en annan förfrågan.

INVOICE_PAYEE_ACCOUNT_INVALID

HTTP 400: Bad request

The bank account cannot be the payee on this invoice: it does not belong to the company, is not shown on customer invoices, or lacks details for the invoice currency.

Swedish: Bankkontot kan inte användas som betalningsmottagare på fakturan: det tillhör inte företaget, visas inte på kundfakturor eller saknar uppgifter för fakturans valuta.

Remediation: Välj ett av företagets bankkonton som är markerat "Visas på fakturor" och har betaluppgifter för fakturans valuta.

INVOICE_PAYEE_SNAPSHOT_FAILED

HTTP 500: Server error

The payment details could not be saved on the invoice. The invoice was not sent; try again.

Swedish: Betaluppgifterna kunde inte sparas på fakturan. Fakturan skickades inte; försök igen.

INVOICE_PAYMENT_CONFIRMATION_NOT_PAID

HTTP 409: Conflict

A payment confirmation can only be produced for a fully paid invoice.

Swedish: En betalningsbekräftelse kan bara skapas för en faktura som är fullt betald.

Remediation: Register the payment first (POST /api/invoices/{id}/mark-paid) so the invoice reaches status paid; credit notes and proformas never qualify.

INVOICE_PDF_RENDER_FAILED

HTTP 500: Server error

Invoice PDF rendering failed.

Swedish: Fakturans PDF kunde inte skapas.

INVOICE_QUOTE_ALREADY_INVOICED

HTTP 409: Conflict

This quote has already been invoiced and can no longer change.

Swedish: Offerten är redan fakturerad och kan inte ändras.

INVOICE_QUOTE_ALREADY_ORDERED

HTTP 409: Conflict

This quote already has a sales order. Invoice from the sales order instead.

Swedish: Offerten har redan en kundorder. Fakturera från kundordern i stället.

INVOICE_QUOTE_CHANGED_CONCURRENTLY

HTTP 409: Conflict

The quote changed concurrently (invoiced, cancelled or decided elsewhere). Reload and try again.

Swedish: Offerten ändrades samtidigt (fakturerad, makulerad eller beslutad på annat sätt). Ladda om och försök igen.

INVOICE_QUOTE_NOT_DECIDABLE

HTTP 400: Bad request

A cancelled quote cannot be accepted or declined.

Swedish: Makulerade offerter kan inte accepteras eller avböjas.

INVOICE_QUOTE_NOT_PAYABLE

HTTP 400: Bad request

A quote cannot be paid. Convert it to an invoice first.

Swedish: En offert kan inte betalas. Skapa en faktura från offerten först.

Remediation: Convert the accepted quote with POST /api/invoices/{id}/convert, then register the payment on the invoice.

INVOICE_RECURRING_UPDATE_PARTIAL

HTTP 500: Server error

The recurring schedule update failed and the compensating rollback did not fully apply: the schedule may be left in a partial state (header fields and items out of sync). Inspect the schedule fields and items before retrying.

Swedish: Ändringen av det återkommande schemat kunde inte slutföras och schemat kan ha hamnat i ett halvsparat läge. Öppna schemat och kontrollera både fält och rader innan du sparar igen.

INVOICE_SEND_CANCELLED

HTTP 400: Bad request

Cancelled invoices cannot be sent; create a new invoice instead.

Swedish: Makulerade fakturor kan inte skickas. Skapa en ny faktura istället.

INVOICE_SEND_COMPANY_SETTINGS_MISSING

HTTP 404: Not found

Company settings are missing.

Swedish: Företagsinställningar saknas.

INVOICE_SEND_EMAIL_NOT_CONFIGURED

HTTP 503

Email service is not configured.

Swedish: E-posttjänsten är inte konfigurerad. Kontrollera att RESEND_API_KEY och RESEND_FROM_EMAIL är satta (eller SMTP_HOST och SMTP_FROM_EMAIL med EMAIL_PROVIDER=smtp).

Remediation: Set RESEND_API_KEY and RESEND_FROM_EMAIL (or SMTP_HOST and SMTP_FROM_EMAIL with EMAIL_PROVIDER=smtp) in the deployment environment.

INVOICE_SEND_NO_CUSTOMER_EMAIL

HTTP 400: Bad request

Customer has no email address.

Swedish: Kunden saknar e-postadress. Uppdatera kunduppgifterna först.

Remediation: Add an email address on the customer record before sending.

INVOICE_SEND_NUMBER_ASSIGN_FAILED

HTTP 500: Server error

Failed to assign invoice number on send.

Swedish: Kunde inte tilldela fakturanummer.

INVOICE_SEND_PARTIAL

HTTP 200

Invoice was sent but a follow-up step (journal entry or PDF) failed.

Swedish: Fakturan skickades men en efterföljande åtgärd misslyckades (verifikation eller PDF-bilaga).

INVOICE_SEND_PAYMENT_ACCOUNT_INVALID

HTTP 400: Bad request

The bank account this invoice is to be paid to can no longer be used: it is disabled, no longer shown on customer invoices, or lacks details for the invoice currency. Pick another account on the invoice or update the account under Inställningar → Fakturering (Settings → Invoicing).

Swedish: Bankkontot som fakturan ska betalas till kan inte längre användas: det är avstängt, borttaget från kundfakturor eller saknar uppgifter för fakturans valuta. Välj ett annat konto på fakturan eller uppdatera kontot under Inställningar → Fakturering.

Remediation: Välj ett annat bankkonto på fakturan, eller återaktivera kontot och fyll i dess betaluppgifter under Inställningar → Fakturering.

INVOICE_SEND_PAYMENT_ACCOUNT_MISSING

HTTP 400: Bad request

The invoice has no payment details for its currency: bankgiro, plusgiro, Swish or a bank account for SEK, an IBAN for other currencies. Add them under Inställningar → Fakturering (Settings → Invoicing) before generating the PDF or sending the invoice.

Swedish: Fakturan saknar betalningsuppgifter för sin valuta: bankgiro, plusgiro, Swish eller bankkonto för SEK, IBAN för andra valutor. Lägg till dem under Inställningar → Fakturering innan du skapar PDF-filen eller skickar fakturan.

Remediation: Lägg till betalningsuppgifter för fakturans valuta under Inställningar → Fakturering: bankgiro, plusgiro, Swish eller bankkonto för SEK, IBAN för andra valutor.

INVOICE_SEND_PDF_RENDER_FAILED

HTTP 500: Server error

Failed to render invoice PDF before send; no invoice number was consumed.

Swedish: Fakturans PDF kunde inte skapas. Kontrollera fakturarader och kunduppgifter och försök igen.

INVOICE_SEND_PROVIDER_FAILED

HTTP 502

The email provider could not deliver the message.

Swedish: E-postleverantören kunde inte skicka meddelandet.

INVOICE_SEND_SNAPSHOT_FAILED

HTTP 500: Server error

The delivery snapshot could not be saved. No email was sent.

Swedish: Utskicksinformationen kunde inte sparas. Ingen e-post skickades.

INVOICE_SEND_TOO_MANY_RECIPIENTS

HTTP 400: Bad request

An invoice email may have at most 20 recipients in total.

Swedish: Ett fakturautskick får ha högst 20 mottagare totalt.

Remediation: Remove CC or BCC recipients before sending the invoice.

INVOICE_SEND_VAT_NUMBER_MISSING

HTTP 400: Bad request

The company is VAT-registered but has no VAT number, which is a mandatory invoice element (ML 17 kap. 24 §). Add it under Inställningar → Skatt (Settings → Tax) before issuing the invoice.

Swedish: Företaget är momsregistrerat men saknar momsregistreringsnummer, som måste anges på fakturan (ML 17 kap. 24 §). Lägg till det under Inställningar → Skatt innan du skickar fakturan.

Remediation: Lägg till företagets momsregistreringsnummer under Inställningar → Skatt.

INVOICE_UPDATE_DOCUMENT_TYPE_LOCKED

HTTP 400: Bad request

The document type of a quote or delivery note cannot change: its number belongs to that series. Create a new document instead.

Swedish: Dokumenttypen kan inte ändras på en offert eller följesedel: numret hör till serien. Skapa ett nytt dokument i stället.

HTTP 409: Conflict

The invoice was created from a sales order and this edit would drop the link to its order lines. Keep sales_order_item_id on the lines, or cancel the invoice and create a new one from the order.

Swedish: Fakturan är skapad från en kundorder och ändringen skulle tappa kopplingen till orderraderna. Skicka med sales_order_item_id på raderna, eller makulera fakturan och skapa en ny från kundordern.

INVOICE_UPDATE_NOT_DRAFT

HTTP 409: Conflict

Only draft invoices can be updated. Issued invoices are immutable: issue a credit note instead.

Swedish: Endast utkast kan ändras. Bokförda fakturor är oföränderliga: utfärda en kreditfaktura istället.

Remediation: Issue a credit note via POST /invoices/{id}:credit and create a fresh invoice with the corrected details.

Supplier invoices

AP lifecycle: register, approve, mark paid, credit.

SUPPLIER_CREATE_FAILED

HTTP 500: Server error

Failed to create supplier.

Swedish: Leverantören kunde inte skapas.

SUPPLIER_DELETE_FAILED

HTTP 500: Server error

Failed to delete supplier.

Swedish: Leverantören kunde inte tas bort.

SUPPLIER_DUPLICATE_ORG_NUMBER

HTTP 409: Conflict

A supplier with that organisation number already exists.

Swedish: En leverantör med samma organisationsnummer finns redan.

SUPPLIER_HAS_INVOICES

HTTP 409: Conflict

Supplier cannot be archived while open supplier invoices reference it.

Swedish: Leverantören kan inte arkiveras eftersom det finns öppna leverantörsfakturor som refererar till den.

Remediation: Close (credit / mark paid) every open supplier invoice before archiving the supplier. The dashboard exposes the same blocker.

SUPPLIER_NOT_FOUND

HTTP 404: Not found

Supplier not found.

Swedish: Leverantören kunde inte hittas.

SUPPLIER_UPDATE_FAILED

HTTP 500: Server error

Failed to update supplier.

Swedish: Leverantören kunde inte uppdateras.

Transactions

Bank transaction ingest, categorisation, matching.

BANK_ANCHOR_CASH_ACCOUNT_CHANGED

HTTP 409: Conflict

The bank account of the transaction was changed or removed. Reload and try again.

Swedish: Transaktionens bankkonto har ändrats eller tagits bort. Ladda om sidan och försök igen.

BANK_ANCHOR_SETTLEMENT_CHANGED

HTTP 409: Conflict

The voucher does not book the transaction amount on the bank ledger in the bank direction, so the transaction cannot be linked to it: a withdrawal must credit the bank ledger, a deposit must debit it.

Swedish: Verifikationen bokför inte transaktionens belopp på bankkontot åt rätt håll, så transaktionen kan inte kopplas till den. Ett uttag ska stå i kredit på bankkontot och en insättning i debet.

BANK_BOOKING_SETTLEMENT_CHANGED

HTTP 409: Conflict

The voucher does not book the transaction amount on the bank ledger in the bank direction: a withdrawal must credit the bank ledger, a deposit must debit it. If the bank account settings just changed, reload and try again.

Swedish: Verifikationen bokför inte transaktionens belopp på bankkontot åt rätt håll. Ett uttag ska stå i kredit på bankkontot och en insättning i debet. Har bankkontots inställningar nyss ändrats, ladda om sidan och försök igen.

BANK_BOOKING_SOURCE_CHANGED

HTTP 409: Conflict

The transaction changed after the booking was prepared. Reload it and book again.

Swedish: Transaktionen har ändrats sedan du öppnade den. Ladda om sidan och bokför igen.

CASH_ACCOUNT_DISABLED_PAYEE

HTTP 409: Conflict

This bank account is turned off and is printed on invoices. An owner or admin needs to turn it on in Settings before transactions can be put on it.

Swedish: Bankkontot är avstängt och visas på fakturor. En ägare eller administratör behöver aktivera det under Inställningar innan transaktioner kan läggas på det.

CASH_ACCOUNT_DISABLE_PRIMARY

HTTP 400: Bad request

This is the company’s primary bank account and cannot be disabled. Choose "Make primary" on another bank account first.

Swedish: Det här är företagets primära bankkonto och kan inte stängas av. Välj "Gör primärt" på ett annat bankkonto först.

CASH_ACCOUNT_DISABLE_UNRESOLVED

HTTP 400: Bad request

The account has unbooked transactions and cannot be disabled until they are booked or ignored.

Swedish: Kontot har obokförda transaktioner och kan inte stängas av förrän de är bokförda eller ignorerade.

CASH_ACCOUNT_ENABLED_BANK_MANAGED

HTTP 409: Conflict

This account belongs to a bank connection. Turn it on or off from the bank connection instead.

Swedish: Kontot hör till en bankkoppling. Slå på eller av det under bankkopplingen i stället.

CASH_ACCOUNT_IBAN_DUPLICATE

HTTP 409: Conflict

Another bank account of the company already carries this IBAN. One physical account must exist once: use the existing cash account.

Swedish: Ett annat bankkonto i företaget har redan detta IBAN. Samma bankkonto ska bara finnas en gång: använd det befintliga kontot.

CASH_ACCOUNT_KEEPER_IDENTITY_CONFLICT

HTTP 409: Conflict

The ledger account is already used by another bank account (a different IBAN or currency). Choose another ledger account. Nothing was saved.

Swedish: Bokföringskontot används redan av ett annat bankkonto (annat IBAN eller annan valuta). Välj ett annat bokföringskonto. Inget sparades.

CASH_ACCOUNT_LEDGER_CLAIMED

HTTP 409: Conflict

The ledger account is already used by a bank account from another bank connection. Choose another ledger account. Nothing was saved.

Swedish: Bokföringskontot används redan av ett bankkonto från en annan bankanslutning. Välj ett annat bokföringskonto. Inget sparades.

CASH_ACCOUNT_LEDGER_IN_USE

HTTP 409: Conflict

The bank account already has history on its ledger account and cannot be moved to another one automatically. Nothing was saved.

Swedish: Bankkontot har redan historik på sitt bokföringskonto och kan inte flyttas till ett annat automatiskt. Inget sparades.

CASH_ACCOUNT_LEDGER_TAKEN

HTTP 409: Conflict

The ledger account is already used by another bank account of the company. Pick another one or omit it to get the next free one.

Swedish: Bokföringskontot används redan av ett annat bankkonto i företaget. Välj ett annat konto eller låt systemet välja nästa lediga.

CASH_ACCOUNT_NOT_FOUND

HTTP 404: Not found

Bank account not found.

Swedish: Bankkontot hittades inte.

CASH_ACCOUNT_NO_FREE_LEDGER

HTTP 409: Conflict

No free ledger account in 1931-1959 is left for a new bank account. Pass a ledger_account (1920-1999) explicitly.

Swedish: Det finns inget ledigt bokföringskonto i 1931-1959 för ett nytt bankkonto. Ange ett bokföringskonto (1920-1999) själv.

CASH_ACCOUNT_OPERATION_BUSY

HTTP 409: Conflict

Another change to the bank accounts is in progress. Wait a moment and retry.

Swedish: En annan ändring av bankkontona pågår just nu. Vänta en stund och försök igen.

CASH_ACCOUNT_PRIMARY_INELIGIBLE

HTTP 400: Bad request

This account cannot be the primary. The primary account must be an active bank account in SEK (account 1920-1999).

Swedish: Kontot kan inte vara primärt. Det primära kontot måste vara ett aktivt bankkonto i SEK (konto 1920-1999).

MATCH_AMOUNT_EXCEEDS_REMAINING

HTTP 400: Bad request

Transaction amount exceeds the invoice remaining amount. Use the split-payment flow to allocate the excess across one or more other invoices.

Swedish: Transaktionsbeloppet är större än fakturans återstående belopp. Dela betalningen och fördela överskottet på en eller flera andra fakturor.

MATCH_INVOICE_ALREADY_HAS_PAYMENT_VOUCHER

HTTP 409: Conflict

Invoice already has a payment journal entry. Link the bank transaction to the existing voucher instead, or correct the prior bookkeeping first.

Swedish: Fakturan har redan en betalningsverifikation. Koppla istället bankhändelsen till befintlig verifikation, eller rätta tidigare bokföring först.

MATCH_INVOICE_ALREADY_PAID

HTTP 409: Conflict

Invoice has already been fully paid or is no longer matchable.

Swedish: Fakturan har redan slutbetalats av en annan förfrågan.

MATCH_INVOICE_BOOKING_RATE_MISSING

HTTP 400: Bad request

The foreign-currency invoice has no usable booking exchange rate on file (invoice.exchange_rate is missing, zero, or out of range), so the FX gain/loss (BAS 3960/7960) on settlement cannot be computed. Same guard as BATCH_FX_RATE_MISSING in match_batch_allocate.

Swedish: Fakturan är utställd i utländsk valuta men saknar växelkurs. Utan kursen går det inte att räkna fram kursvinst eller kursförlust. Komplettera fakturans växelkurs (exchange_rate) och försök igen.

Remediation: Set invoice.exchange_rate to the rate the receivable (1510) was booked at, then retry the match. On an invoice that is not yet booked, POST /api/invoices/{id}/refresh-exchange-rate fetches the taxable-event rate from Riksbanken and fills it in. On an already-booked invoice that endpoint refuses (INVOICE_FX_REFRESH_BOOKED): the SEK amounts are in a verifikat and only storno or inline rättelse may change them.

MATCH_INVOICE_CREDIT_NOTE

HTTP 400: Bad request

Credit notes cannot be recorded as paid.

Swedish: Kreditfakturor kan inte registreras som betalda.

MATCH_INVOICE_DUPLICATE_PAYMENT

HTTP 409: Conflict

This transaction is already matched to this invoice.

Swedish: Den här transaktionen är redan matchad mot fakturan.

MATCH_INVOICE_FORCE_CANDIDATE_MISMATCH

HTTP 409: Conflict

The candidate journal entry echoed in expected_journal_entry_id does not match the one detected at request time. Re-run the duplicate-payment pre-flight to obtain the current candidate, then retry.

Swedish: Verifikationen som dubblettkontrollen visade matchar inte längre. Stäng dialogen och försök igen så att rätt verifikation visas.

MATCH_INVOICE_FX_RATE_UNAVAILABLE

HTTP 400: Bad request

Could not retrieve an exchange rate from Riksbanken for the payment date. Provide the rate manually from your bank statement (manual_exchange_rate field).

Swedish: Kunde inte hämta valutakurs från Riksbanken för betalningsdatumet. Ange kursen manuellt från ditt bankutdrag (fältet manual_exchange_rate).

HTTP 500: Server error

Failed to link transaction to invoice.

Swedish: Kunde inte koppla transaktionen till fakturan.

MATCH_INVOICE_NOT_FOUND

HTTP 404: Not found

Invoice not found.

Swedish: Fakturan kunde inte hittas.

MATCH_INVOICE_NOT_INCOME

HTTP 400: Bad request

Only income transactions can be matched to customer invoices.

Swedish: Endast intäktstransaktioner kan matchas mot kundfakturor.

MATCH_INVOICE_NOT_INVOICE_TYPE

HTTP 400: Bad request

Only invoices may be matched to a transaction; proforma and delivery notes have no VAT obligation.

Swedish: Endast fakturor kan matchas mot en transaktion. Proforma och följesedel saknar momsskyldighet.

MATCH_INVOICE_NOT_OPEN

HTTP 400: Bad request

Invoice is not in an unpaid state.

Swedish: Fakturan är inte i ett obetalt läge och kan inte matchas.

MATCH_INVOICE_PARTIAL

HTTP 200

Match recorded but the journal entry could not be created.

Swedish: Matchningen registrerades men verifikationen kunde inte skapas.

MATCH_INVOICE_POSSIBLE_DUPLICATE

HTTP 409: Conflict

A posted journal entry already books the same amount on a nearby date. The user may have already booked this payment manually: link to the existing voucher or pass force=true to create a new one anyway.

Swedish: Det finns redan en bokförd verifikation på samma belopp och datum. Har du redan bokfört denna betalning? Koppla bankhändelsen till befintlig verifikation, eller skapa ny verifikation ändå om de inte hör ihop.

Remediation: Link the bank row to the existing voucher instead of booking a second one: gnubok_link_transaction_to_journal_entry (pass invoice_id to settle the kundfaktura at the same time) or gnubok_reconcile_match. Only if the row is a genuinely separate payment, call again with force=true and expected_journal_entry_id set to the id the refusal named. Related tool: gnubok_link_transaction_to_journal_entry

MATCH_INVOICE_RECORD_PAYMENT_FAILED

HTTP 500: Server error

Failed to record invoice payment.

Swedish: Kunde inte registrera fakturabetalningen.

MATCH_INVOICE_TX_ALREADY_LINKED

HTTP 400: Bad request

Transaction is already linked to an invoice.

Swedish: Transaktionen är redan kopplad till en faktura.

MATCH_INVOICE_TX_FX_RATE_MISSING

HTTP 400: Bad request

The bank transaction is in a foreign currency but has neither a SEK amount nor an exchange rate on file. Set the transaction exchange rate before matching; without it the amount cannot be translated to SEK.

Swedish: Banktransaktionen är i utländsk valuta men saknar både SEK-belopp och växelkurs. Komplettera transaktionens växelkurs innan du matchar: utan den kan beloppet inte räknas om till kronor.

Remediation: Set amount_sek (or exchange_rate) on the transaction for its value date, then retry the match.

MATCH_SI_ALREADY_PAID

HTTP 400: Bad request

Supplier invoice is already paid or credited.

Swedish: Leverantörsfakturan är redan betald eller krediterad.

MATCH_SI_AMOUNT_EXCEEDS_REMAINING

HTTP 400: Bad request

Transaction amount exceeds the supplier invoice remaining amount. Use the split-payment flow to allocate the excess across one or more other supplier invoices.

Swedish: Transaktionsbeloppet är större än leverantörsfakturans återstående belopp. Dela betalningen och fördela överskottet på en eller flera andra leverantörsfakturor.

MATCH_SI_CASH_FX_UNSUPPORTED

HTTP 400: Bad request

The cash method cannot handle a partial foreign-currency payment. Pay the invoice in full, switch to accrual, or book the payment manually.

Swedish: Kontantmetoden kan inte dela upp en delbetalning i utländsk valuta. Betala hela fakturan på en gång, byt till löpande bokföring eller bokför betalningen manuellt.

MATCH_SI_DUPLICATE_PAYMENT

HTTP 409: Conflict

This transaction is already matched to this supplier invoice.

Swedish: Den här transaktionen är redan matchad mot leverantörsfakturan.

MATCH_SI_JE_FAILED

HTTP 500: Server error

Failed to create the payment voucher. The match was aborted: no changes were saved.

Swedish: Betalningsverifikationen kunde inte skapas. Matchningen avbröts: inga ändringar har sparats.

HTTP 500: Server error

Failed to link transaction to supplier invoice.

Swedish: Kunde inte koppla transaktionen till leverantörsfakturan.

MATCH_SI_NOT_EXPENSE

HTTP 400: Bad request

Only expense transactions can be matched to supplier invoices.

Swedish: Endast utgiftstransaktioner kan matchas mot leverantörsfakturor.

MATCH_SI_NOT_FOUND

HTTP 404: Not found

Supplier invoice not found.

Swedish: Leverantörsfakturan kunde inte hittas.

MATCH_SI_NOT_OPEN

HTTP 409: Conflict

Supplier invoice has already been fully paid or is no longer matchable.

Swedish: Leverantörsfakturan har redan slutbetalats av en annan förfrågan.

MATCH_SI_RECORD_PAYMENT_FAILED

HTTP 500: Server error

Failed to record supplier invoice payment.

Swedish: Kunde inte registrera leverantörsfakturabetalningen.

MATCH_SI_TX_ALREADY_LINKED

HTTP 400: Bad request

Transaction is already linked to a supplier invoice.

Swedish: Transaktionen är redan kopplad till en leverantörsfaktura.

TRANSACTION_ALREADY_CATEGORIZED

HTTP 409: Conflict

The transaction already has a journal entry.

Swedish: Transaktionen är redan bokförd. Ångra kategoriseringen om du vill ändra den.

Remediation: Use gnubok_uncategorize_transaction first if you need to recategorize. Related tool: gnubok_uncategorize_transaction

TRANSACTION_BOOK_BANK_LINE_DIRECTION

HTTP 400: Bad request

The bank ledger is on the wrong side of the voucher: a withdrawal must credit the bank ledger, a deposit must debit it.

Swedish: Bankkontot står på fel sida i verifikationen. Ett uttag ska stå i kredit på bankkontot och en insättning i debet.

TRANSACTION_BOOK_FORCE_CANDIDATE_MISMATCH

HTTP 409: Conflict

The duplicate candidate echoed in expected_duplicate_transaction_id / expected_duplicate_journal_entry_id no longer matches the one detected at request time. Re-run the booking pre-flight to obtain the current candidate, then retry.

Swedish: Den möjliga dubbletten som visades matchar inte längre. Ladda om och försök igen så att rätt kandidat visas.

TRANSACTION_BOOK_POSSIBLE_DUPLICATE

HTTP 409: Conflict

This business event already appears to be booked: either another transaction with the same date and amount, or a voucher that already books the same amount on the bank account (e.g. a paid invoice or a salary run). Do not book the same business event twice. Review the existing voucher and link this transaction to it, or pass force=true to book it anyway if they are genuinely unrelated.

Swedish: Den här affärshändelsen ser redan ut att vara bokförd: antingen en annan transaktion på samma datum och belopp, eller en verifikation som redan bokar samma belopp på bankkontot (t.ex. en betald faktura eller en lönekörning). Bokför inte samma affärshändelse två gånger. Granska den befintliga verifikationen och länka transaktionen till den, eller bokför ändå om de inte hör ihop.

TRANSACTION_DELETE_BOOKED

HTTP 409: Conflict

The transaction is already booked or linked to a journal entry and cannot be deleted. Unlink it under Reports → Bank reconciliation if the link is wrong, or reverse (storno) the voucher.

Swedish: Transaktionen är redan bokförd eller kopplad till en verifikation och kan inte raderas. Koppla bort den under Rapporter → Bankavstämning om kopplingen är fel, eller storna verifikationen.

TRANSACTION_DELETE_FAILED

HTTP 500: Server error

Could not delete the transaction. Please try again.

Swedish: Kunde inte ta bort transaktionen. Försök igen.

TRANSACTION_DELETE_HAS_AUDIT_TRAIL

HTTP 409: Conflict

The transaction cannot be deleted because it has linked match-history records (accounting information, BFL ch. 7). Match it to an existing voucher, or ignore it under Reports → Bank reconciliation if you do not want to book it.

Swedish: Transaktionen kan inte raderas eftersom den har en kopplad matchningshistorik (räkenskapsinformation, BFL 7 kap.). Matcha den mot en befintlig verifikation, eller ignorera den under Rapporter → Bankavstämning om du inte vill bokföra den.

TRANSACTION_DELETE_IMPORTED

HTTP 409: Conflict

This transaction was fetched from your bank or imported from a file and cannot be deleted. You can ignore it to hide it from the list of transactions to book.

Swedish: Transaktionen har hämtats från banken eller importerats via fil och kan inte raderas. Du kan ignorera den så att den döljs från listan över transaktioner att bokföra.

TRANSACTION_MOVE_BOOKED

HTTP 409: Conflict

The transaction is booked or linked to a voucher and cannot be moved to another account. Unlink it under Reports → Bank reconciliation, or reverse (storno) the voucher first.

Swedish: Transaktionen är bokförd eller kopplad till en verifikation och kan inte flyttas till ett annat konto. Koppla bort den under Rapporter → Bankavstämning, eller storna verifikationen först.

TRANSACTION_MOVE_CURRENCY_MISMATCH

HTTP 400: Bad request

The transaction currency does not match the target account currency. A transaction can only be moved to an account in the same currency.

Swedish: Transaktionens valuta stämmer inte med kontots valuta. En transaktion kan bara flyttas till ett konto i samma valuta.

TRANSACTION_MOVE_UNKNOWN_ACCOUNT

HTTP 404: Not found

The account is not one of the company's registered cash accounts.

Swedish: Kontot finns inte bland företagets registrerade bankkonton.

TRANSACTION_TITLE_LOCKED

HTTP 409: Conflict

Cannot edit the title of a booked or matched transaction. Posted vouchers are corrected with storno.

Swedish: Det går inte att ändra titeln på en bokförd eller matchad transaktion. Bokförda verifikat rättas med storno.

Reports

Report generation: VAT declaration, periodisk sammanställning, SIE export, INK2.

PS_REPORT_CSV_BLOCKED_BY_ERRORS

HTTP 400: Bad request

CSV download blocked by validation errors. Fix them first.

Swedish: CSV kan inte laddas ner. Åtgärda blockerande fel först.

PS_REPORT_GENERATION_FAILED

HTTP 500: Server error

Failed to generate periodisk sammanställning.

Swedish: Periodisk sammanställning kunde inte beräknas.

PS_REPORT_INVALID_PERIOD

HTTP 400: Bad request

period is invalid for the chosen period type.

Swedish: period är ogiltig för vald periodtyp.

PS_REPORT_INVALID_PERIOD_TYPE

HTTP 400: Bad request

periodType must be monthly or quarterly.

Swedish: periodType måste vara monthly eller quarterly.

PS_REPORT_INVALID_YEAR

HTTP 400: Bad request

year must be a number between 2000 and 2100.

Swedish: year måste vara ett giltigt årtal mellan 2000 och 2100.

PS_REPORT_MISSING_FILER_INFO

HTTP 400: Bad request

Tax contact information is missing on company_settings.

Swedish: Kontaktuppgifter saknas. Fyll i namn, telefon och e-post under Inställningar.

PS_REPORT_MISSING_PARAMS

HTTP 400: Bad request

periodType, year and period query parameters are required.

Swedish: periodType, year och period krävs.

REPORT_GENERATION_FAILED

HTTP 500: Server error

Failed to generate the report.

Swedish: Rapporten kunde inte genereras.

REPORT_PDF_TOO_LARGE

HTTP 413

The report is too large for PDF. Download it as CSV or Excel instead.

Swedish: Rapporten är för stor för PDF. Ladda ner den som CSV eller Excel i stället.

REPORT_PERIOD_REQUIRED

HTTP 400: Bad request

period_id query parameter is required.

Swedish: period_id krävs.

SIE_EXPORT_COMPANY_NOT_FOUND

HTTP 404: Not found

Company settings missing; SIE export cannot be generated.

Swedish: Företagsinställningar saknas: SIE-exporten kan inte skapas.

SIE_EXPORT_FAILED

HTTP 500: Server error

Failed to generate SIE export.

Swedish: SIE-exporten misslyckades.

TAX_DECL_GENERATION_FAILED

HTTP 500: Server error

Failed to generate tax declaration.

Swedish: Skattedeklarationen kunde inte genereras.

HTTP 400: Bad request

INK2 is filed only by an aktiebolag. An enskild firma files the NE-bilaga instead.

Swedish: INK2 lämnas bara av aktiebolag. En enskild firma lämnar NE-bilagan i stället.

HTTP 400: Bad request

The NE-bilaga is filed only by an enskild firma. An aktiebolag files INK2 instead.

Swedish: NE-bilagan lämnas bara av enskild firma. Ett aktiebolag lämnar INK2 i stället.

VAT_ESKD_ORG_NUMBER_INVALID

HTTP 400: Bad request

The organisation number is missing or invalid. Set a valid organisation number in the company settings to create the VAT declaration file.

Swedish: Organisationsnummer saknas eller är ogiltigt. Ange ett giltigt organisationsnummer i företagsinställningarna för att skapa momsdeklarationsfilen.

VAT_ESKD_SETTINGS_MISSING

HTTP 404: Not found

Company settings are missing; the VAT declaration file cannot be created.

Swedish: Företagsinställningar saknas: momsdeklarationsfilen kan inte skapas.

VAT_FILING_CONFIRMED_BY_SKATTEVERKET

HTTP 409: Conflict

The period was filed through the Skatteverket connection with a receipt and cannot be unmarked.

Swedish: Perioden är inlämnad via Skatteverket-kopplingen med kvittens och kan inte avmarkeras.

VAT_FILING_DATE_BEFORE_PERIOD_END

HTTP 400: Bad request

The filing date is before the end of the period.

Swedish: Inlämningsdatumet ligger före periodens slut.

VAT_FILING_DATE_IN_FUTURE

HTTP 400: Bad request

The filing date cannot be in the future.

Swedish: Inlämningsdatumet kan inte ligga i framtiden.

VAT_FILING_NOT_FOUND

HTTP 404: Not found

The period is not recorded as filed.

Swedish: Perioden är inte markerad som inlämnad.

VAT_FILING_PERIOD_NOT_ENDED

HTTP 400: Bad request

The period has not ended yet and cannot be marked as filed.

Swedish: Perioden har inte avslutats än och kan inte markeras som inlämnad.

VAT_REPORT_GENERATION_FAILED

HTTP 500: Server error

Failed to calculate VAT declaration.

Swedish: Momsdeklarationen kunde inte beräknas.

VAT_REPORT_INVALID_PERIOD

HTTP 400: Bad request

period is invalid for the chosen period type.

Swedish: period är ogiltig för vald periodtyp.

VAT_REPORT_INVALID_PERIOD_TYPE

HTTP 400: Bad request

periodType must be one of monthly, quarterly, yearly.

Swedish: periodType måste vara monthly, quarterly eller yearly.

VAT_REPORT_INVALID_YEAR

HTTP 400: Bad request

year must be a number between 2000 and 2100.

Swedish: year måste vara ett giltigt årtal mellan 2000 och 2100.

VAT_REPORT_MISSING_PARAMS

HTTP 400: Bad request

periodType, year and period query parameters are required.

Swedish: periodType, year och period krävs.

VAT_SETTLEMENT_ALREADY_BOOKED

HTTP 409: Conflict

The VAT for this period is already booked. Reverse that journal entry first if the period needs to be booked again.

Swedish: Momsen för perioden är redan bokförd. Annullera det verifikatet först om perioden behöver bokföras om.

VAT_SETTLEMENT_EMPTY

HTTP 400: Bad request

There is no VAT to book for this period.

Swedish: Ingen moms att bokföra för perioden.

VAT_SETTLEMENT_FAILED

HTTP 500: Server error

Failed to book the VAT settlement.

Swedish: Momsen kunde inte bokföras.

VAT_SETTLEMENT_NO_FISCAL_PERIOD

HTTP 400: Bad request

No open fiscal year covers the last day of the VAT period.

Swedish: Det finns inget öppet räkenskapsår som täcker periodens sista dag.

VAT_SETTLEMENT_PROPOSAL_CHANGED

HTTP 409: Conflict

The bookkeeping for the period changed after the proposal was made. Fetch a new proposal and review it before booking the VAT.

Swedish: Bokföringen för perioden har ändrats sedan förslaget togs fram. Hämta ett nytt förslag och granska det innan momsen bokförs.

Imports

SIE import, bank file import, opening-balance import, provider migration.

BANK_FILE_DUPLICATE

HTTP 409: Conflict

Bank file has already been imported.

Swedish: Den här filen har redan importerats.

BANK_FILE_EXECUTE_FAILED

HTTP 500: Server error

Bank file import failed.

Swedish: Bankfilsimporten misslyckades.

BANK_FILE_FORMAT_UNKNOWN

HTTP 400: Bad request

Bank file format could not be identified.

Swedish: Bankfilens format kunde inte identifieras.

BANK_FILE_IMPORT_RECORD_FAILED

HTTP 500: Server error

Failed to create the bank file import record.

Swedish: Kunde inte skapa importpost.

BANK_FILE_INVALID_SETTLEMENT_ACCOUNT

HTTP 400: Bad request

The bank account must be an active class 19 account in your chart of accounts (for example 1930).

Swedish: Bankkontot måste vara ett aktivt konto i kontoklass 19 i din kontoplan (till exempel 1930).

BANK_FILE_LIST_INVALID_QUERY

HTTP 400: Bad request

Invalid list parameters: limit must be 1-100, offset a nonnegative integer, and status a valid import status.

Swedish: Ogiltiga listparametrar: limit måste vara 1-100, offset ett icke-negativt heltal och status ett giltigt importstatus.

BANK_FILE_NO_FILE

HTTP 400: Bad request

No file attached to the request.

Swedish: Ingen fil bifogad i förfrågan.

BANK_FILE_NO_TRANSACTIONS

HTTP 400: Bad request

No transactions to import.

Swedish: Bankfilen innehåller inga transaktioner att importera.

BANK_FILE_PARSE_FAILED

HTTP 500: Server error

Failed to parse the bank file.

Swedish: Kunde inte tolka bankfilen.

BANK_FILE_SETTLEMENT_ACCOUNT_UNAVAILABLE

HTTP 409: Conflict

The selected bank account cannot be used for this file. Nothing was imported.

Swedish: Det valda bankkontot kan inte användas för den här filen. Inget importerades.

BANK_FILE_SKATTEKONTO_DETECTED

HTTP 400: Bad request

This file looks like a Skatteverket tax account statement. Use the skattekonto import instead.

Swedish: Filen ser ut som ett skattekontoutdrag från Skatteverket. Använd Skattekonto-importen i stället.

BANK_FILE_TOO_LARGE

HTTP 400: Bad request

File exceeds the 10 MB size limit.

Swedish: Filen är för stor. Maxstorlek är 10 MB.

BANK_FILE_UNDO_FAILED

HTTP 400: Bad request

Failed to undo bank file import.

Swedish: Bankfilsimporten kunde inte ångras.

BANK_FILE_UNDO_FORBIDDEN

HTTP 403: Forbidden

Only company owners and admins can undo a bank file import.

Swedish: Endast ägare eller administratörer kan ångra en bankfilsimport.

BANK_FILE_UNDO_NOT_COMPLETED

HTTP 409: Conflict

Only completed bank file imports can be undone.

Swedish: Bara slutförda bankfilsimporter kan ångras.

BANK_FILE_UNDO_NOT_FOUND

HTTP 404: Not found

Bank file import not found.

Swedish: Bankfilsimporten kunde inte hittas.

SIE_IMPORT_ACCOUNT_ACTIVATION_FAILED

HTTP 500: Server error

Failed to activate mapped accounts in the chart of accounts.

Swedish: Kunde inte aktivera konton i kontoplanen. Kontrollera att kontona inte redan finns med andra inställningar.

SIE_IMPORT_ACTION_CONFLICT

HTTP 409: Conflict

The SIE import cannot be undone or resumed right now: another run is in progress, the period is locked, or a correction of an imported voucher needs review first.

Swedish: SIE-importen kan inte ångras eller återupptas just nu: en annan körning pågår, perioden är låst eller en rättelse av ett importerat verifikat behöver granskas först.

SIE_IMPORT_DUPLICATE

HTTP 409: Conflict

This SIE file has already been imported.

Swedish: Den här SIE-filen har redan importerats.

SIE_IMPORT_FAILED

HTTP 400: Bad request

SIE import completed with errors.

Swedish: Importen slutfördes med fel. Se detaljerna nedan.

SIE_IMPORT_HISTORY_RETAINED

HTTP 403: Forbidden

Import history is retained. Open the import to review its status and available actions.

Swedish: Importhistoriken bevaras. Öppna importen för att granska dess status och tillgängliga åtgärder.

Remediation: Read the import status with the same import_id. Related tool: gnubok_sie_import_status Related resource: /import?mode=sie

SIE_IMPORT_LEGACY_REVIEW_REQUIRED

HTTP 409: Conflict

Import history is retained. This legacy SIE import needs an outcome review before it can be undone or replaced. Open import history and choose Review.

Swedish: Importhistoriken bevaras. Den här äldre SIE-importens utfall behöver granskas innan den kan ångras eller ersättas. Öppna importhistoriken och välj Granska.

Remediation: Read gnubok_sie_import_status with the same import_id for the assessment. In the app, open SIE import history and choose Review. No recovery mutation is available for this legacy import yet. Related tool: gnubok_sie_import_status Related resource: /import?mode=sie

SIE_IMPORT_UNEXPECTED

HTTP 500: Server error

The import outcome could not be confirmed. Check import history before retrying.

Swedish: Importens resultat kunde inte bekräftas. Kontrollera importhistoriken innan du försöker igen.

SIE_IMPORT_UNMAPPED_ACCOUNTS

HTTP 400: Bad request

One or more accounts have no mapping target.

Swedish: Vissa konton saknar mappning. Gå tillbaka till kontomappningssteget och koppla alla konton.

Remediation: Map every source account to a BAS account before importing.

SIE_IMPORT_UNSUPPORTED_ACCOUNT_CLASS

HTTP 400: Bad request

Map accounts carrying amounts to accounts 1000-8999 before importing. Target classes 0 and 9 are not supported by the balance sheet and income statement. Unused account definitions may be retained.

Swedish: Konton med belopp måste mappas till konton 1000-8999 före import. Målkonton i klass 0 och 9 stöds inte i balans- och resultatrapporterna. Oanvända kontodefinitioner kan behållas.

Documents

Document upload, link, signed-URL download, retention.

DOCUMENT_UPLOAD_NOT_FOUND

HTTP 404: Not found

The uploaded file was not found or the upload has expired. Upload the file again.

Swedish: Den uppladdade filen hittades inte eller har gått ut. Ladda upp filen igen.

Salary + AGI

Payroll lifecycle, AGI generation, KU declarations.

AGI_FSKATT_VERIFICATION_FAILED

HTTP 400: Bad request

F-skatt verification failed.

Swedish: F-skattekontrollen misslyckades. Kontrollera leverantörens F-skatt.

AGI_GENERATE_NOT_BOOKABLE

HTTP 400: Bad request

AGI can only be generated for salary runs in review, approved, paid, booked, or corrected status.

Swedish: AGI kan endast genereras för lönekörningar i status review, approved, paid, booked eller corrected.

AGI_GENERATION_FAILED

HTTP 500: Server error

Failed to generate AGI declaration.

Swedish: AGI-deklarationen kunde inte genereras.

AGI_INCOMPLETE_DATA

HTTP 400: Bad request

AGI data is incomplete: verify the company has org number, contact name, phone, and email.

Swedish: AGI-data ofullständig: kontrollera att företaget har organisationsnummer, kontaktnamn, telefon och e-post.

AGI_NO_SALARY_RUN

HTTP 400: Bad request

No salary run exists for the period.

Swedish: Det finns ingen lönekörning för perioden.

AGI_PERIOD_CONFLICT

HTTP 409: Conflict

Another salary run is already declared for the same reporting period (payout month). One employer declaration per month must cover every payment made that month: merge the runs or correct the existing declaration.

Swedish: En annan lönekörning är redan deklarerad för samma redovisningsperiod (utbetalningsmånad). En arbetsgivardeklaration per månad ska omfatta alla utbetalningar den månaden: slå ihop körningarna eller rätta den befintliga deklarationen.

EMPLOYEE_DUPLICATE_PERSONNUMMER

HTTP 409: Conflict

An employee with that personnummer already exists.

Swedish: En anställd med samma personnummer finns redan.

EMPLOYEE_NOT_FOUND

HTTP 404: Not found

Employee not found.

Swedish: Den anställda kunde inte hittas.

SALARY_LINE_NOT_FOUND

HTTP 404: Not found

Payslip line not found.

Swedish: Lönebeskedsraden kunde inte hittas.

SALARY_PAYSLIPS_NO_EMPLOYEES

HTTP 400: Bad request

No employees in the salary run.

Swedish: Inga anställda i lönekörningen.

SALARY_PAYSLIPS_SEND_CAPABILITY_BLOCKED

HTTP 403: Forbidden

Emailing payslips requires a paid subscription.

Swedish: Att skicka lönebesked med e-post kräver en betald prenumeration.

SALARY_PAYSLIPS_SEND_INVALID_STATUS

HTTP 400: Bad request

Payslips can only be sent after the salary run is approved.

Swedish: Lönespecifikationer kan bara skickas efter godkännande.

SALARY_PAYSLIPS_SEND_SANDBOX

HTTP 403: Forbidden

Payslips cannot be sent from the sandbox. Create an account to send email.

Swedish: Lönebesked kan inte skickas från sandlådan. Skapa ett konto för att skicka e-post.

SALARY_REGISTER_DATES_LOCKED_BY_RUN

HTTP 409: Conflict

The dates fall inside the deviation period of a salary run that is already calculated, approved or booked. Revert that run to draft, or run a correction, before changing absence or worked hours.

Swedish: Datumen ingår i avvikelseperioden för en lönekörning som redan är beräknad, godkänd eller bokförd. Återställ körningen till utkast, eller gör en rättelsekörning, innan frånvaro eller arbetade timmar ändras.

Remediation: details.salary_run_id names the run and details.locked_dates the dates it reads. Draft runs never lock; a run in review can be reverted to draft (POST /salary-runs/{id}/revert, gnubok_revert_salary_run).

SALARY_RUN_ALREADY_BOOKED

HTTP 409: Conflict

Salary run is already booked.

Swedish: Lönekörningen är redan bokförd.

SALARY_RUN_ALREADY_CORRECTED

HTTP 409: Conflict

The salary run is already corrected; continue in its correction run.

Swedish: Lönekörningen är redan korrigerad; arbeta vidare i korrigeringskörningen.

SALARY_RUN_APPROVE_NOT_REVIEW

HTTP 400: Bad request

Salary run must be in review status to approve.

Swedish: Lönekörningen måste vara i status review för godkännande.

SALARY_RUN_APPROVE_VALIDATION_FAILED

HTTP 400: Bad request

Validation failed: fix issues before approving.

Swedish: Valideringsfel: korrigera innan godkännande.

SALARY_RUN_BOOK_FAILED

HTTP 500: Server error

Failed to book salary run.

Swedish: Lönekörningen kunde inte bokföras.

SALARY_RUN_BOOK_NOT_PAID

HTTP 400: Bad request

Salary run must be marked paid before booking.

Swedish: Lönekörningen måste vara markerad som betald för bokföring.

SALARY_RUN_CALCULATE_FAILED

HTTP 500: Server error

Failed to calculate salary run.

Swedish: Lönekörningen kunde inte beräknas.

SALARY_RUN_CALCULATE_NOT_DRAFT

HTTP 400: Bad request

Salary run must be in draft status to calculate.

Swedish: Lönekörningen måste vara i status draft för beräkning.

SALARY_RUN_CORRECT_NOT_BOOKED

HTTP 409: Conflict

Only booked salary runs can be corrected (rättelsekörning).

Swedish: Bara bokförda lönekörningar kan korrigeras (rättelsekörning).

SALARY_RUN_CREATE_FAILED

HTTP 500: Server error

Failed to create salary run.

Swedish: Lönekörningen kunde inte skapas.

SALARY_RUN_DELETE_HAS_JOURNAL_ENTRY

HTTP 400: Bad request

Salary run is linked to a journal entry and cannot be deleted (BFL 5 kap räkenskapsinformation).

Swedish: Lönekörningen är kopplad till en verifikation och kan inte raderas (BFL 5 kap räkenskapsinformation).

SALARY_RUN_DELETE_NOT_DRAFT

HTTP 400: Bad request

Only draft salary runs can be deleted.

Swedish: Endast utkast (draft) kan raderas.

SALARY_RUN_DEVIATION_PERIOD_INVALID

HTTP 400: Bad request

Invalid deviation period: give both start and end (YYYY-MM-DD), start before end, at most two months.

Swedish: Ogiltig avvikelseperiod: ange både start- och slutdatum (ÅÅÅÅ-MM-DD), start före slut, högst två månader.

SALARY_RUN_DEVIATION_PERIOD_OVERLAP

HTTP 409: Conflict

The deviation period overlaps another salary run: the same absence days would be deducted twice. Pass a non-overlapping deviation period, or change the setting before the next new month.

Swedish: Avvikelseperioden överlappar en annan lönekörning: samma frånvarodagar skulle dras två gånger. Ange en avvikelseperiod som inte överlappar, eller byt inställning först inför nästa nya månad.

Remediation: details.conflicting_run_id names the run that already reads these days. Pass deviation_period_start/deviation_period_end that start after its window, or leave the company setting unchanged.

SALARY_RUN_DUPLICATE_PERIOD

HTTP 409: Conflict

A salary run for that period already exists.

Swedish: En lönekörning för perioden finns redan.

SALARY_RUN_EMPLOYEES_NOT_DRAFT

HTTP 400: Bad request

The salary run must be a draft to change its employees or this month's salary.

Swedish: Lönekörningen måste vara ett utkast för att ändra anställda eller månadens lön.

SALARY_RUN_EMPLOYEE_DUPLICATE

HTTP 409: Conflict

Employee is already part of this salary run.

Swedish: Den anställda finns redan i lönekörningen.

SALARY_RUN_EMPLOYEE_NOT_FOUND

HTTP 404: Not found

Employee is not part of this salary run.

Swedish: Anställd finns inte i denna lönekörning.

SALARY_RUN_EXPENSE_CLAIM_NOT_OPEN

HTTP 409: Conflict

An expense claim on the payslip is no longer open (paid or removed). Remove the line and recalculate before booking.

Swedish: Ett utlägg på lönebeskedet är inte längre öppet (utbetalt eller borttaget). Ta bort raden och beräkna om innan bokföring.

SALARY_RUN_LINE_NOT_DRAFT

HTTP 400: Bad request

Payslip lines can only be edited while the salary run is a draft.

Swedish: Lönebeskedets rader kan bara redigeras medan lönekörningen är ett utkast.

SALARY_RUN_MARK_PAID_NOT_APPROVED

HTTP 400: Bad request

Salary run must be approved before it can be marked paid.

Swedish: Lönekörningen måste vara godkänd för att markeras som betald.

SALARY_RUN_NOT_CALCULATED

HTTP 400: Bad request

Salary run must be calculated before booking.

Swedish: Lönekörningen måste beräknas innan bokföring.

SALARY_RUN_NOT_FOUND

HTTP 404: Not found

Salary run not found.

Swedish: Lönekörningen kunde inte hittas.

SALARY_RUN_NO_EMPLOYEES

HTTP 400: Bad request

No active employees in the company.

Swedish: Inga aktiva anställda finns i företaget.

SALARY_RUN_NO_OPEN_EXPENSE_CLAIMS

HTTP 404: Not found

The employee has no open expense claims to add.

Swedish: Den anställda har inga öppna utlägg att lägga till.

SALARY_RUN_PATCH_NOT_DRAFT

HTTP 400: Bad request

Only draft salary runs can be patched.

Swedish: Endast utkast (draft) kan uppdateras.

SALARY_RUN_PAYMENT_DATE_OUTSIDE_PERIOD

HTTP 400: Bad request

The payment date must fall within the salary run's period month.

Swedish: Utbetalningsdagen måste ligga i lönekörningens period.

SALARY_RUN_PAYMENT_FILE_EMPLOYEE_BANK_INVALID

HTTP 422: Unprocessable

One or more employees have bank details the payment file cannot carry. details.employees names who and what to correct.

Swedish: En eller flera anställda har bankuppgifter som betalfilen inte kan ta med. details.employees anger vem och vad som behöver rättas.

SALARY_RUN_PAYMENT_FILE_EMPLOYEE_BANK_MISSING

HTTP 422: Unprocessable

One or more employees with a net payout lack a clearing number or account number. Complete their bank details under Employees.

Swedish: En eller flera anställda med nettoutbetalning saknar clearingnummer eller kontonummer. Komplettera bankuppgifterna under Anställda.

SALARY_RUN_PAYMENT_FILE_GENERATION_FAILED

HTTP 400: Bad request

The payment file could not be generated: check the bank details of the company and its employees.

Swedish: Betalfilen kunde inte skapas: kontrollera bankuppgifterna för företaget och de anställda.

SALARY_RUN_PAYMENT_FILE_MISSING_BANK_DETAILS

HTTP 422: Unprocessable

The company bank details the payment file needs are missing or invalid: IBAN and BIC for ISO 20022 (pain.001), bankgiro number for Bankgirot LB. Fill them in under Settings → Invoicing.

Swedish: Företagets bankuppgifter för betalfilen saknas eller är ogiltiga: IBAN och BIC för ISO 20022 (pain.001), bankgironummer för Bankgirot LB. Fyll i dem under Inställningar → Fakturering.

SALARY_RUN_PAYMENT_FILE_NOT_READY

HTTP 409: Conflict

A payment file can only be generated after approval (status approved, paid or booked).

Swedish: Betalfil kan bara genereras efter godkännande (status approved, paid eller booked).

SALARY_RUN_PERIOD_LOCKED

HTTP 400: Bad request

Salary run cannot be processed in a locked period.

Swedish: Lönekörningen kan inte göras i en låst period.

SALARY_RUN_REVERT_NOT_REVIEW

HTTP 400: Bad request

The salary run must be in review status to revert it to draft.

Swedish: Lönekörningen måste vara i granskningsstatus för att återställas till utkast.

SALARY_RUN_STATUS_CHANGED

HTTP 409: Conflict

The salary run status changed in the meantime: reload and try again.

Swedish: Lönekörningens status har ändrats: ladda om sidan och försök igen.

SALARY_RUN_TAX_TABLE_MISSING

HTTP 400: Bad request

Tax table is missing for the period.

Swedish: Skattetabellen saknas för perioden. Importera skattetabellen först.

SALARY_RUN_UNAPPROVE_AGI_FILED

HTTP 409: Conflict

The AGI for this period has already been sent to Skatteverket. Change it by filing a corrected AGI (same specifikationsnummer) instead.

Swedish: AGI har redan skickats till Skatteverket för denna period. Ändra genom att lämna in en korrigerad AGI (samma specifikationsnummer) i stället.

SALARY_RUN_UNAPPROVE_FAILED

HTTP 500: Server error

Could not recall the approval.

Swedish: Kunde inte återkalla godkännandet.

SALARY_RUN_UNAPPROVE_NOT_APPROVED

HTTP 400: Bad request

Only an approved salary run can be unlocked. A paid or booked run is corrected through the correction flow.

Swedish: Bara en godkänd lönekörning kan låsas upp. En betald eller bokförd körning korrigeras via korrigeringsflödet.

Company + API keys

Multi-tenant + auth lifecycle.

API_KEY_CREATE_FAILED

HTTP 500: Server error

Failed to create API key.

Swedish: API-nyckeln kunde inte skapas.

API_KEY_NOT_FOUND

HTTP 404: Not found

API key not found.

Swedish: API-nyckeln kunde inte hittas.

API_KEY_QUOTA_EXCEEDED

HTTP 429: Rate limited

API key quota exceeded.

Swedish: Du har nått maxgränsen för antal API-nycklar.

API_KEY_REVOKE_FAILED

HTTP 500: Server error

Failed to revoke API key.

Swedish: API-nyckeln kunde inte återkallas.

API_KEY_SCOPE_INVALID

HTTP 400: Bad request

One or more requested scopes are invalid.

Swedish: En eller flera scopes är ogiltiga.

API_KEY_SOD_CONFLICT

HTTP 409: Conflict

This key combines a staging write scope with pending_operations:approve, letting an automated agent both stage and approve postings with no human in the loop (segregation of duties, ISO 27001 A.5.3 / BFNAR 2013:2).

Swedish: Nyckeln kombinerar ett skriv-scope som stagar bokföring med pending_operations:approve. Då kan en automatiserad agent både skapa och godkänna verifikationer utan mänsklig granskning (ansvarsfördelning, ISO 27001 A.5.3 / BFNAR 2013:2). Bekräfta att du förstår risken för att skapa nyckeln ändå.

Remediation: Inform the user of the segregation-of-duties risk, then re-POST the same scopes with acknowledge_sod: true to create the key anyway.

COMPANY_CREATE_BAS_SEED_FAILED

HTTP 500: Server error

Failed to seed the chart of accounts.

Swedish: Kontoplanen kunde inte skapas. Försök igen.

COMPANY_CREATE_DUPLICATE_ORG_NUMBER

HTTP 409: Conflict

A company with that organisation number already exists.

Swedish: Ett företag med samma organisationsnummer finns redan.

COMPANY_CREATE_FAILED

HTTP 500: Server error

Failed to create company.

Swedish: Företaget kunde inte skapas.

COMPANY_NOT_FOUND

HTTP 404: Not found

Company not found.

Swedish: Företaget kunde inte hittas.

COMPANY_RESET_CONFIRMATION_MISMATCH

HTTP 400: Bad request

The company name does not match.

Swedish: Företagsnamnet stämmer inte överens.

COMPANY_RESET_CONFIRMATION_REQUIRED

HTTP 400: Bad request

All safety confirmations are required.

Swedish: Alla säkerhetsbekräftelser krävs.

COMPANY_RESET_FAILED

HTTP 500: Server error

The migration reset failed. No changes were saved.

Swedish: Migreringen kunde inte startas om. Inga ändringar har sparats.

COMPANY_RESET_FORBIDDEN

HTTP 403: Forbidden

Only the company owner can reset a migration.

Swedish: Endast företagets ägare kan starta om en migrering.

COMPANY_RESET_INELIGIBLE

HTTP 409: Conflict

The company is not eligible for a self-service reset. Contact support for an individual review.

Swedish: Företaget kan inte återställas med självservice. Kontakta supporten för en individuell bedömning.

COMPANY_RESET_NOT_FOUND

HTTP 404: Not found

Company not found.

Swedish: Företaget kunde inte hittas.

COMPANY_RESET_REASON_INVALID

HTTP 400: Bad request

Explain why the migration must be redone using 20 to 1,000 characters.

Swedish: Beskriv varför migreringen behöver göras om med 20 till 1 000 tecken.

Provider connections

External provider OAuth, sync, consent.

PROVIDER_ACCEPT_FAILED

HTTP 500: Server error

Failed to accept consent.

Swedish: Kunde inte slutföra anslutningen.

PROVIDER_API_MODULE_INACTIVE

HTTP 403: Forbidden

Visma refused access because the API module is not activated for the company ("No access to module: api_standard"). Activate the API in Visma/Spiris under Settings, Apps and extensions (on smaller plans the API is a paid add-on called Integration), and make sure no default company is selected in the top-right menu. Then try again. You can also import via SIE file in the meantime.

Swedish: Visma nekade åtkomst eftersom API-modulen inte är aktiverad för företaget ("No access to module: api_standard"). Aktivera API:et i Visma/Spiris under Inställningar, Appar och tillägg. På de mindre abonnemangen är API:et ett tillägg (Integration) som kostar extra. Kontrollera också att inget standardföretag är valt i menyn uppe till höger i Visma, det kan göra att inloggningen hamnar på ett företag utan giltig licens. Försök sedan igen. Du kan även importera via SIE-fil under tiden.

PROVIDER_AUTH_EXPIRED

HTTP 401: Unauthorized

Provider authentication expired or refresh failed.

Swedish: Anslutningen till leverantören har gått ut. Återanslut för att fortsätta.

PROVIDER_COMPANY_ID_REQUIRED

HTTP 400: Bad request

companyId is required for this provider.

Swedish: companyId krävs för den här leverantören.

PROVIDER_COMPANY_MISMATCH

HTTP 422: Unprocessable

These credentials belong to a different company than the one you are importing into. Check that you picked the right company at the provider and try again.

Swedish: Uppgifterna gäller ett annat företag än det du importerar till. Kontrollera att du valt rätt företag hos leverantören och försök igen.

PROVIDER_CONFIGURATION_ERROR

HTTP 503

The Fortnox connection needs attention from Accounted. Contact support. You do not need to reconnect.

Swedish: Fortnox-anslutningen behöver åtgärdas av Accounted. Kontakta supporten. Du behöver inte återansluta.

PROVIDER_CONNECT_FAILED

HTTP 500: Server error

Failed to start provider connection flow.

Swedish: Kunde inte starta anslutningen till leverantören.

HTTP 404: Not found

Provider consent not found.

Swedish: Anslutningen kunde inte hittas.

HTTP 400: Bad request

Provider consent is not ready; finish authentication first.

Swedish: Anslutningen är inte klar. Slutför inloggningen först.

PROVIDER_DISCONNECT_FAILED

HTTP 500: Server error

Provider disconnect failed.

Swedish: Frånkoppling från leverantören misslyckades.

PROVIDER_DOCUMENT_SCOPES_REQUIRED

HTTP 403: Forbidden

The Fortnox connection lacks Archive and Connect file access. Reconnect Fortnox and approve those permissions to import documents.

Swedish: Fortnox-anslutningen saknar behörighet till Arkiv och Koppla fil. Koppla om Fortnox och godkänn behörigheterna för att importera underlag.

PROVIDER_DOCUMENT_SCOPES_UNAVAILABLE

HTTP 403: Forbidden

Fortnox file import is not enabled yet: the Archive and Connect file permissions are missing for the Accounted integration at Fortnox. Reconnecting will not help; we enable this as soon as the permission is in place. Everything else in the migration was imported.

Swedish: Filimport från Fortnox är inte påslagen än: behörigheterna Arkiv och Koppla fil saknas för Accounted-integrationen hos Fortnox. Att koppla om hjälper inte, vi aktiverar det så snart behörigheten är på plats. Allt annat i migreringen är importerat.

PROVIDER_IMPORT_DOCUMENTS_FAILED

HTTP 500: Server error

Failed to import documents from provider.

Swedish: Kunde inte importera underlag från leverantören.

PROVIDER_INVALID

HTTP 400: Bad request

Unknown provider.

Swedish: Okänd leverantör.

PROVIDER_LICENSE_MISSING

HTTP 403: Forbidden

Fortnox refused access because a license is missing or inactive. Check the integration or app license in Fortnox, then try again. You can also import via SIE file in the meantime.

Swedish: Fortnox nekade åtkomst eftersom en licens saknas eller inte är aktiv. Kontrollera integrations- eller applicensen i Fortnox och försök sedan igen. Du kan även importera via SIE-fil under tiden.

PROVIDER_MIGRATE_FAILED

HTTP 500: Server error

Provider migration failed.

Swedish: Migrationen från leverantören misslyckades.

PROVIDER_PREVIEW_FAILED

HTTP 500: Server error

Provider preview failed.

Swedish: Förhandsgranskningen från leverantören misslyckades.

PROVIDER_RATE_LIMITED

HTTP 429: Rate limited

Provider rate limit exceeded.

Swedish: Leverantören begränsar antalet anrop just nu. Vänta en stund och försök igen.

PROVIDER_RESOURCE_FORBIDDEN

HTTP 403: Forbidden

The provider refused access to part of the data, but the connection itself works. Reconnecting will not help: check that register's permissions with the provider (in Fortnox the user rights and licence, in Bokio the integration token rights) and try again.

Swedish: Leverantören nekade åtkomst till en del av uppgifterna, men anslutningen fungerar. Att återansluta hjälper inte: kontrollera behörigheterna för det registret hos leverantören (i Fortnox användarens rättigheter och licens, i Bokio rättigheterna på integrationstoken) och försök igen.

PROVIDER_SIE_FETCH_FAILED

HTTP 502

Failed to fetch SIE data from the provider.

Swedish: Kunde inte hämta SIE-data från leverantören.

PROVIDER_SIE_IMPORT_REQUIRED

HTTP 409: Conflict

A completed SIE import is required first. Import the SIE file (chart of accounts, opening balances and verifications) before importing customers, suppliers, invoices and fixed assets from this provider.

Swedish: Bokföringsdata (SIE) måste importeras först. Ladda upp en SIE-fil med kontoplan, ingående balanser och verifikationer innan du hämtar kunder, leverantörer, fakturor och anläggningstillgångar från den här leverantören.

PROVIDER_SIE_NOT_SUPPORTED

HTTP 400: Bad request

This provider does not support fetching SIE via API. Upload a SIE file manually instead.

Swedish: Den här leverantören stöder inte SIE-hämtning via API. Ladda upp en SIE-fil manuellt istället.

PROVIDER_SIE_NO_YEARS

HTTP 404: Not found

No fiscal years available within the supported range.

Swedish: Inga räkenskapsår inom det stödda intervallet hittades hos leverantören.

PROVIDER_STATUS_FAILED

HTTP 500: Server error

Failed to fetch provider status.

Swedish: Kunde inte hämta status från leverantören.

PROVIDER_TOKEN_INVALID

HTTP 422: Unprocessable

The provider rejected the authentication. Check the integration details and try again.

Swedish: Leverantören avvisade autentiseringen. Kontrollera integrationsuppgifterna och försök igen.

PROVIDER_TOKEN_REQUIRED

HTTP 400: Bad request

apiToken is required for this provider.

Swedish: API-token krävs för den här leverantören.

PROVIDER_TOKEN_SUBMIT_FAILED

HTTP 500: Server error

Could not verify the integration details with the provider. Try again.

Swedish: Kunde inte kontrollera integrationsuppgifterna hos leverantören. Försök igen.

PROVIDER_UNREACHABLE

HTTP 502

Provider service is unreachable (network/DNS error).

Swedish: Leverantörens tjänst är inte tillgänglig just nu. Försök igen om en stund.

PROVIDER_UPSTREAM_ERROR

HTTP 502

Provider returned an upstream 5xx error.

Swedish: Leverantören svarade med ett fel. Försök igen om en stund.

Other

ABSENCE_HOURS_CONFLICT

HTTP 409: Conflict

Total absence hours for the day exceed 24 hours.

Swedish: Total frånvarotid för dagen överstiger 24 timmar.

ABSENCE_RANGE_TOO_LARGE

HTTP 400: Bad request

Absence range too large. Maximum 92 days per request.

Swedish: Frånvarointervallet är för stort. Max 92 dagar per anrop.

ACCOUNTING_METHOD_CHANGE_MID_YEAR

HTTP 409: Conflict

The accounting method cannot change in the middle of a fiscal year that has posted vouchers: it governs the whole year. A person changes it in the settings before the next fiscal year.

Swedish: Bokföringsmetoden kan inte bytas mitt i ett räkenskapsår som har bokförda verifikationer.

ACCOUNTS_NOT_IN_CHART

HTTP 400: Bad request

One or more BAS accounts are not active in the chart of accounts.

Swedish: Konton saknas i kontoplanen.

Remediation: Activate the missing accounts via bookkeeping settings, or use a different category. Related resource: Accounted://chart-of-accounts

ACCOUNT_DETAILS_REQUIRED

HTTP 400: Bad request

The account number is not in the BAS 2026 catalogue: account_name, account_type and normal_balance are required.

Swedish: Kontonumret finns inte i BAS 2026: ange kontonamn, kontotyp och normal balans.

ACCOUNT_EXISTS

HTTP 409: Conflict

The account number already exists in this company chart of accounts.

Swedish: Kontonumret finns redan i din kontoplan.

Remediation: Edit the existing account instead (PATCH /accounts/{number} or gnubok_update_account). Related tool: gnubok_update_account

ACCOUNT_EXISTS_INACTIVE

HTTP 409: Conflict

The account number already exists in this company chart of accounts but is deactivated.

Swedish: Kontot finns redan i din kontoplan men är inaktiverat.

Remediation: Reactivate the existing account instead of creating it: POST /api/v1/companies/{companyId}/accounts/activate with { account_numbers: [number] }, or gnubok_update_account with is_active=true. Related resource: Accounted://chart-of-accounts

ACCOUNT_IN_USE

HTTP 409: Conflict

The account has journal lines in this company and cannot be deleted (BFL: verifikat are immutable). Deactivate it instead (is_active=false).

Swedish: Kontot kan inte tas bort eftersom det används i bokförda verifikationer. Inaktivera det istället.

Remediation: Deactivate the account: PATCH /accounts/{number} with { is_active: false }, or gnubok_update_account. Related tool: gnubok_update_account

ACCOUNT_NOTHING_TO_UPDATE

HTTP 400: Bad request

Nothing to update: send at least one account field.

Swedish: Inget att uppdatera.

ACCOUNT_NOT_FOUND

HTTP 404: Not found

The account is not in this company chart of accounts.

Swedish: Kontot hittades inte.

Remediation: List the chart with GET /accounts?active=false, or create the account first. Related tool: gnubok_list_accounts

ACCOUNT_SYSTEM_DELETE

HTTP 400: Bad request

System accounts cannot be deleted. Deactivate the account instead (is_active=false).

Swedish: Systemkonton kan inte tas bort. Inaktivera kontot istället.

ACCOUNT_TYPE_CLASS_CONFLICT

HTTP 400: Bad request

account_type does not fit the account class (the first digit of the number); details.reason names the allowed types.

Swedish: Kontotypen passar inte kontoklassen för det här kontonumret.

ACCOUNT_VAT_BOX_NOT_VAT_ACCOUNT

HTTP 400: Bad request

vat_box is only valid on 26xx VAT accounts other than 2650.

Swedish: Momsruta kan bara väljas för momskonton (26xx, inte 2650).

ACCOUNT_VAT_TREATMENT_CLASS

HTTP 400: Bad request

default_vat_treatment is not valid for this account class: sales treatments go on class 3, reverse-charge purchase treatments on classes 4-6.

Swedish: Momskoden kan inte användas för den här kontoklassen.

ACCRUAL_DISSOLVE_FAILED

HTTP 400: Bad request

The accrual schedule could not be dissolved.

Swedish: Periodiseringen kunde inte lösas upp.

ACCRUAL_NOTHING_TO_DISSOLVE

HTTP 400: Bad request

There is nothing left to dissolve on this accrual schedule.

Swedish: Det finns inget kvar att lösa upp.

ACCRUAL_NOT_ACTIVE

HTTP 400: Bad request

The accrual schedule is not active.

Swedish: Periodiseringen är inte aktiv.

ACCRUAL_NOT_FOUND

HTTP 404: Not found

Accrual schedule not found.

Swedish: Periodiseringen kunde inte hittas.

ALREADY_REOPENED

HTTP 409: Conflict

The sign-off is already reopened.

Swedish: Signeringen är redan öppnad igen.

ALREADY_SIGNED_OFF

HTTP 409: Conflict

The account is already signed off through that date or later. Reopen that sign-off to change it.

Swedish: Kontot är redan avstämt t.o.m. ett senare datum. Öppna den signeringen igen om du vill ändra.

ARKIV_NOT_ENABLED

HTTP 403: Forbidden

The company brain is not switched on for this company yet. The archive works as usual.

Swedish: Företagshjärnan är inte aktiverad för det här företaget ännu. Arkivet fungerar som vanligt.

ARSREDOVISNING_CONTENT_CHANGED

HTTP 409: Conflict

The annual report content has changed since it was previewed (content hash mismatch). Review a new dry run and retry.

Swedish: Årsredovisningens innehåll har ändrats sedan förhandsgranskningen. Granska den nya förhandsgranskningen och försök igen.

ARSREDOVISNING_INCOMPLETE

HTTP 409: Conflict

The annual report has blocking validation errors and cannot be versioned yet.

Swedish: Årsredovisningen har blockerande kontrollfel och kan inte versionssparas ännu.

ARSREDOVISNING_REGISTERED

HTTP 409: Conflict

The årsredovisning for this fiscal period has been registered with Bolagsverket; its narrative texts can no longer be edited.

Swedish: Årsredovisningen för räkenskapsåret är registrerad hos Bolagsverket och texterna kan inte längre ändras.

ARSREDOVISNING_SIGNATURE_DATE_INVALID

HTTP 400: Bad request

The signature date must be on or after the version finalization date and cannot be in the future.

Swedish: Underskriftsdatumet måste vara samma dag som eller senare än versionens låsdatum och får inte ligga i framtiden.

ARSREDOVISNING_SIGNER_ALREADY_EXISTS

HTTP 409: Conflict

The signer is already present in the current signer roster.

Swedish: Undertecknaren finns redan i den aktuella undertecknarlistan.

ARSREDOVISNING_SIGNER_ROSTER_LOCKED

HTTP 409: Conflict

The signer roster is locked because an annual report version is already awaiting signatures.

Swedish: Undertecknarlistan är låst eftersom en årsredovisningsversion redan väntar på underskrift.

ARSREDOVISNING_VERSION_NOT_SIGNABLE

HTTP 409: Conflict

The selected annual report version is not open for signing.

Swedish: Den valda årsredovisningsversionen är inte öppen för underskrift.

ARTICLE_CREATE_FAILED

HTTP 500: Server error

Failed to create article.

Swedish: Artikeln kunde inte skapas.

ARTICLE_DELETE_FAILED

HTTP 500: Server error

Failed to delete article.

Swedish: Artikeln kunde inte tas bort.

ARTICLE_DUPLICATE_NUMBER

HTTP 409: Conflict

An article with that article number already exists.

Swedish: En artikel med samma artikelnummer finns redan.

ARTICLE_IN_USE

HTTP 409: Conflict

The article has been used on an invoice and cannot be deleted. Deactivate it instead if you no longer want it selectable on new invoices.

Swedish: Artikeln har använts på en faktura och kan därför inte tas bort. Inaktivera den i stället om du inte vill kunna välja den på nya fakturor.

ARTICLE_NOT_FOUND

HTTP 404: Not found

Article not found.

Swedish: Artikeln kunde inte hittas.

ARTICLE_REVENUE_ACCOUNT_INVALID

HTTP 400: Bad request

The posting account does not exist or is not an active balance-sheet or revenue account (class 1-3).

Swedish: Bokföringskontot finns inte eller är inte ett aktivt balans- eller intäktskonto (klass 1-3).

ARTICLE_UPDATE_FAILED

HTTP 500: Server error

Failed to update article.

Swedish: Artikeln kunde inte uppdateras.

ASSET_ADJUSTMENT_DOCUMENT_REQUIRED

HTTP 422: Unprocessable

Confirm that an adjustment document is prepared when the adjustment obligation is transferred.

Swedish: Bekräfta att en justeringshandling upprättas när justeringsskyldigheten överförs.

ASSET_ALREADY_DISPOSED

HTTP 409: Conflict

The asset has already been disposed.

Swedish: Tillgången är redan avyttrad.

ASSET_BUSINESS_TRANSFER_CONFIRMATION_REQUIRED

HTTP 422: Unprocessable

Confirm that the transfer covers an entire business or independent branch and meets the conditions in ML chapter 5, section 38.

Swedish: Bekräfta att överlåtelsen omfattar en hel verksamhet eller självständig verksamhetsgren och uppfyller villkoren i ML 5 kap. 38 §.

ASSET_CORRECTION_BLOCKED

HTTP 409: Conflict

Acquisition date, cost and category cannot be changed once the asset has been disposed or depreciation has been posted. Reverse (storno) first, or use the disposal flow.

Swedish: Anskaffningsdatum, anskaffningsvärde och kategori kan inte ändras efter att tillgången avyttrats eller avskrivningar bokförts. Återför (storno) först, eller använd avyttringsflödet.

ASSET_DELETE_BLOCKED

HTTP 409: Conflict

The asset cannot be deleted because it has reached the books: depreciation is posted or the asset is disposed. The register row is then accounting information (BFL ch. 7). Dispose it, or reverse the voucher with storno first.

Swedish: Tillgången kan inte tas bort eftersom den har nått bokföringen: avskrivningar är bokförda eller tillgången är avyttrad. Registerraden är då räkenskapsinformation (BFL 7 kap.). Använd avyttring, eller återför verifikatet med storno först.

ASSET_DISPOSAL_BLOCKED

HTTP 409: Conflict

The disposal cannot be posted because depreciation already exists for the same or a later period. Reverse the incorrect depreciation first.

Swedish: Avyttringen kan inte bokföras eftersom avskrivningar redan finns för samma eller en senare period. Återför den felaktiga avskrivningen med storno först.

ASSET_JAMKNING_DATA_REQUIRED

HTTP 422: Unprocessable

Enter the original input VAT and original deduction percentage to assess adjustment under ML chapter 15.

Swedish: Ange ursprunglig ingående moms och ursprunglig avdragsprocent för att bedöma justering enligt ML 15 kap.

ASSET_NOT_FOUND

HTTP 404: Not found

Asset not found.

Swedish: Tillgången kunde inte hittas.

ASSET_OPENING_CHANGED

HTTP 409: Conflict

The asset opening depreciation has changed. Recalculate the depreciation proposal before posting.

Swedish: Tillgångens ingående avskrivning har ändrats. Beräkna avskrivningsförslaget på nytt innan du bokför.

BANK_CONFIGURATION_CHANGED

HTTP 409: Conflict

The bank connection or its accounts changed while you were choosing. Nothing was saved. Open the account picker again and save once more.

Swedish: Bankkopplingen eller bankkontona ändrades medan du valde konton. Inget sparades. Öppna kontovalet igen och spara på nytt.

BANK_IMPORT_DUPLICATE_OTHER_COMPANY

HTTP 409: Conflict

This file has already been imported into another company by this user.

Swedish: Den här filen har redan importerats för ett annat företag av samma användare.

BANK_IMPORT_FAILED

HTTP 500: Server error

Bank file import failed.

Swedish: Bankfilsimporten misslyckades.

BANK_INGEST_ROUTE_UNRESOLVED

HTTP 409: Conflict

Bank sync has stopped: the account selection for this bank connection needs to be saved again. Open Choose accounts and save again.

Swedish: Banksynkningen har stannat: kontovalet för bankkopplingen behöver sparas om. Öppna Välj konton och spara igen.

BANK_RATE_LIMITED

HTTP 429: Rate limited

The bank is temporarily rate limiting this consent. Do not sync again before next_allowed_at: it is our cooldown (the bank's Retry-After when it sent one, bounded backoff otherwise), not a reset time confirmed by the bank. The connection is still valid: do not ask the user to renew it.

Swedish: Banken begränsar just nu hur ofta transaktioner får hämtas. Vänta tills next_allowed_at. Anslutningen behöver inte förnyas.

BANK_SELECTION_LEDGER_CONFLICT

HTTP 400: Bad request

Two bank accounts cannot book to the same ledger account. Choose different ledger accounts. Nothing was saved.

Swedish: Två bankkonton kan inte bokföras på samma bokföringskonto. Välj olika bokföringskonton. Inget sparades.

BANK_SESSION_EXPIRED

HTTP 409: Conflict

The bank session has expired. The connection is now marked expired; only the user can renew it with BankID in a browser.

Swedish: Bankanslutningen har löpt ut. Förnya anslutningen med BankID för att fortsätta synka.

Remediation: Give the user the connect_url from gnubok_connect_bank (or GET /bank-connections). Do not retry: no API call can revive a dead consent. Related tool: gnubok_connect_bank

BANK_SYNC_COOLDOWN

HTTP 429: Rate limited

This connection was synced recently. Wait until next_allowed_at before syncing again; the data you have is already fresh.

Swedish: Anslutningen synkades nyligen. Vänta tills next_allowed_at innan du synkar igen.

BANK_SYNC_FAILED

HTTP 502

The bank sync failed upstream. Retry after the cooldown; if it keeps failing the user should renew the connection.

Swedish: Banksynkningen misslyckades. Försök igen om en stund, eller förnya anslutningen om felet kvarstår.

BANK_SYNC_NOT_ACTIVE

HTTP 409: Conflict

The bank connection is not active and cannot be synced. It needs BankID re-authorisation in a browser.

Swedish: Bankanslutningen är inte aktiv och kan inte synkas. Förnya den med BankID i webbläsaren.

Remediation: Give the user the connect_url from gnubok_connect_bank (or GET /bank-connections); only they can re-authorise with BankID. Related tool: gnubok_connect_bank

BANK_SYNC_NO_ACCOUNTS

HTTP 409: Conflict

No accounts are selected for syncing. The user must enable at least one under Settings, Bank.

Swedish: Inga konton är valda för synkning. Aktivera minst ett konto under Inställningar, Bank.

BATCH_AMOUNT_BELOW_TX

HTTP 400: Bad request

The full transaction amount must be allocated. Add more invoices or raise an amount so the sum matches the bank movement.

Swedish: Hela transaktionen måste fördelas. Lägg till fler fakturor eller höj något belopp så att summan motsvarar bankhändelsen.

BATCH_AMOUNT_EXCEEDS_TX

HTTP 400: Bad request

Sum of allocations exceeds the transaction amount.

Swedish: Summan av fördelningarna är större än transaktionens belopp.

BATCH_CASH_METHOD_UNBOOKED_INVOICE

HTTP 400: Bad request

The company uses the cash method and at least one of the invoices is not booked yet: revenue or cost and VAT must be booked at payment. A batch match only clears receivables or payables and would skip that. Match the invoice directly to the transaction if it alone covers the amount; otherwise mark each invoice as paid and then link the transaction to those vouchers.

Swedish: Företaget använder kontantmetoden och minst en av fakturorna är inte bokförd än: intäkt eller kostnad och moms ska bokföras vid betalningen. En samlingsmatchning kvittar bara mot kundfordringar eller leverantörsskulder och skulle hoppa över det. Matcha fakturan direkt mot transaktionen om den ensam motsvarar beloppet, annars markera varje faktura som betald och koppla sedan transaktionen till verifikaten.

BATCH_CURRENCY_MISMATCH

HTTP 400: Bad request

Invoice currency does not match the transaction currency. Same-currency only in v1.

Swedish: Fakturans valuta matchar inte transaktionens. Endast samma valuta stöds i V1.

BATCH_DIRECTION_MISMATCH

HTTP 400: Bad request

Transaction direction does not match allocation kind: customer invoices require income, supplier invoices require expense.

Swedish: Transaktionens riktning matchar inte fördelningens typ. Kundfakturor kräver inkommande, leverantörsfakturor utgående.

BATCH_DUPLICATE_ALLOCATION

HTTP 400: Bad request

The same invoice appears twice in the allocations. Merge the amounts or remove the duplicate.

Swedish: Samma faktura förekommer två gånger i fördelningen. Slå ihop beloppen eller ta bort dubbletten.

BATCH_FX_DEVIATION_TOO_LARGE

HTTP 400: Bad request

The amount you entered deviates more than 10% from the invoice's booked SEK value. Check that you entered the bank-side amount in the transaction's currency.

Swedish: Beloppet du angav avviker mer än 10 % från fakturans bokförda värde. Kontrollera att du fyllt i bankbeloppet i transaktionens valuta.

BATCH_FX_RATE_MISSING

HTTP 400: Bad request

The foreign-currency invoice has no exchange rate on file. Complete invoice.exchange_rate before allocating.

Swedish: Fakturan i annan valuta saknar växelkurs. Komplettera fakturans exchange_rate innan du fördelar.

Remediation: POST /api/invoices/{id}/refresh-exchange-rate fetches the taxable-event rate from Riksbanken and fills in exchange_rate plus the *_sek columns, then retry the allocation. It refuses with INVOICE_FX_REFRESH_BOOKED once the invoice has a verifikat: from there the correction is a storno or an inline rättelse, never an update behind the posted entry.

BATCH_INVALID_AMOUNT

HTTP 400: Bad request

Allocation amount must be positive.

Swedish: Fördelningens belopp måste vara positivt.

BATCH_INVALID_KIND

HTTP 400: Bad request

Unknown allocation kind. Only customer_invoice and supplier_invoice are supported.

Swedish: Okänd typ av fördelning. Endast customer_invoice och supplier_invoice stöds.

BATCH_INVOICE_NOT_FOUND

HTTP 404: Not found

One of the invoices in the allocation could not be found.

Swedish: En av fakturorna i fördelningen kunde inte hittas.

BATCH_INVOICE_NOT_OPEN

HTTP 409: Conflict

One of the invoices is not in an open state.

Swedish: En av fakturorna är inte i ett obetalt läge och kan inte ta emot betalning.

BATCH_MIXED_KINDS_UNSUPPORTED

HTTP 400: Bad request

A single transaction cannot allocate to both customer and supplier invoices in one batch.

Swedish: En transaktion kan inte fördelas på både kund- och leverantörsfakturor i samma verifikat. Skapa två separata fördelningar.

BATCH_NO_ALLOCATIONS

HTTP 400: Bad request

At least one allocation is required.

Swedish: Minst en fördelning krävs.

BATCH_NO_FISCAL_PERIOD

HTTP 400: Bad request

No fiscal period exists for the transaction date. Create the period first.

Swedish: Det finns ingen öppen räkenskapsperiod för transaktionens datum. Skapa perioden först.

BATCH_OVERSHOOT

HTTP 400: Bad request

One allocation exceeds the invoice remaining amount. Lower it or split the excess across additional invoices.

Swedish: En av fördelningarna överskrider fakturans återstående belopp. Sänk beloppet eller fördela överskottet på fler fakturor.

BATCH_PERIOD_LOCKED

HTTP 409: Conflict

Fiscal period for the transaction date is closed/locked. Open the period or pick a different date.

Swedish: Räkenskapsperioden för transaktionens datum är stängd. Öppna perioden eller välj ett annat datum.

BATCH_RPC_FAILED

HTTP 500: Server error

Database error during batch allocation. Please retry.

Swedish: Databasfel under fördelning. Försök igen.

BATCH_SUPPLIER_INVOICE_NOT_FOUND

HTTP 404: Not found

One of the supplier invoices in the allocation could not be found.

Swedish: En av leverantörsfakturorna i fördelningen kunde inte hittas.

BATCH_SUPPLIER_INVOICE_NOT_OPEN

HTTP 409: Conflict

One of the supplier invoices is not in an open state.

Swedish: En av leverantörsfakturorna är inte i ett obetalt läge och kan inte ta emot betalning.

BATCH_TX_ALREADY_BOOKED

HTTP 409: Conflict

Transaction is already booked. Reverse the existing journal entry before re-allocating.

Swedish: Transaktionen är redan bokförd. Avbokföra först (storno) innan du fördelar den på flera fakturor.

BATCH_TX_EXPLAINED_CHECK_FAILED

HTTP 409: Conflict

The already-explained check could not run, so force=true was refused: an override that cannot be re-verified against the current vouchers is never honoured. Retry the request.

Swedish: Dubblettkontrollen kunde inte köras, så "bokför ändå" avvisades: ett åsidosättande som inte kan verifieras igen bokförs aldrig. Försök igen.

Remediation: Retry after a short backoff. A staged operation refused this way is auto-rejected: stage it again with the same force + expected_journal_entry_ids, or link the row to the vouchers with gnubok_reconcile_match instead.

BATCH_TX_NOT_FOUND

HTTP 404: Not found

Transaction not found.

Swedish: Transaktionen kunde inte hittas.

BATCH_TX_POSSIBLE_DUPLICATE

HTTP 409: Conflict

The transaction already looks booked: one or more posted vouchers with no bank link add up exactly to its amount. Link the transaction to them instead, or pass force=true with expected_journal_entry_ids to book anyway.

Swedish: Transaktionen ser redan ut att vara bokförd: en eller flera verifikationer utan bankkoppling summerar exakt till beloppet. Koppla transaktionen till dem i stället, eller bokför ändå om de inte hör ihop.

Remediation: Link the bank row to the vouchers the message names instead of booking it again: gnubok_reconcile_match with account_key "bank:<cash_account_id>" and one pair { external_ids: [transaction_id], journal_entry_ids: [...], allocations }. Only if the row is a genuinely separate affärshändelse, call again with force=true and expected_journal_entry_ids set to exactly the ids the refusal listed. Related tool: gnubok_reconcile_match

BATCH_TX_ZERO_AMOUNT

HTTP 400: Bad request

Zero-amount transactions cannot be allocated.

Swedish: Transaktioner med beloppet 0 kan inte bokföras.

BATCH_UNAUTHORIZED

HTTP 403: Forbidden

You are not authorized to allocate transactions for this company.

Swedish: Du har inte behörighet att fördela transaktioner för det här företaget.

BL_COMPANY_KEY_NOT_FOUND

HTTP 422: Unprocessable

Björn Lundén found no company for this company key. Check that the whole key (GUID) was copied from Integrations → the gear icon in Lundify and try again.

Swedish: Björn Lundén hittade inget företag för den här företagsnyckeln. Kontrollera att hela nyckeln (GUID) är kopierad från Integrationer → kugghjulet i Lundify och försök igen.

BL_INTEGRATION_NOT_ACTIVATED

HTTP 422: Unprocessable

The company key is valid, but the company has not activated Accounted as an integration in Björn Lundén. Activate the integration under Integrations in Lundify or BL Administration and try again. If Accounted is missing from the list, the integration has not been released for your company yet: import via a SIE file for now.

Swedish: Företagsnyckeln stämmer, men företaget har inte aktiverat Accounted som integration i Björn Lundén. Aktivera integrationen under Integrationer i Lundify eller BL Administration och försök igen. Saknas Accounted i listan är integrationen inte släppt för ditt företag ännu: importera via SIE-fil så länge.

BOKIO_COMPANY_NOT_FOUND

HTTP 422: Unprocessable

Bokio could not find the company. Check the company ID and that the integration token was created for the same company.

Swedish: Bokio hittade inte företaget. Kontrollera företags-ID:t och att integrationstoken skapades för samma företag.

BOLAGSVERKET_API_ERROR

HTTP 502

The Bolagsverket API returned an error. See details for the upstream message.

Swedish: Bolagsverkets tjänst svarade med ett fel. Se detaljerna och försök igen.

BOLAGSVERKET_ARELLE_FAILED

HTTP 409: Conflict

Arelle found blocking errors in the iXBRL document. Correct them and create a new version.

Swedish: Arelle hittade blockerande fel i iXBRL-dokumentet. Rätta felen och skapa en ny version.

BOLAGSVERKET_ARELLE_UNAVAILABLE

HTTP 503

Arelle taxonomy validation is unavailable. Filing was stopped before anything was sent.

Swedish: Taxonomivalideringen med Arelle är inte tillgänglig. Inlämningen har stoppats innan något skickades.

BOLAGSVERKET_CERTIFICATE_SIGNER_MISMATCH

HTTP 409: Conflict

The certificate signer does not match the person locked into the annual report version.

Swedish: Undertecknaren av fastställelseintyget stämmer inte med den person som låstes i årsredovisningsversionen.

BOLAGSVERKET_CONFIG_MISSING

HTTP 503

Server configuration required by the Bolagsverket integration is missing (see details).

Swedish: Serverkonfiguration saknas för Bolagsverket-integrationen. Kontakta administratören.

BOLAGSVERKET_DIGITAL_INELIGIBLE

HTTP 409: Conflict

The locked annual report version is not eligible for connected filing. Use the paper workflow and review the Annual Report Studio checks.

Swedish: Den låsta årsredovisningsversionen är inte godkänd för digital inlämning. Använd pappersflödet och följ kontrollpunkterna i årsredovisningsstudion.

BOLAGSVERKET_ENV_NOT_ALLOWED

HTTP 403: Forbidden

The selected Bolagsverket environment exceeds the platform ceiling set by BOLAGSVERKET_ENV (order: test < accept < prod; unset means test).

Swedish: Den valda Bolagsverket-miljön är inte tillåten i den här installationen. Plattformens BOLAGSVERKET_ENV sätter taket.

BOLAGSVERKET_FORBIDDEN

HTTP 403: Forbidden

Insufficient role to file an årsredovisning for this company (viewer members cannot submit).

Swedish: Otillräcklig behörighet för att lämna in årsredovisning för det här företaget.

BOLAGSVERKET_INVALID_ENVIRONMENT

HTTP 400: Bad request

Invalid Bolagsverket environment. Allowed values: 'test', 'accept', 'prod'.

Swedish: Ogiltig Bolagsverket-miljö. Tillåtna värden: 'test', 'accept', 'prod'.

BOLAGSVERKET_NOT_RELEASED

HTTP 503

Connected filing to Bolagsverket is not enabled for this installation. Use the paper flow until acceptance is complete.

Swedish: Direktinlämning till Bolagsverket är inte öppnad i den här installationen. Använd pappersflödet tills anslutningen är godkänd.

BOLAGSVERKET_NO_SUBSCRIPTION

HTTP 404: Not found

No Bolagsverket event subscription exists for this company yet. One is created on the first submission.

Swedish: Ingen händelseprenumeration finns för företaget ännu.

BOLAGSVERKET_SIGNATURE_EVIDENCE_INCOMPLETE

HTTP 409: Conflict

Verifiable signature evidence is missing for one or more required signers.

Swedish: Verifierbart underskriftsunderlag saknas för en eller flera undertecknare.

BOLAGSVERKET_SUBMISSION_EXISTS

HTTP 409: Conflict

An active årsredovisning submission already exists for this fiscal period. Wait for Bolagsverket to resolve it before submitting again.

Swedish: Det finns redan en aktiv inlämning av årsredovisningen för räkenskapsåret. Invänta Bolagsverkets besked innan du lämnar in på nytt.

BOLAGSVERKET_VERSION_NOT_FOUND

HTTP 404: Not found

The selected annual report version was not found.

Swedish: Den valda versionen av årsredovisningen finns inte.

BOLAGSVERKET_VERSION_NOT_SIGNED

HTTP 409: Conflict

The annual report version must be finalized and signed before submission.

Swedish: Årsredovisningsversionen måste vara låst och undertecknad före inlämning.

BULK_BOOK_AMOUNT_MISMATCH

HTTP 400: Bad request

The sum of the selected transactions does not match the bank-line net amount on the journal entry.

Swedish: Summan av transaktionerna stämmer inte med bankradens nettobelopp på verifikationen.

BULK_BOOK_BOTH_SIDES_NONZERO

HTTP 400: Bad request

A journal entry line cannot have both debit and credit non-zero.

Swedish: En verifikationsrad kan inte ha både debet och kredit nollskilda.

BULK_BOOK_DATE_MISMATCH

HTTP 400: Bad request

All transactions in a bulk booking must share the same date: BFL 5 kap 6 § tredje stycket allows a gemensam verifikation only for likartade affärshändelser on the same day. Split the batch per day.

Swedish: Alla transaktioner i en samlingsbokföring måste ha samma datum: BFL 5 kap 6 § tredje stycket tillåter en gemensam verifikation bara för likartade affärshändelser samma dag. Dela upp bokföringen per dag.

Remediation: This is a legal limit, not a technical one: a monthly samlingsverifikat over several days is not an option under BFL 5 kap 6 §. Group the tx_ids by date and call gnubok_bulk_book_transactions once per date (and per direction). Related tool: gnubok_bulk_book_transactions

BULK_BOOK_DIRECTION_MISMATCH

HTTP 400: Bad request

All transactions in a bulk booking must share the same direction (all income or all expense): BFL 5 kap 6 § tredje stycket allows a gemensam verifikation only for likartade affärshändelser. Split the batch per direction.

Swedish: Alla transaktioner i en samlingsbokföring måste ha samma riktning (alla intäkter eller alla utgifter): BFL 5 kap 6 § tredje stycket tillåter en gemensam verifikation bara för likartade affärshändelser. Dela upp bokföringen per riktning.

Remediation: This is a legal limit, not a technical one: an inflow and an outflow are not likartade affärshändelser under BFL 5 kap 6 §. Call gnubok_bulk_book_transactions once for the income rows and once for the expense rows (each batch still on one date). Related tool: gnubok_bulk_book_transactions

BULK_BOOK_FOREIGN_CURRENCY

HTTP 400: Bad request

Bulk booking supports only SEK transactions. Book foreign-currency transactions individually so the amount is converted to kronor at the correct exchange rate.

Swedish: Samlingsbokföring stödjer endast transaktioner i SEK. Bokför transaktioner i utländsk valuta enskilt, så att beloppet räknas om till kronor med rätt växelkurs.

BULK_BOOK_INVALID_ACCOUNT

HTTP 400: Bad request

One or more accounts are not in the chart of accounts or are inactive. Pick valid BAS accounts.

Swedish: Ett eller flera konton finns inte i kontoplanen eller är inaktiva. Välj giltiga BAS-konton.

BULK_BOOK_INVALID_PAYLOAD

HTTP 400: Bad request

Provide either existing_journal_entry_id (link) or template_id (create new), not both, and not neither.

Swedish: Ange antingen existing_journal_entry_id (länkning) eller template_id (skapa ny), inte båda, och inte ingen.

BULK_BOOK_MISSING_DESCRIPTION

HTTP 400: Bad request

Description is required when creating a new combined journal entry.

Swedish: Beskrivning krävs för en ny samlingsverifikation.

BULK_BOOK_MIXED_CURRENCY

HTTP 400: Bad request

Bulk booking supports only single-currency batches. Select transactions in one currency at a time.

Swedish: Samlingsbokföring stödjer endast transaktioner i samma valuta. Välj transaktioner i en valuta åt gången.

BULK_BOOK_NEGATIVE_LINE

HTTP 400: Bad request

Journal entry lines cannot have negative amounts.

Swedish: Verifikationsrader kan inte ha negativa belopp.

BULK_BOOK_NO_BANK_LINE

HTTP 400: Bad request

The journal entry has no bank-account (19xx) line and cannot be linked to bank transactions.

Swedish: Verifikationen har ingen rad på bankkonto (19xx). Den kan inte länkas mot banktransaktioner.

BULK_BOOK_NO_FISCAL_PERIOD

HTTP 400: Bad request

No fiscal period exists for the transaction date. Create the period first.

Swedish: Det finns ingen öppen räkenskapsperiod för transaktionsdatumet. Skapa perioden först.

BULK_BOOK_NO_LINES

HTTP 400: Bad request

The journal entry must contain at least two lines (debit and credit).

Swedish: Verifikationen måste innehålla minst två rader (debit och kredit).

BULK_BOOK_NO_TXS

HTTP 400: Bad request

No transactions to book.

Swedish: Inga transaktioner att bokföra.

BULK_BOOK_PERIOD_LOCKED

HTTP 409: Conflict

The fiscal period for the transaction date is closed/locked.

Swedish: Räkenskapsperioden för transaktionsdatumet är stängd. Öppna perioden eller välj ett annat datum.

BULK_BOOK_RPC_FAILED

HTTP 500: Server error

Database error during bulk booking. Please retry.

Swedish: Databasfel under samlingsbokföring. Försök igen.

BULK_BOOK_TEMPLATE_NOT_FOUND

HTTP 404: Not found

The selected booking template could not be found.

Swedish: Den valda bokföringsmallen kunde inte hittas.

BULK_BOOK_TXS_NOT_FOUND

HTTP 404: Not found

One or more transactions could not be found in this company.

Swedish: En eller flera transaktioner kunde inte hittas i det aktuella företaget.

BULK_BOOK_TX_ALREADY_BOOKED

HTTP 409: Conflict

One of the selected transactions is already booked. Reverse the existing journal entry first or deselect it.

Swedish: En av de valda transaktionerna är redan bokförd. Avbokföra (storno) den först eller välj bort den.

BULK_BOOK_TX_ZERO_AMOUNT

HTTP 400: Bad request

Zero-amount transactions cannot be part of a bulk booking.

Swedish: Transaktioner med beloppet 0 kan inte ingå i en samlingsbokföring.

BULK_BOOK_UNAUTHORIZED

HTTP 403: Forbidden

You are not authorized to bulk-book transactions for this company.

Swedish: Du har inte behörighet att bokföra transaktioner för det här företaget.

BULK_BOOK_UNBALANCED

HTTP 400: Bad request

The journal entry does not balance: debits must equal credits.

Swedish: Verifikationen balanserar inte: summa debet måste lika summa kredit.

BULK_BOOK_VOUCHER_NOT_FOUND

HTTP 404: Not found

The target journal entry could not be found.

Swedish: Verifikationen kunde inte hittas.

BULK_BOOK_VOUCHER_NOT_POSTED

HTTP 409: Conflict

Only posted journal entries can be linked.

Swedish: Endast bokförda verifikationer kan länkas mot banktransaktioner.

CANNOT_CANCEL_NON_DRAFT

HTTP 409: Conflict

Only draft entries can be cancelled; a posted entry must be reversed (storno) instead.

Swedish: Endast utkast kan makuleras. En bokförd verifikation måste stornas i stället.

Remediation: Storno the posted entry with POST /api/v1/companies/{companyId}/journal-entries/{id}/reverse. Cancelling a draft that is already cancelled succeeds: the endpoint is idempotent.

CANNOT_CORRECT_NON_POSTED

HTTP 400: Bad request

Only posted entries can be corrected.

Swedish: Endast bokförda verifikationer kan rättas.

CANNOT_EDIT_NON_DRAFT

HTTP 409: Conflict

Only draft entries can be edited; posted entries are immutable and are corrected with storno.

Swedish: Endast utkast kan redigeras. Bokförda verifikationer rättas med storno.

Remediation: Use the correction (storno) flow to change a posted entry instead of editing it.

CANNOT_REVERSE_NON_POSTED

HTTP 400: Bad request

Only posted entries can be reversed.

Swedish: Endast bokförda verifikationer kan stornas.

CANNOT_REVERSE_STORNO

HTTP 400: Bad request

A storno entry cannot be reversed. If the entry was cancelled by mistake, re-book it (copy the original).

Swedish: En stornering kan inte stornas. Om verifikationen makulerades av misstag, bokför den på nytt (kopiera originalet).

CASH_FLOW_TAX_ALLOCATION_REQUIRED

HTTP 422: Unprocessable

The cash flow statement cannot reliably calculate income tax paid from this period's tax postings. Income tax must be separated from other taxes in the report working papers. No bookkeeping changes are required.

Swedish: Kassaflödesanalysen kan inte beräkna betald inkomstskatt säkert från periodens skattebokningar. Inkomstskatt behöver skiljas från övriga skatter i rapportunderlaget. Bokföringen behöver inte ändras.

CONNECTOR_NOT_OWNED

HTTP 404: Not found

The Peppol id is not registered with the access point for this account.

Swedish: Peppol-id:t finns inte registrerat hos operatören för det här kontot.

CONNECTOR_PEPPOL_PARTICIPANT_NOT_ALLOWED

HTTP 422: Unprocessable

The Peppol id may not be registered from this account. Contact support.

Swedish: Peppol-id:t får inte registreras från det här kontot. Kontakta support.

CONNECTOR_PEPPOL_PARTICIPANT_PUBLISHED_ELSEWHERE

HTTP 409: Conflict

The Peppol id is already published with another access point. Deregister it there first.

Swedish: Peppol-id:t är redan publicerat hos en annan operatör. Avregistrera det där först.

CONNECTOR_PEPPOL_PARTICIPANT_TAKEN

HTTP 409: Conflict

The Peppol id is already registered through another account. Contact support if it is your company.

Swedish: Peppol-id:t är redan registrerat via ett annat konto. Kontakta support om det är ert bolag.

CONNECTOR_PEPPOL_REGISTRATION_IN_PROGRESS

HTTP 409: Conflict

A registration of the Peppol id is already in progress. Try again shortly.

Swedish: En registrering av Peppol-id:t pågår redan. Försök igen om en stund.

CONNECTOR_PEPPOL_SENDER_NOT_REGISTERED

HTTP 422: Unprocessable

The company's Peppol id is not registered with the access point. Switch on receiving under Settings > Invoicing > E-invoicing via Peppol, or contact support.

Swedish: Bolagets Peppol-id är inte registrerat hos operatören. Slå på mottagning under Inställningar > Fakturering > E-faktura via Peppol, eller kontakta support.

CONNECTOR_PROTOCOL_ERROR

HTTP 502

The answer from the Peppol service could not be read. Contact support if the problem persists.

Swedish: Svaret från Peppol-tjänsten kunde inte tolkas. Kontakta support om felet kvarstår.

CONNECTOR_QUOTA_EXCEEDED

HTTP 409: Conflict

The account has used its Peppol slots. Contact support and we will open more.

Swedish: Kontots Peppol-platser är förbrukade. Hör av dig till support så öppnar vi fler.

CONNECTOR_RATE_LIMITED

HTTP 429: Rate limited

Too many Peppol calls in a short time. Wait a moment and try again.

Swedish: För många Peppol-anrop på kort tid. Vänta en stund och försök igen.

CONNECTOR_SCOPE_MISSING

HTTP 403: Forbidden

The connector key lacks Peppol permission. Contact support.

Swedish: Kopplingsnyckeln saknar Peppol-behörighet. Kontakta support.

CONNECTOR_UNREACHABLE

HTTP 502

The service that brokers Peppol could not be reached. Try again shortly.

Swedish: Tjänsten som förmedlar Peppol kunde inte nås. Försök igen om en stund.

CONNECTOR_UPSTREAM_ERROR

HTTP 502

The Peppol access point answered with an error. Try again shortly.

Swedish: Peppol-operatören svarade med ett fel. Försök igen om en stund.

CORRECTION_CHAIN_TOO_DEEP

HTTP 409: Conflict

The correction chain is already several levels deep. Compute the net effect of the whole chain and book ONE correction instead, or pass allow_deep_chain=true to override.

Swedish: Rättelsekedjan är redan flera nivåer djup. Räkna ut nettoeffekten av hela kedjan och gör EN rättelse istället, eller skicka allow_deep_chain=true för att rätta ändå.

Remediation: Read the full chain with gnubok_query_journal (follow correction_of_id/reverses_id to the chain root), compute the net effect across all entries, and stage ONE correction on the live entry that expresses it. Only pass allow_deep_chain=true if stacking another correction is genuinely intended. Related tool: gnubok_query_journal

CURRENCY_REVALUATION_ALREADY_EXISTS

HTTP 409: Conflict

Currency revaluation already exists for this period.

Swedish: En valutaomvärdering finns redan för denna period.

DATE_IN_FUTURE

HTTP 400: Bad request

The through date cannot be in the future.

Swedish: Du kan inte stämma av framåt i tiden.

DB_PERMISSION_DENIED

HTTP 500: Server error

A database permission (RLS) denial blocked the write. This indicates a server-side misconfiguration.

Swedish: Ett behörighetsfel i databasen stoppade åtgärden. Kontakta supporten om felet kvarstår.

DIMENSION_DELETE_FAILED

HTTP 500: Server error

Failed to delete dimension.

Swedish: Dimensionen kunde inte tas bort.

DIMENSION_IMPORT_FAILED

HTTP 500: Server error

Failed to import existing dimension codes from journal lines.

Swedish: Import av befintliga dimensionskoder misslyckades.

DIMENSION_NOT_FOUND

HTTP 404: Not found

Dimension not found.

Swedish: Dimensionen kunde inte hittas.

DIMENSION_NUMBER_TAKEN

HTTP 409: Conflict

That dimension number is already in the registry. Omit sie_dim_no to get the next free number from 20.

Swedish: Dimensionsnumret finns redan i registret.

DIMENSION_PARENT_INVALID

HTTP 400: Bad request

parent_sie_dim_no must name another existing dimension in the registry.

Swedish: Den överordnade dimensionen finns inte i registret.

DIMENSION_REFERENCED

HTTP 409: Conflict

The dimension is referenced by posted vouchers and cannot be deleted: archive (inactivate) it instead.

Swedish: Dimensionen används på bokförda verifikat och kan inte tas bort: avaktivera den istället.

Remediation: Archive the dimension instead: PATCH /api/dimensions/[id] with { "is_active": false }. Numbers tagged on posted lines are retained for the BFL 7-year period.

DIMENSION_SYSTEM_DELETE

HTTP 400: Bad request

System dimensions (kostnadsställe/projekt) cannot be deleted: archive (inactivate) them instead.

Swedish: Systemdimensioner (kostnadsställe och projekt) kan inte tas bort: avaktivera dem istället.

DIMENSION_SYSTEM_RENAME

HTTP 400: Bad request

System dimensions (kostnadsställe/projekt) cannot be renamed.

Swedish: Systemdimensioner kan inte döpas om.

DIMENSION_UPDATE_FAILED

HTTP 500: Server error

Failed to update dimension.

Swedish: Dimensionen kunde inte uppdateras.

DIMENSION_VALIDATION_FAILED

HTTP 400: Bad request

One or more dimension codes on the entry lines are missing from the dimension registry or archived. details.issues lists each offending sie_dim_no/code.

Swedish: Ett angivet kostnadsställe/projekt finns inte i dimensionsregistret eller är arkiverat. Skapa värdet i registret först.

Remediation: Create the missing dimension value in the register (or re-activate the archived value), then retry. Only companies with dimensions enabled are validated; each issue in details.issues carries sie_dim_no, code and reason (unknown_dimension | unknown_value | archived_value).

DIMENSION_VALUE_CREATE_FAILED

HTTP 500: Server error

Failed to create dimension value.

Swedish: Dimensionsvärdet kunde inte skapas.

DIMENSION_VALUE_DATES_NOT_ALLOWED

HTTP 400: Bad request

Start/end dates can only be set on accumulating dimensions (e.g. projects): this dimension resets annually.

Swedish: Datum kan bara sättas på ackumulerande dimensioner (t.ex. projekt).

DIMENSION_VALUE_DELETE_FAILED

HTTP 500: Server error

Failed to delete dimension value.

Swedish: Dimensionsvärdet kunde inte tas bort.

DIMENSION_VALUE_DUPLICATE_CODE

HTTP 409: Conflict

A value with that code already exists in the dimension.

Swedish: Ett värde med samma kod finns redan i dimensionen.

DIMENSION_VALUE_NOT_FOUND

HTTP 404: Not found

Dimension value not found.

Swedish: Dimensionsvärdet kunde inte hittas.

DIMENSION_VALUE_REFERENCED

HTTP 409: Conflict

The value is referenced by posted vouchers and cannot be deleted: archive (inactivate) it instead.

Swedish: Värdet används på bokförda verifikat och kan inte tas bort: arkivera det istället.

Remediation: Archive the value instead: PATCH the dimension value with { "is_active": false }. Codes referenced by posted lines are retained for the BFL 7-year period.

DIMENSION_VALUE_UPDATE_FAILED

HTTP 500: Server error

Failed to update dimension value.

Swedish: Dimensionsvärdet kunde inte uppdateras.

DOC_ATTACH_OTHER_VERIFIKAT

HTTP 409: Conflict

The document is already the underlag of another journal entry.

Swedish: Underlaget är redan kopplat till en annan verifikation.

DOC_ATTACH_PERIOD_LOCKED

HTTP 409: Conflict

The document was attached to the transaction, but its journal entry is in a locked period, so it could not be linked to the entry.

Swedish: Bilagan kopplades till transaktionen men verifikationens period är låst: den kunde inte länkas till verifikationen.

DOC_ATTACH_PROPAGATION_FAILED

HTTP 500: Server error

The document was attached to the transaction but could not be linked to its journal entry. Retry: the operation is idempotent.

Swedish: Bilagan kopplades till transaktionen men kunde inte länkas till verifikationen. Försök igen: operationen är idempotent.

DOC_ATTACH_REPLACES_POSTED

HTTP 409: Conflict

The document currently on the transaction belongs to a posted journal entry and cannot be replaced. Reverse the entry first.

Swedish: Bilagan är kopplad till en bokförd verifikation och kan inte ersättas. Storno verifikationen först.

DOC_DELETE_LINKED

HTTP 409: Conflict

The document is linked to a journal entry and is accounting records under BFL 7 kap 2 §: it must be kept for 7 years and cannot be deleted. Upload a new version instead.

Swedish: Underlaget är knutet till en verifikation och utgör räkenskapsinformation enligt Bokföringslagen 7 kap 2§. Räkenskapsinformation ska bevaras i minst 7 år och får inte raderas. Använd "Ersätt med ny version" om underlaget behöver korrigeras.

DOC_DETACH_CONCURRENT

HTTP 409: Conflict

The transaction changed at the same time. Reload and try again.

Swedish: Transaktionen ändrades samtidigt. Ladda om sidan och försök igen.

HTTP 500: Server error

The inbox item could not be released, so the document is still attached. Retry.

Swedish: Inkorgsposten kunde inte släppas, så underlaget är fortfarande kopplat. Försök igen.

DOC_DETACH_POSTED

HTTP 409: Conflict

The document is the underlag of a journal entry and cannot be detached. Reverse the entry first.

Swedish: Bilagan är kopplad till en bokförd verifikation och kan inte tas bort. Storno verifikationen först.

DOC_DOWNLOAD_FAILED

HTTP 500: Server error

Failed to create signed download URL.

Swedish: Det gick inte att skapa nedladdningslänken.

HTTP 409: Conflict

Document is already linked to a journal entry.

Swedish: Dokumentet är redan kopplat till en verifikation.

DOC_LINK_ENTRY_NOT_FOUND

HTTP 404: Not found

Journal entry not found.

Swedish: Verifikationen kunde inte hittas.

HTTP 500: Server error

Failed to link document to journal entry.

Swedish: Kopplingen misslyckades.

DOC_NOT_FOUND

HTTP 404: Not found

Document not found.

Swedish: Dokumentet kunde inte hittas.

DOC_UPLOAD_EMPTY

HTTP 400: Bad request

The uploaded file is empty. Upload the file again.

Swedish: Filen är tom. Ladda upp filen igen.

DOC_UPLOAD_INVALID_CONTENT

HTTP 400: Bad request

The file could not be read as a valid PDF or image. Check that the file is not corrupted.

Swedish: Filen kunde inte läsas som en giltig PDF eller bild. Kontrollera att filen inte är skadad.

DOC_UPLOAD_NO_FILE

HTTP 400: Bad request

No file attached.

Swedish: Ingen fil bifogad.

DOC_UPLOAD_PERIOD_LOCKED

HTTP 400: Bad request

Cannot attach documents to entries in a locked or closed fiscal period.

Swedish: Det går inte att bifoga underlag till verifikationer i en låst eller stängd period.

DOC_UPLOAD_STORAGE_FAILED

HTTP 500: Server error

Document storage failed.

Swedish: Filen kunde inte sparas.

DOC_UPLOAD_TOO_LARGE

HTTP 400: Bad request

Uploaded file exceeds the size limit.

Swedish: Filen är för stor.

DOC_UPLOAD_UNSUPPORTED_TYPE

HTTP 400: Bad request

Unsupported file type.

Swedish: Filtypen stöds inte.

EAI_AGAIN

HTTP 503

An upstream network call failed. Retry the same request after a short backoff.

Swedish: Kunde inte nå en extern tjänst. Försök igen om en stund.

ECONNREFUSED

HTTP 503

An upstream network call failed. Retry the same request after a short backoff.

Swedish: Kunde inte nå en extern tjänst. Försök igen om en stund.

ECONNRESET

HTTP 503

An upstream network call failed. Retry the same request after a short backoff.

Swedish: Kunde inte nå en extern tjänst. Försök igen om en stund.

HTTP 400: Bad request

The NE-bilaga preview (egenavgifter, räntefördelning, periodiseringsfond and expansionsfond) applies only to an enskild firma, not to this company's legal form.

Swedish: NE-bilagans beräkningar (egenavgifter, räntefördelning, periodiseringsfond och expansionsfond) gäller bara enskild firma, inte företagets företagsform.

ENOTFOUND

HTTP 503

An upstream network call failed. Retry the same request after a short backoff.

Swedish: Kunde inte nå en extern tjänst. Försök igen om en stund.

ENTRY_ALREADY_REVERSED

HTTP 409: Conflict

Entry was already reversed by a concurrent operation.

Swedish: Verifikationen har redan stornats av en annan användare. Ladda om sidan och försök igen.

ENTRY_DATE_OUTSIDE_FISCAL_PERIOD

HTTP 400: Bad request

Entry date is outside the active fiscal period.

Swedish: Datumet ligger utanför det valda räkenskapsåret.

Remediation: Use a date inside an open period or create one that covers it. Related resource: Accounted://period/active

EPIPE

HTTP 503

An upstream network call failed. Retry the same request after a short backoff.

Swedish: Kunde inte nå en extern tjänst. Försök igen om en stund.

ETIMEDOUT

HTTP 503

An upstream network call failed. Retry the same request after a short backoff.

Swedish: Kunde inte nå en extern tjänst. Försök igen om en stund.

EXPENSE_CLAIM_ALREADY_ON_PAYSLIP

HTTP 409: Conflict

The expense claim is already on a payslip.

Swedish: Utlägget ligger redan på ett lönebesked.

EXPENSE_CLAIM_ALREADY_PAID

HTTP 409: Conflict

The expense claim is already paid out and cannot be deleted.

Swedish: Utlägget är redan utbetalt och kan inte tas bort.

EXPENSE_CLAIM_CLAIMANT_REQUIRED

HTTP 400: Bad request

Say who the expense claim is for: pick an employee or give a name.

Swedish: Ange vem utlägget avser: välj anställd eller skriv ett namn.

EXPENSE_CLAIM_DELETE_FAILED

HTTP 500: Server error

The expense claim could not be deleted.

Swedish: Utlägget kunde inte tas bort.

EXPENSE_CLAIM_DOCUMENT_NOT_FOUND

HTTP 404: Not found

The document was not found in this company.

Swedish: Underlaget hittades inte i företaget.

EXPENSE_CLAIM_INBOX_ITEM_NOT_FOUND

HTTP 404: Not found

The inbox item was not found in this company.

Swedish: Inkorgsposten hittades inte i företaget.

EXPENSE_CLAIM_INVALID_LINES

HTTP 400: Bad request

The voucher lines are invalid: they must balance and carry exactly one credit on the liability account equal to the amount.

Swedish: Verifikatraderna är ogiltiga: kontrollera att raderna balanserar och att skuldraden matchar beloppet.

HTTP 500: Server error

The expense claim was booked but could not be linked to its voucher. Contact support before retrying.

Swedish: Utlägget bokfördes men kunde inte kopplas till sin verifikation. Kontakta supporten innan du försöker igen.

EXPENSE_CLAIM_NOT_FOUND

HTTP 404: Not found

Expense claim not found.

Swedish: Utlägget hittades inte.

EXPENSE_CLAIM_NO_FISCAL_PERIOD

HTTP 400: Bad request

No open fiscal year covers the date.

Swedish: Inget öppet räkenskapsår täcker datumet.

EXPENSE_CLAIM_ON_PAYSLIP

HTTP 409: Conflict

The expense claim is on a payslip that has left draft. Remove the line from the payslip first.

Swedish: Utlägget ligger på ett lönebesked som är under behandling. Ta bort raden från lönebeskedet först.

EXPENSE_CLAIM_RATE_UNAVAILABLE

HTTP 400: Bad request

No exchange rate could be fetched for the date. Pass exchange_rate and retry.

Swedish: Ingen växelkurs kunde hämtas för datumet. Ange kursen manuellt och försök igen.

EXPENSE_CLAIM_SAVE_FAILED

HTTP 500: Server error

The expense claim could not be saved.

Swedish: Utlägget kunde inte sparas.

EXPENSE_CLAIM_VAT_EXCEEDS_AMOUNT

HTTP 400: Bad request

The VAT must be less than the total amount.

Swedish: Momsen måste vara mindre än totalbeloppet.

EXPENSE_PAYOUT_ACCOUNT_NOT_IN_CHART

HTTP 400: Bad request

The account is not active in the chart of accounts.

Swedish: Kontot finns inte i kontoplanen.

EXPENSE_PAYOUT_ALREADY_PAID

HTTP 409: Conflict

One or more of the expense claims are already paid out.

Swedish: Något av utläggen är redan utbetalt.

EXPENSE_PAYOUT_CLAIMS_NOT_FOUND

HTTP 404: Not found

One or more of the expense claims were not found.

Swedish: Något av utläggen hittades inte.

EXPENSE_PAYOUT_FAILED

HTTP 500: Server error

The payout could not be booked.

Swedish: Utbetalningen kunde inte bokföras.

EXPENSE_PAYOUT_INVALID_CASH_ACCOUNT

HTTP 400: Bad request

The payout must come from a cash account in the 19xx range (bank or cash).

Swedish: Utbetalningen måste göras från ett likvidkonto i 19xx-serien (bank eller kassa).

EXPENSE_PAYOUT_MATCH_AMOUNT

HTTP 400: Bad request

The amount does not match the selected expense claims. Pick the claims this transfer covers.

Swedish: Beloppet stämmer inte med de valda utläggen. Välj de utlägg som överföringen täcker.

EXPENSE_PAYOUT_MATCH_CURRENCY

HTTP 400: Bad request

Expense claims are reimbursed in SEK; the transaction is in another currency.

Swedish: Utlägg betalas ut i SEK och transaktionen har en annan valuta.

EXPENSE_PAYOUT_MATCH_NOT_EXPENSE

HTTP 400: Bad request

Only outgoing transactions can be matched to expense claims.

Swedish: Endast utbetalningar kan matchas mot utlägg.

EXPENSE_PAYOUT_MATCH_TX_ALREADY_LINKED

HTTP 400: Bad request

The transaction is already booked or linked to a journal entry.

Swedish: Transaktionen är redan bokförd eller kopplad till en verifikation.

EXPENSE_PAYOUT_MIXED_CLAIMANTS

HTTP 400: Bad request

A payout covers one person only. Split it per person.

Swedish: En utbetalning kan bara avse en person. Dela upp per person.

EXPENSE_PAYOUT_MIXED_LIABILITY

HTTP 400: Bad request

The expense claims sit on different liability accounts and cannot be paid out together.

Swedish: Utläggen har olika skuldkonton och kan inte betalas ut tillsammans.

EXPENSE_PAYOUT_NO_CLAIMS

HTTP 400: Bad request

Pick at least one expense claim to pay out.

Swedish: Välj minst ett utlägg att betala ut.

EXPENSE_PAYOUT_NO_FISCAL_PERIOD

HTTP 400: Bad request

No open fiscal year covers the payout date.

Swedish: Inget öppet räkenskapsår täcker utbetalningsdatumet.

EXPENSE_PAYOUT_ON_PAYSLIP

HTTP 409: Conflict

One or more of the expense claims are on a payslip and are repaid through payroll. Remove the line from the payslip first.

Swedish: Något av utläggen ligger på ett lönebesked och betalas ut via lön. Ta bort raden från lönebeskedet först.

EXTENSION_DISABLED

HTTP 503

The Skatteverket integration is not enabled in this environment.

Swedish: Skatteverket-integrationen är inte aktiverad i denna miljö.

EXTERNAL_BALANCE_NOT_ALLOWED

HTTP 400: Bad request

The account already has an outside truth (bank, Skatteverket, ledger or calculation). Do not state a balance; sign with a note if something differs.

Swedish: Kontot har redan en sanning utanför bokföringen (bank, Skatteverket, reskontra eller beräkning). Ange inget saldo manuellt; signera med en notering om något avviker.

FISCAL_PERIOD_CLOSE_EXTERNAL_ALREADY_CLOSED

HTTP 409: Conflict

The fiscal year is already closed.

Swedish: Räkenskapsåret är redan stängt.

FISCAL_PERIOD_CLOSE_EXTERNAL_CHECK_FAILED

HTTP 503

The fiscal year could not be checked, so it was left open. Retry the same request.

Swedish: Räkenskapsårets verifikat kunde inte kontrolleras. Året lämnas öppet. Försök igen.

FISCAL_PERIOD_CLOSE_EXTERNAL_HAS_CLOSING_ENTRY

HTTP 409: Conflict

The fiscal year has a closing entry in Accounted: close it through the normal year-end instead.

Swedish: Räkenskapsåret har ett bokslutsverifikat i Accounted: stäng det med det vanliga årsbokslutet i stället.

FISCAL_PERIOD_CLOSE_EXTERNAL_NATIVE_BOOKKEEPING

HTTP 409: Conflict

The fiscal year was bookkept in Accounted, not migrated: close it with the normal year-end so the result and balances carry forward.

Swedish: Räkenskapsåret är bokfört i Accounted och ska stängas med det vanliga årsbokslutet, så att resultatet och balanserna förs över.

Remediation: Run the year-end instead (POST /fiscal-periods/{id}/year-end, gnubok_run_year_end). Related tool: gnubok_run_year_end

FISCAL_PERIOD_CLOSE_EXTERNAL_NOT_ENDED

HTTP 409: Conflict

A fiscal year that has not ended yet cannot be marked as closed in a previous system.

Swedish: Ett räkenskapsår som inte har tagit slut kan inte klarmarkeras.

FISCAL_PERIOD_CREATE_FAILED

HTTP 500: Server error

Failed to create the fiscal year.

Swedish: Räkenskapsåret kunde inte skapas. Försök igen.

FISCAL_PERIOD_END_NOT_MONTH_END

HTTP 400: Bad request

period_end must be the last day of a month (BFL 3 kap.).

Swedish: Räkenskapsåret måste sluta på sista dagen i en månad (BFL 3 kap.).

FISCAL_PERIOD_ENSKILD_FIRMA_CALENDAR_YEAR

HTTP 400: Bad request

An enskild firma must use the calendar year: the fiscal year ends on 31 December and, after the first year, starts on 1 January (BFL 3 kap.).

Swedish: Enskild firma måste använda kalenderår: räkenskapsåret slutar 31 december och, efter det första året, börjar det 1 januari (BFL 3 kap.).

FISCAL_PERIOD_HAS_POSTED_ENTRIES

HTTP 409: Conflict

The dates cannot change while posted or reversed vouchers exist in the fiscal year (details.entry_count). The name can still be changed.

Swedish: Datumen kan inte ändras eftersom det finns bokförda verifikationer i räkenskapsåret. Namnet kan fortfarande ändras.

FISCAL_PERIOD_INVALID_DATES

HTTP 400: Bad request

The fiscal year dates are invalid: period_end must be after period_start. details.rule names the rule.

Swedish: Räkenskapsårets datum är ogiltiga: slutdatumet måste ligga efter startdatumet.

FISCAL_PERIOD_NOT_CONTIGUOUS

HTTP 400: Bad request

Fiscal years must be contiguous: a new year starts the day after the preceding year ends and ends the day before the following year starts. details.expected_start / details.expected_end hold the date that fits.

Swedish: Räkenskapsåren måste följa direkt på varandra, utan glapp.

FISCAL_PERIOD_NOT_FOUND

HTTP 404: Not found

No fiscal period covers the entry date.

Swedish: Räkenskapsperioden kunde inte hittas.

Remediation: Create or extend the relevant fiscal period before retrying. Related resource: Accounted://period/active

FISCAL_PERIOD_OVERLAP

HTTP 409: Conflict

The fiscal year overlaps an existing one (details.overlapping_period_id / overlapping_period_name). Fiscal years never overlap.

Swedish: Räkenskapsåret överlappar ett befintligt räkenskapsår.

Remediation: List the existing years with GET /fiscal-periods (gnubok_list_fiscal_periods) and choose dates that do not overlap any of them. Related tool: gnubok_list_fiscal_periods

FISCAL_PERIOD_START_NOT_FIRST_OF_MONTH

HTTP 400: Bad request

period_start must be the 1st of a month: only the company's first fiscal year may start mid-month (BFL 3 kap. 1 and 3 §§).

Swedish: Räkenskapsåret måste börja den 1:a i en månad. Bara företagets första räkenskapsår får börja mitt i en månad (BFL 3 kap. 1 och 3 §§).

FISCAL_PERIOD_TOO_LONG

HTTP 400: Bad request

A fiscal year may be at most 18 months (BFL 3 kap.). details.months holds the length requested.

Swedish: Ett räkenskapsår får vara högst 18 månader (BFL 3 kap.).

FISCAL_PERIOD_UPDATE_CLOSED

HTTP 409: Conflict

A closed fiscal year cannot be edited.

Swedish: Ett stängt räkenskapsår kan inte ändras.

FISCAL_PERIOD_UPDATE_FAILED

HTTP 500: Server error

Failed to update the fiscal year.

Swedish: Räkenskapsåret kunde inte sparas. Försök igen.

FISCAL_PERIOD_UPDATE_LOCKED

HTTP 409: Conflict

A locked fiscal year cannot be edited. Unlock it first if it needs correcting.

Swedish: Ett låst räkenskapsår kan inte ändras. Lås upp det först om det behöver rättas.

Remediation: Unlock the year (it must be locked, not closed), edit it, and lock it again. Related tool: gnubok_unlock_period

FISCAL_YEAR_RESET_CONFIRMATION_MISMATCH

HTTP 400: Bad request

The fiscal year name does not match.

Swedish: Räkenskapsårets namn stämmer inte överens.

FISCAL_YEAR_RESET_FAILED

HTTP 500: Server error

Failed to reset the fiscal year. No changes were saved.

Swedish: Räkenskapsåret kunde inte nollställas. Inga ändringar har sparats.

FISCAL_YEAR_RESET_FORBIDDEN

HTTP 403: Forbidden

Only company owners and admins can reset a fiscal year.

Swedish: Endast företagets ägare eller administratörer kan nollställa ett räkenskapsår.

FISCAL_YEAR_RESET_INELIGIBLE

HTTP 409: Conflict

The fiscal year cannot be reset in its current state.

Swedish: Räkenskapsåret kan inte nollställas i sitt nuvarande läge.

FISCAL_YEAR_RESET_LINKED_ENTRIES

HTTP 409: Conflict

The fiscal year contains vouchers linked to other records (e.g. assets, accrual schedules or salary runs). Undo those flows first. No changes were saved.

Swedish: Räkenskapsåret innehåller verifikat som är kopplade till andra poster (t.ex. anläggningstillgångar, periodiseringar eller lönekörningar). Ta bort eller ångra de kopplade flödena först. Inga ändringar har sparats.

FISCAL_YEAR_RESET_NOT_FOUND

HTTP 404: Not found

Fiscal year not found.

Swedish: Räkenskapsåret kunde inte hittas.

INBOX_ATTACH_FAILED

HTTP 500: Server error

Failed to attach the document.

Swedish: Bilagan kunde inte kopplas. Försök igen.

INBOX_ITEM_ALREADY_CONVERTED

HTTP 409: Conflict

The inbox item is already linked to a supplier invoice.

Swedish: Posten är redan kopplad till en leverantörsfaktura.

INBOX_ITEM_DELETE_BOOKED

HTTP 409: Conflict

The inbox item is booked and cannot be deleted.

Swedish: Posten är bokförd och kan inte tas bort.

INBOX_ITEM_DELETE_CONVERTED

HTTP 409: Conflict

The inbox item is linked to a supplier invoice and cannot be deleted.

Swedish: Posten är kopplad till en leverantörsfaktura och kan inte tas bort.

INBOX_ITEM_EDIT_CONFLICT

HTTP 409: Conflict

The inbox item was changed by someone else at the same time. Try again.

Swedish: Posten ändrades samtidigt av någon annan. Försök igen.

INBOX_ITEM_EDIT_LOCKED

HTTP 409: Conflict

The inbox item is linked to a supplier invoice and cannot be changed.

Swedish: Posten är redan kopplad till en leverantörsfaktura och kan inte ändras.

INBOX_ITEM_NOT_FOUND

HTTP 404: Not found

Inbox item not found.

Swedish: Inkorgsposten hittades inte.

INBOX_UPLOAD_FAILED

HTTP 500: Server error

Upload failed.

Swedish: Uppladdningen misslyckades. Försök igen.

INBOX_UPLOAD_NOT_PERMITTED

HTTP 403: Forbidden

You do not have permission to upload documents to this company. Read-only members cannot add documents.

Swedish: Du har inte behörighet att ladda upp underlag i det här företaget. Medlemmar med läsbehörighet kan inte lägga till dokument.

INBOX_UPLOAD_NO_FILE

HTTP 400: Bad request

No file attached.

Swedish: Ingen fil bifogad.

INBOX_UPLOAD_TOO_LARGE

HTTP 400: Bad request

File exceeds the 10 MB size limit.

Swedish: Filen är för stor. Maxstorlek är 10 MB.

INBOX_UPLOAD_TX_NOT_IN_COMPANY

HTTP 400: Bad request

matched_transaction_id refers to a transaction outside this company.

Swedish: Den angivna transaktionen (matched_transaction_id) tillhör ett annat företag.

INBOX_UPLOAD_UNSUPPORTED_TYPE

HTTP 400: Bad request

Unsupported file type. Allowed: PDF, JPEG, PNG, HEIC, WebP.

Swedish: Filtypen stöds inte. Tillåtna format: PDF, JPEG, PNG, HEIC och WebP.

INVALID_DATE

HTTP 400: Bad request

Invalid date. Use YYYY-MM-DD.

Swedish: Ogiltigt datum. Ange ÅÅÅÅ-MM-DD.

INVALID_K3_COMPONENTS

HTTP 400: Bad request

The component breakdown is invalid: component costs must sum to the acquisition cost of the asset.

Swedish: Komponentuppdelningen är ogiltig: komponenternas anskaffningsvärden måste summera till tillgångens anskaffningsvärde.

INVALID_MAPPING_RESULT

HTTP 400: Bad request

Mapping rules produced an invalid debit/credit account pair.

Swedish: Kontering saknas för transaktionen. Kontrollera bokföringsreglerna.

INVALID_OPENING_DEPRECIATION

HTTP 400: Bad request

The opening accumulated depreciation is invalid: it must be between 0 and the acquisition cost less the residual value, carry a date that is not after today or before the acquisition date, and cannot be combined with a component breakdown.

Swedish: Redan avskrivet belopp är ogiltigt: det måste vara mellan 0 och anskaffningsvärdet minus restvärdet, ha ett datum som inte är senare än i dag eller före anskaffningsdatumet, och kan inte kombineras med komponentuppdelning.

K2_EXCLUDED_ACCOUNT

HTTP 422: Unprocessable

The account is marked Ej K2 in the BAS chart of accounts and presumes the K3 framework. Pick an account that K2 permits.

Swedish: Kontot är markerat Ej K2 i BAS-kontoplanen och förutsätter K3. Välj ett konto som är tillåtet enligt K2.

K3_REQUIRED_FOR_COMPONENTS

HTTP 422: Unprocessable

Component depreciation (k3_components) requires the company to apply K3 (BFNAR 2012:1).

Swedish: Komponentuppdelning (k3_components) kräver att företaget tillämpar K3 (BFNAR 2012:1).

HTTP 409: Conflict

This journal entry is already linked to this supplier invoice.

Swedish: Verifikationen är redan länkad till den här leverantörsfakturan.

HTTP 400: Bad request

The voucher's settlement amount (details.ap_debit: the 244x debit, or details.bank_credit: the 19xx credit on kontantmetoden) exceeds the supplier invoice's remaining balance. Split the voucher across multiple supplier invoices via gnubok_correct_entry first, or pick a different voucher.

Swedish: Verifikationens belopp är större än leverantörsfakturans återstående belopp. Verifikationen täcker fler fakturor: välj en annan verifikation eller rätta beloppet först.

HTTP 400: Bad request

The voucher's currency does not match the supplier invoice currency.

Swedish: Verifikationens valuta matchar inte leverantörsfakturans. Endast verifikationer i fakturans valuta kan länkas.

HTTP 409: Conflict

A posted kontantmetod year-end cut-off covers both the invoice and the payment voucher and counted this invoice as unpaid. Correct the cut-off first (storno and re-post), then link the voucher.

Swedish: Bokslutets periodisering enligt kontantmetoden är redan bokförd för ett år som omfattar både fakturan och betalningen, och den räknade fakturan som obetald. Rätta periodiseringen först (storno och bokför om), koppla sedan verifikationen.

HTTP 500: Server error

Database error while linking the voucher. Please retry.

Swedish: Databasfel under länkning. Försök igen.

HTTP 409: Conflict

The voucher's bank credit is already used by payment rows for other supplier invoices; nothing is left to settle this one. Pick a different voucher.

Swedish: Verifikationens utbetalning är redan kopplad till andra leverantörsfakturor och har inget belopp kvar. Välj en annan verifikation.

HTTP 409: Conflict

Supplier invoice is already fully paid.

Swedish: Leverantörsfakturan har redan slutbetalats. Inget mer behöver länkas.

HTTP 404: Not found

Supplier invoice not found.

Swedish: Leverantörsfakturan kunde inte hittas.

HTTP 409: Conflict

Journal entry is not posted. Only posted entries can be linked as a payment.

Swedish: Verifikationen är inte bokförd. Endast bokförda verifikationer kan länkas som betalning.

HTTP 400: Bad request

The journal entry does not debit any accounts-payable account in the 244x range (e.g. 2440 SEK, 2441 foreign currency). Correct the booking first via a storno+correction (gnubok_correct_entry).

Swedish: Verifikationen debiterar inget leverantörsskuldskonto (244x). Rätta bokföringen först med en stornoverifikation som debiterar t.ex. 2440 (SEK) eller 2441 (utländsk valuta), via gnubok_correct_entry.

Remediation: Use gnubok_correct_entry to storno the existing voucher and re-book the payment as Dr 244x / Cr 1930, then link the corrected voucher. Related tool: gnubok_correct_entry

HTTP 400: Bad request

The journal entry does not credit a cash or bank account (19xx), so it cannot be the payment of this invoice. On kontantmetoden the payment verifikat is the one where the money left the account (Dr cost, Dr 2641 / Cr 19xx).

Swedish: Verifikationen krediterar inget kassa- eller bankkonto (19xx), så den kan inte vara betalningen av fakturan. Välj verifikationen där pengarna lämnade kontot.

HTTP 404: Not found

Journal entry not found.

Swedish: Verifikationen kunde inte hittas.

HTTP 500: Server error

Linking the transaction to the journal entry failed at the database.

Swedish: Kopplingen kunde inte sparas i databasen.

HTTP 400: Bad request

Credit notes cannot be recorded as paid.

Swedish: Kreditfakturor kan inte registreras som betalda.

HTTP 400: Bad request

Transaction and invoice currency must match to link to an existing voucher. Use the match-invoice flow for cross-currency settlement.

Swedish: Transaktionens och fakturans valuta måste vara samma för att länka till en befintlig verifikation. Använd matchningsdialogen för valutaomräkning.

HTTP 404: Not found

Invoice not found.

Swedish: Fakturan kunde inte hittas.

HTTP 400: Bad request

Invoice is not in an unpaid state.

Swedish: Fakturan är inte i ett obetalt läge och kan inte kopplas.

HTTP 409: Conflict

Invoice status changed concurrently. Retry the request.

Swedish: Fakturan ändrades samtidigt. Försök igen.

HTTP 404: Not found

Journal entry not found.

Swedish: Verifikationen kunde inte hittas.

HTTP 400: Bad request

Only posted journal entries can be linked to a transaction.

Swedish: Endast bokförda verifikationer kan kopplas till en banktransaktion.

HTTP 400: Bad request

Transaction is already linked to a journal entry.

Swedish: Transaktionen är redan kopplad till en verifikation.

HTTP 409: Conflict

This journal entry is already linked to this invoice.

Swedish: Verifikationen är redan länkad till den här fakturan.

HTTP 400: Bad request

The voucher's AR credit exceeds the invoice's remaining balance. Split the voucher across multiple invoices via gnubok_correct_entry first, or pick a different voucher.

Swedish: Verifikationens kundfordringskreditering är större än fakturans återstående belopp. Verifikationen täcker fler fakturor: välj en annan verifikation eller rätta beloppet först.

HTTP 400: Bad request

The voucher's currency does not match the invoice currency.

Swedish: Verifikationens valuta matchar inte fakturans. Endast verifikationer i fakturans valuta kan länkas.

HTTP 500: Server error

Database error while linking the voucher. Please retry.

Swedish: Databasfel under länkning. Försök igen.

HTTP 409: Conflict

Invoice is already fully paid.

Swedish: Fakturan har redan slutbetalats. Inget mer behöver länkas.

HTTP 404: Not found

Invoice not found.

Swedish: Fakturan kunde inte hittas.

HTTP 409: Conflict

Journal entry is not posted. Only posted entries can be linked as a payment.

Swedish: Verifikationen är inte bokförd. Endast bokförda verifikationer kan länkas som betalning.

HTTP 400: Bad request

The journal entry does not credit an accounts-receivable account (151x). Correct the booking first via a storno+correction (gnubok_correct_entry) that credits 1510.

Swedish: Verifikationen krediterar inte ett kundfordringskonto (151x). Bokföringen behöver först rättas med en stornoverifikation som krediterar 1510, t.ex. via gnubok_correct_entry.

Remediation: Use gnubok_correct_entry to storno the existing voucher and re-book the receipt as Dr 1930 / Cr 1510, then link the corrected voucher. Related tool: gnubok_correct_entry

HTTP 404: Not found

Journal entry not found.

Swedish: Verifikationen kunde inte hittas.

MANDATORY_DIMENSION_MISSING

HTTP 400: Bad request

One or more accounts require a dimension value. details.violations lists each account_number, sie_dim_no and dimension_name.

Swedish: Ett eller flera konton kräver en dimension (t.ex. projekt eller kostnadsställe). Välj värden innan bokföring.

Remediation: Tag every listed line with the required dimension value, then retry the commit.

MEANINGLESS_CORRECTION

HTTP 400: Bad request

The correction represents no economic event: nothing to correct.

Swedish: Rättelsen motsvarar ingen ekonomisk händelse: det finns inget att rätta.

NOTE_REQUIRED

HTTP 400: Bad request

A note is required when signing with force.

Swedish: Skriv en rad om varför du signerar trots att allt inte är förklarat.

NOT_FETCHED_THROUGH

HTTP 400: Bad request

The skattekonto has not been fetched through that date. Fetch it again before signing off a later date.

Swedish: Skattekontot är inte hämtat t.o.m. det datumet. Hämta igen innan du stämmer av ett senare datum.

NOT_RECONCILED

HTTP 400: Bad request

The account has an unexplained difference. Link or book the rows first, or sign with force and a note.

Swedish: Kontot har en oförklarad differens. Koppla eller bokför raderna först, eller signera med en notering.

NO_COMPANY_YET

HTTP 409: Conflict

This account has no company yet. Create the company in the web app, then retry; the connection picks it up automatically.

Swedish: Kontot har inget företag ännu. Skapa företaget i appen och försök igen.

Remediation: Ask the user to finish company setup in the Accounted web app (/onboarding). No re-authentication is needed afterwards: the same connection binds to the new company on its next call. Related tool: gnubok_list_companies

NO_DOC_REQUIRED_FAILED

HTTP 400: Bad request

The "no document required" flag could not be saved.

Swedish: Markeringen "Inget underlag krävs" kunde inte sparas.

NO_OPEN_PERIOD_FOR_DATE

HTTP 400: Bad request

No fiscal period covers the selected date.

Swedish: Det finns ingen räkenskapsperiod som täcker det valda datumet. Skapa eller öppna räkenskapsåret först.

Remediation: Create or open the fiscal year that covers the date before retrying. Related resource: Accounted://period/active

OB_ACCOUNT_ACTIVATION_FAILED

HTTP 500: Server error

Failed to activate accounts in the chart of accounts.

Swedish: Kunde inte aktivera konton i kontoplanen.

OB_COMPANY_LOCK_DATE

HTTP 409: Conflict

The company-wide bookkeeping lock date covers the period start — opening balances cannot be corrected. Remove or move the lock date under Settings → Bookkeeping and try again.

Swedish: Bokföringen är låst t.o.m. ett låsdatum som täcker periodens start — ingående balanser kan inte korrigeras. Ta bort eller flytta låsdatumet under Inställningar → Bokföring och försök igen.

Remediation: Clear or move the bookkeeping lock date (company_settings.bookkeeping_locked_through) to a date before the period start, then retry the correction.

OB_CORRECT_FAILED

HTTP 500: Server error

Opening balance correction failed.

Swedish: Korrigeringen av ingående balanser misslyckades.

OB_CORRECT_NO_EXISTING

HTTP 409: Conflict

The period has no opening balances to correct. Book them first.

Swedish: Perioden har inga ingående balanser att korrigera. Bokför dem först.

OB_CORRECT_YEAR_END_EXISTS

HTTP 409: Conflict

The period has a year-end close. Reverse the close and reopen the period before opening balances can be corrected.

Swedish: Perioden har ett bokslut. Återför bokslutet och öppna perioden innan ingående balanser kan korrigeras.

OB_EXECUTE_FAILED

HTTP 500: Server error

Opening balance import failed.

Swedish: Importen misslyckades.

OB_FILE_TOO_LARGE

HTTP 400: Bad request

File exceeds the 10 MB size limit.

Swedish: Filen är för stor. Maxstorlek är 10 MB.

OB_INVALID_COLUMN_OVERRIDES

HTTP 400: Bad request

Invalid column overrides JSON.

Swedish: Ogiltig kolumnmappning.

OB_INVALID_FORMAT

HTTP 400: Bad request

Unsupported file format.

Swedish: Filformatet stöds inte. Tillåtna format: .xlsx, .xls, .csv, .ods.

OB_NON_BALANCE_SHEET_ACCOUNT

HTTP 400: Bad request

Opening balances may only use balance sheet accounts (class 1 and 2).

Swedish: Ingående balanser får bara bokas på balanskonton (klass 1 och 2).

OB_NO_FILE

HTTP 400: Bad request

No file attached.

Swedish: Ingen fil bifogad.

OB_PARSE_FAILED

HTTP 500: Server error

Failed to parse the opening balance file.

Swedish: Kunde inte tolka filen.

OB_PERIOD_ALREADY_HAS_BALANCES

HTTP 409: Conflict

Fiscal period already has opening balances set.

Swedish: Räkenskapsperioden har redan ingående balanser.

OB_PERIOD_CLOSED

HTTP 400: Bad request

Fiscal period is closed.

Swedish: Räkenskapsperioden är stängd.

OB_PERIOD_LOCKED

HTTP 400: Bad request

Fiscal period is locked.

Swedish: Räkenskapsperioden är låst.

OB_PERIOD_NOT_FOUND

HTTP 404: Not found

Fiscal period not found.

Swedish: Räkenskapsperioden hittades inte.

OB_PNL_ACCOUNT

HTTP 400: Bad request

Profit & loss accounts (class 3-8) are not allowed in opening balances.

Swedish: Resultatkonton (klass 3-8) kan inte användas i ingående balanser.

OB_SET_COMPANY_LOCK_DATE

HTTP 409: Conflict

The company-wide bookkeeping lock date covers the first day of the fiscal year, so opening balances cannot be booked. Move the lock date under Settings → Bookkeeping and try again.

Swedish: Bokföringen är låst t.o.m. ett låsdatum som täcker räkenskapsårets första dag, så ingående balanser kan inte bokföras. Flytta låsdatumet under Inställningar → Bokföring och försök igen.

Remediation: Move the bookkeeping lock date (company_settings.bookkeeping_locked_through) to a date before the period start, then retry.

OB_TOO_FEW_LINES

HTTP 400: Bad request

At least two lines with amounts are required.

Swedish: Minst två rader med belopp krävs.

OB_UNBALANCED

HTTP 400: Bad request

Opening balance debits and credits do not match.

Swedish: Debet och kredit balanserar inte.

OPENING_BALANCES_LOCKED

HTTP 409: Conflict

Opening balances are locked: the employee has a booked salary run.

Swedish: Ingående saldon är låsta: den anställda har en bokförd lönekörning.

OUTSIDE_UNKNOWN

HTTP 400: Bad request

The outside balance is unknown, so the account cannot be reconciled. Fetch it first, or sign with force and a note.

Swedish: Saldot utanför bokföringen är okänt, så kontot kan inte stämmas av. Hämta det först, eller signera med en notering.

PEPPOL_ACCESS_ALREADY_ENABLED

HTTP 409: Conflict

Peppol is already enabled for the company.

Swedish: Peppol är redan aktiverat för bolaget.

PEPPOL_ACCESS_REQUIRED

HTTP 403: Forbidden

Peppol is not enabled for this company. Request access under Settings > Invoicing > E-invoicing via Peppol and we will enable it.

Swedish: Peppol är inte aktiverat för det här bolaget. Begär åtkomst under Inställningar > Fakturering > E-faktura via Peppol, så aktiverar vi det.

PEPPOL_FISCAL_PERIOD_MISSING

HTTP 422: Unprocessable

The invoice date falls outside every fiscal year. Create the fiscal year before sending the invoice via Peppol.

Swedish: Fakturadatumet saknar ett räkenskapsår. Skapa räkenskapsåret innan fakturan skickas via Peppol.

PEPPOL_LOOKUP_FAILED

HTTP 502

Could not look up the recipient in the Peppol network. Try again shortly.

Swedish: Kunde inte slå upp mottagaren i Peppol-nätverket. Försök igen om en stund.

PEPPOL_RECEIVING_NOT_ENABLED

HTTP 403: Forbidden

Receiving via Peppol is not enabled for this company. Contact support and we will open a slot.

Swedish: Mottagning via Peppol är inte aktiverad för det här bolaget. Hör av dig till support så öppnar vi en plats.

PEPPOL_RECEIVING_UNSUPPORTED

HTTP 503

The configured Peppol access point does not support receiving e-invoices.

Swedish: Den konfigurerade Peppol-operatören stöder inte mottagning av e-fakturor.

PEPPOL_RECIPIENT_NOT_REACHABLE

HTTP 422: Unprocessable

The recipient is not registered to receive e-invoices via Peppol. Check the organisation number or deliver the invoice another way.

Swedish: Mottagaren är inte registrerad för att ta emot e-fakturor via Peppol. Kontrollera organisationsnumret eller skicka fakturan på annat sätt.

PEPPOL_REGISTRATION_CAP_REACHED

HTTP 409: Conflict

All Peppol receiving slots are taken right now. Contact support and we will open more. Sending e-invoices works regardless.

Swedish: Alla platser för Peppol-mottagning är upptagna just nu. Hör av dig till support så öppnar vi fler. Att skicka e-fakturor fungerar ändå.

PEPPOL_REGISTRATION_COMPANY_NAME_REQUIRED

HTTP 422: Unprocessable

The company needs a company name in company settings before it can be registered for Peppol.

Swedish: Bolaget behöver ett företagsnamn i företagsinställningarna innan det kan registreras för Peppol.

PEPPOL_REGISTRATION_FAILED

HTTP 502

The Peppol access point could not complete the registration. Try again shortly.

Swedish: Peppol-operatören kunde inte genomföra registreringen. Försök igen om en stund.

PEPPOL_REGISTRATION_NOT_FOUND

HTTP 404: Not found

The company is not registered for Peppol receiving.

Swedish: Bolaget är inte registrerat för Peppol-mottagning.

PEPPOL_REGISTRATION_ORG_NUMBER_REQUIRED

HTTP 422: Unprocessable

The company needs a valid organisation number in company settings before it can receive e-invoices via Peppol.

Swedish: Bolaget behöver ett giltigt organisationsnummer i företagsinställningarna innan det kan ta emot e-fakturor via Peppol.

PEPPOL_REGISTRATION_PERSONAL_NUMBER

HTTP 422: Unprocessable

A sole trader identified by a personal identity number cannot be registered for Peppol yet: it would publish personal data in the Peppol directory. GLN support is coming.

Swedish: Enskild firma med personnummer kan ännu inte registreras för Peppol: det skulle publicera personuppgifter i Peppol-katalogen. Stöd för GLN-nummer kommer.

PEPPOL_REGISTRATION_REJECTED

HTTP 422: Unprocessable

The Peppol access point rejected the registration. Contact support if the problem persists.

Swedish: Registreringen avvisades av Peppol-operatören. Kontakta support om felet kvarstår.

PEPPOL_SANDBOX_NOT_ALLOWED

HTTP 403: Forbidden

Peppol registration is not available in the demo company. Create a real account to receive e-invoices.

Swedish: Peppol-registrering är inte tillgänglig i demobolaget. Skapa ett riktigt konto för att ta emot e-fakturor.

PEPPOL_SEND_INVALID_STATUS

HTTP 409: Conflict

Only draft and sent invoices can be sent via Peppol. Cancelled, credited and proforma invoices cannot be sent.

Swedish: Bara utkast och skickade fakturor kan skickas via Peppol. Makulerade, krediterade och proformafakturor kan inte skickas.

PEPPOL_SEND_LIMIT_REACHED

HTTP 409: Conflict

The company has used its Peppol sends. Contact support for more.

Swedish: Bolaget har använt sina Peppol-sändningar. Hör av dig till support för fler.

PEPPOL_SEND_PRECONDITION_FAILED

HTTP 409: Conflict

The invoice could not be sent via Peppol yet: check the Peppol settings and try again.

Swedish: Fakturan kunde inte skickas via Peppol ännu: kontrollera Peppol-inställningarna och försök igen.

PEPPOL_SUBMISSION_FAILED

HTTP 502

The Peppol access point could not be reached. The invoice has not been sent; try again shortly.

Swedish: Peppol-operatören kunde inte nås just nu. Fakturan har inte skickats; försök igen om en stund.

PEPPOL_SUBMISSION_REJECTED

HTTP 422: Unprocessable

The Peppol access point rejected the invoice during validation. The invoice has not been sent.

Swedish: Peppol-operatören avvisade fakturan vid valideringen. Fakturan har inte skickats.

PEPPOL_TRANSPORT_UNAVAILABLE

HTTP 503

Peppol sending is not enabled in this environment. A contracted Peppol access point must be configured.

Swedish: Peppol-utskick är inte aktiverat i den här miljön. En avtalad Peppol-operatör måste vara konfigurerad.

PERSONNUMMER_ENCRYPTION_NOT_CONFIGURED

HTTP 503

Payroll is not configured: the personal-number encryption key (PERSONNUMMER_ENCRYPTION_KEY) is missing from the deployment environment. Contact support.

Swedish: Lönemodulen är inte konfigurerad: krypteringsnyckeln för personnummer (PERSONNUMMER_ENCRYPTION_KEY) saknas i driftmiljön. Kontakta supporten.

Remediation: Set PERSONNUMMER_ENCRYPTION_KEY in the deployment environment and redeploy. Retrying the request without it will fail identically.

HTTP 422: Unprocessable

Company settings require every supplier invoice to be linked to a purchase order.

Swedish: Inställningarna kräver att varje leverantörsfaktura kopplas till en inköpsorder.

PO_NOT_FOUND

HTTP 404: Not found

Purchase order not found.

Swedish: Inköpsordern kunde inte hittas.

PO_THREE_WAY_MATCH_FAILED

HTTP 422: Unprocessable

Three-way match failed: the supplier invoice does not reconcile with the purchase order / goods receipt.

Swedish: Trevägs-matchning misslyckades: leverantörsfakturan stämmer inte med inköpsordern eller godsmottagningen.

QUOTE_CONVERSION_FAILED

HTTP 500: Server error

Failed to convert quote to invoice.

Swedish: Offerten kunde inte konverteras till faktura.

QUOTE_INVALID_STATE

HTTP 400: Bad request

Quote is not in a state that allows this action.

Swedish: Offerten är inte i en status som tillåter denna åtgärd.

QUOTE_NOT_FOUND

HTTP 404: Not found

Quote not found.

Swedish: Offerten kunde inte hittas.

QUOTE_NOT_QUOTE

HTTP 400: Bad request

This document is not a quote.

Swedish: Detta dokument är inte en offert.

QUOTE_NUMBER_ASSIGN_FAILED

HTTP 500: Server error

Failed to assign quote number.

Swedish: Kunde inte tilldela offertnummer.

QUOTE_TOKEN_INVALID

HTTP 404: Not found

The link is invalid or has expired.

Swedish: Länken är ogiltig eller har gått ut.

REG_IMPORT_EXECUTE_FAILED

HTTP 500: Server error

Register import failed.

Swedish: Importen misslyckades.

REG_IMPORT_FILE_TOO_LARGE

HTTP 400: Bad request

File exceeds the 10 MB size limit.

Swedish: Filen är för stor. Maxstorlek är 10 MB.

REG_IMPORT_INVALID_COLUMN_OVERRIDES

HTTP 400: Bad request

Invalid column overrides JSON.

Swedish: Ogiltig kolumnmappning.

REG_IMPORT_INVALID_FORMAT

HTTP 400: Bad request

Unsupported file format.

Swedish: Filformatet stöds inte. Tillåtna format: .xlsx, .xls, .csv, .ods.

REG_IMPORT_NO_FILE

HTTP 400: Bad request

No file attached.

Swedish: Ingen fil bifogad.

REG_IMPORT_NO_ROWS

HTTP 400: Bad request

No valid rows found in the file.

Swedish: Inga giltiga rader hittades i filen.

REG_IMPORT_PARSE_FAILED

HTTP 500: Server error

Failed to parse the register file.

Swedish: Kunde inte tolka filen.

ROT_RUT_BESLUT_WRONG_COMPANY

HTTP 400: Bad request

The decision file's utförare does not match the company's organisation number. Check that the file was downloaded for the right company.

Swedish: Beslutsfilens utförare matchar inte företagets organisationsnummer. Kontrollera att filen laddades ner för rätt företag.

ROT_RUT_FILE_CREATE_FAILED

HTTP 500: Server error

The payout file could not be created.

Swedish: Filen kunde inte skapas.

ROT_RUT_INVALID_STATUS_TRANSITION

HTTP 400: Bad request

The status transition is not allowed from the request current state.

Swedish: Statusändringen är inte tillåten för begäran i dess nuvarande läge.

ROT_RUT_INVOICES_BLOCKED

HTTP 400: Bad request

One or more selected invoices cannot be included in the file. Fix the blockers or deselect the invoices.

Swedish: En eller flera valda fakturor kan inte ingå i filen. Åtgärda blockeringarna eller välj bort fakturorna.

ROT_RUT_INVOICE_CONFLICT

HTTP 409: Conflict

At least one invoice is already part of an active payout request.

Swedish: Minst en faktura ingår redan i en aktiv begäran om utbetalning.

HTTP 409: Conflict

The request is already linked to another payout voucher.

Swedish: Begäran är redan kopplad till ett annat utbetalningsverifikat.

HTTP 400: Bad request

The account 1513 amount on the voucher does not match the request. Pick the voucher for this payout, or every request it paid.

Swedish: Beloppet på konto 1513 i verifikatet stämmer inte med begäran. Välj verifikatet för just den här utbetalningen, eller alla begäran det betalade.

HTTP 409: Conflict

The voucher is already linked to another request.

Swedish: Verifikatet är redan kopplat till en annan begäran.

HTTP 400: Bad request

The voucher cannot be linked: it must be posted and not reversed, a storno or an opening balance.

Swedish: Verifikatet kan inte kopplas: det måste vara bokfört och får inte vara makulerat, en rättelse eller en ingående balans.

HTTP 404: Not found

The voucher was not found in this company.

Swedish: Verifikatet hittades inte i det här företaget.

ROT_RUT_MATCH_CURRENCY

HTTP 400: Bad request

Skatteverket pays out in SEK; the transaction is in another currency.

Swedish: Transaktionen kan inte matchas: Skatteverket betalar ut i SEK och transaktionen har en annan valuta.

ROT_RUT_MATCH_NOT_INCOME

HTTP 400: Bad request

Only income transactions can be matched to a ROT/RUT payout from Skatteverket.

Swedish: Endast inbetalningar kan matchas mot en ROT/RUT-utbetalning från Skatteverket.

ROT_RUT_MATCH_TX_ALREADY_LINKED

HTTP 400: Bad request

The transaction is already booked or linked to a journal entry.

Swedish: Transaktionen är redan bokförd eller kopplad till en verifikation.

HTTP 409: Conflict

The payout was booked but the transaction could not be linked to the voucher. Link it via "Match against existing voucher".

Swedish: Utbetalningen bokfördes men transaktionen kunde inte kopplas till verifikationen. Koppla den via "Matcha mot befintlig verifikation".

ROT_RUT_NO_ELIGIBLE_INVOICES

HTTP 400: Bad request

None of the selected invoices can be included in the file. See the per-invoice blockers.

Swedish: Ingen av de valda fakturorna kan ingå i filen. Se blockeringarna per faktura.

ROT_RUT_RECLAIM_ALREADY_DONE

HTTP 409: Conflict

The refused amount has already been booked for this request.

Swedish: Det nekade beloppet är redan bokfört för den här begäran.

ROT_RUT_RECLAIM_CURRENCY

HTTP 400: Bad request

The refused amount can only be booked for invoices in SEK.

Swedish: Det nekade beloppet kan bara bokföras för fakturor i SEK.

ROT_RUT_RECLAIM_INVOICE_NOT_BOOKED

HTTP 400: Bad request

The invoice has no voucher, so there is no receivable on account 1513 to move. Book the invoice first.

Swedish: Fakturan har ingen verifikation, så det finns ingen fordran på konto 1513 att flytta. Bokför fakturan först.

ROT_RUT_RECLAIM_INVOICE_NOT_OPEN

HTTP 400: Bad request

The invoice is cancelled or credited and cannot be reopened for the refused amount.

Swedish: Fakturan är makulerad eller krediterad och kan inte öppnas igen för det nekade beloppet.

ROT_RUT_RECLAIM_INVOICE_REREQUESTED

HTTP 409: Conflict

At least one invoice in this request is part of a later request that is not rejected. The refused amount cannot be booked onto the customer while Skatteverket is reviewing the invoice again.

Swedish: Minst en faktura i begäran ingår i en senare begäran som inte är avslagen. Det nekade beloppet kan inte bokföras på kunden när Skatteverket prövar fakturan igen.

ROT_RUT_RECLAIM_NOTHING_REFUSED

HTTP 400: Bad request

Skatteverket approved the whole request: there is no refused amount to book.

Swedish: Skatteverket beviljade hela begäran: det finns inget nekat belopp att bokföra.

ROT_RUT_RECLAIM_NO_BESLUT

HTTP 400: Bad request

Skatteverket's decision is not recorded for this request. Import the decision file or record the decision first.

Swedish: Skatteverkets beslut är inte registrerat för begäran. Importera beslutsfilen eller registrera beslutet först.

ROT_RUT_RECLAIM_RACE

HTTP 409: Conflict

The refused amount was already booked by another action. The voucher that was created could not be attached: check the bookkeeping on accounts 1513 and 1510.

Swedish: Det nekade beloppet hann redan bokföras av en annan åtgärd. Verifikationen som skapades kan inte kopplas: kontrollera bokföringen på konto 1513 och 1510.

ROT_RUT_RECLAIM_SPLIT_UNKNOWN

HTTP 400: Bad request

The decision was recorded as one total for several invoices. Import Skatteverket's decision file so the refused amount can be split per invoice.

Swedish: Beslutet är registrerat som en totalsumma för flera fakturor. Importera Skatteverkets beslutsfil så att det nekade beloppet kan fördelas per faktura.

ROT_RUT_REQUEST_NOT_FOUND

HTTP 404: Not found

Payout request not found.

Swedish: Begäran om utbetalning hittades inte.

ROT_RUT_SETTLE_AMOUNT_EXCEEDS

HTTP 400: Bad request

The amount cannot be booked against the request: it exceeds the requested or decided amount. Book the transaction another way.

Swedish: Beloppet kan inte bokföras mot begäran: det är större än begärt eller beslutat belopp. Bokför transaktionen på annat sätt.

ROT_RUT_SETTLE_INVALID_STATE

HTTP 400: Bad request

The payout can only be booked for a submitted request that is not already settled.

Swedish: Utbetalningen kan bara bokföras för en inskickad begäran som inte redan är bokförd.

ROT_RUT_SETTLE_RACE

HTTP 409: Conflict

The request was already settled by another action. The voucher that was created could not be attached: check the bookkeeping on account 1513.

Swedish: Begäran hann redan bokföras som utbetald av en annan åtgärd. Verifikationen som skapades kan inte kopplas: kontrollera bokföringen på konto 1513.

ROT_RUT_SETTLE_SET_AMOUNT

HTTP 400: Bad request

The amount does not equal the sum of the selected requests. Skatteverket pays exactly the decided amounts, so several requests can only be booked together when the transaction equals their sum to the öre.

Swedish: Beloppet stämmer inte med summan av de valda begäran. Skatteverket betalar ut exakt beslutade belopp, så flera begäran kan bara bokföras tillsammans när transaktionen motsvarar summan till öret.

SALES_ORDER_CREATE_FAILED

HTTP 500: Server error

The sales order could not be saved.

Swedish: Kundordern kunde inte sparas.

SALES_ORDER_CUSTOMER_MISSING

HTTP 409: Conflict

The sales order has no customer. Set a customer before invoicing.

Swedish: Kundordern saknar kund. Ange en kund innan du fakturerar.

SALES_ORDER_CUSTOMER_VAT_CHANGED

HTTP 409: Conflict

The customer VAT facts (customer type or VAT number validation) changed after the sales order was priced. Open and save the order again so the VAT rates are re-checked before invoicing.

Swedish: Kundens momsuppgifter (kundtyp eller VAT-nummer) har ändrats sedan kundordern prissattes. Öppna och spara kundordern igen så att momssatserna kontrolleras innan du fakturerar.

SALES_ORDER_HAS_INVOICES

HTTP 409: Conflict

The sales order cannot be cancelled: invoices have been created from it. Cancel or credit those invoices first.

Swedish: Kundordern kan inte makuleras: det finns fakturor som skapats från den. Makulera eller kreditera fakturorna först.

SALES_ORDER_INVALID_STATE

HTTP 409: Conflict

The sales order is not in a state that allows this action.

Swedish: Kundordern har inte en status som tillåter den här åtgärden.

SALES_ORDER_INVOICE_FX_RATE_UNAVAILABLE

HTTP 502

Could not fetch the Riksbanken exchange rate for the delivery/invoice date. No invoice was created: a guessed rate must not be booked. Try again shortly.

Swedish: Kunde inte hämta växelkursen från Riksbanken för leverans-/fakturadatumet. Fakturan har inte skapats: en gissad kurs får inte bokföras. Försök igen om en stund.

SALES_ORDER_LINE_LOCKED

HTTP 409: Conflict

An order line with invoiced or delivered quantity cannot be removed.

Swedish: En orderrad med fakturerat eller levererat antal kan inte tas bort.

SALES_ORDER_LINE_NOT_FOUND

HTTP 400: Bad request

A referenced line does not exist on the sales order.

Swedish: En angiven orderrad finns inte på kundordern.

SALES_ORDER_NOTHING_TO_INVOICE

HTTP 409: Conflict

There is nothing left to invoice on the sales order.

Swedish: Det finns inget kvar att fakturera på kundordern.

SALES_ORDER_NOT_EDITABLE

HTTP 409: Conflict

A sales order can only be edited while it is a draft or confirmed.

Swedish: Kundordern kan bara ändras medan den är utkast eller bekräftad.

SALES_ORDER_NOT_FOUND

HTTP 404: Not found

The sales order was not found.

Swedish: Kundordern hittades inte.

SALES_ORDER_OVER_DELIVERED

HTTP 400: Bad request

Delivered quantity cannot exceed the ordered quantity.

Swedish: Levererat antal kan inte överstiga beställt antal.

SALES_ORDER_OVER_INVOICED

HTTP 409: Conflict

The requested quantity exceeds what remains to be invoiced on the order line.

Swedish: Angivet antal överstiger vad som återstår att fakturera på orderraden.

SALES_ORDER_QUANTITY_BELOW_INVOICED

HTTP 409: Conflict

An order line quantity cannot be lowered below what has already been invoiced.

Swedish: Antalet på en orderrad kan inte sänkas under det som redan fakturerats.

SALES_ORDER_SOURCE_ALREADY_CONVERTED

HTTP 409: Conflict

The source document already has a sales order.

Swedish: Underlaget har redan en kundorder.

SALES_ORDER_SOURCE_NOT_PROFORMA

HTTP 400: Bad request

Only a proforma invoice or a quote can be converted into a sales order.

Swedish: Bara en proformafaktura eller offert kan omvandlas till kundorder.

SALES_ORDER_SOURCE_UNSUPPORTED_LINES

HTTP 400: Bad request

The source document has lines that cannot be carried into a sales order (ROT/RUT deduction, accrual period or negative quantity). Create the sales order manually.

Swedish: Underlaget innehåller rader som inte kan föras över till en kundorder (ROT/RUT-avdrag, periodisering eller negativt antal). Skapa kundordern manuellt.

SCB_LOOKUP_FAILED

HTTP 502

The SCB business register did not answer. Try again shortly.

Swedish: SCB:s företagsregister svarade inte. Försök igen om en stund.

HTTP 400: Bad request

Details are fetched for legal persons only, not for sole traders.

Swedish: Uppgifter hämtas bara för juridiska personer, inte för enskilda firmor.

SCB_NOT_CONFIGURED

HTTP 503

Lookups against the SCB business register are not enabled in this environment.

Swedish: Uppslag mot SCB:s företagsregister är inte aktiverat i den här miljön.

SCHABLONINTAKT_RATE_NOT_CONFIGURED

HTTP 500: Server error

The statslåneränta (SLR) for this closing year is not configured, so the schablonintäkt on periodiseringsfonder cannot be calculated yet. Contact support to have it added.

Swedish: Statslåneräntan för det här räkenskapsåret saknas i systemet, så schablonintäkten på periodiseringsfonderna kan inte beräknas ännu. Kontakta supporten så lägger vi in den.

Remediation: Wait for the SLR table update, or pass schablonintaktRate explicitly on periodiseringsfond_avsattning / periodiseringsfond_ateforing items when posting dispositions.

SETTINGS_EF_CALENDAR_YEAR

HTTP 400: Bad request

An enskild firma must use the calendar year: fiscal_year_start_month must be 1 (BFL 3 kap.).

Swedish: Enskild firma måste använda kalenderår (BFL 3 kap.)

SETTINGS_MOMS_PERIOD_REQUIRED

HTTP 400: Bad request

A VAT-registered company needs moms_period (SFL 26 kap.).

Swedish: Momsperiod krävs när företaget är momsregistrerat (SFL 26 kap.)

SETTINGS_PS_REQUIRES_VAT_AND_EU_TRADE

HTTP 400: Bad request

periodisk_sammanstallning_enabled requires vat_registered and vat_has_eu_trade.

Swedish: Periodisk sammanställning kräver momsregistrering och EU-handel.

SETTINGS_REMINDER_DAYS_ORDER

HTTP 400: Bad request

reminder_days_level_1 < reminder_days_level_2 < reminder_days_level_3 must hold (stored values fill in the ones not sent).

Swedish: Påminnelsedagarna måste ligga i stigande ordning.

SETTINGS_SHARE_CAPITAL_PAIR

HTTP 400: Bad request

aktiekapital and antal_aktier are set (or cleared) together.

Swedish: Aktiekapital och antal aktier måste anges tillsammans. Fyll i båda fälten eller lämna båda tomma.

SETTINGS_VACATION_BASIS_OPEN_BALANCES

HTTP 400: Bad request

salary_vacation_year_basis cannot change while open vacation balances exist: close the vacation year first.

Swedish: Semesterårets basis kan inte ändras medan öppna semestersaldon finns. Stäng semesteråret först.

Remediation: Close the vacation year first. Related tool: gnubok_close_vacation_year

SETTINGS_VAT_40M_REQUIRES_MONTHLY

HTTP 400: Bad request

With vat_taxable_base_over_40m the moms_period must be monthly.

Swedish: Företag med beskattningsunderlag över 40 miljoner kronor måste redovisa moms varje månad.

SETTINGS_VAT_NUMBER_REQUIRED

HTTP 400: Bad request

A VAT-registered company needs vat_number (SE + 12 digits; ML 17 kap. 24 §).

Swedish: Momsregistreringsnummer krävs när företaget är momsregistrerat (ML 17 kap. 24 §)

SIE_DUPLICATE_FILE

HTTP 409: Conflict

File has already been imported.

Swedish: Den här filen har redan importerats.

SIE_DUPLICATE_PERIOD

HTTP 409: Conflict

An SIE import for an overlapping fiscal period already exists.

Swedish: En SIE-import för ett överlappande räkenskapsår finns redan.

SIE_PARSE_EMPTY

HTTP 400: Bad request

File is empty.

Swedish: Filen är tom (0 bytes). Kontrollera exporten från bokföringsprogrammet.

SIE_PARSE_FAILED

HTTP 500: Server error

Failed to parse the SIE file.

Swedish: Kunde inte tolka SIE-filen. Filen kan vara skadad eller i ett format som inte stöds.

SIE_PARSE_FILE_TOO_LARGE

HTTP 400: Bad request

File exceeds the 50 MB size limit.

Swedish: Filen är för stor. Maxstorlek är 50 MB.

SIE_PARSE_INVALID_TYPE

HTTP 400: Bad request

Unsupported file type; upload a .se, .sie or .si file.

Swedish: Filtypen stöds inte. Ladda upp en fil med ändelsen .se, .sie eller .si.

SIE_PARSE_NO_FILE

HTTP 400: Bad request

No file attached to the request.

Swedish: Ingen fil bifogad i förfrågan.

SIE_PARSE_VALIDATION_FAILED

HTTP 400: Bad request

SIE file failed validation.

Swedish: SIE-filen innehåller valideringsfel som måste åtgärdas innan import.

SIE_REPLACE_FAILED

HTTP 400: Bad request

Failed to replace SIE import.

Swedish: SIE-importen kunde inte ersättas.

SIE_REPLACE_FORBIDDEN

HTTP 403: Forbidden

Only company owners and admins can replace an SIE import.

Swedish: Endast ägare eller administratörer kan ersätta en SIE-import.

SIE_UNDO_FAILED

HTTP 400: Bad request

Failed to undo SIE import.

Swedish: SIE-importen kunde inte ångras.

SIGNATURE_INVALID_TRANSITION

HTTP 409: Conflict

The signature cannot transition: it is already signed or declined, bound to another version, or not found for this fiscal period.

Swedish: Underskriften kan inte ändras: den är redan signerad eller avböjd, hör till en annan version eller finns inte för räkenskapsåret.

SIGNOFF_NOT_FOUND

HTTP 404: Not found

The sign-off was not found.

Swedish: Signeringen hittades inte.

SIGNOFF_RACE

HTTP 409: Conflict

Someone else just changed this sign-off. Reload and try again.

Swedish: Kontot signerades precis av någon annan. Ladda om.

SI_APPROVE_NOT_REGISTERED

HTTP 400: Bad request

The invoice is already approved, or cannot be approved in its current status.

Swedish: Fakturan är redan godkänd eller kan inte godkännas i nuvarande status.

SI_APPROVE_UPDATE_FAILED

HTTP 500: Server error

Failed to update supplier invoice status to approved.

Swedish: Kunde inte godkänna leverantörsfakturan.

SI_BANK_ENTERED_NOT_PAYABLE

HTTP 400: Bad request

The invoice can only be marked as entered at the bank while it is approved and has an outstanding amount.

Swedish: Fakturan kan bara markeras som inlagd i banken när den är godkänd och har något kvar att betala.

SI_BATCH_ALREADY_CANCELLED

HTTP 409: Conflict

The payment batch is already cancelled.

Swedish: Betalfilen är redan makulerad.

SI_BATCH_AMOUNT_EXCEEDS_REMAINING

HTTP 400: Bad request

The payment amount exceeds the invoice's remaining amount.

Swedish: Betalbeloppet är större än kvar att betala på fakturan.

SI_BATCH_CANCELLED

HTTP 409: Conflict

The payment batch is cancelled and cannot be downloaded.

Swedish: Betalfilen är makulerad och kan inte laddas ner.

SI_BATCH_CREATE_FAILED

HTTP 500: Server error

Failed to create the payment batch.

Swedish: Kunde inte skapa betalfilen.

SI_BATCH_DEBTOR_INCOMPLETE

HTTP 400: Bad request

The company bank details are incomplete. Enter the IBAN (and BIC if it cannot be derived) under Settings → Invoicing.

Swedish: Företagets bankuppgifter är ofullständiga. Fyll i IBAN (och BIC om det inte kan härledas) under Inställningar → Fakturering.

SI_BATCH_DUPLICATE_INVOICE

HTTP 409: Conflict

One or more invoices are already part of an active payment batch. Confirm to create another payment anyway.

Swedish: En eller flera fakturor ingår redan i en aktiv betalfil. Bekräfta att du vill skapa en ny betalning ändå.

Remediation: Resend with confirm_already_batched: true to include the invoices anyway, or cancel the existing batch first via POST /api/supplier-invoices/payment-batches/{id}/cancel.

SI_BATCH_INELIGIBLE_INVOICE

HTTP 400: Bad request

One or more invoices cannot be included in the payment batch. See details for the per-invoice reason.

Swedish: En eller flera fakturor kan inte ingå i betalfilen. Se detaljerna för orsak per faktura.

SI_BATCH_INVALID_AMOUNT

HTTP 400: Bad request

The payment amount must be greater than zero.

Swedish: Betalbeloppet måste vara större än noll.

SI_BATCH_NOT_FOUND

HTTP 404: Not found

Payment batch not found.

Swedish: Betalfilen kunde inte hittas.

SI_BATCH_PAYEE_CHANGED

HTTP 409: Conflict

The supplier's payment details or amount changed after the payment batch was staged. Stage the batch again and check the payee.

Swedish: Leverantörens betalningsuppgifter eller belopp har ändrats sedan betalfilen förbereddes. Förbered betalfilen igen och kontrollera mottagaren.

Remediation: Check the supplier's bankgiro, plusgiro or bank account, then stage the batch again (gnubok_preview_supplier_payment_batch, then gnubok_create_supplier_payment_batch). details.invoices names each supplier and what changed.

SI_BOOK_ALREADY_BOOKED

HTTP 400: Bad request

The supplier invoice is already booked.

Swedish: Leverantörsfakturan är redan bokförd.

SI_BOOK_CASH_METHOD

HTTP 400: Bad request

Under the cash method the invoice is booked when it is paid.

Swedish: Vid kontantmetoden bokförs fakturan när den betalas.

SI_BOOK_CONFLICT

HTTP 409: Conflict

The supplier invoice was booked concurrently by another request. Reload the page.

Swedish: Leverantörsfakturan bokfördes samtidigt av en annan begäran. Ladda om sidan.

SI_BOOK_FAILED

HTTP 500: Server error

Failed to book the supplier invoice.

Swedish: Leverantörsfakturan kunde inte bokföras.

SI_BOOK_INVALID_STATUS

HTTP 400: Bad request

Only registered, approved or overdue invoices can be booked afterwards.

Swedish: Endast registrerade, godkända eller förfallna fakturor kan bokföras i efterhand.

SI_BOOK_NOT_BOOKABLE

HTTP 400: Bad request

Credit notes are not booked through this step.

Swedish: Kreditfakturor bokförs inte via detta steg.

SI_BOOK_NO_FISCAL_PERIOD

HTTP 400: Bad request

No open fiscal period covers the invoice date. Create the fiscal year first.

Swedish: Inget öppet räkenskapsår täcker fakturadatumet. Skapa räkenskapsåret först.

SI_CASH_PARTIAL_UNSUPPORTED

HTTP 400: Bad request

The cash method cannot auto-book partial payments of an unbooked supplier invoice: the generated entry always books the full invoice. Pay the full amount in one payment or book the payment manually as a journal entry.

Swedish: Kontantmetoden kan inte bokföra delbetalningar av en obokförd leverantörsfaktura automatiskt: hela fakturan bokförs vid betalning. Betala hela beloppet i en betalning eller bokför betalningen manuellt som verifikation.

SI_CREATE_ACCRUAL_REVERSE_CHARGE

HTTP 400: Bad request

Periodisering cannot be combined with reverse charge. The expense line carries the VAT base for the VAT declaration (boxes 20-32), so the net amount cannot be deferred to an interim account.

Swedish: Periodisering kan inte kombineras med omvänd skattskyldighet. Kostnadsraden utgör momsunderlaget i momsdeklarationen (ruta 20-32), så nettobeloppet kan inte skjutas upp till ett interimskonto.

SI_CREATE_DUPLICATE_INVOICE_NUMBER

HTTP 409: Conflict

A supplier invoice with that number already exists.

Swedish: En leverantörsfaktura med samma nummer finns redan.

SI_CREATE_FAILED

HTTP 500: Server error

Failed to create supplier invoice.

Swedish: Leverantörsfakturan kunde inte skapas.

SI_CREATE_INVALID_INPUT

HTTP 400: Bad request

Invalid combination of supplier invoice fields.

Swedish: Ogiltig kombination av fakturafält. Kontrollera formuläret och försök igen.

SI_CREATE_NO_FISCAL_PERIOD

HTTP 400: Bad request

No fiscal year covers the invoice date. Create the fiscal year first, or change the invoice date.

Swedish: Det finns inget räkenskapsår som täcker fakturadatumet. Lägg upp räkenskapsåret först, eller ändra fakturadatumet.

SI_CREATE_SLP_ACCRUAL

HTTP 400: Bad request

Särskild löneskatt cannot be combined with periodisering on the same line. The payroll tax (7533/2514) is computed on the full line amount at registration and cannot be deferred.

Swedish: Särskild löneskatt kan inte kombineras med periodisering på samma rad. Löneskatten (7533/2514) beräknas på hela radbeloppet vid registrering och kan inte skjutas upp.

SI_CREATE_SLP_INVALID_ACCOUNT

HTTP 400: Bad request

Särskild löneskatt (payroll tax on pension costs) can only be added on lines booked to a pension account 7410-7419 (e.g. 7412 occupational pension premiums). Change the line account or remove the flag.

Swedish: Särskild löneskatt kan bara läggas till på rader med pensionskonto 7410-7419 (t.ex. 7412 Premier för tjänstepensioner). Byt konto på raden eller ta bort löneskatten.

SI_CREDIT_ALREADY_CREDITED

HTTP 409: Conflict

Supplier invoice has already been credited.

Swedish: Leverantörsfakturan har redan krediterats.

SI_CREDIT_FAILED

HTTP 500: Server error

Failed to credit supplier invoice.

Swedish: Kunde inte kreditera leverantörsfakturan.

SI_CREDIT_PERIOD_LOCKED

HTTP 400: Bad request

Bookkeeping is locked; credit note cannot be created.

Swedish: Bokföringen är låst. Krediteringen kan inte skapas.

SI_DELETE_CREDIT_NOTE

HTTP 400: Bad request

A credit note cannot be deleted directly. Undo the credit on the original invoice (uncredit), which cancels its verifikat with a storno and restores the original.

Swedish: Kreditfakturor kan inte tas bort direkt. Gå till originalfakturan och välj "Ångra kreditering" för att frigöra numret och återställa bokföringen.

SI_DELETE_HAS_BOOKING

HTTP 400: Bad request

The supplier invoice has a posted journal entry, recorded payments, or an accrual schedule and cannot be deleted. Create a credit note instead to reverse the bookkeeping.

Swedish: Leverantörsfakturan är bokförd, har registrerade betalningar eller en periodisering och kan inte tas bort. Skapa en kreditfaktura i stället för att återställa bokföringen.

SI_DELETE_INVALID_STATUS

HTTP 400: Bad request

Only unpaid supplier invoices without bookkeeping can be deleted (status registered, approved or overdue).

Swedish: Endast obetalda fakturor utan bokföring kan tas bort.

SI_DELETE_IN_PAYMENT_BATCH

HTTP 409: Conflict

The supplier invoice is part of a payment batch and cannot be deleted: the batch rows document the payment instruction, even if the batch was cancelled.

Swedish: Leverantörsfakturan ingår i en betalfil och kan inte tas bort: betalfilens rader är underlag för betalningsinstruktionen, även om filen makulerats.

SI_EDIT_CONFLICT

HTTP 409: Conflict

The supplier invoice changed elsewhere (or in the daily overdue check) while you were editing. Reload the invoice and try again.

Swedish: Leverantörsfakturan ändrades av någon annan (eller av den dagliga förfallokontrollen) medan du redigerade. Ladda om fakturan och försök igen.

SI_EDIT_INVALID_STATUS

HTTP 400: Bad request

Only unsettled supplier invoices can be edited. Paid, credited and reversed invoices are corrected with a credit note or a storno.

Swedish: Bara obetalda leverantörsfakturor kan redigeras. Betalda, krediterade och återförda fakturor rättas genom kreditfaktura eller storno.

SI_EDIT_VERIFIKAT_LOCKED

HTTP 400: Bad request

Invoice date and invoice number are part of the posted verifikat and cannot be changed here. Correct the entry instead (inline rättelse in an open period, otherwise storno + re-book), or credit the invoice. due_date, payment_reference and notes remain editable.

Swedish: Fakturadatum och fakturanummer står på det bokförda verifikatet och kan inte ändras här. Rätta verifikatet (rättelse i öppen period, annars storno + ny bokföring) eller kreditera fakturan. Förfallodatum, betalningsreferens och anteckningar går fortfarande att ändra.

Remediation: Correct the registration verifikat through a sanctioned rättelse path, or credit the supplier invoice and register a corrected one. Related tool: gnubok_correct_entry

SI_FX_RATE_MISSING

HTTP 400: Bad request

The supplier invoice is in a foreign currency but has no exchange rate on file. Set the invoice exchange rate before booking; without it the amounts cannot be translated to SEK and the reverse-charge VAT would be understated.

Swedish: Leverantörsfakturan är i utländsk valuta men saknar växelkurs. Ange fakturans växelkurs innan den bokförs: utan kurs kan beloppen inte räknas om till kronor och momsen blir fel.

Remediation: Set exchange_rate on the supplier invoice (the rate at the invoice date) and retry the booking.

SI_ITEM_ACCOUNT_NO_MATCHING_LINE

HTTP 409: Conflict

The registration verifikat has no line on the old account that matches this invoice line (it was corrected by hand). Correct the verifikat directly.

Swedish: Registreringsverifikatet har ingen rad på det gamla kontot som matchar raden. Rätta verifikatet för hand.

SI_ITEM_ACCOUNT_SETTLED

HTTP 409: Conflict

The supplier invoice is settled; its lines can no longer be moved to another account.

Swedish: Fakturan är avslutad och dess rader kan inte flyttas.

SI_ITEM_ACCOUNT_UPDATE_FAILED

HTTP 500: Server error

The supplier invoice line could not be moved to the new account. Try again.

Swedish: Fakturaraden kunde inte flyttas till det nya kontot. Försök igen.

SI_ITEM_NOT_FOUND

HTTP 404: Not found

Supplier invoice line not found on this invoice.

Swedish: Fakturaraden kunde inte hittas.

SI_NOT_DRAFT

HTTP 400: Bad request

Supplier invoice is not in registered status and cannot be updated or deleted.

Swedish: Leverantörsfakturan är inte längre i status "registrerad" och kan därför inte uppdateras eller tas bort.

SI_NOT_FOUND

HTTP 404: Not found

Supplier invoice not found.

Swedish: Leverantörsfakturan kunde inte hittas.

SI_PAID_ALREADY

HTTP 409: Conflict

Supplier invoice is already paid or credited.

Swedish: Leverantörsfakturan är redan betald eller krediterad.

SI_PAID_FAILED

HTTP 500: Server error

Failed to record supplier invoice payment.

Swedish: Kunde inte registrera betalningen.

SI_PAID_LIKELY_DUPLICATE

HTTP 409: Conflict

A likely-matching bank transaction was found for this supplier. Suggest linking it instead of creating a new payment entry.

Swedish: Det finns redan en banktransaktion som kan vara denna betalning. Länka den istället, eller markera som betald ändå om du är säker.

Remediation: Inspect details.candidates[].match_reason. For an unlinked row, match it via POST /api/transactions/{id}/match-supplier-invoice. For already_booked, the row is already a posted verifikat (booked straight from the bank side): do NOT pay the invoice, correct the double booking instead (reverse one of the two vouchers with a storno entry and attach the underlag to the remaining one). Resend mark-paid with force: true only when the payment really is separate; on the v1 endpoint that retry needs a fresh Idempotency-Key.

SI_PAID_NOT_PAYABLE

HTTP 400: Bad request

Supplier invoice is not in a payable state.

Swedish: Leverantörsfakturan kan inte markeras som betald i nuvarande status.

SI_PAID_PERIOD_LOCKED

HTTP 400: Bad request

Bookkeeping is locked; payment cannot be recorded.

Swedish: Bokföringen är låst. Betalningen kan inte registreras.

SI_UNCREDIT_FAILED

HTTP 400: Bad request

The credit could not be undone. A locked or closed period refuses the storno of the credit note; details.reason names the cause.

Swedish: Krediteringen kunde inte ångras.

SKATTEKONTO_FILE_DUPLICATE

HTTP 409: Conflict

This tax account statement has already been imported.

Swedish: Det här kontoutdraget har redan importerats.

SKATTEKONTO_FILE_EXECUTE_FAILED

HTTP 500: Server error

Tax account statement import failed.

Swedish: Importen av skattekontoutdraget misslyckades.

SKATTEKONTO_FILE_IMPORT_RECORD_FAILED

HTTP 500: Server error

Failed to create the import record.

Swedish: Kunde inte skapa importpost.

SKATTEKONTO_FILE_NOT_RECOGNIZED

HTTP 400: Bad request

The file was not recognized as a tax account statement. Download the account events from Skatteverket and try again.

Swedish: Filen känns inte igen som ett skattekontoutdrag. Ladda ner kontohändelserna från Skatteverkets e-tjänst Skattekonto och försök igen.

SKATTEKONTO_FILE_NO_FILE

HTTP 400: Bad request

No file attached to the request.

Swedish: Ingen fil bifogad i förfrågan.

SKATTEKONTO_FILE_NO_ROWS

HTTP 400: Bad request

No account events to import.

Swedish: Kontoutdraget innehåller inga händelser att importera.

SKATTEKONTO_FILE_ORG_NUMBER_MISMATCH

HTTP 409: Conflict

The statement names a different organisation number than the company. Check the file, then send confirm_org_number_mismatch=true to import it anyway.

Swedish: Kontoutdraget gäller ett annat organisationsnummer än företagets. Kontrollera att det är rätt fil och bekräfta för att importera ändå.

SKATTEKONTO_FILE_PARSE_FAILED

HTTP 500: Server error

Failed to parse the tax account statement.

Swedish: Kunde inte tolka skattekontoutdraget.

SKATTEKONTO_FILE_SUM_MISMATCH

HTTP 409: Conflict

The statement does not sum: opening saldo plus the events differs from the closing saldo. Send confirm_sum_mismatch=true to import it anyway.

Swedish: Kontoutdraget summerar inte: ingående saldo plus händelserna blir inte utgående saldo. Filen kan vara filtrerad eller ofullständig. Bekräfta för att importera ändå.

SKATTEKONTO_FILE_TOO_LARGE

HTTP 400: Bad request

File exceeds the 10 MB size limit.

Swedish: Filen är för stor. Maxstorlek är 10 MB.

SKATTEVERKET_ACCESS_DENIED

HTTP 403: Forbidden

Skatteverket denied access for this company (missing authorisation or scope).

Swedish: Behörighet saknas hos Skatteverket för det här företaget. Kontrollera att du är firmatecknare eller deklarationsombud.

Remediation: Verify the signed-in user is firmatecknare/deklarationsombud for this company at Skatteverket, then reconnect with BankID.

SKATTEVERKET_API_ERROR

HTTP 502

The Skatteverket API returned an error. See details for the upstream message.

Swedish: Skatteverkets tjänst svarade med ett fel. Se detaljerna och försök igen.

SKATTEVERKET_CAPABILITY_BLOCKED

HTTP 403: Forbidden

Talking to Skatteverket directly requires a paid subscription for this company.

Swedish: Den här funktionen kräver en betald prenumeration. Uppgradera för att fortsätta använda externa tjänster.

SKATTEVERKET_NOT_CONNECTED

HTTP 401: Unauthorized

The Skatteverket connection is missing or has expired. If the company was connected before this is expected: Skatteverket personal sessions last only about 1 hour. Tell the user to connect (or reconnect) with BankID under Inställningar → Skatteverket in Accounted. Only a person can do this; do not retry until they confirm they have reconnected.

Swedish: Anslutningen till Skatteverket saknas eller har gått ut. Om företaget varit anslutet tidigare är detta normalt: Skatteverkets personliga inloggning gäller bara ca 1 timme. Be användaren ansluta (igen) med BankID under Inställningar → Skatteverket.

Remediation: A person must connect (or reconnect) to Skatteverket with BankID under Inställningar → Skatteverket. Personal Skatteverket sessions expire after about 1 hour by SKV design, so an expired session is normal, not a fault. Do not retry until the user confirms they have reconnected.

SKATTEVERKET_RATE_LIMITED

HTTP 429: Rate limited

Skatteverket rate limit exceeded.

Swedish: För många förfrågningar mot Skatteverket. Vänta en stund och försök igen.

STORAGE_PROXY_BODY_TOO_LARGE

HTTP 413

The file is too large to upload through this link.

Swedish: Filen är för stor för att laddas upp via länken.

STORAGE_PROXY_TOKEN_REQUIRED

HTTP 400: Bad request

The link is missing its signed token.

Swedish: Länken saknar sin signerade token.

STORAGE_PROXY_UNCONFIGURED

HTTP 503

Storage is not configured on this server.

Swedish: Lagringen är inte konfigurerad på den här servern.

STORAGE_PROXY_UNSUPPORTED_PATH

HTTP 404: Not found

The storage proxy does not serve this path.

Swedish: Sökvägen stöds inte av lagringsproxyn.

STORAGE_PROXY_UPSTREAM_UNAVAILABLE

HTTP 502

Storage did not respond.

Swedish: Lagringen svarade inte.

TARGET_PERIOD_CLOSED

HTTP 409: Conflict

The fiscal year covering the date is closed and cannot be reopened.

Swedish: Räkenskapsåret som täcker datumet är stängt (bokslut) och kan inte öppnas. Bokför i en öppen period i stället.

TARGET_PERIOD_LOCKED

HTTP 409: Conflict

The fiscal period covering the date is locked.

Swedish: Räkenskapsperioden som täcker datumet är låst.

Remediation: Unlock the period (if status is "locked", not "closed") or use a date inside an open period. Related tool: gnubok_unlock_period

TEST_KEY_WRITE_BLOCKED

HTTP 403: Forbidden

This endpoint cannot be simulated, so it is not available with a test key. Test keys force dry-run on every write; use a live key for endpoints that do not support dry-run.

Swedish: Den här åtgärden kan inte simuleras och är därför inte tillgänglig med en testnyckel. Använd en live-nyckel.

Remediation: Use a live key for this endpoint, or pick an endpoint that supports dry-run.

TRANSIENT_ERROR

HTTP 503

Transient failure: retry the same request after a short backoff.

Swedish: Tillfälligt fel: försök igen om en stund.

TX_BATCH_CATEGORIZE_EMPTY

HTTP 400: Bad request

Batch is empty: pass at least one item.

Swedish: Batchen är tom.

TX_CATEGORIZE_IGNORED_CONFLICT

HTTP 409: Conflict

The transaction is still marked as ignored and cannot be linked to a journal entry.

Swedish: Transaktionen är fortfarande markerad som ignorerad och kan därför inte kopplas till en verifikation.

Remediation: Reload and retry categorization. Report the conflict if it persists.

TX_CATEGORIZE_INVALID_ACCOUNT

HTTP 400: Bad request

The supplied account does not exist in the chart of accounts.

Swedish: Det valda kontot finns inte i kontoplanen.

Remediation: Activate the account in the chart of accounts or pick a different one. Related resource: Accounted://chart-of-accounts

TX_CATEGORIZE_INVALID_MAPPING

HTTP 400: Bad request

Mapping result is missing a debit or credit account.

Swedish: Konteringen saknar debet- eller kreditkonto.

TX_CATEGORIZE_INVALID_TEMPLATE

HTTP 400: Bad request

The supplied booking template is invalid or does not match the entity type.

Swedish: Bokföringsmallen är ogiltig eller passar inte din bolagsform.

TX_CATEGORIZE_INVALID_VAT_AMOUNT

HTTP 400: Bad request

The document's VAT amount cannot be used for this booking. Check the amount and the VAT treatment.

Swedish: Underlagets moms kunde inte användas för den här bokföringen. Kontrollera beloppet och momssatsen.

TX_CATEGORIZE_JOURNAL_ENTRY_FAILED

HTTP 409: Conflict

The journal entry could not be created, so the transaction was not booked and stays in the unbooked list.

Swedish: Verifikationen kunde inte skapas, så transaktionen är inte bokförd. Den ligger kvar under Att bokföra.

Remediation: Fix the cause in details.cause (PERIOD_LOCKED / BOOKKEEPING_DATABASE_ERROR with a locked-period message: unlock the period or use gnubok_unlock_period; NO_OPEN_PERIOD_FOR_DATE: create or open the fiscal year) and retry the same request. Nothing was written.

TX_CATEGORIZE_ORPHANED_COUNTER_ACCOUNT

HTTP 400: Bad request

The counter-account is a bank ledger of the transaction's own account or of a disconnected bank connection and cannot be used. Pick a revenue or expense account instead.

Swedish: Motkontot är ett bankkonto som hör till transaktionens eget konto eller till en frånkopplad bankanslutning och kan inte användas. Välj ett intäkts- eller kostnadskonto i stället.

Remediation: Choose a revenue or expense account as the counter-account; a twin or orphaned bank ledger must not receive new postings. Related resource: Accounted://chart-of-accounts

TX_CATEGORIZE_PRIVATE_PERIOD_LOCKED

HTTP 400: Bad request

The period is locked. A private marking is booked as an owner withdrawal or deposit inside the period. If the row is not a business event (a duplicate, never executed), ignore it instead; otherwise unlock the period.

Swedish: Perioden är låst. En privat markering bokförs som eget uttag eller insättning i perioden. Är raden ingen affärshändelse (dubblett, aldrig genomförd)? Ignorera den i stället. Annars: lås upp perioden.

Remediation: If the row is not a business event, ignore it: POST /api/v1/companies/{companyId}/transactions/{id}/ignore, the Ignorera action on the Transaktioner page, or gnubok_ignore_transaction. Ignoring writes no verifikat, so it is allowed in a locked or closed period. Otherwise unlock the period via gnubok_unlock_period (status "locked", not "closed") and categorize again. Related tool: gnubok_ignore_transaction

TX_CATEGORIZE_RACE

HTTP 409: Conflict

Transaction was already categorized by another request.

Swedish: Transaktionen kategoriserades av en annan förfrågan. Ladda om och försök igen.

TX_CATEGORIZE_SUGGEST_CI_MATCH

HTTP 409: Conflict

An unpaid customer invoice from the same customer matches this amount. Suggest matching to the invoice instead of a plain 151x categorization to avoid producing a duplicate verifikation (BFL 5 kap 5 §).

Swedish: Det finns en obetald kundfaktura från samma kund med samma belopp. Matcha mot fakturan istället för att bokföra direkt mot kundfordringskontot: annars skapas en dubblerad verifikation som måste stornas (BFL 5 kap 5 §).

Remediation: Match the transaction via POST /api/transactions/{id}/match-invoice, or resend with confirm_no_match: true to keep the plain 151x categorization.

TX_CATEGORIZE_SUGGEST_SI_MATCH

HTTP 409: Conflict

An open supplier invoice from the same supplier matches this amount. Suggest matching to the invoice instead of a plain 244x categorization to avoid producing a duplicate verifikation (BFL 5 kap 5 §).

Swedish: Det finns en öppen leverantörsfaktura från samma leverantör med samma belopp. Matcha mot fakturan istället för att bokföra direkt på leverantörsskuldskontot: annars skapas en dubblerad verifikation som måste stornas (BFL 5 kap 5 §).

Remediation: Match the transaction via POST /api/transactions/{id}/match-supplier-invoice, or resend with confirm_no_match: true to keep the plain 244x categorization.

TX_CATEGORIZE_TX_NOT_FOUND

HTTP 404: Not found

Transaction not found.

Swedish: Transaktionen kunde inte hittas.

TX_EXCHANGE_RATE_BOOKED

HTTP 409: Conflict

The transaction is already booked, so its exchange rate cannot be changed here. Posted vouchers are corrected with storno.

Swedish: Transaktionen är redan bokförd, så dess växelkurs kan inte ändras här. Bokförda verifikat rättas med storno.

TX_EXCHANGE_RATE_UNAVAILABLE

HTTP 502

Could not fetch the exchange rate from Riksbanken. The verifikation must be posted in SEK.

Swedish: Kunde inte hämta växelkursen från Riksbanken. Försök igen om en stund: verifikationen måste bokföras i SEK.

TX_IGNORE_ALREADY_BOOKED

HTTP 409: Conflict

The transaction is already booked (directly, via a payment allocation, or via a voucher link). Unlink it or reverse the verifikat (storno) before ignoring it.

Swedish: Transaktionen är redan bokförd: använd Avmatcha eller backa verifikationen för att ändra status.

Remediation: A booked bank row cannot be ignored: the booking IS its status. Reverse it with gnubok_uncategorize_transaction (storno) or unlink the payment/voucher first, then ignore. Related tool: gnubok_uncategorize_transaction

TX_INGEST_INSERT_FAILED

HTTP 500: Server error

Transaction ingest failed.

Swedish: Transaktionerna kunde inte importeras.

TX_UNCATEGORIZE_JE_NOT_POSTED

HTTP 400: Bad request

Journal entry is not in posted status; reversal is not possible.

Swedish: Verifikationen är inte bokförd. Reversal kan inte utföras.

TX_UNCATEGORIZE_NOT_BOOKED

HTTP 400: Bad request

Transaction has no journal entry: nothing to uncategorize.

Swedish: Transaktionen är inte bokförd. Det finns inget att av-kategorisera.

TX_UNCATEGORIZE_NO_LINKED_ENTRY

HTTP 400: Bad request

Transaction has no linked journal entry to reverse.

Swedish: Transaktionen har ingen kopplad verifikation att stornera.

UNATTENDED_COMMIT_LIMIT_EXCEEDED

HTTP 403: Forbidden

Amount exceeds what this API key may post without human approval. The operation is preserved and can be approved in the app.

Swedish: Beloppet överstiger vad den här API-nyckeln får bokföra utan mänskligt godkännande. Underlaget ligger kvar och kan godkännas i Accounted.

Remediation: Do not retry, and do not split the entry into smaller ones: one affärshändelse is one verifikat (BFL 5 kap. 6 §). Ask a human to approve the staged operation in Accounted, or have the key owner raise the limit in API key settings. details.attempted and details.limit carry the numbers.

UNDERLAG_ENTRY_NOT_MIGRATED

HTTP 400: Bad request

The journal entry did not come from a SIE import and cannot be matched by filename.

Swedish: Verifikationen kommer inte från en SIE-import och kan inte matchas mot filnamn.

UNDERLAG_ENTRY_NOT_POSTED

HTTP 409: Conflict

The journal entry is not posted, so documents cannot be attached to it yet.

Swedish: Verifikationen är inte bokförd, så underlag kan inte kopplas till den ännu.

UNDERLAG_PERIOD_MISMATCH

HTTP 409: Conflict

The verifikat belongs to a different fiscal year than the one selected for these files. Reload the preview and try again.

Swedish: Verifikationen tillhör ett annat räkenskapsår än det du valde för underlagen. Ladda om förhandsgranskningen och försök igen.

UNDERLAG_REF_MISMATCH

HTTP 409: Conflict

The filename does not point at the selected verifikat. Reload the preview and try again.

Swedish: Filnamnet pekar inte på den verifikation som valdes. Ladda om förhandsgranskningen och försök igen.

VACATION_BALANCE_NOT_FOUND

HTTP 404: Not found

No vacation balance exists for the employee yet.

Swedish: Inget semestersaldo finns för den anställda ännu.

VACATION_CLOSE_ADJUSTMENT_FAILED

HTTP 500: Server error

Vacation balances rolled but the adjustment entry failed to post. Book the adjustment manually from the report.

Swedish: Semestersaldon rullades men justeringsverifikationen kunde inte bokföras. Bokför justeringen manuellt från rapporten.

VACATION_YEAR_ALREADY_CLOSED

HTTP 409: Conflict

The vacation year is already closed.

Swedish: Semesteråret är redan stängt.

VACATION_YEAR_NOT_ENDED

HTTP 400: Bad request

The vacation year cannot be closed before it has ended.

Swedish: Semesteråret kan inte stängas innan det har tagit slut.

WEBSHOP_ORDER_ALREADY_BOOKED

HTTP 409: Conflict

The order is already booked.

Swedish: Ordern är redan bokförd.

WEBSHOP_ORDER_ALREADY_INVOICED

HTTP 409: Conflict

The order is linked to a customer invoice. Bookkeeping happens through the invoice flow, not directly from the order.

Swedish: Ordern är kopplad till en kundfaktura. Bokföringen sker via fakturaflödet, inte direkt från ordern.

WEBSHOP_ORDER_CREATE_INVOICE_CUSTOMER_FAILED

HTTP 500: Server error

The customer could not be created from the order data.

Swedish: Kunden kunde inte skapas från orderns uppgifter.

WEBSHOP_ORDER_CREATE_INVOICE_MISSING_CUSTOMER

HTTP 422: Unprocessable

The order has no customer data. Choose an existing customer to invoice.

Swedish: Ordern saknar kunduppgifter. Välj en befintlig kund att fakturera.

WEBSHOP_ORDER_FX_UNRESOLVED

HTTP 422: Unprocessable

The exchange rate for the order currency could not be fetched yet. Try again shortly; the order cannot be booked in SEK without a rate.

Swedish: Växelkursen för orderns valuta kunde inte hämtas ännu. Försök igen om en stund; ordern kan inte bokföras i SEK utan kurs.

WEBSHOP_ORDER_INVOICE_MODE_METHOD

HTTP 409: Conflict

The payment method is marked as invoice flow in the store settings. Create an invoice from the order instead, or book it individually.

Swedish: Betalsättet är markerat som fakturaflöde i butiksinställningarna. Skapa faktura från ordern i stället, eller bokför den enskilt.

WEBSHOP_ORDER_LEGACY_TRANSACTION_BOOKED

HTTP 409: Conflict

The order is already booked via a transaction under Transactions (imported by the previous order feed).

Swedish: Ordern är redan bokförd via en transaktion under Transaktioner (importerad av det tidigare orderflödet).

WEBSHOP_ORDER_LEGACY_TRANSACTION_OPEN

HTTP 409: Conflict

The same order already exists as an unbooked transaction under Transactions (imported by the previous order feed). Book or ignore that transaction first so the same business event is not booked twice.

Swedish: Samma order ligger redan som en obokförd transaktion under Transaktioner (importerad av det tidigare orderflödet). Bokför eller ignorera den transaktionen först, så att samma affärshändelse inte bokförs två gånger.

WEBSHOP_ORDER_MANUALLY_BOOKED

HTTP 409: Conflict

The order is marked as booked outside the integration. Undo the mark first if you want to book or invoice it from here.

Swedish: Ordern är markerad som bokförd utanför integrationen. Ångra markeringen först om du vill bokföra eller fakturera den härifrån.

WEBSHOP_ORDER_MARK_ENTRY_NOT_FOUND

HTTP 404: Not found

The journal entry to link the order to was not found.

Swedish: Verifikatet som ordern skulle kopplas till hittades inte.

WEBSHOP_ORDER_MARK_ENTRY_NOT_POSTED

HTTP 409: Conflict

The journal entry is not posted. The order can only be linked to a posted entry.

Swedish: Verifikatet är inte bokfört. Ordern kan bara kopplas till ett bokfört verifikat.

WEBSHOP_ORDER_NOT_FOUND

HTTP 404: Not found

The order was not found.

Swedish: Ordern hittades inte.

WEBSHOP_ORDER_NOT_PAID

HTTP 409: Conflict

The order is not paid yet. Unpaid orders are booked when payment arrives, or invoiced via Create invoice.

Swedish: Ordern är inte betald ännu. Obetalda ordrar bokförs när betalningen kommer, eller faktureras via Skapa faktura.

WEBSHOP_ORDER_REFUND_NOT_CONVERTIBLE

HTTP 409: Conflict

Refunds cannot be converted to invoices. Handle the refund with a credit note from the customer invoice, or book the refund row directly.

Swedish: Återbetalningar kan inte omvandlas till fakturor. Hantera återbetalningen med en kreditfaktura från kundfakturan, eller bokför återbetalningsraden direkt.

WEBSHOP_ORDER_REFUND_PARENT_INVOICED

HTTP 409: Conflict

The order was invoiced through a customer invoice. Handle the refund with a credit note instead of booking the refund row directly.

Swedish: Ordern fakturerades via en kundfaktura. Återbetalningen hanteras med en kreditfaktura, inte genom att bokföra återbetalningsraden direkt.

WEBSHOP_ORDER_RESIDUAL_TOO_LARGE

HTTP 422: Unprocessable

The order total does not match its VAT breakdown (the difference is larger than öre rounding). Book the order individually and review the lines.

Swedish: Orderns belopp stämmer inte med momsuppdelningen (differensen är större än öresavrundning). Bokför ordern enskilt och granska raderna.

WEBSHOP_ORDER_REVENUE_ACCOUNT_RATE_MISMATCH

HTTP 422: Unprocessable

A chosen revenue account is not configured for the VAT rate it would receive, so the sale would drop out of ruta 05 in the VAT declaration. Set the account VAT rate in the chart of accounts (or pick an account for the right rate) and try again.

Swedish: Ett valt intäktskonto är inte upplagt för momssatsen det ska ta emot, så försäljningen skulle falla ur momsdeklarationens ruta 05. Ange kontots momssats i kontoplanen (eller välj ett konto för rätt sats) och försök igen.

WEBSHOP_ORDER_REVENUE_ACCOUNT_UNKNOWN

HTTP 422: Unprocessable

A chosen revenue account is not in the chart of accounts or is inactive. Add or activate the account in the chart of accounts and try again.

Swedish: Ett valt intäktskonto finns inte i kontoplanen eller är inaktivt. Lägg till eller aktivera kontot under Kontoplan och försök igen.

WEBSHOP_ORDER_UNSUPPORTED_VAT_RATE

HTTP 422: Unprocessable

The order has a VAT rate that is not a Swedish rate (25/12/6/0 %), for example foreign OSS VAT. Book the order individually and review the lines.

Swedish: Ordern har en momssats som inte är en svensk sats (25/12/6/0 %), till exempel utländsk OSS-moms. Bokför ordern enskilt och granska raderna.

WEBSHOP_ORDER_VAT_BREAKDOWN_MISSING

HTTP 422: Unprocessable

The order has no VAT breakdown from the store, so the posting cannot be derived reliably. Book the order individually and review the lines.

Swedish: Ordern saknar momsuppdelning från butiken, så konteringen kan inte härledas säkert. Bokför ordern enskilt och granska raderna.

WEBSHOP_ORDER_ZERO_RATE_CONTEXT_MISMATCH

HTTP 422: Unprocessable

The order has a 0 % part but the billing country does not match the chosen 0 % account (export or EU account). The check uses the billing address, not the delivery address: if the goods ship to another country the account may still be right. Book the order individually and confirm the account for the right box (ruta 35-42).

Swedish: Ordern har en momsfri del men faktureringslandet stämmer inte med det valda 0 %-kontot (export- eller EU-konto). Kontrollen bygger på faktureringsadressen, inte leveransadressen: går varorna till ett annat land kan kontot ändå vara rätt. Bokför ordern enskilt och bekräfta kontot för ruta 35-42.