Voucher Statements

A voucher statement records structured metadata about a voucher (an uploaded accounting document). It captures business context that cannot be read directly from the file itself — the purpose of the expense, who participated, how it was paid, the payor, and any project, category, or tags it relates to. Statements are commonly used to document representation and entertainment expenses where Norwegian accounting rules require the purpose and participants to be recorded.

Voucher statements are nested under a voucher. The voucher_id in the path is the ID of the voucher (an uploaded file).

Endpoints

Method Endpoint Description
GET /vouchers/{voucher_id}/statements List the statements attached to a voucher
POST /vouchers/{voucher_id}/statements Create a statement on a voucher

Authentication

All requests require a valid Authorization: Bearer token. The authenticated user must have access to the client account that owns the voucher; otherwise the request is rejected with 403 Forbidden.


List Voucher Statements

GET /api/v2/vouchers/{voucher_id}/statements

Returns the voucher statements belonging to the given voucher. The response is paginated.

Query Parameters

Parameter Type Required Description
page integer No Page number for pagination (default: 1)
per_page integer No Number of items per page (default: 100)
with string No Comma-separated list of relations to include. Supported: created_by, payor, project, collection, tags

Example Request

curl "https://api.snapbooks.no/v2/vouchers/4567/statements?with=payor,project" \
  -H "Authorization: Bearer YOUR_TOKEN"

Create Voucher Statement

POST /api/v2/vouchers/{voucher_id}/statements

Creates a statement on the voucher. The voucher_id and client_account_id are taken from the voucher in the path, and created_by_id and user_id are set to the authenticated user — any values for these fields in the request body are ignored.

Request Body

Field Type Required Description
voucher_category_id integer No ID of the voucher category
item_categories string No One or more item category enum values, separated by commas, semicolons, or spaces (max 255 characters). See Item Categories
purpose string No Purpose of the expense (enum value, max 100 characters). See Purposes
participant_information string No Participants involved, e.g. for representation expenses (max 500 characters)
additional_information string No Any additional notes (max 500 characters)
payment_method string No How the voucher was paid. See Payment Methods
payor_id integer No ID of the business partner that paid
project_id integer No ID of the project this statement relates to
collection_id integer No ID of the voucher collection this statement belongs to
tags array No Array of tag objects identified by id, e.g. [{ "id": 12 }]

Payment Methods

Value Description
PRIVATE_ACCOUNT Paid from a private bank account
PRIVATE_CARD Paid with a private card
BUSINESS_ACCOUNT Paid from a business bank account
BUSINESS_CARD Paid with a business card
NOT_PAID Not yet paid
NOT_PAYABLE Nothing to pay
OTHER Other payment method

Purposes

The purpose field accepts a single enum value. Any other value is rejected with 400 Invalid purpose.

Value Description
MAINTENANCE_OF_OWN_ASSETS Maintenance of the company’s own assets
BUILD_PHYSICAL_PRODUCT Used to build a physical product
USED_IN_CUSTOMER_PROJECTS Used in customer projects
FOR_RESALE Purchased for resale
WORKPLACE_EQUIPMENT Workplace equipment
INCREASE_SALES To increase sales
INTERNAL_EMPLOYEE_EVENTS Internal employee events
OVERTIME_TRAVEL_INCONVENIENT_WORKING_HOURS Overtime, travel, or inconvenient working hours

Item Categories

The item_categories field accepts one or more enum values separated by commas, semicolons, or whitespace (e.g. "ELECTRONICS, OFFICE_OR_WAREHOUSE_SPACE"). Any value not in the list below is rejected with 400 Invalid item category.

Value Description
ELECTRONICS Electronics
FOOD Food
HOUSEHOLD_ITEMS Household items
OFFICE_OR_WAREHOUSE_SPACE Office or warehouse space
FUEL Fuel
VEHICLES Vehicles
HIRED_LABOR_CONSULTANCY Hired labor or consultancy
BROADBAND_TELEPHONY Broadband or telephony
ELECTRICITY Electricity
BUILDING_MATERIALS Building materials
SOFTWARE_CLOUD_SERVICES Software or cloud services
CLOTHING Clothing
TRANSPORT_TRAVEL Transport or travel
TOOLS Tools
FURNITURE_INTERIOR Furniture or interior
CLEANING_EQUIPMENT Cleaning equipment
WELLNESS_ITEMS Wellness items
ADVERTISING Advertising
SHIPPING_POSTAGE_CUSTOMS Shipping, postage, or customs
INSURANCE Insurance
PAYMENT_SERVICES_FEES Payment services or fees
MEDICAL_SUPPLIES Medical supplies
BOOKS_MAGAZINES Books or magazines
EDUCATION_TRAINING Education or training
ENTERTAINMENT Entertainment
GIFTS_NOVELTIES Gifts or novelties
HARDWARE Hardware
LEGAL_SERVICES Legal services
OUTDOOR_GARDEN Outdoor or garden
PET_SUPPLIES Pet supplies
SPORTS_FITNESS Sports or fitness
TOYS_GAMES Toys or games
TRAVEL_ACCOMMODATION Travel or accommodation

Example Request

curl -X POST "https://api.snapbooks.no/v2/vouchers/4567/statements" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "purpose": "INTERNAL_EMPLOYEE_EVENTS",
    "item_categories": "FOOD, ENTERTAINMENT",
    "participant_information": "Jane Doe (Acme AS), John Smith (Snapbooks AS)",
    "payment_method": "BUSINESS_CARD",
    "payor_id": 56,
    "project_id": 8,
    "tags": [{ "id": 12 }]
  }'

Example Response (201 Created)

{
  "id": 9001,
  "created_at": "2026-06-02T10:15:00Z",
  "created_by_id": 7,
  "client_account_id": 7,
  "voucher_id": 4567,
  "voucher_category_id": null,
  "item_categories": "FOOD, ENTERTAINMENT",
  "purpose": "INTERNAL_EMPLOYEE_EVENTS",
  "participant_information": "Jane Doe (Acme AS), John Smith (Snapbooks AS)",
  "additional_information": null,
  "payment_method": "BUSINESS_CARD",
  "payor_id": 56,
  "project_id": 8,
  "collection_id": null
}

Attributes

Attribute Type Description
id integer The unique ID of the statement (read-only)
created_at datetime When the statement was created (read-only)
created_by_id integer ID of the user that created the statement (read-only)
client_account_id integer ID of the client account the statement belongs to
voucher_id integer ID of the voucher (uploaded file) the statement is attached to
voucher_category_id integer ID of the voucher category
item_categories string One or more item category enum values, separated by commas, semicolons, or spaces. See Item Categories
purpose string Purpose of the expense (enum value). See Purposes
participant_information string Participants involved
additional_information string Additional notes
payment_method string Payment method. See Payment Methods
payor_id integer ID of the business partner that paid
project_id integer ID of the related project
collection_id integer ID of the related voucher collection

Relations

Relation Type Description
created_by User The user that created the statement
payor Business Partner The business partner that paid
project Project The related project
collection Voucher Collection The voucher collection the statement belongs to
tags Tag[] Tags applied to the statement

Relations are opt-in. Request them through with, e.g. ?with=payor,project,tags.

Error Responses

Status Description
400 Validation error — Invalid purpose, Invalid item category, or a tag that does not exist or belongs to a different client account
403 Voucher belongs to a client account the user cannot access
404 Voucher not found