NAV Refund Claims
NAV refund claims (inntektsmeldinger) allow employers to claim reimbursement from NAV (the Norwegian Labour and Welfare Administration) for employee absences. The API supports preparing and submitting claims for sick pay, parental leave, and care days.
Claims are created from existing employee leaves and submitted to NAV via the Altinn/Maskinporten integration.
Endpoints
List Claims
GET /api/v2/payroll/nav-claims
Retrieves a paginated list of NAV refund claims.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| client_account_id | integer | Yes | Filter by client account |
| business_partner_id | integer | No | Filter by employee |
| claim_type | string | No | Filter by claim type: SYKEPENGER, FORELDREPENGER, or PLEIEPENGER |
| status | string | No | Filter by status: DRAFT, SUBMITTED, ACCEPTED, or REJECTED |
Response
{
"data": [
{
"id": 1,
"created_by_id": 7,
"created_at": "2024-06-01T10:00:00Z",
"client_account_id": 7,
"business_partner_id": 56,
"leave_id": 12,
"claim_type": "SYKEPENGER",
"status": "SUBMITTED",
"monthly_income": "45000.000000",
"first_absence_date": "2024-05-15",
"arbeidsforhold_id": "1",
"payload": { },
"response": { },
"error_details": null,
"submitted_at": "2024-06-01T10:05:00Z",
"submitted_by_id": 7,
"nav_case_id": "NAV-2024-12345",
"nav_referanse_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"innsending_id": null,
"aarsak_innsending": "Ny",
"forespoersel_id": 1
}
],
"meta": {
"page": 1,
"pages": 1,
"per_page": 50,
"records": 1
}
}
Get Claim
GET /api/v2/payroll/nav-claims/{id}
Retrieves a specific NAV refund claim by ID.
Response
Returns a single claim object (same shape as the list response items).
Create Claim
POST /api/v2/payroll/nav-claims
Prepares a new NAV refund claim from an existing employee leave record. The claim is created in DRAFT status with a pre-calculated monthly income and NAV payload.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| leave_id | integer | Yes | ID of the employee leave to create a claim for |
| nav_referanse_id | string | Yes | NAV reference ID from a forespørsel. Links the claim to the NAV inquiry |
| contact_name | string | Yes | Contact person name for NAV to reach out to |
| contact_phone | string | Yes | Contact person phone number |
| aarsak_innsending | string | No | Submission reason: Ny (new, default) or Endring (correction) |
| forespoersel_id | integer | No | ID of the linked NAV forespørsel record in Snapbooks |
Example Request
{
"leave_id": 12,
"nav_referanse_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"contact_name": "Ola Nordmann",
"contact_phone": "+4791234567"
}
Response
Returns the created claim with status 201 Created.
How Monthly Income is Calculated
The system calculates the employee’s average monthly income by looking at the 3 most recent posted payroll runs before the leave start date. It sums all taxable earnings from those runs and divides by 3.
Leave Type to Claim Type Mapping
| Leave Type | Claim Type |
|---|---|
| SICK_SELF_CERTIFIED | SYKEPENGER |
| SICK_DOCTOR_CERTIFIED | SYKEPENGER |
| PARENTAL | FORELDREPENGER |
| CARE_DAYS | PLEIEPENGER |
Submit Claim
POST /api/v2/payroll/nav-claims/{id}/submit
Submits a draft claim to NAV. The claim must be in DRAFT status and must have a nav_referanse_id (claims created against the old NAV API without a reference must be re-created). After submission, the status is updated to either SUBMITTED (success) or REJECTED (failure).
Response
Returns the updated claim object.
Submission Results
- Success: Status is set to
SUBMITTED,nav_case_idis populated with the NAV case reference, andsubmitted_atis recorded. - Failure: Status is set to
REJECTEDanderror_detailscontains the error information from the NAV API.
Example Error Details (on rejection)
{
"error_details": {
"status_code": 422,
"message": "Validation failed",
"response_body": "..."
}
}
Attributes
| Attribute | Type | Description |
|---|---|---|
| id | integer | Unique identifier (read-only) |
| created_by_id | integer | ID of the creating user (read-only) |
| created_at | datetime | Creation timestamp (read-only) |
| client_account_id | integer | ID of the client account (read-only) |
| business_partner_id | integer | ID of the employee (read-only) |
| leave_id | integer | ID of the associated employee leave (read-only) |
| claim_type | string | Type of claim: SYKEPENGER, FORELDREPENGER, or PLEIEPENGER (read-only) |
| status | string | Current status: DRAFT, SUBMITTED, ACCEPTED, or REJECTED (read-only) |
| monthly_income | decimal | Calculated average monthly income (read-only) |
| first_absence_date | date | First day of absence (read-only) |
| arbeidsforhold_id | string | Employment relationship ID for NAV (read-only) |
| payload | object | The NAV inntektsmelding request payload (read-only) |
| response | object | The NAV API response (read-only) |
| error_details | object | Error information if submission failed (read-only) |
| submitted_at | datetime | When the claim was submitted (read-only) |
| submitted_by_id | integer | ID of the user who submitted the claim (read-only) |
| nav_case_id | string | NAV case/claim reference number (read-only) |
| nav_referanse_id | string | NAV reference ID from the forespørsel (read-only) |
| innsending_id | string | NAV submission ID returned after successful delivery (read-only) |
| aarsak_innsending | string | Submission reason: Ny (new) or Endring (correction) (read-only) |
| forespoersel_id | integer | ID of the linked NAV forespørsel record (read-only) |
Claim Types
| Value | Norwegian | Description |
|---|---|---|
| SYKEPENGER | Sykepenger | Sick pay refund |
| FORELDREPENGER | Foreldrepenger | Parental leave pay refund |
| PLEIEPENGER | Pleiepenger | Care/nursing days pay refund |
Claim Statuses
| Value | Description |
|---|---|
| DRAFT | Claim prepared but not yet submitted to NAV |
| SUBMITTED | Successfully submitted to NAV, awaiting processing |
| ACCEPTED | Accepted by NAV |
| REJECTED | Rejected by NAV or submission failed |
Error Responses
| Status Code | Description |
|---|---|
| 400 | Invalid request (missing required fields, invalid aarsak_innsending, claim not in DRAFT status, or claim missing nav_referanse_id) |
| 403 | Forbidden (no access to client account) |
| 404 | Claim or employee leave not found |
Business Rules
- Claims are created from existing employee leave records — you cannot create a claim without a leave
- Claims must be linked to a NAV forespørsel via
nav_referanse_id— sync forespørsler first to obtain the reference - All claim fields are read-only after creation; the system calculates income and builds the NAV payload automatically
- Only claims in
DRAFTstatus can be submitted, and they must have anav_referanse_id - The employer sick pay period (arbeidsgiverperioden) is 16 days and is automatically included in sick pay claims
Related Resources
- NAV Forespørsler — NAV inquiries that provide the
nav_referanse_idrequired for creating claims - Payroll Leaves — employee leave records that claims are based on
- Payroll Contracts — employment contracts
- Payroll Runs — used for monthly income calculation