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_ALREADY_CANCELLED

HTTP 409: Conflict

The draft is already cancelled. There is nothing left to do.

Swedish: Utkastet är redan makulerat. Det finns inget kvar att göra.

Remediation: Nothing to stage or approve: the draft no longer blocks the year-end close. Re-run gnubok_year_end_readiness to see what remains.

JOURNAL_ENTRY_DELETE_BLOCKED_BY_REGISTER

HTTP 409: Conflict

This voucher is used by a register (fixed assets, accruals or payroll) and cannot be deleted. Make a correction (storno) instead.

Swedish: Verifikatet används av ett register (anläggningar, periodiseringar eller lön) och kan inte raderas. Gör en rättelse (storno) i stället.

Remediation: A posted verifikat that a register points at is corrected, never deleted (BFL 5 kap. 5 §). Reverse it with storno (gnubok_reverse_journal_entry); details.register names the register and the remediation on the error names its own way back. Related tool: gnubok_reverse_journal_entry

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_DRAFT_INVOICES

HTTP 409: Conflict

The customer has draft invoices. Delete the drafts first, then delete the customer.

Swedish: Kunden har fakturautkast. Ta bort utkasten först, sedan kan kunden tas bort.

Remediation: Unnumbered drafts point at this customer and would lose it. Delete them first (gnubok_delete_draft_invoice, or DELETE /api/v1/companies/{companyId}/invoices/{id}), then retry. details.dependents.draft_invoices says how many. Related tool: gnubok_delete_draft_invoice

CUSTOMER_HAS_INVOICES

HTTP 409: Conflict

Customer cannot be deleted while invoices reference it.

Swedish: Kunden har fakturor och kan inte tas bort.

CUSTOMER_HAS_ISSUED_INVOICES

HTTP 409: Conflict

The customer cannot be deleted because it is on invoices that must be kept for seven years, cancelled ones included. The invoices need the customer's name and address.

Swedish: Kunden kan inte tas bort eftersom den finns på fakturor som ska sparas i sju år, även makulerade. Fakturorna behöver kundens namn och adress.

Remediation: An invoice row stores no copy of the buyer, so a customer on an issued or numbered invoice (cancelled included) is kept for the retention period (ML 17 kap 24 §, BFL 7 kap 2 §). To take it out of the roster, archive it instead: DELETE /api/v1/companies/{companyId}/customers/{id} sets archived_at once no invoice is open.

CUSTOMER_HAS_RECURRING_INVOICES

HTTP 409: Conflict

The customer has a recurring invoice. Delete it first, then delete the customer.

Swedish: Kunden har en återkommande faktura. Ta bort den först, sedan kan kunden tas bort.

Remediation: A recurring invoice schedule points at this customer. Delete the schedule first, then retry.

CUSTOMER_HAS_SALES_ORDERS

HTTP 409: Conflict

The customer has sales orders. Delete them first, then delete the customer.

Swedish: Kunden har kundorder. Ta bort dem först, sedan kan kunden tas bort.

Remediation: Sales orders point at this customer and would lose it. Delete them first (a confirmed order is cancelled before it can be deleted), then retry.

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_ORG_NUMBER_ON_INDIVIDUAL

HTTP 400: Bad request

An individual customer has no org number. Leave org_number empty, pass the personnummer as personal_number, or choose the customer type Swedish business.

Swedish: En privatperson har inget organisationsnummer. Lämna fältet tomt, ange personnumret som personnummer, eller välj kundtypen Svenskt företag.

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 tax reduction is invalid.

Swedish: Personnumret för skattereduktionen är ogiltigt.

INVOICE_CREATE_ROT_RUT_VALIDATION

HTTP 400: Bad request

The tax reduction failed validation. Check the personnummer, the property designation and the deduction lines.

Swedish: Skattereduktionen kunde inte valideras. Kontrollera personnummer, fastighetsbeteckning och raderna med avdrag.

INVOICE_CREATE_VAT_RULE_VIOLATION

HTTP 400: Bad request

The VAT rate is not allowed for this customer type or for the invoice's VAT treatment.

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

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_MISSING

HTTP 409: Conflict

The invoice has no customer. Choose a customer for the draft under Edit, or delete the draft.

Swedish: Fakturan saknar kund. Välj en kund på utkastet under Redigera, eller ta bort utkastet.

Remediation: The invoice has no customer (customer_id is null, usually because the customer was deleted). Set customer_id on the draft (gnubok_update_invoice, or PATCH the invoice) or delete the draft (gnubok_delete_draft_invoice). An invoice is never issued or rendered without a buyer. Related tool: gnubok_update_invoice

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_REGISTER_AMOUNT_MISMATCH

HTTP 400: Bad request

The journal entry books a different amount on accounts receivable (151x) than the invoice total. Pick the invoice's own verifikat; one covering several invoices cannot be linked to one of them.

Swedish: Verifikationen bokför ett annat belopp på kundfordringar (151x) än fakturans totalbelopp. Välj fakturans egen verifikation; en samlingsverifikation för flera fakturor kan inte kopplas till en av dem.

INVOICE_REGISTER_CASH_METHOD

HTTP 409: Conflict

The company uses kontantmetoden: an unpaid invoice's revenue and VAT are booked when it is paid, so it cannot be linked to a verifikat. For now open invoices can be registered this way under faktureringsmetoden only.

Swedish: Företaget bokför enligt kontantmetoden: en obetald fakturas försäljning och moms bokförs först när den betalas, så den kan inte kopplas till en verifikation. Än så länge kan öppna fakturor bara registreras på det här sättet under faktureringsmetoden.

Remediation: Do not register open invoices for this company; tell the user that the kundreskontra cannot be imported under kontantmetoden yet.

INVOICE_REGISTER_FOREIGN_CURRENCY

HTTP 400: Bad request

The invoice is in a foreign currency. Only SEK invoices can be registered this way for now.

Swedish: Fakturan är i utländsk valuta. Än så länge kan bara fakturor i SEK registreras på det här sättet.

Remediation: Leave this invoice out of the register and tell the user that invoices in other currencies cannot be registered yet.

INVOICE_REGISTER_NUMBER_IN_SERIES

HTTP 409: Conflict

The invoice number is in the series Accounted issues and the series has not passed it yet, so a later invoice would get the same number. Set next_invoice_number past the old series (or an invoice_prefix) first.

Swedish: Fakturanumret ligger i den nummerserie Accounted själv delar ut och serien har inte passerat det än, så en senare faktura skulle få samma nummer. Ställ först in nästa fakturanummer efter den gamla seriens sista nummer, eller ett prefix för Accounteds serie, under Inställningar, Fakturor.

Remediation: Set next_invoice_number past the last number of the old series, or an invoice_prefix for Accounted's own series, then register the invoice again. Related tool: gnubok_update_company_settings

INVOICE_REGISTER_NUMBER_TAKEN

HTTP 409: Conflict

That invoice number is already in the invoice register; a number can be registered once.

Swedish: Fakturanumret finns redan i kundreskontran. Ett fakturanummer kan bara registreras en gång.

INVOICE_REGISTER_OPENING_BALANCE

HTTP 400: Bad request

The journal entry is an opening balance, not the invoice's own verifikat. Import the SIE file of the year the invoice was booked in (oldest year first), then register the invoice against that verifikat.

Swedish: Verifikationen är en ingående balans, inte fakturans egen verifikation. Importera SIE-filen för året då fakturan bokfördes (äldsta året först) och registrera fakturan mot den verifikationen.

Remediation: Import the SIE file of the year the invoice was booked in, oldest year first, then find the invoice's verifikat (accounts ["1510"], text = the invoice number) and register against it. Related tool: gnubok_query_journal

INVOICE_REGISTER_VOUCHER_NOT_FOUND

HTTP 404: Not found

