Developers

PUBLIC API v1

Create a product

POST /api/v1/companies/{company_pk}/products/

Create a catalog product or service for the company.

Permission: write_invoices · Direct link

Company-scoped. Account permissions, plan limits and document state still apply.

Path and query parameters

ParameterLocation / typeDescription
company_pkRequiredpath · string (uuid)Company's public id (primary key)

Request body

application/json

FieldType / accepted valuesDescription
nameRequiredstringNot specified
descriptionstringNot specified
type"GOODS" | "SERVICES"* `GOODS` - Goods * `SERVICES` - Services
unit"items" | "hours" | "days" | "kilograms" | "liters" | "meters" | "square_meters" | "" | nullNot specified
priceinteger (int64)Not specified
isPriceGrossbooleanNot specified
vatRateintegerNot specified
skustringNot specified
companyCategorystring (uuid) | nullNot specified
status"active" | "archived"* `active` - Active * `archived` - Archived

multipart/form-data

FieldType / accepted valuesDescription
nameRequiredstringNot specified
descriptionstringNot specified
type"GOODS" | "SERVICES"* `GOODS` - Goods * `SERVICES` - Services
unit"items" | "hours" | "days" | "kilograms" | "liters" | "meters" | "square_meters" | "" | nullNot specified
priceinteger (int64)Not specified
isPriceGrossbooleanNot specified
vatRateintegerNot specified
skustringNot specified
companyCategorystring (uuid) | nullNot specified
status"active" | "archived"* `active` - Active * `archived` - Archived

application/x-www-form-urlencoded

FieldType / accepted valuesDescription
nameRequiredstringNot specified
descriptionstringNot specified
type"GOODS" | "SERVICES"* `GOODS` - Goods * `SERVICES` - Services
unit"items" | "hours" | "days" | "kilograms" | "liters" | "meters" | "square_meters" | "" | nullNot specified
priceinteger (int64)Not specified
isPriceGrossbooleanNot specified
vatRateintegerNot specified
skustringNot specified
companyCategorystring (uuid) | nullNot specified
status"active" | "archived"* `active` - Active * `archived` - Archived

Responses

201 Response fields

application/json

FieldType / accepted valuesDescription
publicIdRequiredRead onlystring (uuid)Not specified
companyRequiredstring (uuid)Not specified
nameRequiredstringNot specified
descriptionstringNot specified
type"GOODS" | "SERVICES"* `GOODS` - Goods * `SERVICES` - Services
unit"items" | "hours" | "days" | "kilograms" | "liters" | "meters" | "square_meters" | ""Not specified
priceinteger (int64)Not specified
isPriceGrossbooleanNot specified
priceNetRequiredRead onlyintegerNot specified
priceGrossRequiredRead onlyintegerNot specified
vatRateintegerNot specified
skustringNot specified
companyCategorystring (uuid) | nullNot specified
companyCategoryCodeRequiredRead onlystring | nullNot specified
companyCategoryNameRequiredRead onlystring | nullNot specified
status"active" | "archived"* `active` - Active * `archived` - Archived
createdRequiredRead onlystring (date-time)Not specified
modifiedstring (date-time) | nullNot specified
usageRequiredRead onlyobjectNot specified
400 Response fields

application/json

FieldType / accepted valuesDescription
detailRequiredstringNot specified
codeintegerNot specified
type_stringNot specified
fieldRequiredstringNot specified
401 Response fields

application/json

FieldType / accepted valuesDescription
detailRequiredRead onlystringNot specified
403 Missing scope, company mismatch, unsupported operation, or a plan/account restriction.
429 Rate limit exceeded. Wait for the Retry-After header before retrying.

Use the base URL https://api.norman.finance/api/v1. Sign up or log in to Norman to create an API key, then send it as a Bearer token. For an OpenAPI JSON file, contact support.