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"
}
],
"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 |
Example Request
{
"leave_id": 12
}
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. 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) |
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 leave_id, claim not in DRAFT status) |
| 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
- 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 - The employer sick pay period (arbeidsgiverperioden) is 16 days and is automatically included in sick pay claims
Related Resources
- Payroll Leaves — employee leave records that claims are based on
- Payroll Contracts — employment contracts
- Payroll Runs — used for monthly income calculation