Journal entry not found in this company.

Swedish: Verifikationen kunde inte hittas i bolaget.

INVOICE_REGISTER_VOUCHER_NOT_POSTED

HTTP 409: Conflict

The journal entry is not posted (or has been reversed). An invoice can only be registered against a posted verifikat.

Swedish: Verifikationen är inte bokförd eller har makulerats med storno. Fakturan kan bara registreras mot en bokförd verifikation.

INVOICE_REGISTER_VOUCHER_NOT_SALE

HTTP 400: Bad request

The journal entry is not a customer invoice verifikat: it must debit accounts receivable (151x) and credit revenue and any output VAT.

Swedish: Verifikationen är inte en kundfakturaverifikation: den ska debitera kundfordringar (151x) och kreditera försäljning och eventuell utgående moms.

INVOICE_REGISTER_VOUCHER_TAKEN

HTTP 409: Conflict

The journal entry already books another customer invoice.

Swedish: Verifikationen är redan bokföringen av en annan kundfaktura.

INVOICE_REGISTER_VOUCHER_UNSUPPORTED

HTTP 400: Bad request

This invoice cannot be registered this way yet: its verifikat mixes sales a kreditfaktura cannot reverse into the same momsdeklaration boxes (several VAT rates, an untaxed part, momsfri or zero-rated sales next to VAT or next to each other), or books goods sold abroad, vinstmarginalbeskattning (VMB), vilande moms or a ROT/RUT deduction. It stays outside the kundreskontra, and its amount is a difference against 1510.

Swedish: Fakturan kan inte registreras på det här sättet än: verifikationen blandar försäljning som en kreditfaktura inte kan vända i samma momsrutor (flera momssatser, en del utan moms, momsfri försäljning eller försäljning till utlandet eller med omvänd betalningsskyldighet bredvid moms eller bredvid varandra), eller bokför varuförsäljning till utlandet, vinstmarginalbeskattning, vilande moms eller ROT/RUT-avdrag. Fakturan står kvar utanför kundreskontran och dess belopp blir en skillnad mot 1510.

Remediation: Leave this invoice out of the register and tell the user why (message_en names what the verifikat books) and that its amount stays a difference between the kundreskontra and 1510.

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_ISSUED_NOT_DELIVERED

HTTP 502

The invoice is issued (marked sent, and booked where the company books at issue) but the email could not be sent. Download the invoice and deliver it to the customer.

Swedish: Fakturan är utfärdad men e-postmeddelandet kunde inte skickas. Ladda ned fakturan och skicka den till kunden.

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.

INVOICE_VAT_TREATMENT_BUYER_VAT_NUMBER_REQUIRED

HTTP 400: Bad request

An intra-EU supply (0 %) requires the buyer's VAT number from an EU member state other than Sweden, validated against VIES (ML 10 kap. 42-43 §§). Without it the invoice carries Swedish VAT.

Swedish: Unionsintern leverans (0 %) kräver köparens momsregistreringsnummer i ett annat EU-land än Sverige, kontrollerat mot VIES (ML 10 kap. 42-43 §§). Utan det ska fakturan ha svensk moms.

Remediation: Add the buyer EU VAT number to the customer (it is validated against VIES when saved), or send vat_treatment standard for Swedish VAT (for example a consumer under the distance-sales threshold). details.reason: private_person, missing, not_another_member_state or not_validated. Related tool: gnubok_update_customer

INVOICE_VAT_TREATMENT_DELIVERY_COUNTRY_MISMATCH

HTTP 400: Bad request

The delivery country does not match the VAT treatment. Export requires the goods to leave the EU; an intra-EU supply requires transport to another EU member state.

Swedish: Leveranslandet stämmer inte med momsbehandlingen. Export kräver att varorna transporteras ut ur EU; unionsintern leverans kräver transport till ett annat EU-land.

Remediation: Check delivery_country. Goods to another EU member state: vat_treatment reverse_charge (needs the buyer VAT number). Goods leaving the EU: export. Goods staying in Sweden: standard. reverse_charge_domestic (construction services) takes no delivery_country. details.required names what the treatment needs.

INVOICE_VAT_TREATMENT_DELIVERY_COUNTRY_REQUIRED

HTTP 400: Bad request

Set delivery_country for goods leaving Sweden. Without a delivery country, export and reverse_charge only mean the services treatment, and only where the customer already has it.

Swedish: Ange leveransland (delivery_country) för varor som lämnar Sverige. Utan leveransland gäller export och omvänd skattskyldighet bara tjänster, och bara när kunden redan har den behandlingen.

Remediation: For goods, send delivery_country (the ISO code of the country the goods are transported to). For services, omit vat_treatment: the customer record decides. See details.customer_vat_treatment.

INVOICE_VAT_TREATMENT_DOMESTIC_BUYER_REQUIRED

HTTP 400: Bad request

Domestic reverse charge for construction services requires a Swedish business customer with a Swedish VAT number (SE + 12 digits) on the customer card. The number is printed on the invoice (ML 17 kap. 24 §).

Swedish: Omvänd betalningsskyldighet för byggtjänster kräver att kunden är ett svenskt företag med svenskt momsregistreringsnummer (SE + 12 siffror) på kundkortet. Numret skrivs ut på fakturan (ML 17 kap. 24 §).

Remediation: Add the buyer's Swedish VAT number (vat_number, SE + organisationsnummer + 01) to the customer, or omit vat_treatment for Swedish VAT. details.reason: private_person, not_swedish_business, missing or not_swedish_vat_number. Related tool: gnubok_update_customer

INVOICE_VAT_TREATMENT_NOT_VAT_REGISTERED

HTTP 400: Bad request

The company is not VAT-registered, so the invoice cannot state its own VAT treatment. Every line is VAT-free.

Swedish: Företaget är inte momsregistrerat, så fakturan kan inte ange egen momsbehandling. Alla rader blir momsfria.

Remediation: Omit vat_treatment and delivery_country.

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_REFUSED

HTTP 409: Conflict

The database refused the bank link: a voucher does not book the amount on the bank ledger in the direction of the transaction (in a 1:N split: of its own slice), or the bank account of the transaction changed. Check the vouchers and the bank account; retrying the same request will not succeed.

Swedish: Kopplingen nekades: en verifikation bokför inte beloppet på bankkontot åt samma håll som transaktionen (vid en delning: som sin del av den), eller så har transaktionens bankkonto ändrats. Kontrollera verifikationen och bankkontot innan du försöker 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_ANCHOR_SPLIT_UNBALANCED

HTTP 409: Conflict

The bank row is split over vouchers in both directions and the slices do not add up to its amount. Unlink the row and split the whole amount again.

Swedish: Transaktionen är fördelad på verifikationer i båda riktningar, och delarna blir inte tillsammans transaktionens belopp. Koppla bort transaktionen och fördela hela beloppet igen.

BANK_BOOKING_CURRENCY_MISMATCH

HTTP 409: Conflict

The transaction's currency does not match the currency of its bank account, so it cannot be booked or linked on that account.

Swedish: Transaktionens valuta stämmer inte med valutan på bankkontot den hör till, så den kan inte bokföras eller kopplas mot det kontot. Flytta transaktionen till ett bankkonto i samma valuta, eller kontakta supporten om bankkontot har fel valuta.

Remediation: Retrying does not help: the database refuses every booking and link of this row on that bank account. If the row sits under the wrong bank account, move it to the company account in its currency (transactions.update with account_number); if the bank account itself has the wrong currency, only support can correct it.

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).

CASH_ACCOUNT_REMOVE_BANK_CONNECTED

HTTP 409: Conflict

The account is still fetched through a bank connection and cannot be removed. Disconnect the bank first (the accounts and their transactions stay), remove the account, then connect the bank again with only the right accounts.

