Menu

Skatteverket

Read what Skatteverket has on file for the company, such as filed VAT declarations and their decisions.

Endpoints


GET /api/v1/companies/:companyId/skatteverket/vat-declarations

skatteverket.vat_declarations.get · scope compliance:read

Read a filed momsdeklaration (submitted and/or decided) from Skatteverket.

Fetches the momsdeklaration for one period as Skatteverket has it on file: submitted is the declaration as filed (SKV /inlamnat), decided is Skatteverket's beslut (SKV /beslutat). Either section is null when nothing is on file for the period (or when excluded via ?state=). Query params: period_type (monthly|quarterly|yearly), year, period (1-12 monthly, 1-4 quarterly, 1 yearly), optional state (submitted|decided|both, default both). Requires the company to have an active Skatteverket connection (any member's BankID connection, or a verified ombud grant). Live read against Skatteverket, not a cached copy.

Use when: You want to verify what was actually filed for a VAT period, compare a period against last year's filed declaration, or check whether Skatteverket has decided a period.

Don't use for: Computing the declaration from the books (use the VAT report), or filing: submission is a separate BankID-signed flow.

Pitfalls

  • This is a live Skatteverket read: it fails with SKATTEVERKET_NOT_CONNECTED (401) when the company has neither a member's BankID connection (made under Installningar) nor a verified ombud grant, and the response reflects SKV's state, not the books. Personal BankID sessions expire after ~1 hour by design, so an expired connection is normal: ask the user to reconnect; only a person can, so do not retry until they confirm.
  • submitted=null and decided=null with HTTP 200 means "nothing on file for the period": it is not an error.
  • A submitted declaration can lack a beslut for days: poll decided separately rather than assuming both appear together.
  • redovisningsperiod is SKV's YYYYMM format (the period's LAST month): quarterly period 1 is 03, not 01.

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

Query parameters

NameTypeRequired
period_type"monthly" | "quarterly" | "yearly"yes
yearnumberyes
periodnumberyes
state"submitted" | "decided" | "both"no

Response fields

NameType
redovisarestring
redovisningsperiodstring
submittedunknown (optional)
decidedunknown (optional)

Example request

{
  "period_type": "quarterly",
  "year": 2026,
  "period": 1
}

Example response

{
  "data": {
    "redovisare": "165560000167",
    "redovisningsperiod": "202603",
    "submitted": {
      "mervardesskattTillfalle": "2026-04-10"
    },
    "decided": null
  },
  "meta": {
    "request_id": "req_…",
    "api_version": "2026-05-12"
  }
}