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_urlfield 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.
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.
Periods + year-end
Fiscal period locking, year-end closing, opening balances, FX revaluation.
FX_FAILED
HTTP 400: Bad request
Currency revaluation failed.
Swedish: Valutaomvärderingen misslyckades.
FX_PERIOD_CLOSED
HTTP 400: Bad request
Period is already closed; currency revaluation cannot be run.
Swedish: Perioden är redan stängd. Valutaomvärdering kan inte köras.
FX_PERIOD_NOT_FOUND
HTTP 404: Not found
Fiscal period not found.
Swedish: Räkenskapsperioden kunde inte hittas.
PERIOD_CREATE_BLOCKED_BY_OPEN_PERIODS
HTTP 409: Conflict
Cannot create a new fiscal year while a prior period is still open; lock it first.
Swedish: Du måste låsa föregående räkenskapsår innan du kan skapa ett nytt.
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.
Related tool: gnubok_unlock_period
PERIOD_LOCK_ALREADY_LOCKED
HTTP 409: Conflict
Period is already locked.
Swedish: Perioden är redan låst.
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_UNLOCK_CLOSED
HTTP 409: Conflict
A closed fiscal year cannot be unlocked.
Swedish: Ett stängt räkenskapsår kan inte låsas upp.
PERIOD_UNLOCK_NOT_LOCKED
HTTP 409: Conflict
Period is not locked.
Swedish: Perioden är inte låst.
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_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_CREATE_FAILED
HTTP 500: Server error
Failed to create customer.
Swedish: Kunden kunde inte skapas.
CUSTOMER_DELETE_FAILED
HTTP 500: Server error
Failed to delete customer.
Swedish: Kunden kunde inte tas bort.
CUSTOMER_DUPLICATE_ORG_NUMBER
HTTP 409: Conflict
A customer with that organisation number already exists.
Swedish: En kund med samma organisationsnummer finns redan.
CUSTOMER_HAS_INVOICES
HTTP 409: Conflict
Customer cannot be deleted while invoices reference it.
Swedish: Kunden har fakturor och kan inte tas bort.
CUSTOMER_NOT_FOUND
HTTP 404: Not found
Customer not found.
Swedish: Kunden kunde inte hittas.
CUSTOMER_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_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_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_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_REVENUE_ACCOUNT_INVALID
HTTP 400: Bad request
A supplied revenue account does not exist or is not an active class-3 income account.
Swedish: Ett angivet försäljningskonto finns inte eller är inte ett aktivt intäktskonto (klass 3).
INVOICE_CREATE_ROT_RUT_PERSONNUMMER_INVALID
HTTP 400: Bad request
The personnummer provided for the ROT/RUT deduction is invalid.
Swedish: Personnumret för ROT/RUT-avdraget är ogiltigt.
INVOICE_CREATE_ROT_RUT_VALIDATION
HTTP 400: Bad request
ROT/RUT deduction failed validation. Check personnummer and housing designation.
Swedish: ROT/RUT-avdraget kunde inte valideras. Kontrollera personnummer och fastighetsbeteckning.
INVOICE_CREATE_VAT_RULE_VIOLATION
HTTP 400: Bad request
The VAT rate is not allowed for this customer type.
Swedish: Momssatsen är inte tillåten för denna kundtyp.
INVOICE_CREDIT_ALREADY_CREDITED
HTTP 400: Bad request
Invoice has already been credited.
Swedish: Fakturan har redan krediterats.
INVOICE_CREDIT_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_ORIGINAL_NOT_FOUND
HTTP 404: Not found
Original invoice not found.
Swedish: Ursprungsfakturan kunde inte hittas.
INVOICE_CUSTOMER_NOT_FOUND
HTTP 404: Not found
Customer not found.
Swedish: Kunden kunde inte hittas.
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_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_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_PDF_RENDER_FAILED
HTTP 500: Server error
Invoice PDF rendering failed.
Swedish: Fakturans PDF kunde inte skapas.
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.
Remediation: Set RESEND_API_KEY and RESEND_FROM_EMAIL in the deployment environment.
INVOICE_SEND_NO_CUSTOMER_EMAIL
HTTP 400: Bad request
Customer has no email address.
Swedish: Kunden saknar e-postadress. Uppdatera kunduppgifterna först.
Remediation: Add an email address on the customer record before sending.
INVOICE_SEND_NUMBER_ASSIGN_FAILED
HTTP 500: Server error
Failed to assign invoice number on send.
Swedish: Kunde inte tilldela fakturanummer.
INVOICE_SEND_PARTIAL
HTTP 200
Invoice was sent but a follow-up step (journal entry or PDF) failed.
Swedish: Fakturan skickades men en efterföljande åtgärd misslyckades (verifikation eller PDF-bilaga).
INVOICE_SEND_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_UPDATE_NOT_DRAFT
HTTP 409: Conflict
Only draft invoices can be updated. Issued invoices are immutable: issue a credit note instead.
Swedish: Endast utkast kan ändras. Bokförda fakturor är oföränderliga: utfärda en kreditfaktura istället.
Remediation: Issue a credit note via POST /invoices/{id}:credit and create a fresh invoice with the corrected details.
Supplier invoices
AP lifecycle: register, approve, mark paid, credit.
SUPPLIER_CREATE_FAILED
HTTP 500: Server error
Failed to create supplier.
Swedish: Leverantören kunde inte skapas.
SUPPLIER_DELETE_FAILED
HTTP 500: Server error
Failed to delete supplier.
Swedish: Leverantören kunde inte tas bort.
SUPPLIER_DUPLICATE_ORG_NUMBER
HTTP 409: Conflict
A supplier with that organisation number already exists.
Swedish: En leverantör med samma organisationsnummer finns redan.
SUPPLIER_HAS_INVOICES
HTTP 409: Conflict
Supplier cannot be archived while open supplier invoices reference it.
Swedish: Leverantören kan inte arkiveras eftersom det finns öppna leverantörsfakturor som refererar till den.
Remediation: Close (credit / mark paid) every open supplier invoice before archiving the supplier. The dashboard exposes the same blocker.
SUPPLIER_NOT_FOUND
HTTP 404: Not found
Supplier not found.
Swedish: Leverantören kunde inte hittas.
SUPPLIER_UPDATE_FAILED
HTTP 500: Server error
Failed to update supplier.
Swedish: Leverantören kunde inte uppdateras.
Transactions
Bank transaction ingest, categorisation, matching.
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_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).
MATCH_INVOICE_LINK_TX_FAILED
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.
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_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.
MATCH_SI_LINK_TX_FAILED
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_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_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_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.
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.
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_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_TOO_LARGE
HTTP 400: Bad request
File exceeds the 10 MB size limit.
Swedish: Filen är för stor. Maxstorlek är 10 MB.
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_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_UNEXPECTED
HTTP 500: Server error
Unexpected error during SIE import; no data was committed.
Swedish: Importen avbröts oväntat. Ingen data har sparats.
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.
Salary + AGI
Payroll lifecycle, AGI generation, KU declarations.
AGI_FSKATT_VERIFICATION_FAILED
HTTP 400: Bad request
F-skatt verification failed.
Swedish: F-skattekontrollen misslyckades. Kontrollera leverantörens F-skatt.
AGI_GENERATE_NOT_BOOKABLE
HTTP 400: Bad request
AGI can only be generated for salary runs in review, approved, paid, booked, or corrected status.
Swedish: AGI kan endast genereras för lönekörningar i status review, approved, paid, booked eller corrected.
AGI_GENERATION_FAILED
HTTP 500: Server error
Failed to generate AGI declaration.
Swedish: AGI-deklarationen kunde inte genereras.
AGI_INCOMPLETE_DATA
HTTP 400: Bad request
AGI data is incomplete: verify the company has org number, contact name, phone, and email.
Swedish: AGI-data ofullständig: kontrollera att företaget har organisationsnummer, kontaktnamn, telefon och e-post.
AGI_NO_SALARY_RUN
HTTP 400: Bad request
No salary run exists for the period.
Swedish: Det finns ingen lönekörning för perioden.
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_PAYSLIPS_NO_EMPLOYEES
HTTP 400: Bad request
No employees in the salary run.
Swedish: Inga anställda i lönekörningen.
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_RUN_APPROVE_NOT_REVIEW
HTTP 400: Bad request
Salary run must be in review status to approve.
Swedish: Lönekörningen måste vara i status review för godkännande.
SALARY_RUN_APPROVE_VALIDATION_FAILED
HTTP 400: Bad request
Validation failed: fix issues before approving.
Swedish: Valideringsfel: korrigera innan godkännande.
SALARY_RUN_BOOK_FAILED
HTTP 500: Server error
Failed to book salary run.
Swedish: Lönekörningen kunde inte bokföras.
SALARY_RUN_BOOK_NOT_PAID
HTTP 400: Bad request
Salary run must be marked paid before booking.
Swedish: Lönekörningen måste vara markerad som betald för bokföring.
SALARY_RUN_CALCULATE_FAILED
HTTP 500: Server error
Failed to calculate salary run.
Swedish: Lönekörningen kunde inte beräknas.
SALARY_RUN_CALCULATE_NOT_DRAFT
HTTP 400: Bad request
Salary run must be in draft status to calculate.
Swedish: Lönekörningen måste vara i status draft för beräkning.
SALARY_RUN_CREATE_FAILED
HTTP 500: Server error
Failed to create salary run.
Swedish: Lönekörningen kunde inte skapas.
SALARY_RUN_DELETE_HAS_JOURNAL_ENTRY
HTTP 400: Bad request
Salary run is linked to a journal entry and cannot be deleted (BFL 5 kap räkenskapsinformation).
Swedish: Lönekörningen är kopplad till en verifikation och kan inte raderas (BFL 5 kap räkenskapsinformation).
SALARY_RUN_DELETE_NOT_DRAFT
HTTP 400: Bad request
Only draft salary runs can be deleted.
Swedish: Endast utkast (draft) kan raderas.
SALARY_RUN_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_MARK_PAID_NOT_APPROVED
HTTP 400: Bad request
Salary run must be approved before it can be marked paid.
Swedish: Lönekörningen måste vara godkänd för att markeras som betald.
SALARY_RUN_NOT_CALCULATED
HTTP 400: Bad request
Salary run must be calculated before booking.
Swedish: Lönekörningen måste beräknas innan bokföring.
SALARY_RUN_NOT_FOUND
HTTP 404: Not found
Salary run not found.
Swedish: Lönekörningen kunde inte hittas.
SALARY_RUN_NO_EMPLOYEES
HTTP 400: Bad request
No active employees in the company.
Swedish: Inga aktiva anställda finns i företaget.
SALARY_RUN_PATCH_NOT_DRAFT
HTTP 400: Bad request
Only draft salary runs can be patched.
Swedish: Endast utkast (draft) kan uppdateras.
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_TAX_TABLE_MISSING
HTTP 400: Bad request
Tax table is missing for the period.
Swedish: Skattetabellen saknas för perioden. Importera skattetabellen först.
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.
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_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_CONNECT_FAILED
HTTP 500: Server error
Failed to start provider connection flow.
Swedish: Kunde inte starta anslutningen till leverantören.
PROVIDER_CONSENT_NOT_FOUND
HTTP 404: Not found
Provider consent not found.
Swedish: Anslutningen kunde inte hittas.
PROVIDER_CONSENT_NOT_READY
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_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 the connection because the integration license is not active. Activate the "Fortnox Integration" add-on in your Fortnox account, then reconnect. You can also import via SIE file in the meantime.
Swedish: Fortnox nekade anslutningen eftersom integrationslicensen inte är aktiv. Aktivera tilläggstjänsten "Fortnox Integration" i ditt Fortnox-konto (Inställningar → Tilläggstjänster) och återanslut sedan. 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_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 and invoices 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 och fakturor 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 credentials. Check that the account ID and application token are correct and try again.
Swedish: Leverantören avvisade uppgifterna. Kontrollera att konto-ID och applikationstoken stämmer 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
Failed to submit provider token.
Swedish: Tokensubmissionen misslyckades.
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
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
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.
ARTICLE_CREATE_FAILED
HTTP 500: Server error
Failed to create article.
Swedish: Artikeln kunde inte skapas.
ARTICLE_DUPLICATE_NUMBER
HTTP 409: Conflict
An article with that article number already exists.
Swedish: En artikel med samma artikelnummer finns redan.
ARTICLE_NOT_FOUND
HTTP 404: Not found
Article not found.
Swedish: Artikeln kunde inte hittas.
ARTICLE_REVENUE_ACCOUNT_INVALID
HTTP 400: Bad request
The revenue account does not exist or is not an active class-3 income account.
Swedish: Försäljningskontot finns inte eller är inte ett aktivt intäktskonto (klass 3).
ARTICLE_UPDATE_FAILED
HTTP 500: Server error
Failed to update article.
Swedish: Artikeln kunde inte uppdateras.
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.
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.
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_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.
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_NOT_FOUND
HTTP 404: Not found
Transaction not found.
Swedish: Transaktionen kunde inte hittas.
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.
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_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_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_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_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.
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§).
Swedish: Alla transaktioner i en samlingsbokföring måste ha samma datum (BFL 5 kap 6§).
BULK_BOOK_DIRECTION_MISMATCH
HTTP 400: Bad request
All transactions must be the same direction (all income or all expense).
Swedish: Alla transaktioner måste vara samma riktning (alla intäkter eller alla utgifter).
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_CORRECT_NON_POSTED
HTTP 400: Bad request
Only posted entries can be corrected.
Swedish: Endast bokförda verifikationer kan rättas.
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 or correction entry cannot be reversed.
Swedish: En stornering eller rättelse kan inte stornas.
CURRENCY_REVALUATION_ALREADY_EXISTS
HTTP 409: Conflict
Currency revaluation already exists for this period.
Swedish: En valutaomvärdering finns redan för denna period.
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_SYSTEM_RENAME
HTTP 400: Bad request
System dimensions (kostnadsställe/projekt) cannot be renamed.
Swedish: Systemdimensioner kan inte döpas om.
DIMENSION_UPDATE_FAILED
HTTP 500: Server error
Failed to update dimension.
Swedish: Dimensionen kunde inte uppdateras.
DIMENSION_VALIDATION_FAILED
HTTP 400: Bad request
One or more dimension codes on the entry lines are missing from the dimension registry or archived. details.issues lists each offending sie_dim_no/code.
Swedish: Ett angivet kostnadsställe/projekt finns inte i dimensionsregistret eller är arkiverat. Skapa värdet i registret först.
Remediation: Create the missing dimension value in the register (or re-activate the archived value), then retry. Only companies with dimensions enabled are validated; each issue in details.issues carries sie_dim_no, code and reason (unknown_dimension | unknown_value | archived_value).
DIMENSION_VALUE_CREATE_FAILED
HTTP 500: Server error
Failed to create dimension value.
Swedish: Dimensionsvärdet kunde inte skapas.
DIMENSION_VALUE_DATES_NOT_ALLOWED
HTTP 400: Bad request
Start/end dates can only be set on accumulating dimensions (e.g. projects): this dimension resets annually.
Swedish: Datum kan bara sättas på ackumulerande dimensioner (t.ex. projekt).
DIMENSION_VALUE_DELETE_FAILED
HTTP 500: Server error
Failed to delete dimension value.
Swedish: Dimensionsvärdet kunde inte tas bort.
DIMENSION_VALUE_DUPLICATE_CODE
HTTP 409: Conflict
A value with that code already exists in the dimension.
Swedish: Ett värde med samma kod finns redan i dimensionen.
DIMENSION_VALUE_NOT_FOUND
HTTP 404: Not found
Dimension value not found.
Swedish: Dimensionsvärdet kunde inte hittas.
DIMENSION_VALUE_REFERENCED
HTTP 409: Conflict
The value is referenced by posted vouchers and cannot be deleted: archive (inactivate) it instead.
Swedish: Värdet används på bokförda verifikat och kan inte tas bort: arkivera det istället.
Remediation: Archive the value instead: PATCH the dimension value with { "is_active": false }. Codes referenced by posted lines are retained for the BFL 7-year period.
DIMENSION_VALUE_UPDATE_FAILED
HTTP 500: Server error
Failed to update dimension value.
Swedish: Dimensionsvärdet kunde inte uppdateras.
DOC_DOWNLOAD_FAILED
HTTP 500: Server error
Failed to create signed download URL.
Swedish: Det gick inte att skapa nedladdningslänken.
DOC_LINK_ALREADY_LINKED
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.
DOC_LINK_FAILED
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_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.
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
EXTENSION_DISABLED
HTTP 503
The Skatteverket integration is not enabled in this environment.
Swedish: Skatteverket-integrationen är inte aktiverad i denna miljö.
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
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.
LINK_SI_VOUCHER_ALREADY_LINKED
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.
LINK_SI_VOUCHER_AMOUNT_EXCEEDS_REMAINING
HTTP 400: Bad request
The voucher's AP debit 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 leverantörsskuldsdebitering ä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.
LINK_SI_VOUCHER_CURRENCY_MISMATCH
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.
LINK_SI_VOUCHER_DB_ERROR
HTTP 500: Server error
Database error while linking the voucher. Please retry.
Swedish: Databasfel under länkning. Försök igen.
LINK_SI_VOUCHER_INVOICE_FULLY_PAID
HTTP 409: Conflict
Supplier invoice is already fully paid.
Swedish: Leverantörsfakturan har redan slutbetalats. Inget mer behöver länkas.
LINK_SI_VOUCHER_INVOICE_NOT_FOUND
HTTP 404: Not found
Supplier invoice not found.
Swedish: Leverantörsfakturan kunde inte hittas.
LINK_SI_VOUCHER_NOT_POSTED
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.
LINK_SI_VOUCHER_NO_AP_DEBIT
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
LINK_SI_VOUCHER_VOUCHER_NOT_FOUND
HTTP 404: Not found
Journal entry not found.
Swedish: Verifikationen kunde inte hittas.
LINK_TX_INVOICE_CURRENCY_MISMATCH
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.
LINK_TX_INVOICE_NOT_FOUND
HTTP 404: Not found
Invoice not found.
Swedish: Fakturan kunde inte hittas.
LINK_TX_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 kopplas.
LINK_TX_INVOICE_RACE
HTTP 409: Conflict
Invoice status changed concurrently. Retry the request.
Swedish: Fakturan ändrades samtidigt. Försök igen.
LINK_TX_JE_NOT_FOUND
HTTP 404: Not found
Journal entry not found.
Swedish: Verifikationen kunde inte hittas.
LINK_TX_JE_NOT_POSTED
HTTP 400: Bad request
Only posted journal entries can be linked to a transaction.
Swedish: Endast bokförda verifikationer kan kopplas till en banktransaktion.
LINK_TX_TX_ALREADY_LINKED
HTTP 400: Bad request
Transaction is already linked to a journal entry.
Swedish: Transaktionen är redan kopplad till en verifikation.
LINK_VOUCHER_ALREADY_LINKED
HTTP 409: Conflict
This journal entry is already linked to this invoice.
Swedish: Verifikationen är redan länkad till den här fakturan.
LINK_VOUCHER_AMOUNT_EXCEEDS_REMAINING
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.
LINK_VOUCHER_CURRENCY_MISMATCH
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.
LINK_VOUCHER_DB_ERROR
HTTP 500: Server error
Database error while linking the voucher. Please retry.
Swedish: Databasfel under länkning. Försök igen.
LINK_VOUCHER_INVOICE_FULLY_PAID
HTTP 409: Conflict
Invoice is already fully paid.
Swedish: Fakturan har redan slutbetalats. Inget mer behöver länkas.
LINK_VOUCHER_INVOICE_NOT_FOUND
HTTP 404: Not found
Invoice not found.
Swedish: Fakturan kunde inte hittas.
LINK_VOUCHER_NOT_POSTED
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.
LINK_VOUCHER_NO_AR_CREDIT
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
LINK_VOUCHER_VOUCHER_NOT_FOUND
HTTP 404: Not found
Journal entry not found.
Swedish: Verifikationen kunde inte hittas.
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.
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_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_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_BAL_PERIOD_NOT_FOUND
HTTP 404: Not found
Fiscal period not found.
Swedish: Räkenskapsperioden kunde inte hittas.
PO_LINK_REQUIRED
HTTP 422: Unprocessable
Company settings require every supplier invoice to be linked to a purchase order.
Swedish: Inställningarna kräver att varje leverantörsfaktura kopplas till en inköpsorder.
PO_NOT_FOUND
HTTP 404: Not found
Purchase order not found.
Swedish: Inköpsordern kunde inte hittas.
PO_THREE_WAY_MATCH_FAILED
HTTP 422: Unprocessable
Three-way match failed: the supplier invoice does not reconcile with the purchase order / goods receipt.
Swedish: Trevägs-matchning misslyckades: leverantörsfakturan stämmer inte med inköpsordern eller godsmottagningen.
QUOTE_CONVERSION_FAILED
HTTP 500: Server error
Failed to convert quote to invoice.
Swedish: Offerten kunde inte konverteras till faktura.
QUOTE_INVALID_STATE
HTTP 400: Bad request
Quote is not in a state that allows this action.
Swedish: Offerten är inte i en status som tillåter denna åtgärd.
QUOTE_NOT_FOUND
HTTP 404: Not found
Quote not found.
Swedish: Offerten kunde inte hittas.
QUOTE_NOT_QUOTE
HTTP 400: Bad request
This document is not a quote.
Swedish: Detta dokument är inte en offert.
QUOTE_NUMBER_ASSIGN_FAILED
HTTP 500: Server error
Failed to assign quote number.
Swedish: Kunde inte tilldela offertnummer.
QUOTE_TOKEN_INVALID
HTTP 404: Not found
The link is invalid or has expired.
Swedish: Länken är ogiltig eller har gått ut.
REG_IMPORT_EXECUTE_FAILED
HTTP 500: Server error
Register import failed.
Swedish: Importen misslyckades.
REG_IMPORT_FILE_TOO_LARGE
HTTP 400: Bad request
File exceeds the 10 MB size limit.
Swedish: Filen är för stor. Maxstorlek är 10 MB.
REG_IMPORT_INVALID_COLUMN_OVERRIDES
HTTP 400: Bad request
Invalid column overrides JSON.
Swedish: Ogiltig kolumnmappning.
REG_IMPORT_INVALID_FORMAT
HTTP 400: Bad request
Unsupported file format.
Swedish: Filformatet stöds inte. Tillåtna format: .xlsx, .xls, .csv, .ods.
REG_IMPORT_NO_FILE
HTTP 400: Bad request
No file attached.
Swedish: Ingen fil bifogad.
REG_IMPORT_NO_ROWS
HTTP 400: Bad request
No valid rows found in the file.
Swedish: Inga giltiga rader hittades i filen.
REG_IMPORT_PARSE_FAILED
HTTP 500: Server error
Failed to parse the register file.
Swedish: Kunde inte tolka filen.
ROT_RUT_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.
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_REQUEST_NOT_FOUND
HTTP 404: Not found
Payout request not found.
Swedish: Begäran om utbetalning hittades inte.
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.
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 .sie or .se file.
Swedish: Filtypen stöds inte. Ladda upp en fil med ändelsen .sie eller .se.
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_UNDO_FAILED
HTTP 400: Bad request
Failed to undo SIE import.
Swedish: SIE-importen kunde inte ångras.
SI_APPROVE_NOT_REGISTERED
HTTP 400: Bad request
Only invoices in registered status can be approved.
Swedish: Endast registrerade fakturor kan godkännas.
SI_APPROVE_UPDATE_FAILED
HTTP 500: Server error
Failed to update supplier invoice status to approved.
Swedish: Kunde inte godkänna leverantörsfakturan.
SI_CREATE_ACCRUAL_REVERSE_CHARGE
HTTP 400: Bad request
Periodisering cannot be combined with reverse charge. The expense line carries the VAT base for the VAT declaration (boxes 20-32), so the net amount cannot be deferred to an interim account.
Swedish: Periodisering kan inte kombineras med omvänd skattskyldighet. Kostnadsraden utgör momsunderlaget i momsdeklarationen (ruta 20-32), så nettobeloppet kan inte skjutas upp till ett interimskonto.
SI_CREATE_DUPLICATE_INVOICE_NUMBER
HTTP 409: Conflict
A supplier invoice with that number already exists.
Swedish: En leverantörsfaktura med samma nummer finns redan.
SI_CREATE_FAILED
HTTP 500: Server error
Failed to create supplier invoice.
Swedish: Leverantörsfakturan kunde inte skapas.
SI_CREATE_INVALID_INPUT
HTTP 400: Bad request
Invalid combination of supplier invoice fields.
Swedish: Ogiltig kombination av fakturafält. Kontrollera formuläret och försök igen.
SI_CREATE_NO_FISCAL_PERIOD
HTTP 400: Bad request
No fiscal year covers the invoice date. Create the fiscal year first, or change the invoice date.
Swedish: Det finns inget räkenskapsår som täcker fakturadatumet. Lägg upp räkenskapsåret först, eller ändra fakturadatumet.
SI_CREDIT_ALREADY_CREDITED
HTTP 409: Conflict
Supplier invoice has already been credited.
Swedish: Leverantörsfakturan har redan krediterats.
SI_CREDIT_FAILED
HTTP 500: Server error
Failed to credit supplier invoice.
Swedish: Kunde inte kreditera leverantörsfakturan.
SI_CREDIT_PERIOD_LOCKED
HTTP 400: Bad request
Bookkeeping is locked; credit note cannot be created.
Swedish: Bokföringen är låst. Krediteringen kan inte skapas.
SI_DELETE_HAS_BOOKING
HTTP 400: Bad request
The supplier invoice has a posted journal entry or an accrual schedule and cannot be deleted. Create a credit note instead to reverse the bookkeeping.
Swedish: Leverantörsfakturan är bokförd eller har en periodisering och kan inte tas bort. Skapa en kreditfaktura i stället för att återställa bokföringen.
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 unlinked bank transaction was found for this supplier. Suggest linking it instead of creating a new payment entry.
Swedish: Det finns redan en obokförd 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-supplier-invoice, or resend mark-paid with force: true to create the payment entry anyway.
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.
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_NOT_CONNECTED
HTTP 401: Unauthorized
No valid Skatteverket connection. Reconnect with BankID before retrying.
Swedish: Anslutningen till Skatteverket saknas eller har gått ut. Anslut med BankID under Inställningar → Skatteverket.
Remediation: Connect (or reconnect) to Skatteverket with BankID under Settings → Skatteverket, then retry.
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.
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_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_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_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_INGEST_INSERT_FAILED
HTTP 500: Server error
Transaction ingest failed.
Swedish: Transaktionerna kunde inte importeras.
TX_UNCATEGORIZE_JE_NOT_POSTED
HTTP 400: Bad request
Journal entry is not in posted status; reversal is not possible.
Swedish: Verifikationen är inte bokförd. Reversal kan inte utföras.
TX_UNCATEGORIZE_NOT_BOOKED
HTTP 400: Bad request
Transaction has no journal entry: nothing to uncategorize.
Swedish: Transaktionen är inte bokförd. Det finns inget att av-kategorisera.
TX_UNCATEGORIZE_NO_LINKED_ENTRY
HTTP 400: Bad request
Transaction has no linked journal entry to reverse.
Swedish: Transaktionen har ingen kopplad verifikation att stornera.