Swedish: Kontot hämtas fortfarande via en bankkoppling och kan inte tas bort. Koppla från banken först (kontona och deras transaktioner finns kvar), ta bort kontot och koppla sedan banken igen med bara rätt konton.

CASH_ACCOUNT_REMOVE_BOOKED

HTTP 409: Conflict

Transactions on the account are booked or linked to vouchers, invoices or payments, so the account cannot be removed. Booked items are corrected with a correction or a reversal.

Swedish: Transaktioner på kontot är bokförda eller kopplade till verifikat, fakturor eller betalningar, så kontot kan inte tas bort. Det som är bokfört rättas med ändring eller storno.

CASH_ACCOUNT_REMOVE_IGNORED

HTTP 409: Conflict

The account has ignored transactions. Ignoring is a recorded decision, so the account cannot be removed while they exist. Undo the ignore first if the account should go.

Swedish: Kontot har ignorerade transaktioner. Att ignorera är ett sparat beslut, så kontot kan inte tas bort medan de finns. Ångra ignoreringen först om kontot ska bort.

CASH_ACCOUNT_REMOVE_IN_USE

HTTP 409: Conflict

The account is used on invoices (payment details, the default invoice account or a sent invoice) or in a reconciliation and cannot be removed.

Swedish: Kontot används på fakturor (betaluppgifter, standardkonto för fakturor eller en skickad faktura) eller i en avstämning och kan inte tas bort.

CASH_ACCOUNT_REMOVE_LEDGER_HISTORY

HTTP 409: Conflict

The ledger account this bank account books on already has posted vouchers, so the bank account cannot be removed.

Swedish: Bokföringskontot som bankkontot bokför på har redan bokförda verifikat, så bankkontot kan inte tas bort.

CASH_ACCOUNT_REMOVE_MATCH_HISTORY

HTTP 409: Conflict

Transactions on the account have payment matching history that must be kept, so the account cannot be removed. Ignore the transactions and turn the account off instead, or contact support.

Swedish: Transaktioner på kontot har matchningshistorik som ska sparas, så kontot kan inte tas bort. Ignorera transaktionerna och stäng av kontot i stället, eller kontakta supporten.

CASH_ACCOUNT_REMOVE_PRIMARY

HTTP 409: Conflict

This is the company’s primary bank account and cannot be removed. Choose "Make primary" on the right bank account first. If there is no other bank account, connect or add the right one first.

Swedish: Det här är företagets primära bankkonto och kan inte tas bort. Välj "Gör primärt" på rätt bankkonto först. Finns inget annat bankkonto: koppla eller lägg till rätt konto först.

CASH_ACCOUNT_RETIREMENT_HAS_DEPENDENCIES

HTTP 409: Conflict

The bank account cannot be moved to that ledger account automatically: the account it books to now has attachments on a reconciliation or is used on invoices. Keep the current ledger account, or contact support to have it moved. Nothing was saved.

Swedish: Bankkontot kan inte flyttas till det bokföringskontot automatiskt: kontot det bokförs på nu har underlag bifogade till en avstämning eller används i fakturor. Behåll det nuvarande bokföringskontot, eller kontakta supporten så hjälper vi dig att flytta det. Inget sparades.

CASH_ACCOUNT_RETIREMENT_IDENTITY_CONFLICT

HTTP 409: Conflict

The bank account cannot be merged with the account on that ledger account: they have different IBANs or currencies. Choose another ledger account, or contact support. Nothing was saved.

Swedish: Bankkontot kan inte slås ihop med kontot på det bokföringskontot: de har olika IBAN eller valuta. Välj ett annat bokföringskonto, eller kontakta supporten. Inget sparades.

CASH_ACCOUNT_RETIREMENT_STILL_LIVE

HTTP 409: Conflict

One of the bank accounts is still fetched through another bank connection and cannot be merged automatically. Disconnect the other connection under Settings > Connections > Bank, then save again. Nothing was saved.

Swedish: Ett av bankkontona hämtas fortfarande via en annan bankkoppling och kan inte slås ihop automatiskt. Koppla från den andra kopplingen under Inställningar > Kopplingar > Bank och spara sedan igen. Inget sparades.

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_OVERPAYMENT_CHANGED

HTTP 409: Conflict

The invoice remaining amount changed after the match was staged, so the excess differs from the one shown for approval. Stage the match again.

Swedish: Fakturans återstående belopp har ändrats sedan matchningen förbereddes, så överskottet blir ett annat än det som visades. Förbered matchningen igen.

MATCH_OVERPAYMENT_ROUNDING_CAP

HTTP 400: Bad request

The excess is too large to book as rounding on 3740. Book it on 2420 (advances from customers) instead, a liability to refund or offset.

Swedish: Överskottet är för stort för att bokas som kronutjämning på 3740. Boka det som förskott från kund på 2420 i stället.

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.

TAX_DECL_NE_SRU_BLOCKED

HTTP 422: Unprocessable

The NE-bilaga SRU file is refused until the books are corrected. details.reason and the NE-bilaga warnings name the cause.

Swedish: SRU-filen kan inte laddas ner förrän bokföringen är rättad. Orsaken står i NE-bilagans varningar.

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_ORG_NUMBER_MISMATCH

HTTP 409: Conflict

The SIE file names a different organisation number than the company. Check the file and the company, then confirm to import it anyway.

Swedish: SIE-filen gäller ett annat organisationsnummer än företagets. Kontrollera att det är rätt fil och rätt företag, och bekräfta för att importera ändå.

Remediation: Ask the user whether this file belongs in this company (an ombildning or a company registered under the wrong number can be legitimate). Only on their yes, resend with confirm_org_number_mismatch=true (gnubok_import_sie) or options.confirmOrgNumberMismatch=true (REST). Related tool: gnubok_import_sie Related resource: /import?mode=sie

SIE_IMPORT_PERIOD_ALREADY_IMPORTED

HTTP 409: Conflict

This fiscal year already has an import or a posted opening balance. Open import history and undo the earlier import before importing the year again.

Swedish: Räkenskapsåret har redan en import eller en bokförd ingående balans. Öppna importhistoriken och ångra den tidigare importen innan du importerar året igen.

Remediation: Read gnubok_sie_import_status for the earlier import of this fiscal year, undo it (gnubok_undo_sie_import or import history in the app), then import the year again. Related tool: gnubok_sie_import_status Related resource: /import?mode=sie

SIE_IMPORT_PERIOD_LOCKED

HTTP 409: Conflict

The fiscal year, or the company lock date, covers dates this SIE run must write: stornos are dated like the vouchers they reverse. Unlock under Settings > Bookkeeping, then retry.

Swedish: Räkenskapsåret eller bokföringens låsdatum täcker datum som importen behöver bokföra på. Lås upp under Inställningar > Bokföring och försök igen.

Remediation: Nothing was queued. The Swedish message names the locked fiscal year or the lock date and the first date the run writes. Unlocking is the user's decision: move the lock date back (gnubok_update_bookkeeping_lock) or unlock the fiscal year (gnubok_unlock_period) only when they ask, then retry the same request. Related tool: gnubok_update_bookkeeping_lock Related resource: /settings/bookkeeping

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_DELETE_BLOCKED_BY_TRANSACTION

HTTP 409: Conflict

The document is attached to a bank transaction and cannot be deleted. Detach it from the transaction first.

Swedish: Underlaget är kopplat till en banktransaktion och kan inte tas bort. Koppla bort det från transaktionen först.

Remediation: The document is the underlag of a bank transaction (transactions.document_id). Detach it from the transaction first (POST /api/v1/companies/{companyId}/transactions/{id}/detach-document), then delete it. A document linked to a verifikat is never deleted.

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_DEADLINE_NOT_FOUND

HTTP 404: Not found

The company has no arbetsgivardeklaration deadline for that month.

Swedish: Företaget har ingen deadline för arbetsgivardeklarationen den månaden.

Remediation: Check the month (the redovisningsperiod, not the month the deadline falls in). AGI deadlines exist for the months the company is registered as an employer (Inställningar); nothing needs marking for a month without one.

AGI_FILING_DATE_IN_FUTURE

HTTP 400: Bad request

The filing date cannot be in the future.

Swedish: Inlämningsdatumet kan inte ligga i framtiden.

AGI_FILING_MARK_FAILED

HTTP 500: Server error

The AGI period could not be marked as filed.

Swedish: Det gick inte att markera arbetsgivardeklarationen som inlämnad. Försök igen.

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.

Remediation: The run is still a draft. Calculate and book it first (gnubok_book_salary_run stages the booking of a calculated draft run) so the AGI matches the books, then generate the AGI. Related tool: gnubok_book_salary_run

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.

AGI_SUBMIT_NOT_GENERATED

HTTP 409: Conflict

No AGI has been generated for this salary run yet. Generate the AGI first, then submit it.

Swedish: AGI-underlaget saknas för lönekörningen. Generera AGI först och lämna sedan in.

Remediation: Stage gnubok_generate_agi for the run and have it approved, then stage gnubok_agi_submit again. Related tool: gnubok_generate_agi

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_CALCULATED

HTTP 400: Bad request

This payslip line is derived by the salary calculation and rewritten on every calculation. Change its source instead: the absence, the worked hours and premium rules, the benefit or the recurring line. Put a one-off overtime or OB amount on item_type overtime or other.

Swedish: Raden räknas fram av lönekörningen och skrivs om vid varje beräkning. Ändra underlaget i stället: frånvaron, de arbetade timmarna, förmånen eller den återkommande raden. En engångsrad för övertid eller OB läggs som Övertid eller Övrigt.

Remediation: Absence: gnubok_register_absence / gnubok_delete_absence. Hours: gnubok_set_worked_days. Förmåner: gnubok_update_employee_benefit. Recurring lines: gnubok_update_employee_recurring_line. A one-off amount: gnubok_add_payslip_line with item_type overtime or other. Then gnubok_calculate_salary_run.

SALARY_LINE_NOT_FOUND

HTTP 404: Not found

Payslip line not found.

Swedish: Lönebeskedsraden kunde inte hittas.

SALARY_PAYROLL_CONFIG_MISSING

HTTP 409: Conflict

Payroll rates for this year are not loaded yet. The calculation can run once they are.

Swedish: Lönesatserna för året (arbetsgivaravgifter, prisbasbelopp, traktamente med mera) är inte inlagda ännu. Beräkningen kan göras när de är på plats.

Remediation: Accounted adds each year's statutory payroll rates in a release once they are officially set. Nothing in the input is wrong: do not move the payment date to get around it. Try again once the year's rates are in place.

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_BOOKING_IN_PROGRESS

HTTP 409: Conflict

The salary run is already being booked by another request. Nothing was posted by this one.

Swedish: Lönekörningen håller redan på att bokföras (i en annan flik eller av en agent), så inget bokfördes nu. Vänta en stund och kontrollera sedan lönekörningens status.

Remediation: Wait a moment, then fetch the run. Status booked means the other booking went through; status paid means it did not finish, so book the run again (vouchers an interrupted booking already posted are reused, never posted twice). A staged book_salary_run operation stays pending and can be approved again.

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_BLOCKED_BY_PAYMENT_FILE

HTTP 409: Conflict

This payroll run cannot be deleted because a payment file was generated for it, and that file must be kept for seven years. Edit the payroll run instead.

Swedish: Lönekörningen kan inte raderas eftersom en betalfil har skapats för den, och betalfilen ska sparas i sju år. Ändra lönekörningen i stället.

Remediation: A generated payment file is kept for seven years, so the run it belongs to stays. Edit the draft run instead (gnubok_set_run_salary, gnubok_update_salary_run), or leave it unbooked. Related tool: gnubok_update_salary_run

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_HOURLY_RATE_MISSING

HTTP 400: Bad request

The employee has no hourly rate: set it on the employee before setting hours worked.

Swedish: Den anställda saknar timlön: ange timlönen på den anställda innan du sätter arbetade timmar.

SALARY_RUN_HOURS_FROM_CALENDAR

HTTP 409: Conflict

Hours for this period come from the calendar of worked days: change those days instead.

Swedish: Timmarna för perioden hämtas från kalendern: ändra de arbetade dagarna i stället.

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.

Remediation: Only the lines of a draft run change. Send a run in review back to draft first (gnubok_revert_salary_run, v1 POST /salary-runs/{id}/revert); an approved run is unapproved before that (gnubok_unapprove_salary_run). A paid or booked run is never edited: it is corrected with a rättelsekörning. Related tool: gnubok_revert_salary_run

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.

Remediation: Check the salary run id and the company: a run of another company reads as not found. To find the run for a month, call gnubok_get_salary_run with period_year and period_month (v1: GET /salary-runs?period_year=YYYY). Related tool: gnubok_get_salary_run

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_PARTIALLY_BOOKED

HTTP 409: Conflict

The salary run already has posted vouchers from an earlier attempt that do not match the run (details.voucher_numbers). Reverse them, then book the run again.

Swedish: Lönekörningen har redan bokförda verifikationer från ett tidigare försök som inte stämmer med körningen. Återför dem och bokför sedan lönekörningen igen.

Remediation: Reverse each voucher in details.entry_ids with storno (gnubok_reverse_journal_entry), then book the run again. Posted vouchers that match the run exactly are reused by the next booking, never posted twice. Related tool: gnubok_reverse_journal_entry

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_SALARY_FIELD_MISMATCH

HTTP 400: Bad request

monthly_salary applies to monthly-paid employees and hours_worked to hourly-paid employees only.

Swedish: Månadslön kan bara sättas för månadsavlönade och arbetade timmar bara för timavlönade.

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.

SALARY_RUN_UNDERLAG_NOT_BOOKED

HTTP 409: Conflict

The accounting document is available once the salary run is booked.

Swedish: Bokföringsunderlaget skapas när lönekörningen är bokförd.

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.

AUDIT_PACKAGE_TOO_LARGE

HTTP 413

The audit package is too large to store as a file. Create it without documents (include_documents=false), or download the complete archive with documents in the web app under Import/Export.

Swedish: Revisionspaketet blev för stort för att sparas som fil. Skapa det utan underlag, eller ladda ner det kompletta arkivet med underlag under Importera/Exportera.

Remediation: If include_documents was true, call gnubok_audit_package again with include_documents=false: receipts and other documents are most of the size. For the archive with documents, the user downloads it in the web app under Importera/Exportera, Komplett arkiv (/import#full-archive), which streams the file instead of storing it. Related tool: gnubok_audit_package

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_CHART_ACCOUNT_MISSING

HTTP 400: Bad request

One of the chosen ledger accounts is not in the chart of accounts. Reload the page, choose the accounts again and save. Nothing was saved.

Swedish: Ett av de valda bokföringskontona finns inte i kontoplanen. Ladda om sidan, välj konton igen och spara. Inget sparades.

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_SELECTION_YIELD_HAS_HISTORY

HTTP 409: Conflict

The ledger account belongs to another bank account that is not synced but has transactions or is used on invoices or reconciliations. Choose another ledger account, or first select the other bank account, give it another ledger account and save. Nothing was saved.

Swedish: Bokföringskontot hör till ett annat bankkonto som inte synkas men har transaktioner eller används i fakturor eller avstämningar. Välj ett annat bokföringskonto, eller markera först det andra bankkontot, ge det ett annat bokföringskonto och spara. 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 (needs the reconciliation:write scope) with account_key "bank:<cash_account_id>" and one pair { external_ids: [transaction_id], journal_entry_ids: [...], allocations }. One voucher also links with gnubok_link_transaction_to_journal_entry. A key without reconciliation:write: the user links the row on the Avstämning page in Accounted, or reconnects the connector so its new key carries that scope. 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.

BOKIO_PLAN_NO_API

HTTP 422: Unprocessable

Bokio refuses API access because the company's plan does not include private integrations. They are included in Bokio's Plus, Premium and Business plans but not in Basic, and they stop when the plan has expired. Change or renew the plan in Bokio and try again, or import the bookkeeping with a SIE file, and customers, suppliers and articles with CSV or Excel under Import/Export.

Swedish: Bokio nekar API-åtkomst eftersom företagets abonnemang inte omfattar egna integrationer. De ingår i Bokios Plus, Premium och Business men inte i Basic, och stängs av när abonnemanget har gått ut. Byt eller förnya abonnemanget i Bokio och försök igen, eller importera bokföringen med SIE-fil och kunder, leverantörer och artiklar med CSV eller Excel under Importera/Exportera.

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_RESEND_NOT_FAILED

HTTP 409: Conflict

The Peppol access point has not reported the earlier delivery as failed, so the invoice is not sent again. Wait for the delivery status or contact support.

Swedish: Peppol-operatören har inte rapporterat den tidigare leveransen som misslyckad, så fakturan skickas inte igen. Vänta på leveransstatusen eller kontakta support.

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 > Connections > E-invoicing via Peppol, or contact support.

Swedish: Bolagets Peppol-id är inte registrerat hos operatören. Slå på mottagning under Inställningar > Kopplingar > 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.

CONNECTOR_UPSTREAM_SHAPE

HTTP 502

The Peppol access point answered in a format the service does not recognise. Contact support if the problem persists.

Swedish: Peppol-operatören svarade i ett format som tjänsten inte känner igen. Kontakta support om felet kvarstår.

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_RETAG_FAILED

HTTP 400: Bad request

No line could be retagged: every line was refused. details.failed names each line and why (locked or closed period, lock date, a draft, a code missing from the registry or archived, a line of another company).

Swedish: Ingen rad kunde taggas om.

DIMENSION_RULE_EXISTS

HTTP 409: Conflict

The account already has a rule for that dimension (one rule per account and dimension): update the existing rule instead.

Swedish: Kontot har redan en regel för den dimensionen.

DIMENSION_RULE_NOT_FOUND

HTTP 404: Not found

Account dimension rule not found in this company.

Swedish: Regeln finns inte.

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 dimensionsvärde 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 or dimension), then retry. Only companies with dimensions enabled are validated; each issue in details.issues carries sie_dim_no, code, reason (unknown_dimension | unknown_value | archived_value | archived_dimension) and, when the dimension is registered, dimension_name.

DIMENSION_VALUE_ARCHIVED

HTTP 400: Bad request

The dimension value is archived: reactivate it (PATCH the value with is_active true) before a rule uses it.

Swedish: Värdet är arkiverat: återaktivera det innan det används i en regel.

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_BOOKED_INBOX_ITEM

HTTP 409: Conflict

The document belongs to a received invoice that has already been booked or turned into a supplier invoice. It is accounting records under BFL 7 kap and must be kept for 7 years in the form it was received, so it cannot be deleted.

Swedish: Underlaget hör till en mottagen faktura som redan har bokförts eller blivit en leverantörsfaktura. Det utgör räkenskapsinformation enligt Bokföringslagen 7 kap och ska bevaras i minst 7 år i det skick det togs emot, så det får inte raderas.

Remediation: An inbox item that created a journal entry or a supplier invoice (invoice_inbox_items.created_journal_entry_id or created_supplier_invoice_id) holds this document as its file or as the received Peppol XML (channel_context.peppol_xml_document_id). It is kept; the files of an inbox item that was never booked can still be discarded.

DOC_DELETE_EXPENSE_CLAIM_UNDERLAG

HTTP 409: Conflict

The document is the underlag of a registered expense claim and is accounting records under BFL (5 kap 6-7 §§, 7 kap): it must be kept for 7 years and cannot be deleted while the expense claim exists.

Swedish: Underlaget hör till ett registrerat utlägg och utgör räkenskapsinformation enligt Bokföringslagen (5 kap 6-7 §§ och 7 kap). Det ska bevaras i minst 7 år och får inte raderas så länge utlägget finns kvar.

Remediation: An expense claim (expense_claims.document_id) holds this document, and it stays as long as the expense claim does.

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_DELETE_SUPPLIER_INVOICE_UNDERLAG

HTTP 409: Conflict

The document is the underlag of a registered supplier invoice and is accounting records under BFL (5 kap 6-7 §§, 7 kap): it must be kept for 7 years and cannot be deleted while the supplier invoice exists.

Swedish: Underlaget hör till en registrerad leverantörsfaktura och utgör räkenskapsinformation enligt Bokföringslagen (5 kap 6-7 §§ och 7 kap). Det ska bevaras i minst 7 år och får inte raderas så länge leverantörsfakturan finns kvar.

Remediation: A supplier invoice (supplier_invoices.document_id) holds this document, and it stays as long as the supplier invoice does. A supplier invoice registered by mistake and not yet booked or paid can be deleted first (DELETE /api/v1/companies/{companyId}/supplier-invoices/{id}); a booked one is credited instead, and its underlag is kept.

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.

DRAFT_HAS_DOCUMENTS

HTTP 409: Conflict

The draft holds documents that can never be moved to another verifikat once the draft is cancelled. Book the draft, or contact support.

Swedish: Utkastet har bilagor som inte kan flyttas när utkastet har makulerats. Bokför utkastet, eller kontakta supporten.

Remediation: Do not cancel this draft. details.documents lists its underlag. Ask the user to book the draft (commit it), or to contact support to move the documents first.

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. With reverse_charge the expense account must be an ordinary cost account.

Swedish: Verifikatraderna är ogiltiga: kontrollera att raderna balanserar och att skuldraden matchar beloppet. Med omvänd skattskyldighet måste kostnadskontot vara ett vanligt kostnadskonto.

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_DATES_BLOCKED

HTTP 409: Conflict

The new dates would affect what the fiscal year holds. details.blockers lists each reason (code, message_sv and its facts): entries_outside / drafts_outside (verifikat or drafts dated outside the new dates), other_year_entries, opening_balance (posted opening balances pin the start), period_locked, period_closed, company_lock_date, sie_import_hold, opening_balance_review, year_end_entries, kontantmetod_cutoff, depreciation_posted, tax_depreciation, annual_report, tax_assessment, annual_filing, plus the BFL 3 kap. shape and chain rules. The name can still be changed.

Swedish: Datumen kan inte ändras: något i räkenskapsåret skulle påverkas. Namnet kan fortfarande ändras.

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_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_IS_CREDIT_NOTE

HTTP 409: Conflict

The inbox item is a credit note. Credit the invoice it refers to instead of registering a new supplier invoice.

Swedish: Posten är en kreditfaktura. Kreditera fakturan den avser i stället för att registrera en ny leverantörsfaktura.

Remediation: details.credit_target says which invoice it credits (status matched, partial, amount_differs, already_credited, ambiguous or none, with candidates). For a matched one, credit it with the inbox item: POST /supplier-invoices/{id}/credit with inbox_item_id. If the reading is wrong (it is a normal invoice), correct documentKind and the totals on the inbox item first. Related tool: gnubok_credit_supplier_invoice

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).

KONTANTMETOD_CUTOFF_SUSPENDED

HTTP 409: Conflict

The kontantmetoden year-end cut-off is temporarily suspended while a VAT defect is fixed (erp-mafia/accounted#3440): as built, it would declare the moms on invoices unpaid at year end a second time when they are paid in the next year. Nothing was posted.

Swedish: Kontantmetodens bokslutsavgränsning är tillfälligt avstängd medan ett fel i momsredovisningen rättas. Bokför inte kundfordringarna eller leverantörsskulderna manuellt i stället: bokslutet för perioden får vänta tills avgränsningen går att bokföra igen.

Remediation: Do not retry, and do not work around it: never book the year-end receivables, payables or their moms by hand (gnubok_create_voucher or any other tool), and do not stage the cut-off again through gnubok_stage_tool. Tell the user the cut-off is temporarily unavailable and that the year-end close of this kontantmetoden period waits until it is back. A cut-off operation already staged stays pending; do not approve it again. Other year-end preparation (reconciliation, accruals, depreciation) can continue.

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_SPLIT_DIMENSION_UNRESOLVED

HTTP 409: Conflict

One or more projects carrying a balance are missing from the dimension registry. Add them under Dimensions and try again.

Swedish: Ett eller flera projekt med saldo finns inte i dimensionsregistret. Lägg upp dem under Dimensioner och försök igen.

Remediation: details.unresolved lists each dimension number and code. Create the missing values (POST /dimensions/{id}/values), then retry.

OB_SPLIT_FAILED

HTTP 500: Server error

Splitting the opening balances per project failed.

Swedish: Uppdelningen av ingående balanser per projekt misslyckades.

OB_SPLIT_NOTHING_TO_DO

HTTP 409: Conflict

There is nothing to split: the opening balances are already split per project, or the accounts concerned are skipped.

Swedish: Det finns ingenting att dela upp: ingående balanserna är redan uppdelade per projekt, eller så hoppas de berörda kontona över.

Remediation: Nothing to stage or approve. GET /fiscal-periods/{id}/opening-balances/split-per-project shows each account's status (unchanged, or skipped with skip_reason).

OB_SPLIT_NO_PREVIOUS_YEAR

HTTP 409: Conflict

There is no earlier fiscal year in Accounted to take project balances from. Opening balances from an SIE import are split per project when the file carries #OIB records.

Swedish: Det finns inget tidigare räkenskapsår i Accounted att hämta projektsaldon från. Ingående balanser från en SIE-import delas upp per projekt när filen innehåller #OIB-rader.

OB_SPLIT_PERIOD_CLOSED

HTTP 409: Conflict

The fiscal year is closed, so its opening balances cannot be split per project. If the year was marked as closed in a previous program, reopen it (Settings › Bookkeeping › Fiscal years › Reopen) and try again.

Swedish: Räkenskapsåret är stängt, så dess ingående balanser kan inte delas upp per projekt. Är året markerat som avslutat i ett tidigare program kan du öppna det igen (Inställningar › Bokföring › Räkenskapsår › Öppna igen) och försöka på nytt.

Remediation: A year closed in Accounted (year-end posted) cannot be reopened: split the following year's opening balances instead. A year only marked closed externally is reopened with POST /fiscal-periods/{id}/reopen-external.

OB_SPLIT_PERIOD_LOCKED

HTTP 409: Conflict

The fiscal year is locked, so its opening balances cannot be split per project. Unlock the year first (Settings › Bookkeeping › Fiscal years › Unlock) and try again.

Swedish: Räkenskapsåret är låst, så dess ingående balanser kan inte delas upp per projekt. Lås upp året först (Inställningar › Bokföring › Räkenskapsår › Lås upp) och försök sedan igen.

Remediation: Unlock the fiscal year (POST /fiscal-periods/{id}/unlock), then retry the split.

OB_SPLIT_PROPOSAL_CHANGED

HTTP 409: Conflict

The opening balances or the project balances changed since the preview. Preview the split again.

Swedish: Ingående balanserna eller projektsaldona har ändrats sedan förhandsgranskningen. Förhandsgranska uppdelningen igen.

Remediation: Run the preview (GET or ?dry_run=true) again and pass its fingerprint as expected_fingerprint.

OB_SPLIT_REFUSED

HTTP 409: Conflict

The split was refused by the correction rules for posted entries.

Swedish: Uppdelningen nekades av reglerna för rättelse av verifikat.

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 > Connections > 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 > Kopplingar > E-faktura via Peppol, så aktiverar vi det.

PEPPOL_BUSINESS_REJECTED

HTTP 409: Conflict

The recipient rejected the invoice via Peppol. Credit it and create a new invoice.

Swedish: Mottagaren har avvisat fakturan via Peppol. Kreditera den och skapa en ny faktura.

PEPPOL_DUPLICATE_INVOICE_NUMBER

HTTP 409: Conflict

The recipient already holds an invoice with this number via Peppol. If it needs correcting, credit it and create a new invoice.

Swedish: Mottagaren har redan en faktura med det här numret via Peppol. Behöver den rättas, kreditera den och skapa en ny faktura.

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 use e-invoicing via Peppol.

Swedish: Bolaget behöver ett giltigt organisationsnummer i företagsinställningarna innan det kan använda e-faktura 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_FAILED_AFTER_ISSUE

HTTP 502

The invoice is issued, but could not be sent via Peppol right now. Try again shortly, or send the PDF by email.

Swedish: Fakturan är utfärdad, men kunde inte skickas via Peppol just nu. Försök igen om en stund, eller skicka PDF:en via e-post.

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_SUBMISSION_REJECTED_AFTER_ISSUE

HTTP 422: Unprocessable

The invoice is issued, but the Peppol access point did not accept it. Correct it and send again, or send the PDF by email.

Swedish: Fakturan är utfärdad, men Peppol-operatören tog inte emot den. Rätta och skicka igen, eller skicka PDF:en via e-post.

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.

RECORD_STILL_REFERENCED

HTTP 409: Conflict

This record cannot be deleted because other records still refer to it.

Swedish: Posten kan inte tas bort eftersom annan data fortfarande hänvisar till den.

Remediation: Other records still point at this one; details.referenced_by names their table. Remove or re-point those records first, or keep this one (archive or deactivate it where the resource supports that). Retrying the same delete will not help.

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_LIST_FAILED

HTTP 500: Server error

Failed to list register imports.

Swedish: Kunde inte hämta importhistoriken.

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.

REG_IMPORT_UNDO_ALREADY_UNDONE

HTTP 409: Conflict

This register import has already been undone.

Swedish: Importen är redan ångrad.

REG_IMPORT_UNDO_FAILED

HTTP 500: Server error

Failed to undo the register import.

Swedish: Importen kunde inte ångras. Försök igen.

REG_IMPORT_UNDO_FORBIDDEN

HTTP 403: Forbidden

You do not have write access to undo imports in this company.

Swedish: Du har inte behörighet att ångra importer i det här företaget.

REG_IMPORT_UNDO_INVALID_ID

HTTP 400: Bad request

Invalid import run id.

Swedish: Ogiltigt import-id.

REG_IMPORT_UNDO_NOT_FOUND

HTTP 404: Not found

Register import run not found.

Swedish: Importen kunde inte hittas.

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 (a tax reduction such as ROT, RUT or green technology, an accrual period or a negative quantity). Create the sales order manually.

Swedish: Underlaget innehåller rader som inte kan föras över till en kundorder (skattereduktion som ROT, RUT eller grön teknik, 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_ITEM_ACCOUNT_MISSING

HTTP 400: Bad request

One or more invoice lines have no account. Set an account for each line, or set a default expense account on the supplier.

Swedish: En eller flera fakturarader saknar konto. Ange konto för varje rad, eller sätt ett standardkonto för kostnader på leverantören.

Remediation: Choose a BAS account for each line from the underlag and stage again with line_overrides[].account_number. No account is ever guessed. Related tool: gnubok_create_supplier_invoice_from_inbox

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_CREATE_TOTALS_MISMATCH

HTTP 400: Bad request

The invoice lines including VAT do not add up to the invoice total. Correct the lines from the underlag and try again.

Swedish: Fakturaraderna inklusive moms stämmer inte med fakturans totalbelopp. Rätta raderna efter underlaget och försök igen.

Remediation: Correct lineItems in extracted_data from the underlag: lineTotal is each line amount excluding Swedish VAT, with vatRate 25, 12, 6 or 0. VAT at a foreign rate is not deductible in Sweden and is part of the cost: give that line its amount including the foreign VAT with vatRate 0. Never lower totals.total below what the invoice bills. Then stage again. Related tool: gnubok_set_inbox_extracted_data

SI_CREDIT_ALREADY_CREDITED

HTTP 409: Conflict

Supplier invoice has already been credited.

Swedish: Leverantörsfakturan har redan krediterats.

SI_CREDIT_DOCUMENT_MISMATCH

HTTP 400: Bad request

The credit note does not fit the invoice: the supplier, the currency or the amount differs, or the amount was not read. Check the reading in the inbox.

Swedish: Kreditfakturan stämmer inte med fakturan: leverantör, valuta eller belopp skiljer sig, eller så saknas beloppet. Kontrollera uppgifterna i inkorgen.

Remediation: details.reason is supplier, currency, exceeds or amount_missing. Correct the reading (PATCH /inbox-items/{id}) or pick the invoice the credit note actually references.

SI_CREDIT_DOCUMENT_UNAVAILABLE

HTTP 409: Conflict

The credit note document was not found or already belongs to another verifikat.

Swedish: Kreditfakturans dokument hittades inte eller hör redan till en annan verifikation.

SI_CREDIT_FAILED

HTTP 500: Server error

Failed to credit supplier invoice.

Swedish: Kunde inte kreditera leverantörsfakturan.

SI_CREDIT_PARTIAL

HTTP 400: Bad request

The credit note covers only part of the invoice. Crediting always reverses the whole invoice, so it cannot be used here. Book the credit note as a verifikat of its own, or credit the whole invoice and register a new one for what remains.

Swedish: Kreditfakturan gäller bara en del av fakturan. Kreditera krediterar alltid hela fakturan, så den kan inte användas här. Bokför kreditfakturan som en egen verifikation, eller kreditera hela fakturan och registrera en ny för det som återstår.

Remediation: details carries credit_total and invoice_total. Do not credit the whole invoice for a partial credit note. Hand over to the user: book the credit note as its own verifikat (reverse the credited part on 2440, the cost account and 2641), or credit the whole invoice and register a corrected invoice for the rest.

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_FX_RATE_UNKNOWN

HTTP 409: Conflict

The supplier invoice is in a foreign currency and the exchange rate its registration verifikat was booked at cannot be determined, so the line is not moved. Correct the verifikat directly.

Swedish: Fakturan är i utländsk valuta och det går inte att avgöra vilken växelkurs registreringsverifikatet bokfördes med, så raden flyttas inte. Rätta verifikatet för hand.

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_PAID_SEK_UNRESOLVED

HTTP 409: Conflict

Could not determine how much SEK the invoice still carries on accounts payable (2440): the links between the invoice and its vouchers are ambiguous, or the liability there does not match the invoice's amount and rate. Book the payment as its own SEK voucher and link it to the invoice, or fix the links first.

Swedish: Det gick inte att avgöra hur mycket i kronor fakturan har kvar på leverantörsskulder (2440): kopplingen mellan fakturan och dess verifikationer är inte entydig, eller skulden där stämmer inte med fakturans belopp och kurs. Bokför betalningen som en egen verifikation i kronor och koppla den till fakturan, eller rätta kopplingen först.

Remediation: details.reason names the contradiction: registration_voucher_not_live (reversed with no single correction), registration_voucher_shared, payment_history_mismatch (payment rows do not add up to paid_amount), payment_voucher_not_posted (missing, or reversed with no single correction), payment_voucher_shared (a batch voucher), no_liability_left, or ledger_rate_mismatch (2440 carries more than 10% away from remaining_amount x exchange_rate, details.expected_sek vs details.ledger_sek: the registration was corrected for something other than the rate, so the gap is not a kursdifferens), or ledger_history_too_long (more than 50 payment rows or 20 storno hops to follow: past what one request resolves). Check the SEK against the ledger, then resend mark-paid with explicit SEK lines (Debit 2440 / Credit the payment account, plus 3960/7960 for a genuine kursdifferens), or book the voucher yourself and link it to the invoice.

SI_REGISTER_AMOUNT_MISMATCH

HTTP 400: Bad request

The journal entry books a different amount on accounts payable (244x) than the invoice total. Pick the invoice's own verifikat; one covering several invoices cannot be linked to one of them.

Swedish: Verifikationen bokför ett annat belopp på leverantörsskulder (244x) än fakturans totalbelopp. Välj fakturans egen verifikation; en samlingsverifikation för flera fakturor kan inte kopplas till en av dem.

SI_REGISTER_ARRIVAL_NUMBER_IN_SERIES

HTTP 409: Conflict

The ankomstnummer is not below Accounted's own series, so it would sit in that series, which would then continue after it. Set next_arrival_number past the old series first, or leave arrival_number out.

Swedish: Ankomstnumret ligger inte under Accounteds egen serie, så det skulle hamna i den serien, som då fortsätter efter det numret. Ställ först in Startnummer för leverantörsfakturor efter den gamla seriens sista nummer under Inställningar, Fakturor, eller utelämna ankomstnumret.

Remediation: Set next_arrival_number past the last ankomstnummer of the old series, then register the invoice again; or leave arrival_number out to draw the next number in Accounted's series. Related tool: gnubok_update_company_settings

SI_REGISTER_ARRIVAL_NUMBER_TAKEN

HTTP 409: Conflict

That ankomstnummer is already used by another supplier invoice. Leave arrival_number out to give the invoice the next number in Accounted's series.

Swedish: Ankomstnumret används redan av en annan leverantörsfaktura. Utelämna ankomstnumret så får fakturan nästa nummer i Accounteds serie.

SI_REGISTER_CASH_METHOD

HTTP 409: Conflict

The company uses kontantmetoden: an unpaid supplier invoice's cost and VAT are booked when it is paid, so it cannot be linked to a verifikat. For now open supplier invoices can be registered this way under faktureringsmetoden only.

Swedish: Företaget bokför enligt kontantmetoden: en obetald leverantörsfakturas kostnad och moms bokförs först när den betalas, så den kan inte kopplas till en verifikation. Än så länge kan öppna leverantörsfakturor bara registreras på det här sättet under faktureringsmetoden.

Remediation: Do not register open supplier invoices for this company; tell the user that the leverantörsreskontra cannot be imported under kontantmetoden yet.

SI_REGISTER_FOREIGN_CURRENCY

HTTP 400: Bad request

The supplier invoice is in a foreign currency. Only SEK invoices can be registered this way for now.

Swedish: Leverantörsfakturan är i utländsk valuta. Än så länge kan bara fakturor i SEK registreras på det här sättet.

Remediation: Leave this invoice out of the register and tell the user that invoices in other currencies cannot be registered yet.

SI_REGISTER_NUMBER_REUSED

HTTP 409: Conflict

This supplier already has an invoice with the same number and another invoice date: a number the supplier reuses. Such a number is kept as the invoice's payment reference, but this invoice has a payment reference of its own and cannot keep both. It stays outside the leverantörsreskontra, and its amount is a difference against 2440.

Swedish: Leverantören har redan en faktura med samma nummer och ett annat fakturadatum, ett nummer som leverantören återanvänder. Ett sådant nummer sparas som fakturans betalningsreferens, men den här fakturan har en egen betalningsreferens och kan inte spara båda. Fakturan står kvar utanför leverantörsreskontran och dess belopp blir en skillnad mot 2440.

Remediation: Leave this invoice out of the register and tell the user that the supplier reuses its invoice number while this invoice carries its own payment reference, so its amount stays a difference between the leverantörsreskontra and 2440.

SI_REGISTER_NUMBER_TAKEN

HTTP 409: Conflict

That supplier invoice number is already in the leverantörsreskontra for this supplier; an invoice can be registered once.

Swedish: Leverantörens fakturanummer finns redan i leverantörsreskontran för den här leverantören. En faktura kan bara registreras en gång.

SI_REGISTER_OPENING_BALANCE

HTTP 400: Bad request

The journal entry is an opening balance, not the supplier invoice's own verifikat. Import the SIE file of the year the invoice was booked in (oldest year first), then register the invoice against that verifikat.

Swedish: Verifikationen är en ingående balans, inte leverantörsfakturans egen verifikation. Importera SIE-filen för året då fakturan bokfördes (äldsta året först) och registrera fakturan mot den verifikationen.

Remediation: Import the SIE file of the year the invoice was booked in, oldest year first, then find the invoice's verifikat (accounts ["2440"], text = the supplier's invoice number) and register against it. Related tool: gnubok_query_journal

SI_REGISTER_REVERSE_CHARGE

HTTP 400: Bad request

This supplier invoice cannot be registered this way yet: its verifikat books omvänd betalningsskyldighet or import VAT (rutor 20-24, 30-32, 50 and 60-62), the buyer's own VAT a kreditfaktura must reverse in the same rutor. It stays outside the leverantörsreskontra, and its amount is a difference against 2440.

Swedish: Leverantörsfakturan kan inte registreras på det här sättet än: verifikationen bokför omvänd betalningsskyldighet eller importmoms (rutorna 20-24, 30-32, 50 och 60-62), köparens egen moms som en kreditfaktura måste vända i samma rutor. Fakturan står kvar utanför leverantörsreskontran och dess belopp blir en skillnad mot 2440.

Remediation: Leave this invoice out of the register and tell the user that purchases with reverse charge or import VAT cannot be registered yet and that its amount stays a difference between the leverantörsreskontra and 2440.

SI_REGISTER_VOUCHER_NOT_FOUND

HTTP 404: Not found

Journal entry not found in this company.

Swedish: Verifikationen kunde inte hittas i bolaget.

SI_REGISTER_VOUCHER_NOT_POSTED

HTTP 409: Conflict

The journal entry is not posted (or has been reversed). A supplier invoice can only be registered against a posted verifikat.

Swedish: Verifikationen är inte bokförd eller har makulerats med storno. Leverantörsfakturan kan bara registreras mot en bokförd verifikation.

SI_REGISTER_VOUCHER_NOT_PURCHASE

HTTP 400: Bad request

The journal entry is not a supplier invoice verifikat: it must credit accounts payable (244x) and debit the cost and any input VAT.

Swedish: Verifikationen är inte en leverantörsfakturaverifikation: den ska kreditera leverantörsskulder (244x) och debitera kostnad och eventuell ingående moms.

SI_REGISTER_VOUCHER_TAKEN

HTTP 409: Conflict

The journal entry already books another supplier invoice.

Swedish: Verifikationen är redan bokföringen av en annan leverantörsfaktura.

SI_REGISTER_VOUCHER_UNSUPPORTED

HTTP 400: Bad request

This supplier invoice cannot be registered this way yet: its verifikat has a row that nets to a credit (öresavrundning downwards or a discount), which a kreditfaktura would credit once more instead of reversing, or books VAT other than input VAT. It stays outside the leverantörsreskontra, and its amount is a difference against 2440.

Swedish: Leverantörsfakturan kan inte registreras på det här sättet än: verifikationen har en rad som netto krediteras (öresavrundning nedåt eller en rabatt), som en kreditfaktura skulle kreditera en gång till i stället för att vända, eller bokför annan moms än ingående moms. Fakturan står kvar utanför leverantörsreskontran och dess belopp blir en skillnad mot 2440.

Remediation: Leave this invoice out of the register and tell the user why (message_en names the account) and that its amount stays a difference between the leverantörsreskontra and 2440.

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_BOOK_LEDGER_TWIN_EXISTS

HTTP 409: Conflict

The event is already in the ledger: a live verifikat carries it on account 1630. Link the row to that verifikat instead of booking it a second time.

Swedish: Händelsen finns redan i bokföringen: ett verifikat innehåller den redan på konto 1630. Koppla raden till verifikatet i stället för att bokföra den en gång till.

Remediation: Link the row to the verifikat the message names with gnubok_reconcile_match (account_key "skattekonto", pairs [{ external_ids: [row id, plus any same-day rows the verifikat carries with it], journal_entry_ids: [verifikat id] }]). Book it anyway (allow_duplicate / allow_duplicate_ids) only when the user confirms the event really happened twice. Related tool: gnubok_reconcile_match

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.

SKATTEKONTO_NOT_SYNCED

HTTP 409: Conflict

Skatteverket is connected but no skattekonto rows have been fetched yet, so account_key "skattekonto" does not exist yet. It appears once the first fetch completes.

Swedish: Skatteverket är kopplat men inga skattekontohändelser har hämtats ännu. Skattekontot går att stämma av när den första hämtningen är klar.

Remediation: Skip the skattekonto for now and continue with the other accounts; ask again later. The skattekonto is fetched right after each BankID consent and by the scheduled sync, and the user can fetch it now on the Skattekonto page in Accounted. If it stays empty, check the connection with gnubok_connect_skatteverket and have the user reconnect. Related tool: gnubok_connect_skatteverket

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_MISSING_SEK_VALUE

HTTP 400: Bad request

The transaction is in a foreign currency but has neither amount_sek nor exchange_rate, so it cannot be booked: the verifikation must be in SEK. Fetch the exchange rate for the transaction date, then retry.

Swedish: Transaktionen är i utländsk valuta men saknar SEK-belopp och växelkurs, så den kan inte bokföras: verifikationen måste vara i kronor. Hämta växelkursen för transaktionsdatumet och försök igen.

Remediation: POST /api/v1/companies/{companyId}/transactions/{id}/refresh-exchange-rate (operation transactions.refresh-exchange-rate) fetches the Riksbanken rate for the transaction date and stores amount_sek and exchange_rate on the unbooked row; then retry the same booking. In the app, the booking dialog fetches the rate automatically when it opens the row. A currency Riksbanken does not publish answers TX_EXCHANGE_RATE_UNAVAILABLE: book that row as a manual verifikat with the SEK amount from the bank statement.

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.

Remediation: The vacation ledger is seeded when the employee's first salary run is booked (gnubok_book_salary_run) or at the vacation year close, not before. Until then read the entitlement from the employee (gnubok_get_employee: vacation_rule, vacation_days_per_year). Retrying returns the same answer. Related tool: gnubok_get_employee

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.

WEBHOOK_NOT_VERIFIED

HTTP 409: Conflict

The webhook endpoint has not passed the ownership verification handshake, so no events are sent to it.

Swedish: Webhookens mottagaradress är inte verifierad. Inga händelser skickas dit förrän den har klarat verifieringen.

Remediation: Make the endpoint answer the webhook.verification request with 2xx and {"challenge": "<the value sent>"}, then call POST /api/v1/companies/{companyId}/webhooks/{id}/verify.

WEBHOOK_VERIFICATION_FAILED

HTTP 422: Unprocessable

The webhook endpoint did not pass the verification handshake: it must answer with 2xx and {"challenge": "<the value sent>"} within 10 seconds.

Swedish: Webhookens mottagaradress klarade inte verifieringen. Den måste svara med samma challenge-värde som skickades.

Remediation: Read details.reason, fix the receiver, then call POST /api/v1/companies/{companyId}/webhooks/{id}/verify again.

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.