LedgerBee Developer
  • Getting started
  • Conventions
  • Products
  • API Reference
Information
Accounts
    List accountsget
API Key
    Get current API keyget
Company
    Get company detailsget
Customers
    List customersgetCreate a customerpostGet a single customergetUpdate a customerpatchList a customer's contactsgetList a customer's departmentsgetList customer groupsget
Dimensions
    List all dimensionsgetCreate a new dimension categorypostGet a single dimension by IDgetUpdate a dimension categoryputDelete a dimension categorydeleteCreate a new dimension valuepostUpdate a dimension valueputDelete a dimension valuedelete
Document Templates
    List document templatesget
Journal Categories
    List journal categoriesget
Journal Entries
    Create multiple journal entries in batch (DEPRECATED — migrate to v2)postList journal entriesgetCreate a single journal entry (DEPRECATED — use POST /api/v2/journal-entries)postGet a single journal entrygetUpdate a journal entry — correct the reference and/or set your external system idpatchGet attachments for a journal entrygetReverse posted journal entries in batchpostReverse a posted journal entrypost
MCP
    LedgerBee Developer MCP Serverpost
Meters
    List meter subscriptions by IDgetReport usagepostList meter subscriptions by nameget
Product Groups
    List product groupsgetCreate a product grouppostGet a product groupgetDelete a product groupdeleteUpdate a product grouppatch
Product Prices
    Create a product pricepostGet a product pricegetDelete a product pricedeleteUpdate a product pricepatchActivate a product pricepostArchive a product pricepostDisable a product pricepostSet a price as the product defaultpost
Products
    List productsgetCreate a productpostGet a productgetDelete a productdeleteUpdate a productpatch
Projects
    List all projectsgetIdempotent project upsertputCreate a projectpostGet a projectgetUpdate a projectputGet project profitgetAdd a subprojectpostUpdate a subprojectputDelete a subprojectdelete
Subscriptions
    List customer subscriptionsgetAssign a subscription to a customerpostGet a customer subscription by its stable idgetUpdate a customer subscriptionpatchList a subscription’s pending scheduled changesgetCancel a single pending scheduled changedeleteCancel a customer subscriptionpostList subscription plansgetArchive a subscription planpost
VAT Codes
    List VAT codesget
Webhook Endpoints
    List webhook endpointsgetCreate a webhook endpointpostRetrieve a webhook endpointgetUpdate a webhook endpointputDelete a webhook endpointdeleteRoll the signing secretpostSend a test eventpost
Portal SSO
    Published RP signing keys (JWKS) for a tenant's private_key_jwt SSOgetMint a customer-portal SSO handoff referencepostProvision a customer + grant portal access (partner JIT provisioning)postRevoke (force-refresh) a user's customer-portal sessionspost
Credit Notes
    List credit notesgetCreate a credit notepostGet a credit note by IDgetGet the delivery status of a credit notegetDownload the credit note PDFgetSend a credit note to the customerpost
Payment Methods
    List saved payment methods for a customergetApply a payment method to all active subscriptions for a customerpostCancel a saved card on the payment providerdeleteUnassign a payment method from a customerdeleteGenerate a link for the customer to save a card for future paymentspostSet a saved payment method as the customer defaultput
Draft Journal Entries
    Create multiple draft journal entries in batchpostList draft journal entriesgetCreate a draft journal entrypostGet a single draft journal entrygetDelete a draft journal entrydeleteBook a draft journal entrypost
Invoices
    List invoicesgetCreate a draft invoicepostGet an invoice by IDgetGet the delivery status of an invoicegetDownload the invoice PDFgetSend an invoice to the customerpost
Order Confirmations
    List order confirmationsgetCreate a draft order confirmationpostGet an order confirmation by idgetUpdate a draft order confirmationpatchConvert an order confirmation into an invoicepostDownload an order confirmation as PDFgetSend an order confirmationpost
Portal Plans
    List the full plan cataloguegetGet one plan by idgetResolve the gated pricing catalogue for an identified buyer (partner display)post
Quotes
    List quotesgetCreate a draft quotepostGet a quote by idgetUpdate a draft quotepatchConvert a quotepostDownload a quote as PDFgetSend a quotepost
Vendors
    List vendorsgetCreate a vendorpostList vendor contactsgetList vendor departmentsgetList vendor groupsget
Draft Journal Entries (v2)
    Create draft journal entries in batch (v2)postList draft journal entries (v2)getCreate a draft journal entry (v2)postGet a single draft journal entry (v2)getDelete a draft journal entry (v2)deleteUpdate a draft journal entry (v2)patchBook a draft journal entry (v2)post
Journal Entries (v2)
    Create a journal entry (v2)postCreate journal entries in batch (v2)post
Schemas
LedgerBee Public API
LedgerBee Public API

Schemas

Download schema

CompanyResponse

id
​string · required

Unique identifier for the company, uuidv7 based

Example: 01234567-89AB-CDEF-0123-456789ABCDEF
name
​string · required

Company name

Example: Acme Corporation
email
​string · required

Primary email address

Example: contact@acme.com
address
​string · required

Street address

Example: 123 Main Street
vat
​number

VAT number

Example: 12345678
billingEmail
​string

Billing email address

Example: billing@acme.com
city
​string

City

Example: Copenhagen
postalCode
​string

Postal code

Example: 2100
countryCode
​string

Country code (ISO 3166-1 alpha-2)

Example: DK
phone
​string

Phone number

Example: +45 12 34 56 78
preferredLanguage
​string

Preferred language code

Example: en
contactPersonFirstName
​string

Contact person first name

Example: John
contactPersonLastName
​string

Contact person last name

Example: Doe

RateLimitTierResponse

name
​string · required

Name of the rate limit tier

Example: short
ttl
​number · required

Time-to-live in milliseconds for this rate limit tier (0 means no time limit)

Example: 1000
limit
​number · required

Maximum number of requests allowed within the TTL window (-1 means unlimited)

Example: 3

ApiKeyInfoResponse

​RateLimitTierResponse[] · required

Available rate limit tiers for this API key

expiresAt
​string

Expiration date and time of the API key

Example: 2024-12-31T23:59:59.000Z
ipWhitelist
​string[]

List of IP addresses allowed to use this API key

Example: ["192.168.1.1","10.0.0.1"]
scopes
​string[]

List of scopes granted to this API key

Example: ["accounts-read","journal-entries-write"]

AccountResponse

id
​string · required

The unique identifier of the account

Example: 550e8400-e29b-41d4-a716-446655440000
name
​string · required

Name of the account

Example: Skyldig AM-bidrag
accountNumber
​number · required

Account type number

Example: 1000
publicAccountId
​number · required

Public account id that the account maps to

Example: 1000
ledgerType
​string · enum · required

Type of ledger account. Only BALANCE_SHEET and PROFIT_AND_LOSS accounts can be used in journal entries.

Enum values:
BALANCE_SHEET
HEADING_BREAK
HEADING
PROFIT_AND_LOSS
TOTAL_FROM
TOTAL_INTERVALS
Example: BALANCE_SHEET
accountClassification
​string | null · enum

Account classification (ASSET, LIABILITY, EQUITY, REVENUE, EXPENSE)

Enum values:
ASSET
LIABILITY
EQUITY
REVENUE
EXPENSE
Example: ASSET
controlAccountType
​string | null · enum

Control account type. ACCOUNTS_RECEIVABLE requires customerId on journal entries, ACCOUNTS_PAYABLE requires vendorId. Null for regular accounts.

Enum values:
ACCOUNTS_RECEIVABLE
ACCOUNTS_PAYABLE
Example: null

CustomerGroupResponse

id
​string · required

The unique identifier of the customer group

Example: 550e8400-e29b-41d4-a716-446655440000
number
​string · required

Customer group number

Example: 1
name
​string · required

Name of the customer group

Example: Domestic Customers
discount
​number · required

Discount percentage for this customer group

Example: 10
accountId
​string · required

The ledger account ID associated with this customer group

Example: 550e8400-e29b-41d4-a716-446655440001
accountNumber
​number

The ledger account number associated with this customer group

Example: 1100
accountName
​string

The ledger account name associated with this customer group

Example: Trade Debtors
​object

Key-value metadata attached to the customer group

Example: {"segment":"enterprise"}

CustomerDepartmentResponse

id
​string · required

The unique identifier of the department

Example: 550e8400-e29b-41d4-a716-446655440000
name
​string · required

Name of the department

Example: Headquarters
isDefault
​boolean · required

Whether this is the default department for the customer

Example: true
isActive
​boolean · required

Whether the department is active

Example: true
poNumber
​string

Purchase order number

Example: PO-12345
eanNumber
​string

EAN number for e-invoicing

Example: 5790000000000
address
​string

Street address

Example: 123 Main Street
city
​string

City

Example: Copenhagen
postalCode
​string

Postal code

Example: 2100
countryCode
​string

Two-letter country code (ISO 3166-1 alpha-2)

Example: DK

CustomerContactResponse

id
​string · required

The unique identifier of the contact

Example: 550e8400-e29b-41d4-a716-446655440000
name
​string · required

Name of the contact

Example: John Doe
isDefaultForCustomer
​boolean · required

Whether this is the default contact for the customer

Example: true
email
​string

Email address

Example: john.doe@acme.com
phone
​string

Phone number

Example: +45 12345678

CustomerResponse

id
​string · required

The unique identifier of the customer

Example: 550e8400-e29b-41d4-a716-446655440000
customerNumber
​string · required

Customer number

Example: C001
customerType
​string · enum · required

Customer type

Enum values:
BUSINESS
PRIVATE_PERSON
Example: BUSINESS
name
​string · required

Name of the customer

Example: Acme Corporation
vatZone
​string · enum · required

VAT zone classification

Enum values:
domestic
eu
abroad
domestic_without_vat
Example: domestic
customerGroupId
​string · required

Customer group ID

Example: 550e8400-e29b-41d4-a716-446655440001
isActive
​boolean · required

Whether the customer is active

Example: true
billingRelationship
​string · enum · required

Billing relationship. self = this customer is billed directly. parent_pays = the parent customer (set via parentCustomerId) is billed instead.

Enum values:
self
parent_pays
Example: self
includeChildDetailsPdf
​boolean · required

Whether to attach a zip of per-child detail PDFs when sending consolidated invoices. Only relevant for parent customers in single_invoice mode.

Example: false
customerGroupNumber
​string

Customer group number

Example: 1
customerGroupName
​string

Customer group name

Example: Domestic Customers
email
​string

Email address

Example: contact@acme.com
phone
​string

Phone number

Example: +45 12345678
address
​string

Street address

Example: 123 Main Street
city
​string

City

Example: Copenhagen
postalCode
​string

Postal code

Example: 2100
countryCode
​string

Two-letter country code (ISO 3166-1 alpha-2)

Example: DK
vatNumber
​string

VAT registration number

Example: DK12345678
website
​string

Website URL

Example: https://acme.com
externalSystemId
​string

External system identifier for tracking the customer across other systems

Example: crm-12345
creditLimit
​number

Credit limit

Example: 50000
openingBalance
​number

Opening balance in the company base currency (signed: positive = the customer owes us)

Example: 1000
paymentTerms
​number

Payment terms in days

Example: 30
paymentTermType
​string · enum

Payment term type

Enum values:
NET_DAYS
CASH
RUNNING_MONTH_PLUS_DAYS
Example: NET_DAYS
defaultCurrency
​string

Default currency code

Example: DKK
parentCustomerId
​string | null

Parent customer ID. When set, this customer is a child in a parent-child billing relationship. Set together with billingRelationship to change how this customer is billed.

Example: 550e8400-e29b-41d4-a716-446655440000
consolidationMode
​string | null · enum

Consolidation mode for a parent customer. single_invoice = all child subscriptions are consolidated onto one parent invoice on billingDay. per_child_invoice = each child receives its own invoice. Only meaningful on parent customers.

Enum values:
single_invoice
per_child_invoice
billingDay
​number | null

Day of month (1-28) when the parent consolidated invoice is generated. Required for single_invoice consolidation mode.

Example: 1
parentInvoiceTemplateId
​string | null

Parent single invoice PDF template override

​object

Key-value metadata attached to the customer

Example: {"crmSegment":"enterprise","accountOwner":"jane"}

CreateCustomerRequest

customerType
​string · enum · required

Specifies whether the customer is a business or a private person

Enum values:
BUSINESS
PRIVATE_PERSON
Example: BUSINESS
Default: BUSINESS
customerNumber
​string · required

Unique customer number

Example: C001
name
​string · required

Customer name

Example: Acme Corporation
vatZone
​string · enum · required

VAT zone classification

Enum values:
domestic
eu
abroad
domestic_without_vat
Example: domestic
customerGroupId
​string · required

Customer group ID

Example: 550e8400-e29b-41d4-a716-446655440001
countryCode
​string · required

Two-letter country code

Example: DK
defaultCurrency
​string · required

Default currency code

Example: DKK
email
​string

Email address

Example: contact@acme.com
phone
​string

Phone number

Example: +45 12345678
address
​string

Street address

Example: 123 Main Street
city
​string

City

Example: Copenhagen
postalCode
​string

Postal code

Example: 2100
vatNumber
​string

VAT registration number

Example: DK12345678
website
​string

Website URL

Example: https://acme.com
externalSystemId
​string

External system identifier for tracking the customer across other systems

Example: crm-12345
notes
​string

Additional notes

Example: Key account customer
creditLimit
​number · min: 0

Credit limit

Example: 50000
openingBalance
​number

Opening balance in the company base currency, seeding receivables that predate LedgerBee. Signed: positive = the customer owes us, negative = a credit position.

Example: 1000
paymentTerms
​number · min: 0

Payment terms in days

Example: 30
paymentTermType
​string · enum

Payment term type

Enum values:
NET_DAYS
CASH
RUNNING_MONTH_PLUS_DAYS
Example: NET_DAYS
isActive
​boolean

Whether the customer is active

Example: true
Default: true
parentCustomerId
​string | null

Parent customer ID. Set when creating this customer as a child in a parent-child billing relationship. Must be combined with billingRelationship = parent_pays to route billing to the parent. Send null to create a standalone customer.

Example: 550e8400-e29b-41d4-a716-446655440000
billingRelationship
​string · enum

Billing relationship. self (default) = this customer is billed directly. parent_pays = the parent customer (set via parentCustomerId) is billed instead.

Enum values:
self
parent_pays
consolidationMode
​string | null · enum

Consolidation mode (parent customers only). single_invoice = all child subscriptions consolidated onto one invoice on billingDay. per_child_invoice = each child receives its own invoice.

Enum values:
single_invoice
per_child_invoice
billingDay
​number | null

Day of month (1-28) for the parent consolidated invoice. Required for single_invoice consolidation.

Example: 1
includeChildDetailsPdf
​boolean

Whether to attach a zip of per-child detail PDFs when sending consolidated invoices

parentInvoiceTemplateId
​string | null

Parent single invoice PDF template override. Send null to clear.

​object

Key-value metadata to attach to the customer. At most 50 entries; keys up to 128 characters, string values up to 500 characters.

Example: {"crmSegment":"enterprise"}

CreateCustomerResponse

id
​string · required

The unique identifier of the created customer

Example: 550e8400-e29b-41d4-a716-446655440000
customerNumber
​string · required

Customer number

Example: C001

SubscriptionTransitionItem

customerSubscriptionId
​string · required

ID of the customer subscription to transition to parent billing

Example: 550e8400-e29b-41d4-a716-446655440000

UpdateCustomerRequest

customerType
​string · enum

Customer type

Enum values:
BUSINESS
PRIVATE_PERSON
Example: BUSINESS
customerNumber
​string

Unique customer number

Example: C001
name
​string

Customer name

Example: Acme Corporation
vatZone
​string · enum

VAT zone classification

Enum values:
domestic
eu
abroad
domestic_without_vat
Example: domestic
customerGroupId
​string

Customer group ID

Example: 550e8400-e29b-41d4-a716-446655440001
email
​string | null

Email address. Send null or empty string to clear.

Example: contact@acme.com
phone
​string

Phone number

Example: +45 12345678
address
​string

Street address

Example: 123 Main Street
city
​string

City

Example: Copenhagen
postalCode
​string

Postal code

Example: 2100
countryCode
​string

Two-letter country code

Example: DK
vatNumber
​string

VAT registration number

Example: DK12345678
website
​string

Website URL

Example: https://acme.com
externalSystemId
​string

External system identifier for tracking the customer across other systems

Example: crm-12345
notes
​string

Additional notes

Example: Key account customer
creditLimit
​number · min: 0

Credit limit

Example: 50000
openingBalance
​number

Opening balance in the company base currency, seeding receivables that predate LedgerBee. Signed: positive = the customer owes us, negative = a credit position.

Example: 1000
paymentTerms
​number · min: 0

Payment terms in days

Example: 30
paymentTermType
​string · enum

Payment term type

Enum values:
NET_DAYS
CASH
RUNNING_MONTH_PLUS_DAYS
Example: NET_DAYS
defaultCurrency
​string

Default currency code

Example: DKK
isActive
​boolean

Whether the customer is active

Example: true
parentCustomerId
​string | null

Parent customer ID. Send null to detach from parent. Changing this field on a customer with active subscriptions will transition those subscriptions to the parent's billing day with a clean cut at today's date: advance-billed subscriptions receive a credit note for the remaining days of the current period, and arrears-billed subscriptions are invoiced up to the transition date. When transitioning, subscriptionTransitions must list every active subscription on this customer as explicit acknowledgement that they will be migrated.

Example: 550e8400-e29b-41d4-a716-446655440000
billingRelationship
​string · enum

Billing relationship. Change to parent_pays together with parentCustomerId to route billing to the parent.

Enum values:
self
parent_pays
consolidationMode
​string | null · enum

Consolidation mode (parent customers only). Send null to clear.

Enum values:
single_invoice
per_child_invoice
billingDay
​number | null

Day of month (1-28) for the parent consolidated invoice. Send null to clear.

Example: 1
includeChildDetailsPdf
​boolean

Whether to attach a zip of per-child detail PDFs when sending consolidated invoices

parentInvoiceTemplateId
​string | null

Parent single invoice PDF template override. Send null to clear.

​SubscriptionTransitionItem[]

Subscription transitions — required when changing parentCustomerId, billingRelationship, or consolidationMode on a customer with active subscriptions. Must list every active subscription on this customer as explicit acknowledgement that each one will be migrated to the new billing arrangement with a clean cut at today's date.

​object

Key-value metadata. When provided, REPLACES the customer metadata wholesale — send the complete desired map; an empty object clears all entries. Omit the field to leave metadata unchanged. At most 50 entries; keys up to 128 characters, string values up to 500 characters.

Example: {"crmSegment":"enterprise"}

DimensionValue

id
​string · required

Unique identifier of the dimension value

Example: 550e8400-e29b-41d4-a716-446655440000
name
​string · minLength: 2 · maxLength: 120 · required

Display name of the dimension value

Example: Marketing
parentId
​string | null

Parent dimension value ID for hierarchical structures. Null for root-level values. Use this to create nested structures like "Sales > Europe > Denmark".

Example: 550e8400-e29b-41d4-a716-446655440001
​DimensionValue[]

Child dimension values (nested structure). Only populated in list responses.

Dimension

id
​string · required

Unique identifier of the dimension category

Example: 550e8400-e29b-41d4-a716-446655440000
name
​string · minLength: 2 · maxLength: 100 · required

Display name of the dimension category

Example: Department
isUnique
​boolean · required

When true, only one value from this dimension can be assigned to a journal entry (mutually exclusive). When false, multiple values can be assigned (additive tags). Example: A "Department" dimension is typically unique (one department per entry), while a "Tags" dimension might allow multiple values.

Example: true
​DimensionValue[] · required

Available dimension values within this category, organized as a hierarchical tree. Root values have parentId as null, nested values reference their parent.

CreateDimensionRequest

name
​string · minLength: 2 · maxLength: 100 · required

Display name for the dimension category. Must be unique within your company. Choose a descriptive name that clearly indicates the categorization purpose.

Example: Cost Center
isUnique
​boolean · required

Whether only one value from this dimension can be assigned to a journal entry. Set to true for mutually exclusive categories (e.g., Department - an entry belongs to exactly one department). Set to false for additive tags (e.g., Tags - an entry can have multiple tags). This constraint is enforced when assigning dimension values to journal entries.

Example: true

DimensionResponse

id
​string · required

Unique identifier of the created/updated dimension category

Example: 550e8400-e29b-41d4-a716-446655440000
name
​string · required

Display name of the dimension category

Example: Department
isUnique
​boolean · required

Whether only one value from this dimension can be assigned per journal entry

Example: true

UpdateDimensionRequest

name
​string · minLength: 2 · maxLength: 100

New display name for the dimension category. Must be unique within your company. Changing the name does not affect existing dimension value assignments.

Example: Business Unit
isUnique
​boolean

Update the uniqueness constraint for this dimension category. Changing from false to true will fail if any journal entries currently have multiple values assigned from this category. Plan this change carefully as it affects data validation.

Example: false

CreateDimensionValueRequest

dimensionId
​string · required

ID of the dimension category this value belongs to. The category must exist and belong to your company.

Example: 550e8400-e29b-41d4-a716-446655440000
name
​string · minLength: 2 · maxLength: 120 · required

Display name for the dimension value. Must be unique within the dimension category. Choose descriptive names that will be clear when selecting values in the UI.

Example: Marketing
parentId
​string | null

Parent dimension value ID for creating hierarchical structures. Leave null or omit for root-level values. The parent must exist within the same dimension category. Example: Create "Europe" first, then create "Denmark" with parentId set to Europe's ID.

Example: 550e8400-e29b-41d4-a716-446655440001

DimensionValueResponse

id
​string · required

Unique identifier of the created/updated dimension value

Example: 550e8400-e29b-41d4-a716-446655440000
name
​string · required

Display name of the dimension value

Example: Marketing
dimensionId
​string · required

ID of the dimension category this value belongs to

Example: 550e8400-e29b-41d4-a716-446655440001
dimensionName
​string · required

Name of the dimension category this value belongs to

Example: Department
dimensionIsUnique
​boolean · required

Whether the parent category enforces single selection

Example: true
parentId
​string | null

Parent dimension value ID, if this is a nested value

Example: 550e8400-e29b-41d4-a716-446655440002

UpdateDimensionValueRequest

name
​string · minLength: 2 · maxLength: 120

New display name for the dimension value. Must be unique within the dimension category. Changing the name does not affect existing journal entry assignments.

Example: Digital Marketing
parentId
​string | null

New parent dimension value ID. Set to null to move to root level. The parent must exist within the same dimension category and cannot create circular references (e.g., A cannot be parent of B if B is already an ancestor of A).

Example: 550e8400-e29b-41d4-a716-446655440001

AttachmentRequest

filename
​string · maxLength: 255 · required

Filename with extension

Example: invoice.pdf
content
​string · required

Base64-encoded file content. Note: Base64 encoding adds ~33% overhead. Individual files should not exceed 10MB before encoding.

Example: JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC...
mimeType
​string · enum · required

MIME type of the file

Enum values:
application/pdf
image/jpeg
image/png
image/heic
image/heif
image/bmp
image/tiff
application/zip
Example: application/pdf

DraftSplitEntryLine

type
​string · enum · required

Transaction type for this line (debit or credit)

Enum values:
debit
credit
Example: debit
amount
​number · required

Amount for this line (must be non-negative)

Example: 500
accountId
​string

Account ID for this line (UUID). Optional for drafts — empty lines (type + amount with no account) are persisted as placeholders and must be completed in the platform UI before booking. Cannot be a heading or total account when provided.

Example: 550e8400-e29b-41d4-a716-446655440000
vatCodeId
​string

VAT/Tax code ID for this line (UUID)

Example: 550e8400-e29b-41d4-a716-446655440000
description
​string · maxLength: 500

Optional per-line memo (max 500 characters). Persisted on the draft line and carried onto the booked ledger transaction when the draft is booked.

Example: Consulting hours — March
tagIds
​string[]

Dimension tag IDs to attach to this specific line. Per-line tagIds MUST come from single-select (dimension) categories — multi-select tags belong at the entry-level tagIds instead.

Example: ["550e8400-e29b-41d4-a716-446655440003"]

CreateDraftJournalEntryRequest

accountId
​string · required

Primary account ID (UUID). Cannot be a heading or total account. For typed entries (supplier_invoice, customer_invoice, etc.), must have appropriate account classification.

Example: 550e8400-e29b-41d4-a716-446655440000
date
​string · required

Date of the journal entry in YYYY-MM-DD format

Example: 2026-01-15
amount
​number · required

Amount of the transaction (must be positive)

Example: 1000
contraAccountId
​string

Contra account ID (UUID). Optional for drafts — partial drafts (primary line only) are allowed and must be completed in the platform UI before booking. Cannot be a heading or total account.

Example: 550e8400-e29b-41d4-a716-446655440001
entryType
​string · enum

Entry type determines the journal type and enforces account classification rules. Account classification requirements: supplier_invoice: account=EXPENSE|ASSET, contraAccount=LIABILITY; supplier_payment: account=LIABILITY, contraAccount=ASSET; customer_invoice: account=ASSET, contraAccount=REVENUE; customer_payment: account=ASSET, contraAccount=ASSET; journal: no restrictions. Legacy values "invoice" and "payment" map to supplier types.

Enum values:
journal
invoice
payment
supplier_invoice
supplier_payment
customer_invoice
customer_payment
Example: supplier_invoice
Default: journal
type
​string · enum

Transaction type (debit or credit)

Enum values:
debit
credit
Example: debit
Default: debit
description
​string

Description of the journal entry

Example: Office supplies purchase
reference
​string

Reference number or identifier

Example: REF-2026-001
currency
​string

Currency code (defaults to DKK)

Example: DKK
Default: DKK
customerId
​string

Customer ID (UUID) for customer-related entries

Example: 550e8400-e29b-41d4-a716-446655440002
vendorId
​string

Vendor ID (UUID). Required for supplier_invoice / supplier_payment entry types, and for any posting that touches an accounts-payable control account.

Example: 550e8400-e29b-41d4-a716-446655440003
tagIds
​string[]

Tag/Dimension IDs to attach to the journal entry

Example: ["550e8400-e29b-41d4-a716-446655440003"]
vatCodeId
​string

VAT/Tax code ID (UUID). Applied to the primary account unless split entries are used.

Example: 550e8400-e29b-41d4-a716-446655440000
​AttachmentRequest[] · maxItems: 10

File attachments (base64-encoded). Maximum 10 attachments per entry. Total request size limit is 15MB.

​DraftSplitEntryLine[] · minItems: 2 · maxItems: 50

Split entry lines for multi-account drafts. Each line may omit accountId to act as a placeholder; the draft is persisted with NULL on those lines and the user completes them in the platform UI. Booking still requires every line to carry a real account and the entry to balance.

externalSystemId
​string · maxLength: 255

Your own system's id for this draft. Carried onto the booked journal entry. Not unique — several drafts/entries may share one id. Filter the list endpoint by externalSystemId.

Example: erp-7f3a2c91

CreateDraftJournalEntryBatchRequest

​CreateDraftJournalEntryRequest[] · minItems: 1 · maxItems: 100 · required

Array of draft journal entries to create (1-100 entries per batch)

DraftSplitEntryLineResponse

accountId
​string · required

Account ID

Example: 550e8400-e29b-41d4-a716-446655440000
type
​string · required

Transaction type (debit or credit)

Example: debit
amount
​number · required

Amount for this line in transaction currency

Example: 500
vatCodeId
​string

VAT/Tax code ID

Example: 550e8400-e29b-41d4-a716-446655440000
description
​string

Per-line memo

Example: Consulting hours — March
tagIds
​string[]

Tag/Dimension IDs attached to this line. Per-line dimensions override the entry-level tagIds on this specific ledger transaction.

DraftJournalEntryResponse

id
​string · required

Draft journal entry ID

Example: 550e8400-e29b-41d4-a716-446655440000
date
​string · required

Date in YYYY-MM-DD format

Example: 2026-01-15
amount
​number · required

Denormalized amount in base/functional currency (e.g. DKK). Computed as MAX(debitTotal, creditTotal) from lines, converted via exchangeRate.

Example: 1000
currency
​string · required

Currency code

Example: DKK
journalType
​string · required

Journal type

Example: JOURNAL_ENTRY
status
​string · required

Always "DRAFT" for draft journal entries

Example: DRAFT
createdAt
​string · required

Creation timestamp

Example: 2026-01-15T10:30:00.000Z
updatedAt
​string · required

Last update timestamp

Example: 2026-01-15T10:30:00.000Z
documentDate
​string

Document date (date on the invoice/voucher). Null when not set.

Example: 2026-01-15
description
​string

Description

Example: Office supplies purchase
reference
​string

Reference number

Example: REF-2026-001
externalSystemId
​string | null

Your own system's id for this draft, when set. Not unique. null when unset or cleared.

Example: erp-7f3a2c91
type
​string

Transaction type (debit or credit)

Example: debit
accountId
​string

Primary account ID

Example: 550e8400-e29b-41d4-a716-446655440000
contraAccountId
​string

Contra account ID

Example: 550e8400-e29b-41d4-a716-446655440001
customerId
​string

Customer ID

Example: 550e8400-e29b-41d4-a716-446655440002
vendorId
​string

Vendor ID

Example: 550e8400-e29b-41d4-a716-446655440003
vatCodeId
​string

VAT/Tax code ID

Example: 550e8400-e29b-41d4-a716-446655440000
tagIds
​string[]

Tag/Dimension IDs

documentRefs
​string[]

Document IDs attached to the draft

​DraftSplitEntryLineResponse[]

Split entry lines

CreateDraftJournalEntryBatchResponse

totalCreated
​number · required

Number of draft entries successfully created

Example: 5
​DraftJournalEntryResponse[] · required

Details of all created draft journal entries

ListDraftJournalEntriesResponse

​DraftJournalEntryResponse[] · required

List of draft journal entries

total
​number · required

Total number of matching drafts

Example: 42
page
​number · required

Current page number

Example: 1
limit
​number · required

Items per page

Example: 25
totalPages
​number · required

Total number of pages

Example: 2

JournalEntryResponse

id
​string · required

Unique identifier of the created journal entry

Example: 550e8400-e29b-41d4-a716-446655440000
entryNumber
​string · required

Entry number assigned to the journal entry

Example: JE-00001
date
​string · required

Date of the journal entry

Example: 2026-01-15
amount
​number · required

Amount of the transaction

Example: 1000
currency
​string · required

Currency code

Example: DKK
journalType
​string · required

Journal type

Example: JOURNAL_ENTRY
type
​string · required

Transaction type

Example: debit
status
​string · required

Status of the journal entry

Example: POSTED
accountId
​string · required

Primary account ID

Example: 550e8400-e29b-41d4-a716-446655440000
createdAt
​string · required

Timestamp when the entry was created

Example: 2026-01-15T10:30:00.000Z
documentDate
​string

Document date (date on the invoice/voucher). Null for legacy entries.

Example: 2026-01-15
description
​string

Description of the journal entry

Example: Office supplies purchase
reference
​string

Reference number

Example: REF-2026-001
externalSystemId
​string

Your own system's id for this entry, when set. Not unique — several entries may share one id.

Example: erp-7f3a2c91
contraAccountId
​string

Contra account ID

Example: 550e8400-e29b-41d4-a716-446655440001
customerId
​string

Customer ID if applicable

Example: 550e8400-e29b-41d4-a716-446655440002
vendorId
​string

Vendor ID if applicable

Example: 550e8400-e29b-41d4-a716-446655440003
vatCodeId
​string

VAT/Tax code ID if applicable

Example: 550e8400-e29b-41d4-a716-446655440000
tagIds
​string[]

Tag IDs attached to the entry

documentRefs
​string[]

Document IDs attached to the entry

SplitEntryLine

accountId
​string · required

Account ID for this line (UUID). Cannot be a heading or total account.

Example: 550e8400-e29b-41d4-a716-446655440000
type
​string · enum · required

Transaction type for this line (debit or credit)

Enum values:
debit
credit
Example: debit
amount
​number · required

Amount for this line (must be positive)

Example: 500
vatCodeId
​string

VAT/Tax code ID for this line (UUID)

Example: 550e8400-e29b-41d4-a716-446655440000
description
​string · maxLength: 500

Optional per-line memo (max 500 characters). Stored on the booked ledger transaction for this line, separate from the entry-level description.

Example: Consulting hours — March
tagIds
​string[]

Dimension tag IDs to attach to this specific line. Per-line tagIds MUST come from single-select (dimension) categories — multi-select tags belong at the entry-level tagIds instead. Each dimension category may appear at most once per line. The booked ledger transaction is tagged with these IDs and VAT derivatives inherit automatically. Validation: a non-dimension tag rejects with JOURNAL_TAG_LINE_TAG_NOT_A_DIMENSION; a repeated category rejects with JOURNAL_TAG_DUPLICATE_LINE_DIMENSION_CATEGORY.

Example: ["550e8400-e29b-41d4-a716-446655440003"]

CreateDraftJournalEntryV2Request

entryType
​string · enum · required

Journal type. For CUSTOMER_INVOICE / CUSTOMER_PAYMENT / SUPPLIER_INVOICE / SUPPLIER_PAYMENT the AR/AP leg is appended automatically; do not include it in lines.

Enum values:
journal
invoice
payment
supplier_invoice
supplier_payment
customer_invoice
customer_payment
date
​string · required

Posting date (YYYY-MM-DD).

originalAmount
​number · required

Original amount of the invoice / payment. Sign carries direction: positive = invoice / payment, negative = credit-note / refund.

​SplitEntryLine[] · required

Counter-side lines (revenue / expense / bank / outlay). For locked types do NOT include the AR/AP leg.

customerId
​string

Customer reference. Required for CUSTOMER_* types.

vendorId
​string

Vendor reference. Required for SUPPLIER_* types.

description
​string

Optional human-readable description.

reference
​string

Invoice number / external reference.

currency
​string

ISO 4217 currency code. Defaults to company currency.

tagIds
​string[]

Tag IDs applied at the entry level.

journalCategoryId
​string

Journal category ID (UUID). Must belong to the API key's app company; cross-tenant or unknown IDs are rejected with 400 JOURNAL_CATEGORY_NOT_FOUND. When omitted the entry uses the company's default category.

​AttachmentRequest[] · maxItems: 10

Inline file attachments (base64-encoded). Same shape and limits as v1: maximum 10 attachments per entry, individual files should not exceed 10MB before encoding, and the total request body (JSON + base64 payload) must stay under 15MB. Each attachment becomes a Document linked to the created journal entry — equivalent to what GET /api/v1/journal-entries/:id/attachments returns. Invalid MIME types or malformed base64 reject the whole entry with 400 INVALID_ATTACHMENT_TYPE; in a batch the whole batch rolls back.

externalSystemId
​string · maxLength: 255

Your own system's id for this draft. Carried onto the booked journal entry. Not unique — several drafts/entries may share one id. Filter the list endpoint by externalSystemId.

Example: erp-7f3a2c91

CreateDraftJournalEntryV2BatchRequest

​CreateDraftJournalEntryV2Request[] · minItems: 1 · maxItems: 100 · required

Array of 1–100 draft journal entries. Wrapped in a single transaction; one bad entry rolls back the whole batch.

CreateDraftJournalEntryV2BatchResponse

totalCreated
​number · required

Number of drafts created (= entries.length on success).

​DraftJournalEntryResponse[] · required

Created draft journal entries, ordered to match the request entries[].

UpdateDraftJournalEntryV2Request

date
​string

Posting date (YYYY-MM-DD).

originalAmount
​number

Original amount of the invoice / payment. Sign carries direction: positive = invoice / payment, negative = credit-note / refund.

customerId
​string | null · uuid

Customer reference. null clears it; omitting keeps it. Changing it reshapes the entry — requires lines and re-runs the per-entryType validation (CUSTOMER_* types cannot clear their counterparty).

vendorId
​string | null · uuid

Vendor reference. null clears it; omitting keeps it. Changing it reshapes the entry — requires lines and re-runs the per-entryType validation (SUPPLIER_* types cannot clear their counterparty).

description
​string

Optional human-readable description.

reference
​string

Invoice number / external reference.

currency
​string

ISO 4217 currency code. Defaults to company currency.

​SplitEntryLine[]

Counter-side lines (revenue / expense / bank / outlay). For locked types do NOT include the AR/AP leg.

tagIds
​string[]

Tag IDs applied at the entry level.

journalCategoryId
​string

Journal category ID (UUID). Must belong to the API key's app company; cross-tenant or unknown IDs are rejected with 400 JOURNAL_CATEGORY_NOT_FOUND. When omitted the entry uses the company's default category.

externalSystemId
​string | null · maxLength: 255

Your own system's id. null clears the value; omitting the field keeps it.

Example: erp-7f3a2c91

UpdateJournalEntryRequest

reference
​string · maxLength: 255

Corrected reference. For invoices this is the invoice number (the anchor is renumbered with it); for payments it is the invoice number the payment settles. Only unmatched entries of the four entity document types accept a reference correction.

Example: INV-1042
externalSystemId
​string | null · maxLength: 255

Your own system's id for this journal entry. Settable on any journal type regardless of match state. Not unique — several entries may carry the same id (e.g. one partner document booked as several entries); filter GET /journal-entries by externalSystemId to find all of them. null clears the value; omitting the field keeps it. reference does not accept null — it is a matching key, not clearable metadata.

Example: erp-7f3a2c91

UpdateJournalEntryResponse

id
​string · required

Journal entry ID.

Example: 550e8400-e29b-41d4-a716-446655440000
reference
​string | null · required

The reference after the update.

Example: INV-1042
externalSystemId
​string | null · required

The external system id after the update.

Example: erp-7f3a2c91

CreateJournalEntryRequest

accountId
​string · required

Primary account ID (UUID). Cannot be a heading or total account. For typed entries (supplier_invoice, customer_invoice, etc.), must have appropriate account classification.

Example: 550e8400-e29b-41d4-a716-446655440000
date
​string · required

Date of the journal entry in YYYY-MM-DD format

Example: 2026-01-15
amount
​number · required

Amount of the transaction (must be positive)

Example: 1000
contraAccountId
​string

Contra account ID (UUID). Required unless splitEntries is provided. Cannot be a heading or total account. For typed entries, must have appropriate account classification.

Example: 550e8400-e29b-41d4-a716-446655440001
entryType
​string · enum

Entry type determines the journal type and enforces account classification rules. Account classification requirements: supplier_invoice: account=EXPENSE|ASSET, contraAccount=LIABILITY; supplier_payment: account=LIABILITY, contraAccount=ASSET; customer_invoice: account=ASSET, contraAccount=REVENUE; customer_payment: account=ASSET, contraAccount=ASSET; journal: no restrictions. Legacy values "invoice" and "payment" map to supplier types.

Enum values:
journal
invoice
payment
supplier_invoice
supplier_payment
customer_invoice
customer_payment
Example: supplier_invoice
Default: journal
type
​string · enum

Transaction type (debit or credit)

Enum values:
debit
credit
Example: debit
Default: debit
description
​string

Description of the journal entry

Example: Office supplies purchase
reference
​string

Reference number or identifier

Example: REF-2026-001
currency
​string

Currency code (defaults to DKK)

Example: DKK
Default: DKK
customerId
​string

Customer ID (UUID) for customer-related entries

Example: 550e8400-e29b-41d4-a716-446655440002
vendorId
​string

Vendor ID (UUID). Required for supplier_invoice / supplier_payment entry types, and for any posting that touches an accounts-payable control account.

Example: 550e8400-e29b-41d4-a716-446655440003
tagIds
​string[]

Tag/Dimension IDs to attach to the journal entry

Example: ["550e8400-e29b-41d4-a716-446655440003"]
vatCodeId
​string

VAT/Tax code ID (UUID). Applied to the primary account unless split entries are used.

Example: 550e8400-e29b-41d4-a716-446655440000
​SplitEntryLine[] · minItems: 2 · maxItems: 50

Split entry lines for multi-account entries. When provided, contraAccountId is not required. Requirements: (1) Total debits must equal total credits; (2) Must have at least one debit AND one credit entry; (3) Minimum 2 lines required; (4) All accounts must be postable (not heading or total accounts). Account classification validation is not applied to split entries.

​AttachmentRequest[] · maxItems: 10

File attachments (base64-encoded). Maximum 10 attachments per entry. Total request size limit is 15MB.

ReverseJournalEntryRequest

journalEntryId
​string · required

UUID of the posted journal entry to reverse.

Example: 550e8400-e29b-41d4-a716-446655440000
reversalDate
​string

Date for the reversal posting (YYYY-MM-DD). When omitted, the reversal is dated to the original entry so it lands in the same period. Must fall in an open posting period.

Example: 2026-06-01
reason
​string · maxLength: 500

Free-text reason appended to the reversal description for audit purposes.

Example: Vendor invoice was duplicated

ReverseJournalEntryResponse

reversalId
​string · required

Unique identifier of the posted reversal journal entry.

Example: 550e8400-e29b-41d4-a716-446655440000

BatchReverseJournalEntriesRequest

journalEntryIds
​string[] · minItems: 1 · maxItems: 100 · required

IDs of the journal entries to reverse (1–100). All reversals run in one transaction; one failure rolls back the whole batch. Duplicate IDs are de-duplicated.

Example: ["550e8400-e29b-41d4-a716-446655440000","550e8400-e29b-41d4-a716-446655440001"]
reversalDate
​string

Date for every reversal posting (YYYY-MM-DD). When omitted, each reversal is dated to its own original entry so the pair lands in the same period.

Example: 2026-06-01
reason
​string · maxLength: 500

Free-text reason appended to every reversal description for audit purposes.

Example: Bulk reversal of misclassified subscription invoices

BatchReverseJournalEntriesResultItem

originalId
​string · required

Original journal entry ID supplied in the request.

Example: 550e8400-e29b-41d4-a716-446655440000
reversalId
​string · required

Unique identifier of the posted reversal journal entry.

Example: 550e8400-e29b-41d4-a716-446655440010

BatchReverseJournalEntriesResponse

totalReversed
​number · required

Number of reversals posted. Equals the count of unique IDs in the request on success.

Example: 2
​BatchReverseJournalEntriesResultItem[] · required

Result rows pairing each original ID with its newly created reversal ID.

ListJournalEntriesResponse

​JournalEntryResponse[] · required

List of journal entries

total
​number · required

Total number of matching entries

Example: 150
page
​number · required

Current page number

Example: 1
limit
​number · required

Number of items per page

Example: 25
totalPages
​number · required

Total number of pages

Example: 6

JournalEntryAttachmentResponse

id
​string · required

Unique identifier of the attachment/document

Example: 550e8400-e29b-41d4-a716-446655440000
filename
​string · required

Original filename of the attachment

Example: invoice.pdf
contentType
​string · required

MIME type of the attachment

Example: application/pdf
fileSize
​number · required

File size in bytes

Example: 102400
content
​string · required

Base64-encoded file content

Example: JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC...
createdAt
​string · required

Timestamp when the attachment was created

Example: 2026-01-15T10:30:00.000Z

JournalEntryAttachmentsListResponse

journalEntryId
​string · required

Journal entry ID the attachments belong to

Example: 550e8400-e29b-41d4-a716-446655440000
​JournalEntryAttachmentResponse[] · required

List of attachments

CreateJournalEntryV2Dto

entryType
​string · enum · required

Journal type. For CUSTOMER_INVOICE / CUSTOMER_PAYMENT / SUPPLIER_INVOICE / SUPPLIER_PAYMENT the AR/AP leg is appended automatically; do not include it in lines.

Enum values:
journal
invoice
payment
supplier_invoice
supplier_payment
customer_invoice
customer_payment
date
​string · required

Posting date (YYYY-MM-DD).

originalAmount
​number · required

Original amount of the invoice / payment. Sign carries direction: positive = invoice / payment, negative = credit-note / refund.

​SplitEntryLine[] · required

Counter-side lines (revenue / expense / bank / outlay). For locked types do NOT include the AR/AP leg.

customerId
​string

Customer reference. Required for CUSTOMER_* types.

vendorId
​string

Vendor reference. Required for SUPPLIER_* types.

description
​string

Optional human-readable description.

reference
​string

Invoice number / external reference.

currency
​string

ISO 4217 currency code. Defaults to company currency.

tagIds
​string[]

Tag IDs applied at the entry level.

journalCategoryId
​string

Journal category ID (UUID). Must belong to the API key's app company; cross-tenant or unknown IDs are rejected with 400 JOURNAL_CATEGORY_NOT_FOUND. When omitted the entry uses the company's default category.

​AttachmentRequest[] · maxItems: 10

Inline file attachments (base64-encoded). Same shape and limits as v1: maximum 10 attachments per entry, individual files should not exceed 10MB before encoding, and the total request body (JSON + base64 payload) must stay under 15MB. Each attachment becomes a Document linked to the created journal entry — equivalent to what GET /api/v1/journal-entries/:id/attachments returns. Invalid MIME types or malformed base64 reject the whole entry with 400 INVALID_ATTACHMENT_TYPE; in a batch the whole batch rolls back.

CreateJournalEntryV2BatchRequest

​CreateJournalEntryV2Dto[] · minItems: 1 · maxItems: 100 · required

Array of 1–100 journal entries. Wrapped in a single transaction; one bad entry rolls back the whole batch.

CreateJournalEntryV2BatchResponse

totalCreated
​number · required

Number of journal entries created (= entries.length on success).

​JournalEntryResponse[] · required

Created journal entries, ordered to match the request entries[].

CreateJournalEntryBatchRequest

​CreateJournalEntryRequest[] · minItems: 1 · maxItems: 100 · required

Array of journal entries to create (1-100 entries per batch)

CreateJournalEntryBatchResponse

totalCreated
​number · required

Number of entries successfully created

Example: 5
​JournalEntryResponse[] · required

Details of all created journal entries

JournalCategoryResponse

id
​string · required

The unique identifier of the journal category

Example: 550e8400-e29b-41d4-a716-446655440000
name
​string · required

Name of the journal category

Example: General Journal
isDefault
​boolean · required

Whether this is the default journal category

Example: true
allowedJournalTypes
​array[] · required

Allowed journal entry types for this journal category

Example: ["JOURNAL_ENTRY","SUPPLIER_INVOICE","SUPPLIER_PAYMENT","CUSTOMER_INVOICE","CUSTOMER_PAYMENT"]

MeterSubscriptionProductDTO

id
​string · required

Product ID

Example: 550e8400-e29b-41d4-a716-446655440000
name
​string · required

Product name

Example: API Calls Package
productNumber
​string · required

Product number

Example: PROD-001

MeterSubscriptionDTO

id
​string · required

Subscription ID

Example: 550e8400-e29b-41d4-a716-446655440000
name
​string · required

Subscription name

Example: Enterprise Plan
status
​string · required

Subscription status

Example: active
​MeterSubscriptionProductDTO[] · required

Products in this subscription that use the meter

MeterSubscriptionsResponseDTO

meterId
​string · required

Meter ID

Example: 550e8400-e29b-41d4-a716-446655440000
meterName
​string · required

Meter name

Example: api_calls
​MeterSubscriptionDTO[] · required

Subscriptions with products using this meter

PaymentMethodResponse

id
​string · required

Unique identifier of the payment method

Example: 019D1234-ABCD-7000-8000-123456789ABC
customerId
​string · required

Customer ID this payment method belongs to

Example: 019CBD16-4BFF-766B-BAD7-2F7C36DC3377
provider
​string · enum · required

Payment provider

Enum values:
ONPAY
STRIPE
Example: ONPAY
label
​string · required

Human-readable label for the payment method

Example: Dankort •••• 1234
isDefault
​boolean · required

Whether this is the default payment method for the customer

Example: false
status
​string · enum · required

Current status of the payment method

Enum values:
ACTIVE
EXPIRED
CANCELLED
Example: ACTIVE
createdAt
​string · required

When the payment method was created

Example: 2026-03-25T10:30:00.000Z
cardMask
​string

Masked card number

Example: 457199XXXXXX1234
cardType
​string

Card type as reported by the provider

Example: dankort
expiryMonth
​number

Card expiry month

Example: 12
expiryYear
​number

Card expiry year

Example: 2029

CreateCardSaveLinkRequest

provider
​string · enum · required

Payment provider to use for saving the card

Enum values:
ONPAY
STRIPE
Example: ONPAY

PaymentLinkResponse

url
​string · required

URL to the payment provider window. Send this to your customer.

Example: https://onpay.io/window/v3/ce8490fa-282e-11f1-a569-11b5d69909e2?k=FFtXYUNXxkh
expiresAt
​string · required

When the payment link expires

Example: 2026-03-25T11:30:00.000Z

ApplyPaymentMethodToSubscriptionsDto

enableAutomaticBilling
​boolean · required

Whether to enable automatic billing on the subscriptions

PublicSubscriptionPlanPhaseProduct

priceId
​string · required

Price ID of the product

Example: 550e8400-e29b-41d4-a716-446655440000
quantity
​number

Quantity for the product

Example: 1
customPrice
​string

Custom unit price override

Example: 89.99

PublicSubscriptionPlanPhase

id
​string · required

Phase ID

Example: 550e8400-e29b-41d4-a716-446655440000
sequence
​number · required

Sequence order of the phase (1-based)

Example: 1
discountType
​string · enum · required

Type of discount applied during the phase

Enum values:
none
percentage
Example: percentage
​PublicSubscriptionPlanPhaseProduct[] · required

Products for this phase

name
​string

Phase name

Example: Intro promo
discountValue
​string

Discount value for the phase

Example: 10.00
durationValue
​number

Phase duration value

Example: 3
durationUnit
​string · enum

Phase duration unit

Enum values:
day
week
month
year
Example: month

PublicSubscriptionPlanResponse

id
​string · required

Subscription plan ID

Example: 550e8400-e29b-41d4-a716-446655440000
name
​string · required

Subscription plan name

Example: Premium Plan
isActive
​boolean · required

Whether the subscription plan is active

Example: true
currency
​string · required

Currency code (ISO 4217)

Example: DKK
defaultBillingDirection
​string · enum · required

Default billing direction for new customer subscriptions

Enum values:
advance
arrears
Example: advance
​PublicSubscriptionPlanPhase[] · required

Phases configured for this plan

createdAt
​string · required

Date the plan was created

Example: 2024-01-01T00:00:00.000Z
updatedAt
​string · required

Date the plan was last updated

Example: 2024-01-01T00:00:00.000Z
description
​string

Subscription plan description

Example: Our premium subscription plan with all features

PublicListSubscriptionPlansResponse

​PublicSubscriptionPlanResponse[] · required

List of subscription plans

total
​number · required

Total number of subscription plans matching the query

Example: 42
page
​number · required

Current page number (1-indexed)

Example: 1
limit
​number · required

Maximum number of items per page

Example: 25
totalPages
​number · required

Total number of pages available

Example: 2

PublicCancelSubscriptionRequest

id
​string · required

Customer subscription ID to cancel

Example: 550e8400-e29b-41d4-a716-446655440000
strategy
​string · enum · required

Cancellation strategy

Enum values:
immediately
end_of_cycle
specific_date
clear_schedule
Example: end_of_cycle
effectiveDate
​string

Effective churn date (ISO 8601). Required when strategy is SPECIFIC_DATE.

Example: 2024-06-30
refundBehavior
​string · enum

Refund behavior when canceling immediately

Enum values:
none
last_invoice
prorated
Example: none
Default: none
cancellationReason
​string

Optional reason for cancelling the subscription

Example: Customer requested downgrade

PublicCustomerSubscriptionResponse

id
​string · required

Customer subscription ID

Example: 550e8400-e29b-41d4-a716-446655440000
customerId
​string · required

Customer ID

Example: 550e8400-e29b-41d4-a716-446655440000
customerName
​string · required

Customer name

Example: Acme Corporation
subscriptionName
​string · required

Subscription name

Example: Premium Plan
startDate
​string · required

Start date (ISO 8601)

Example: 2024-01-01
status
​string · enum · required

Status of the customer subscription

Enum values:
scheduled
trial
awaiting_payment
active
pending_cancellation
paused
cancelled
expired
Example: active
currency
​string · required

Currency code (ISO 4217)

Example: DKK
billingDirection
​string · enum · required

Billing direction: ADVANCE bills at period start, ARREARS at period end

Enum values:
advance
arrears
Example: advance
effectiveBillingDirection
​string · enum · required

Effective billing direction for the current period. Can differ from billingDirection if the direction was changed mid-period.

Enum values:
advance
arrears
Example: advance
planId
​string

Subscription plan ID (null for ad-hoc subscriptions)

Example: 550e8400-e29b-41d4-a716-446655440000
endDate
​string

End date (ISO 8601)

Example: 2025-01-01
scheduledChurnDate
​string

Scheduled churn date (ISO 8601)

Example: 2024-07-15
trialDays
​number

Number of trial days granted

Example: 14
cancellationReason
​string

Reason provided when the subscription was cancelled

Example: Customer requested downgrade
effectiveNextBillingDate
​string

Effective next billing date (ISO 8601)

Example: 2024-02-01
commitmentEndDate
​string

End date of the customer commitment period (ISO 8601)

Example: 2025-12-31
originalStartDate
​string

Original start date from source system for migrated subscriptions (ISO 8601)

Example: 2023-01-01
paymentMethodId
​string | null

Assigned payment method ID

Example: 550e8400-e29b-41d4-a716-446655440000
automaticBilling
​boolean

Whether automatic billing is enabled

Example: true
partnerReferenceId
​string | null

Your reconciliation reference (the clientReferenceId you passed at embedded-checkout bind time), echoed back so you can match this subscription to your order. Null for any subscription not created through a partner-bound checkout.

Example: order_7f3a9c21

PublicCustomerSubscriptionListItem

id
​string · required

Customer subscription ID

Example: 550e8400-e29b-41d4-a716-446655440000
customerId
​string · required

Customer ID

Example: 550e8400-e29b-41d4-a716-446655440000
customerName
​string · required

Customer name

Example: Acme Corporation
subscriptionName
​string · required

Subscription plan name

Example: Premium Plan
status
​string · enum · required

Status of the customer subscription

Enum values:
scheduled
trial
awaiting_payment
active
pending_cancellation
paused
cancelled
expired
Example: active
startDate
​string · required

Start date (ISO 8601)

Example: 2024-01-01
currency
​string · required

Currency code (ISO 4217)

Example: DKK
customerNumber
​string

Customer number

Example: C001
planId
​string

Subscription plan ID (null for ad-hoc subscriptions)

Example: 550e8400-e29b-41d4-a716-446655440000
effectiveNextBillingDate
​string

Effective next billing date (ISO 8601)

Example: 2024-02-01
partnerReferenceId
​string | null

Your reconciliation reference (the clientReferenceId you passed at embedded-checkout bind time), echoed back so you can match this subscription to your order. Null for any subscription not created through a partner-bound checkout. Filter the list by partnerReferenceId to recover a missed webhook.

Example: order_7f3a9c21

PublicListCustomerSubscriptionsResponse

​PublicCustomerSubscriptionListItem[] · required

List of customer subscriptions

total
​number · required

Total number of customer subscriptions matching the query

Example: 42
page
​number · required

Current page number (1-indexed)

Example: 1
limit
​number · required

Maximum number of items per page

Example: 25
totalPages
​number · required

Total number of pages available

Example: 2

PublicAssignSubscriptionProductOverride

priceId
​string · required

Price ID of the product to override

Example: 550e8400-e29b-41d4-a716-446655440000
quantity
​number · required

Quantity to assign (overrides the plan template quantity)

Example: 25

PublicAssignSubscriptionRequest

customerId
​string · required

Customer ID to assign the subscription to

Example: 550e8400-e29b-41d4-a716-446655440000
planId
​string · required

Subscription plan ID

Example: 550e8400-e29b-41d4-a716-446655440000
startDate
​string · required

Start date (ISO 8601)

Example: 2024-01-01
endDate
​string

End date (ISO 8601)

Example: 2025-01-01
billingCycleAnchor
​string

Billing cycle anchor date (ISO 8601). When the billing cycle should align to. Defaults to startDate if not provided.

Example: 2024-02-01
prorationBehavior
​string · enum

How to handle proration from startDate to billingCycleAnchor

Enum values:
create_prorations
always_invoice
none
Example: none
Default: none
trialDays
​number · min: 0 · max: 365

Trial period in days

Example: 14
billingDirection
​string · enum

Billing direction for this subscription

Enum values:
advance
arrears
Example: advance
customerDepartmentId
​string

Customer department ID for invoice delivery

Example: 550e8400-e29b-41d4-a716-446655440000
departmentContactOverrideId
​string

Contact override ID for department invoice delivery

Example: 550e8400-e29b-41d4-a716-446655440000
​PublicAssignSubscriptionProductOverride[]

Optional quantity overrides for products in the plan

paymentMethodId
​string

Payment method ID to assign for automatic billing

Example: 550e8400-e29b-41d4-a716-446655440000
automaticBilling
​boolean

Whether to enable automatic billing

Example: false

PublicScheduledChange

changeId
​string · required

Identifier of this queued change. Ephemeral — valid only until the change activates or is cancelled, so re-fetch rather than caching it.

Example: 550e8400-e29b-41d4-a716-446655440000
kind
​string · required

The kind of queued change: one of replace_plan, edit_products, change_direction, or churn.

Example: replace_plan
effectiveDate
​string · required

The date (YYYY-MM-DD) the change takes effect.

Example: 2024-07-01
planId
​string | null · required

The plan the subscription moves to when the change activates (null for ad-hoc / non-plan changes).

Example: 550e8400-e29b-41d4-a716-446655440000
subscriptionName
​string · required

The plan name the change moves to.

Example: Pro (annual)

PublicUpdateSubscriptionRequest

paymentMethodId
​string | null

Payment method ID to assign. Set to null to clear.

Example: 550e8400-e29b-41d4-a716-446655440000
automaticBilling
​boolean

Whether to automatically charge the saved card during billing

Example: true

DefaultContactDto

name
​string · required

Contact name

Example: John Doe
email
​string

Contact email

Example: john@acme.com
phone
​string

Contact phone number

Example: +45 12345678

CreateCustomerRequestDto

customerType
​string · enum · required

Specifies whether the customer is a business or a private person

Enum values:
BUSINESS
PRIVATE_PERSON
Example: BUSINESS
Default: BUSINESS
customerNumber
​string · required

Unique customer number

Example: C001
name
​string · required

Customer name

Example: Acme Corporation
vatZone
​string · enum · required

VAT zone classification

Enum values:
domestic
eu
abroad
domestic_without_vat
Example: domestic
customerGroupId
​string · required

Customer group ID

Example: 01HQ3Y1234567890ABCDEFGHIJ
countryCode
​string · required

Two-letter country code

Example: DK
email
​string

Email address

Example: contact@acme.com
phone
​string

Phone number

Example: +45 12345678
address
​string

Street address

Example: 123 Main Street
city
​string

City

Example: Copenhagen
postalCode
​string

Postal code

Example: 2100
vatNumber
​string

VAT registration number

Example: DK12345678
eanNumber
​string

EAN/GLN number for Peppol routing

Example: 5790000000001
website
​string

Website URL

Example: https://acme.com
notes
​string

Additional notes

Example: Key account customer
locale
​string

Locale for formatting invoice data

Example: da-DK
language
​string

Language code for communications

Example: da
creditLimit
​object · min: 0

Credit limit

Example: 50000
openingBalance
​object

Opening balance in the company base currency, seeding receivables that predate LedgerBee. Signed: positive = the customer owes us, negative = a credit position. Folds into the entity balance only (not into invoiced totals or overdue ageing).

Example: 1000
paymentTerms
​number · min: 0

Payment terms in days

Example: 30
paymentTermType
​string · enum

Payment term type. Defaults to NET_DAYS.

Enum values:
NET_DAYS
CASH
RUNNING_MONTH_PLUS_DAYS
Default: NET_DAYS
defaultCashAccountId
​string | null

Default cash payment account ID. Only relevant for CASH payment terms. Send null to clear.

defaultCurrency
​string

Default currency code

Example: DKK
poNumber
​string

Default purchase-order number ("PO-nr.") prefilled onto sales documents

Example: PO-12345
ourReference
​string

Default "Vores ref." (our-side reference) prefilled onto sales documents

Example: Jane Doe
invoiceDeliveryTypePreference
​string | null · enum

Preferred invoice delivery type for this customer. If set, overrides the app company default for billing.

Enum values:
Email
Sproom
reminderConfigId
​string | null

Reminder config profile ID. Send null to clear.

isActive
​boolean

Whether the customer is active

Example: true
Default: true
​object

Default contact to create for the customer. If not provided, customer name/email/phone will be used as fallback.

invoiceTemplateId
​string

Invoice PDF template override

creditNoteTemplateId
​string

Credit note PDF template override

quoteTemplateId
​string

Quote PDF template override

orderConfirmationTemplateId
​string

Order confirmation PDF template override

parentInvoiceTemplateId
​string | null

Parent single invoice PDF template override. Send null to clear.

includeChildDetailsPdf
​boolean

Whether to attach a zip of per-child detail PDFs when sending consolidated invoices

parentCustomerId
​string | null

Parent customer ID. Send null to clear.

billingRelationship
​string · enum

Billing relationship

Enum values:
self
parent_pays
consolidationMode
​string | null · enum

Consolidation mode. Send null to clear.

Enum values:
single_invoice
per_child_invoice
billingDay
​number | null

Billing day (1-28). Required for single invoice mode. Send null to clear.

​object

Key-value metadata to attach to the customer

PublicProvisionCustomerRequest

email
​string · required

Email of the portal user to grant access to. A credential-less portal user is created if none exists.

Example: jane.doe@acme.example
customerId
​string

The customer's LedgerBee id. The customer must already exist in the API key's tenant; this endpoint never creates one from an id (a 404 CUSTOMER_NOT_FOUND is returned if it doesn't). Supply either customerId or a customer payload.

Example: 550e8400-e29b-41d4-a716-446655440010
​object

A customer to upsert, identified idempotently by its customerNumber: an existing customer of the API key's tenant with that number is reused, otherwise a new one is created with this payload. Same shape as the gated POST /customers request (so vatZone and countryCode are required here). If customer.email is omitted, the portal-user email below is used as the customer's contact email (and its auto-created default contact). Supply either this or customerId.

role
​string · enum

Membership role to grant. Defaults to USER; the org's first member is force-assigned OWNER regardless.

Enum values:
OWNER
ADMIN
BILLING_ADMIN
USER
Example: USER
userName
​string

Display name of the portal user (set on first creation).

Example: Jane Doe
organizationDisplayName
​string

Display name for the customer organization (first-invite bootstrap).

mintHandoff
​boolean

When true, also mint a back-channel handoff reference in the same call (one round-trip "Go to portal"). Requires the API key to ALSO carry the portal-sso-mint scope, and the tenant to have back-channel handoff enabled.

Example: false
sub
​string

The partner's stable, unique user identifier — required when mintHandoff is true; keys the handoff identity (with the per-tenant handoff issuer).

Example: partner-user-7f3a9c21
mintCheckoutBindToken
​boolean

When true, also mint a one-time CHECKOUT-BIND reference in the same call — an opaque token the partner's fetchBindToken provider returns to the embed at checkout-start so the embedded checkout subscribes directly against THIS customer instead of staging an anonymous magic-link signup. Requires the API key to ALSO carry the portal-sso-mint scope. Independent of mintHandoff (login): a checkout-bind ref can never mint a login session.

Example: false
clientReferenceId
​string

Your own opaque reference for this order (Stripe client_reference_id parity), e.g. your internal order or cart id. It rides the minted checkout-bind ref onto the resulting subscription (as partnerReferenceId) and into every later subscription webhook, so you can reconcile our subscription to your record. Server-to-server only — it never reaches a client/iframe surface. Max 200 chars, [A-Za-z0-9_-] only.

Example: order_7f3a9c21

PublicProvisionCustomerResponse

customerId
​string · required

Resolved customer id.

Example: 550e8400-e29b-41d4-a716-446655440010
customerCreated
​boolean · required

Whether a new customer was created (false = an existing one was reused).

Example: true
portalUserId
​string · required

Resolved portal user id.

Example: 550e8400-e29b-41d4-a716-446655440020
membershipId
​string · required

The active organization membership id.

Example: 550e8400-e29b-41d4-a716-446655440030
role
​string · enum · required

The granted membership role.

Enum values:
OWNER
ADMIN
BILLING_ADMIN
USER
Example: OWNER
handoffRef
​string | null

Opaque, single-use, 60s handoff reference — present only when mintHandoff was requested. Null otherwise.

Example: Yk3pQ9sV2nR7tW1xZ4cB8mL6dF0aH5jE2gN9uK3pQ7s
handoffExpiresAt
​string | null

ISO-8601 expiry of the handoff reference, when minted. Null otherwise.

Example: 2026-06-04T12:34:56.000Z
checkoutBindToken
​string | null

Opaque, single-use, 60s checkout-bind reference — present only when mintCheckoutBindToken was requested. Null otherwise. The partner's fetchBindToken provider returns this to the embed at checkout-start; the embedded checkout redeems it to subscribe directly against this customer.

Example: Yk3pQ9sV2nR7tW1xZ4cB8mL6dF0aH5jE2gN9uK3pQ7s
checkoutBindExpiresAt
​string | null

ISO-8601 expiry of the checkout-bind reference, when minted. Null otherwise.

Example: 2026-06-04T12:34:56.000Z

PublicResolvePortalPlansRequest

customerId
​string

The buyer's LedgerBee customer id (an identity HANDLE — the server hydrates customer group / country / type from it; raw rule attributes are never accepted). The customer must exist in the API key's tenant (a 404 CUSTOMER_NOT_FOUND otherwise). When present, the server-resolved identity wins and the countryCode/customerType hints are ignored.

Example: 550e8400-e29b-41d4-a716-446655440010
buyerEmail
​string

The specific person (their email) the partner is acting on behalf of under customerId — e.g. the user currently signed in on the partner's site. Bound into the catalog token: when that token is later exchanged for a portal login handoff, THIS person is logged in (or bootstrapped credential-less under the customer's organization), instead of the customer's contact email / first member. Ignored without customerId; does not affect catalog visibility.

Example: buyer@partner.example
countryCode
​string

ISO 3166-1 alpha-2 country hint for the no-customer-yet preview (drives the country rule clause). Ignored when customerId is supplied.

Example: DK
customerType
​string · enum

Customer-type hint for the no-customer-yet preview (drives the customerType rule clause). Ignored when customerId is supplied.

Enum values:
BUSINESS
PRIVATE_PERSON
Example: BUSINESS
planIds
​string[]

Resolve only these plan ids. Omit to resolve every ACTIVE plan of the tenant. Each must be a uuid.

Example: ["550e8400-e29b-41d4-a716-446655440100"]
language
​string · enum

Language the resolved cards are localized to. Defaults to en.

Enum values:
en
da
Example: en

PublicResolvePortalPlansResponse

​object[] · required

The plans visible AND checkout-able to the resolved buyer, each carrying the full card content the partner renders. Non-public (gated) plans appear here when the buyer matches their rule.

catalogToken
​string · required

Opaque, reusable, read-only load-time catalog token (43-char base64url). The partner returns it to each embed iframe via its fetchCatalogToken provider; the iframe presents it as a Bearer token to the by-id pricing-card / checkout-document reads. Scoped to the resolved buyer + the returned plans — replay yields only the same already-authorized cards. Treat it as a client secret (TLS-only, never log, never put on a URL).

Example: Yk3pQ9sV2nR7tW1xZ4cB8mL6dF0aH5jE2gN9uK3pQ7s
expiresAt
​string · required

ISO-8601 expiry of the catalog token.

Example: 2026-06-06T12:34:56.000Z

PublicPortalPlansListResponse

​object[] · required

Every ACTIVE plan with a PUBLISHED version in the API key's tenant, projected as its canonical native card and ordered by display order. This is the integrator's full catalogue — NOT filtered by any per-visitor visibility rule and NOT run through the plan-routing rule engine. Each entry carries the full card content the integrator renders.

PublicPortalPlanResponse

​object · required

A single plan projected as its canonical native card. Returns 404 PORTAL_PLAN_NOT_FOUND only when the plan id is unknown to the API key's tenant or has no published version — never filtered by visibility rules or the rule engine.

PublicPortalSsoJwks

​object[] · required

The published public JWK(s). Public key material only — never any private component.

Example: [{"kty":"RSA","use":"sig","alg":"RS256","kid":"abc123","n":"…","e":"AQAB"}]

PublicHandoffMembership

customerId
​string · required

The id of the customer (the GET /v1/customers resource) this user belongs to. The portal organization is resolved from it server-side — created automatically on first login if it doesn't exist yet — and a customer that doesn't belong to the API key's tenant is rejected.

Example: 550e8400-e29b-41d4-a716-446655440010
role
​string · required

Role to grant within that organization. One of OWNER, ADMIN, BILLING_ADMIN, USER. Unknown roles are rejected.

Example: OWNER
primary
​boolean

Marks this membership as the organization the user is signed into for this session. When more than one membership is asserted, EXACTLY ONE must be primary (otherwise the mint is rejected with a 400). With a single membership it is the implied sign-in organization, so the flag is optional.

Example: true

PublicHandoffMintRequest

email
​string · required

Email of the partner-provisioned user. Links a first-time SSO login to an existing invited customer-portal user.

Example: jane.doe@partner-customer.com
sub
​string · required

The partner's stable, unique identifier for the user. Keyed together with the per-tenant handoff issuer to resolve the portal user across logins.

Example: partner-user-7f3a9c21
​PublicHandoffMembership[] · required

At least one customer membership to grant this user — required. The customer's portal organization (an opaque internal container) and the membership are created automatically server-side at redeem, so a prior provision call is NOT needed; you only ever reference customers, never organizations. Validated at mint: a customerId that isn't a customer of the API key's tenant, or an unknown role, is rejected with a 400 (rather than failing the user's browser redirect). A handoff with no membership can't establish a portal session, so an empty/omitted array is rejected here rather than minting a ref that would fail at redeem.

Example: [{"customerId":"550e8400-e29b-41d4-a716-446655440010","role":"OWNER"}]
name
​string

Display name of the user; used to populate the customer-portal user's name on first login.

Example: Jane Doe

PublicHandoffMintResponse

ref
​string · required

Opaque, single-use, short-TTL reference. Carries NO identity — the identity lives only in server-side storage keyed by this reference until it is redeemed once at the customer portal.

Example: Yk3pQ9sV2nR7tW1xZ4cB8mL6dF0aH5jE2gN9uK3pQ7s
expiresAt
​string · required

ISO-8601 timestamp after which the reference can no longer be redeemed (60 seconds after minting).

Example: 2026-06-03T12:34:56.000Z

PublicRevokeSessionsRequest

sub
​string · required

The partner's stable subject id for the user — the same sub used when minting their handoff. Every active portal session of that user is force-refreshed.

Example: partner-user-7f3a9c21

PublicRevokeSessionsResponse

revoked
​number · required

Number of memberships whose sessions were force-refreshed (0 when the user has no active sessions).

Example: 2

VatCodeResponse

id
​string · required

The unique identifier of the VAT code

Example: 550e8400-e29b-41d4-a716-446655440000
vatCode
​string · required

VAT code identifier

Example: VAT25
name
​string · required

Name/description of the VAT code

Example: 25% Standard VAT
vatRate
​number · required

VAT rate percentage

Example: 25
type
​string · required

VAT type

Example: Output/sales
principle
​string · required

VAT principle - Gross (VAT included) or Net (VAT excluded)

Example: gross
accountToBookId
​string

The ledger account ID to book VAT to

Example: 550e8400-e29b-41d4-a716-446655440001
accountToBookNumber
​number

The ledger account number to book VAT to

Example: 6910
accountToBookName
​string

The ledger account name to book VAT to

Example: Output VAT
contraAccountToBookId
​string

The contra account ID for VAT entries

Example: 550e8400-e29b-41d4-a716-446655440002
contraAccountToBookNumber
​number

The contra account number for VAT entries

Example: 6920
contraAccountToBookName
​string

The contra account name for VAT entries

Example: Input VAT

VendorGroupResponse

id
​string · required

The unique identifier of the vendor group

Example: 550e8400-e29b-41d4-a716-446655440000
name
​string · required

Name of the vendor group

Example: Domestic Vendors
description
​string

Description of the vendor group

Example: All domestic vendor accounts
defaultAccountId
​string

Default ledger account ID

Example: 550e8400-e29b-41d4-a716-446655440001

VendorDepartmentResponse

id
​string · required

The unique identifier of the department

Example: 550e8400-e29b-41d4-a716-446655440000
name
​string · required

Name of the department

Example: Headquarters
isDefault
​boolean · required

Whether this is the default department for the vendor

Example: true
isActive
​boolean · required

Whether the department is active

Example: true
poNumber
​string

Purchase order number

Example: PO-12345
eanNumber
​string

EAN number for e-invoicing

Example: 5790000000000
address
​string

Street address

Example: 123 Main Street
city
​string

City

Example: Copenhagen
postalCode
​string

Postal code

Example: 2100
countryCode
​string

Two-letter country code (ISO 3166-1 alpha-2)

Example: DK

VendorContactResponse

id
​string · required

The unique identifier of the contact

Example: 550e8400-e29b-41d4-a716-446655440000
name
​string · required

Name of the contact

Example: John Doe
isDefaultForVendor
​boolean · required

Whether this is the default contact for the vendor

Example: true
email
​string

Email address

Example: john.doe@acme-supplies.com
phone
​string

Phone number

Example: +45 12345678

VendorResponse

id
​string · required

The unique identifier of the vendor

Example: 550e8400-e29b-41d4-a716-446655440000
vendorNumber
​string · required

Vendor number

Example: V001
name
​string · required

Name of the vendor

Example: Acme Supplies
vendorGroupId
​string · required

Vendor group ID

Example: 550e8400-e29b-41d4-a716-446655440001
currency
​string · required

Currency code

Example: DKK
status
​string · enum · required

Vendor status

Enum values:
active
inactive
archived
Example: active
vendorGroupName
​string

Vendor group name

Example: Domestic Vendors
email
​string

Email address

Example: contact@acme-supplies.com
phone
​string

Phone number

Example: +45 12345678
address
​string

Street address

Example: 123 Main Street
city
​string

City

Example: Copenhagen
postalCode
​string

Postal code

Example: 2100
countryCode
​string

Two-letter country code (ISO 3166-1 alpha-2)

Example: DK
vatNumber
​string

VAT registration number

Example: DK12345678
attention
​string

Attention field

Example: Accounts Payable
paymentTerms
​number

Payment terms in days

Example: 30
openingBalance
​number

Opening balance in the company base currency (signed: positive = we owe the vendor)

Example: 1000

CreateVendorContactRequest

name
​string · required

Contact name

Example: John Doe
isDefault
​boolean · required

Whether this is the default contact for the vendor

Example: true
email
​string

Email address

Example: john.doe@acme-supplies.com
phone
​string

Phone number

Example: +45 12345678

CreateVendorRequest

vendorNumber
​string · required

Unique vendor number

Example: V001
name
​string · required

Vendor name

Example: Acme Supplies
vendorGroupId
​string · required

Vendor group ID

Example: 550e8400-e29b-41d4-a716-446655440001
currency
​string · required

Currency code

Example: DKK
countryCode
​string · required

Two-letter country code

Example: DK
​CreateVendorContactRequest[] · required

Contacts for the vendor. At least one contact with isDefault: true is required.

email
​string

Email address

Example: contact@acme-supplies.com
phone
​string

Phone number

Example: +45 12345678
address
​string

Street address

Example: 123 Main Street
city
​string

City

Example: Copenhagen
postalCode
​string

Postal code

Example: 2100
vatNumber
​string

VAT registration number

Example: DK12345678
attention
​string

Attention field

Example: Accounts Payable
paymentTerms
​number · min: 0

Payment terms in days

Example: 30
openingBalance
​number

Opening balance in the company base currency, seeding payables that predate LedgerBee. Signed: positive = we owe the vendor, negative = a credit position.

Example: 1000
defaultAccountId
​string

Default ledger account ID

Example: 550e8400-e29b-41d4-a716-446655440002

CreateVendorResponse

id
​string · required

The unique identifier of the created vendor

Example: 550e8400-e29b-41d4-a716-446655440000
vendorNumber
​string · required

Vendor number

Example: V001

CreateWebhookEndpointRequest

url
​string · required

The HTTPS URL events are delivered to. Must be a public https URL (loopback/private/link-local hosts are rejected).

Example: https://example.com/webhooks/ledgerbee
enabledEvents
​string[] · required

The events to subscribe to. Must contain at least one known event type.

Available events:

  • subscription.assigned — Fired when a subscription is assigned to a customer (may be future-dated / upcoming).
  • subscription.started — Fired when a subscription becomes active — grant entitlement/access on this event, not on assigned.
  • subscription.updated — Fired when a config property changes without a structural transition (e.g. name, payment method, billing direction).
  • subscription.transitioned — Fired on a structural change: plan replace, product edit, billing cadence change, or realign.
  • subscription.paused — Fired when a subscription is paused.
  • subscription.resumed — Fired when a subscription resumes from a pause.
  • subscription.trial_ended — Fired when a subscription trial ends and normal billing begins (the sub stays active).
  • subscription.cancellation_scheduled — Fired when a future cancellation is scheduled for a subscription (still active until then).
  • subscription.cancellation_cleared — Fired when a previously scheduled cancellation is cleared.
  • subscription.churned — Fired when a subscription is cancelled/finalized — revoke entitlement on this event.
  • subscription.billed — Fired once per (child) subscription when a billing run produces its invoice.
  • subscription.payment_succeeded — Fired when a card charge for the subscription clears — the success pair of the charge_failed error signal.
  • subscription.error — Fired when a delivery/processing problem occurs for a subscription (e.g. undeliverable recipient).
  • billing.invoice_sent — Fired when an invoice document is sent to the customer.
  • billing.credit_note_sent — Fired when a credit note document is sent to the customer.
  • customer.created — Fired when a customer is created (payload flags whether it was a portal self-signup).
  • card.added — Fired when a card is successfully saved for a customer (provider-opaque).
  • card.removed — Fired when a saved card is removed in-app or cancelled at the provider.
  • card.updated — Fired when a saved card’s details change (network auto-update or refresh).
  • card.expiring — Fired when a saved card is approaching expiry.
  • card.expired — Fired when a saved card is observed to have expired.
  • card.default_changed — Fired when the customer’s default card changes (explicit or auto-default).
  • card.backup_changed — Fired when the customer’s designated backup card is set, replaced, or cleared.
  • card.add_failed — Fired when a card-save attempt fails (decline or authentication failure).
  • quote.sent — Fired when a quote is sent to the customer.
  • quote.converted — Fired when a quote is converted into an order confirmation or an invoice.
  • order_confirmation.sent — Fired when an order confirmation is sent to the customer.
  • order_confirmation.converted — Fired when an order confirmation is converted into an invoice.
  • project.created — Fired when a project is created (payload carries the owned dimension id for correlation with the dimensions API).
  • project.updated — Fired when a project's fields are updated (payload lists the changed field names). Also fires on un-archive.
  • project.archived — Fired when a project is archived (its dimension is deactivated; postings history is preserved).
Enum values:
subscription.assigned
subscription.started
subscription.updated
subscription.transitioned
subscription.paused
subscription.resumed
subscription.trial_ended
subscription.cancellation_scheduled
Example: ["subscription.assigned"]
description
​string · maxLength: 512

Optional human-facing description.

Example: Production billing sync

WebhookEndpointWithSecret

id
​string · required

Unique identifier of the webhook endpoint.

Example: 0192f3a1-...
url
​string · required

The HTTPS URL events are delivered to.

Example: https://example.com/webhooks/ledgerbee
enabledEvents
​string[] · required

The events this endpoint is subscribed to. An event is delivered to every enabled endpoint subscribed to its type.

Available events:

  • subscription.assigned — Fired when a subscription is assigned to a customer (may be future-dated / upcoming).
  • subscription.started — Fired when a subscription becomes active — grant entitlement/access on this event, not on assigned.
  • subscription.updated — Fired when a config property changes without a structural transition (e.g. name, payment method, billing direction).
  • subscription.transitioned — Fired on a structural change: plan replace, product edit, billing cadence change, or realign.
  • subscription.paused — Fired when a subscription is paused.
  • subscription.resumed — Fired when a subscription resumes from a pause.
  • subscription.trial_ended — Fired when a subscription trial ends and normal billing begins (the sub stays active).
  • subscription.cancellation_scheduled — Fired when a future cancellation is scheduled for a subscription (still active until then).
  • subscription.cancellation_cleared — Fired when a previously scheduled cancellation is cleared.
  • subscription.churned — Fired when a subscription is cancelled/finalized — revoke entitlement on this event.
  • subscription.billed — Fired once per (child) subscription when a billing run produces its invoice.
  • subscription.payment_succeeded — Fired when a card charge for the subscription clears — the success pair of the charge_failed error signal.
  • subscription.error — Fired when a delivery/processing problem occurs for a subscription (e.g. undeliverable recipient).
  • billing.invoice_sent — Fired when an invoice document is sent to the customer.
  • billing.credit_note_sent — Fired when a credit note document is sent to the customer.
  • customer.created — Fired when a customer is created (payload flags whether it was a portal self-signup).
  • card.added — Fired when a card is successfully saved for a customer (provider-opaque).
  • card.removed — Fired when a saved card is removed in-app or cancelled at the provider.
  • card.updated — Fired when a saved card’s details change (network auto-update or refresh).
  • card.expiring — Fired when a saved card is approaching expiry.
  • card.expired — Fired when a saved card is observed to have expired.
  • card.default_changed — Fired when the customer’s default card changes (explicit or auto-default).
  • card.backup_changed — Fired when the customer’s designated backup card is set, replaced, or cleared.
  • card.add_failed — Fired when a card-save attempt fails (decline or authentication failure).
  • quote.sent — Fired when a quote is sent to the customer.
  • quote.converted — Fired when a quote is converted into an order confirmation or an invoice.
  • order_confirmation.sent — Fired when an order confirmation is sent to the customer.
  • order_confirmation.converted — Fired when an order confirmation is converted into an invoice.
  • project.created — Fired when a project is created (payload carries the owned dimension id for correlation with the dimensions API).
  • project.updated — Fired when a project's fields are updated (payload lists the changed field names). Also fires on un-archive.
  • project.archived — Fired when a project is archived (its dimension is deactivated; postings history is preserved).
Enum values:
subscription.assigned
subscription.started
subscription.updated
subscription.transitioned
subscription.paused
subscription.resumed
subscription.trial_ended
subscription.cancellation_scheduled
Example: ["subscription.assigned"]
status
​string · enum · required

Delivery status. disabled endpoints are retained but receive no events.

Enum values:
enabled
disabled
Example: enabled
createdAt
​string · required

ISO 8601 creation timestamp.

Example: 2026-05-29T10:00:00.000Z
updatedAt
​string · required

ISO 8601 last-update timestamp.

Example: 2026-05-29T10:00:00.000Z
secret
​string · required

The signing secret (shown only on create and roll-secret). Used to verify the webhook-signature header.

Example: whsec_...
description
​string | null

Optional human-facing description of what this endpoint is used for.

Example: Production billing sync

WebhookEndpoint

id
​string · required

Unique identifier of the webhook endpoint.

Example: 0192f3a1-...
url
​string · required

The HTTPS URL events are delivered to.

Example: https://example.com/webhooks/ledgerbee
enabledEvents
​string[] · required

The events this endpoint is subscribed to. An event is delivered to every enabled endpoint subscribed to its type.

Available events:

  • subscription.assigned — Fired when a subscription is assigned to a customer (may be future-dated / upcoming).
  • subscription.started — Fired when a subscription becomes active — grant entitlement/access on this event, not on assigned.
  • subscription.updated — Fired when a config property changes without a structural transition (e.g. name, payment method, billing direction).
  • subscription.transitioned — Fired on a structural change: plan replace, product edit, billing cadence change, or realign.
  • subscription.paused — Fired when a subscription is paused.
  • subscription.resumed — Fired when a subscription resumes from a pause.
  • subscription.trial_ended — Fired when a subscription trial ends and normal billing begins (the sub stays active).
  • subscription.cancellation_scheduled — Fired when a future cancellation is scheduled for a subscription (still active until then).
  • subscription.cancellation_cleared — Fired when a previously scheduled cancellation is cleared.
  • subscription.churned — Fired when a subscription is cancelled/finalized — revoke entitlement on this event.
  • subscription.billed — Fired once per (child) subscription when a billing run produces its invoice.
  • subscription.payment_succeeded — Fired when a card charge for the subscription clears — the success pair of the charge_failed error signal.
  • subscription.error — Fired when a delivery/processing problem occurs for a subscription (e.g. undeliverable recipient).
  • billing.invoice_sent — Fired when an invoice document is sent to the customer.
  • billing.credit_note_sent — Fired when a credit note document is sent to the customer.
  • customer.created — Fired when a customer is created (payload flags whether it was a portal self-signup).
  • card.added — Fired when a card is successfully saved for a customer (provider-opaque).
  • card.removed — Fired when a saved card is removed in-app or cancelled at the provider.
  • card.updated — Fired when a saved card’s details change (network auto-update or refresh).
  • card.expiring — Fired when a saved card is approaching expiry.
  • card.expired — Fired when a saved card is observed to have expired.
  • card.default_changed — Fired when the customer’s default card changes (explicit or auto-default).
  • card.backup_changed — Fired when the customer’s designated backup card is set, replaced, or cleared.
  • card.add_failed — Fired when a card-save attempt fails (decline or authentication failure).
  • quote.sent — Fired when a quote is sent to the customer.
  • quote.converted — Fired when a quote is converted into an order confirmation or an invoice.
  • order_confirmation.sent — Fired when an order confirmation is sent to the customer.
  • order_confirmation.converted — Fired when an order confirmation is converted into an invoice.
  • project.created — Fired when a project is created (payload carries the owned dimension id for correlation with the dimensions API).
  • project.updated — Fired when a project's fields are updated (payload lists the changed field names). Also fires on un-archive.
  • project.archived — Fired when a project is archived (its dimension is deactivated; postings history is preserved).
Enum values:
subscription.assigned
subscription.started
subscription.updated
subscription.transitioned
subscription.paused
subscription.resumed
subscription.trial_ended
subscription.cancellation_scheduled
Example: ["subscription.assigned"]
status
​string · enum · required

Delivery status. disabled endpoints are retained but receive no events.

Enum values:
enabled
disabled
Example: enabled
createdAt
​string · required

ISO 8601 creation timestamp.

Example: 2026-05-29T10:00:00.000Z
updatedAt
​string · required

ISO 8601 last-update timestamp.

Example: 2026-05-29T10:00:00.000Z
description
​string | null

Optional human-facing description of what this endpoint is used for.

Example: Production billing sync

WebhookEndpointList

​WebhookEndpoint[] · required
total
​number · required

Total number of endpoints matching the query.

Example: 3
page
​number · required

Current page (1-based).

Example: 1
pageSize
​number · required

Page size.

Example: 25

UpdateWebhookEndpointRequest

url
​string

New HTTPS delivery URL.

Example: https://example.com/webhooks/v2
enabledEvents
​string[]

Replace the full set of subscribed events.

Available events:

  • subscription.assigned — Fired when a subscription is assigned to a customer (may be future-dated / upcoming).
  • subscription.started — Fired when a subscription becomes active — grant entitlement/access on this event, not on assigned.
  • subscription.updated — Fired when a config property changes without a structural transition (e.g. name, payment method, billing direction).
  • subscription.transitioned — Fired on a structural change: plan replace, product edit, billing cadence change, or realign.
  • subscription.paused — Fired when a subscription is paused.
  • subscription.resumed — Fired when a subscription resumes from a pause.
  • subscription.trial_ended — Fired when a subscription trial ends and normal billing begins (the sub stays active).
  • subscription.cancellation_scheduled — Fired when a future cancellation is scheduled for a subscription (still active until then).
  • subscription.cancellation_cleared — Fired when a previously scheduled cancellation is cleared.
  • subscription.churned — Fired when a subscription is cancelled/finalized — revoke entitlement on this event.
  • subscription.billed — Fired once per (child) subscription when a billing run produces its invoice.
  • subscription.payment_succeeded — Fired when a card charge for the subscription clears — the success pair of the charge_failed error signal.
  • subscription.error — Fired when a delivery/processing problem occurs for a subscription (e.g. undeliverable recipient).
  • billing.invoice_sent — Fired when an invoice document is sent to the customer.
  • billing.credit_note_sent — Fired when a credit note document is sent to the customer.
  • customer.created — Fired when a customer is created (payload flags whether it was a portal self-signup).
  • card.added — Fired when a card is successfully saved for a customer (provider-opaque).
  • card.removed — Fired when a saved card is removed in-app or cancelled at the provider.
  • card.updated — Fired when a saved card’s details change (network auto-update or refresh).
  • card.expiring — Fired when a saved card is approaching expiry.
  • card.expired — Fired when a saved card is observed to have expired.
  • card.default_changed — Fired when the customer’s default card changes (explicit or auto-default).
  • card.backup_changed — Fired when the customer’s designated backup card is set, replaced, or cleared.
  • card.add_failed — Fired when a card-save attempt fails (decline or authentication failure).
  • quote.sent — Fired when a quote is sent to the customer.
  • quote.converted — Fired when a quote is converted into an order confirmation or an invoice.
  • order_confirmation.sent — Fired when an order confirmation is sent to the customer.
  • order_confirmation.converted — Fired when an order confirmation is converted into an invoice.
  • project.created — Fired when a project is created (payload carries the owned dimension id for correlation with the dimensions API).
  • project.updated — Fired when a project's fields are updated (payload lists the changed field names). Also fires on un-archive.
  • project.archived — Fired when a project is archived (its dimension is deactivated; postings history is preserved).
Enum values:
subscription.assigned
subscription.started
subscription.updated
subscription.transitioned
subscription.paused
subscription.resumed
subscription.trial_ended
subscription.cancellation_scheduled
Example: ["subscription.assigned"]
status
​string · enum

Enable or disable delivery without deleting the endpoint.

Enum values:
enabled
disabled
description
​string | null · maxLength: 512

Update the description. Send null to clear it.

Example: Updated description

TestWebhookEndpointRequest

event
​string · enum · required

The event type to simulate. Must be one of the endpoint’s subscribed events.

Available events:

  • subscription.assigned — Fired when a subscription is assigned to a customer (may be future-dated / upcoming).
  • subscription.started — Fired when a subscription becomes active — grant entitlement/access on this event, not on assigned.
  • subscription.updated — Fired when a config property changes without a structural transition (e.g. name, payment method, billing direction).
  • subscription.transitioned — Fired on a structural change: plan replace, product edit, billing cadence change, or realign.
  • subscription.paused — Fired when a subscription is paused.
  • subscription.resumed — Fired when a subscription resumes from a pause.
  • subscription.trial_ended — Fired when a subscription trial ends and normal billing begins (the sub stays active).
  • subscription.cancellation_scheduled — Fired when a future cancellation is scheduled for a subscription (still active until then).
  • subscription.cancellation_cleared — Fired when a previously scheduled cancellation is cleared.
  • subscription.churned — Fired when a subscription is cancelled/finalized — revoke entitlement on this event.
  • subscription.billed — Fired once per (child) subscription when a billing run produces its invoice.
  • subscription.payment_succeeded — Fired when a card charge for the subscription clears — the success pair of the charge_failed error signal.
  • subscription.error — Fired when a delivery/processing problem occurs for a subscription (e.g. undeliverable recipient).
  • billing.invoice_sent — Fired when an invoice document is sent to the customer.
  • billing.credit_note_sent — Fired when a credit note document is sent to the customer.
  • customer.created — Fired when a customer is created (payload flags whether it was a portal self-signup).
  • card.added — Fired when a card is successfully saved for a customer (provider-opaque).
  • card.removed — Fired when a saved card is removed in-app or cancelled at the provider.
  • card.updated — Fired when a saved card’s details change (network auto-update or refresh).
  • card.expiring — Fired when a saved card is approaching expiry.
  • card.expired — Fired when a saved card is observed to have expired.
  • card.default_changed — Fired when the customer’s default card changes (explicit or auto-default).
  • card.backup_changed — Fired when the customer’s designated backup card is set, replaced, or cleared.
  • card.add_failed — Fired when a card-save attempt fails (decline or authentication failure).
  • quote.sent — Fired when a quote is sent to the customer.
  • quote.converted — Fired when a quote is converted into an order confirmation or an invoice.
  • order_confirmation.sent — Fired when an order confirmation is sent to the customer.
  • order_confirmation.converted — Fired when an order confirmation is converted into an invoice.
  • project.created — Fired when a project is created (payload carries the owned dimension id for correlation with the dimensions API).
  • project.updated — Fired when a project's fields are updated (payload lists the changed field names). Also fires on un-archive.
  • project.archived — Fired when a project is archived (its dimension is deactivated; postings history is preserved).
Enum values:
subscription.assigned
subscription.started
subscription.updated
subscription.transitioned
subscription.paused
subscription.resumed
subscription.trial_ended
subscription.cancellation_scheduled
Example: subscription.assigned

TestWebhookEndpointResult

success
​boolean · required

Whether the endpoint responded with a 2xx status.

Example: true
durationMs
​number · required

Round-trip time of the probe in milliseconds.

Example: 142
statusCode
​number | null

HTTP status returned by the endpoint, or null on a transport error.

Example: 200
error
​string | null

Transport/error message when the probe failed, otherwise null.

Example: null

PublicCreateInvoiceLine

priceId
​string

Product price ID. Required on a billable line — the line bills this product. Omit only for text / separator / discount lines (set lineType instead).

Example: 0197A943-2325-7829-B835-B6C71A293065
lineType
​string · enum

Semantic type of the line (subscription, usage, discount, text, separator, etc.)

Enum values:
subscription
usage
proration_initial
proration_post_trial
proration_credit
proration_charge
proration_adjustment
proration_phase_transition
description
​string

Custom description for this line item

Example: Premium widget - Blue color
quantity
​number

Quantity. Required on a billable line; omit for text / separator / discount lines.

Example: 2
unitPrice
​string

One-time unit-price override (decimal string). Defaults to the price's current amount in the document currency when omitted. totalPrice (= quantity * unitPrice) and VAT are always computed server-side and must not be sent.

Example: 1083.32
recognitionPeriodDays
​number

Override the revenue recognition period for this line (in days)

Example: 365

PublicCreateInvoice

customerId
​string · required

Customer ID this invoice is for. Required — every invoice must reference a customer (this mirrors the gated app, which also requires a customer).

Example: 0197A943-2325-7829-B835-B6C71A293065
date
​string · required

Invoice date (ISO date, YYYY-MM-DD)

Example: 2024-01-15
​PublicCreateInvoiceLine[] · required

Invoice lines

customerDepartmentId
​string

Customer department ID (for EAN-based e-invoicing and address override)

Example: 0197A943-2325-7829-B835-B6C71A293065
customerContactId
​string

Customer contact ID (invoice recipient)

Example: 0197A943-2325-7829-B835-B6C71A293065
dueDate
​string

Due date for payment (ISO date). Derived from payment terms when omitted.

Example: 2024-02-15
currency
​string

Currency code (ISO 4217). Defaults to the company default currency.

Example: DKK
paymentTerms
​number

Payment terms in days

Example: 30
reference
​string

Reference / PO number ("PO-nr.")

Example: PO-12345
ourReference
​string

Our reference ("Vores ref.")

Example: Jane Doe
description
​string

Optional description of the invoice

Example: Monthly service invoice
notes
​string

Additional notes or comments

Example: Thank you for your business!

PublicInvoiceLine

id
​string · required

Line item ID

Example: 0197A943-2325-7829-B835-B6C71A293065
quantity
​number · required

Quantity

Example: 2
unitPrice
​string · required

Unit price (decimal string)

Example: 1083.32
totalPrice
​string · required

Total price (decimal string)

Example: 2166.65
priceId
​string | null

Price ID this line references

description
​string | null

Custom description for this line item

lineType
​string | null · enum

Semantic line type

Enum values:
subscription
usage
proration_initial
proration_post_trial
proration_credit
proration_charge
proration_adjustment
proration_phase_transition
vatAmount
​string | null

VAT amount (decimal string)

vatRate
​string | null

VAT rate percentage (decimal string)

PublicInvoice

id
​string · required

Invoice ID

Example: 0197A943-2325-7829-B835-B6C71A293065
status
​string · enum · required

Invoice status

Enum values:
draft
scheduled
sending
sent
paid
partially_paid
cancelled
uncollectible
Example: sent
date
​string · required

Invoice date (ISO date)

Example: 2024-01-15
currency
​string · required

Currency code (ISO 4217)

Example: DKK
subtotal
​string · required

Subtotal before VAT (decimal string)

Example: 2166.65
vat
​string · required

VAT amount (decimal string)

Example: 541.66
amount
​string · required

Total amount including VAT (decimal string)

Example: 2708.31
​PublicInvoiceLine[] · required

Invoice lines

createdAt
​string · required

Creation timestamp (ISO)

Example: 2024-01-15T10:30:00.000Z
updatedAt
​string · required

Last update timestamp (ISO)

Example: 2024-01-15T10:30:00.000Z
number
​string | null

Invoice number. Null while the invoice is still a draft (allocated at booking).

dueDate
​string | null

Due date (ISO date)

customerId
​string | null

Customer ID

reference
​string | null

Reference / PO number

ourReference
​string | null

Our reference ("Vores ref.")

notes
​string | null

Additional notes

PublicInvoiceListItem

id
​string · required

Invoice ID

Example: 0197A943-2325-7829-B835-B6C71A293065
status
​string · enum · required

Invoice status

Enum values:
draft
scheduled
sending
sent
paid
partially_paid
cancelled
uncollectible
Example: sent
date
​string · required

Invoice date (ISO date)

Example: 2024-01-15
currency
​string · required

Currency code (ISO 4217)

Example: DKK
subtotal
​string · required

Subtotal before VAT (decimal string)

Example: 2166.65
vat
​string · required

VAT amount (decimal string)

Example: 541.66
amount
​string · required

Total amount including VAT (decimal string)

Example: 2708.31
createdAt
​string · required

Creation timestamp (ISO)

Example: 2024-01-15T10:30:00.000Z
updatedAt
​string · required

Last update timestamp (ISO)

Example: 2024-01-15T10:30:00.000Z
number
​string | null

Invoice number. Null while the invoice is still a draft (allocated at booking).

dueDate
​string | null

Due date (ISO date)

customerId
​string | null

Customer ID

reference
​string | null

Reference / PO number

ourReference
​string | null

Our reference ("Vores ref.")

notes
​string | null

Additional notes

PublicListInvoicesResponse

​PublicInvoiceListItem[] · required

Invoices on this page (line items omitted; GET one invoice for lines)

total
​number · required

Total invoices matching the query

Example: 42
page
​number · required

Current page (1-indexed)

Example: 1
limit
​number · required

Items per page

Example: 25
totalPages
​number · required

Total pages

Example: 2

PublicSendInvoice

deliveryType
​string · enum · required

Delivery channel

Enum values:
Email
Sproom
Manual
Example: Email
overrideEmail
​string

Override recipient email for this send only

overrideEanNumber
​string

Override EAN number for this send only

updateCustomerRecord
​boolean

Persist the override email / EAN onto the customer record

Default: false
documentTemplateId
​string

Override document template for PDF generation

PublicSendInvoiceResponse

success
​boolean · required

Whether the send was accepted

Example: true
deliveryType
​string · enum · required

The delivery channel the document was sent through

Enum values:
Email
Sproom
Manual
Example: Email
sproomDocumentId
​string | null

Sproom document ID when sent via e-invoicing

PublicDeliveryStatusSummary

sendCount
​number · required

Number of send attempts recorded

Example: 2
lastDeliveryType
​string | null · enum

Channel of the most recent send

Enum values:
Email
Sproom
Manual
lastRecipientEmail
​string | null

Recipient email of the most recent send

lastRecipientEan
​string | null

Recipient EAN of the most recent send

lastSentAt
​string | null

Timestamp of the most recent send (ISO)

PublicDeliveryLogEntry

id
​string · required

Delivery log entry ID

status
​string · enum · required

Outcome of the delivery attempt

Enum values:
success
failed
deliveryType
​string · enum · required

Delivery channel

Enum values:
Email
Sproom
Manual
sentAt
​string · required

Timestamp of the attempt (ISO)

Example: 2024-01-15T10:30:00.000Z
recipientEmail
​string | null

Recipient email (email sends)

recipientEan
​string | null

Recipient EAN (e-invoice sends)

errorCode
​string | null

Error code when the attempt failed

PublicDeliveryStatusResponse

​object · required

Aggregate send summary

​PublicDeliveryLogEntry[] · required

Per-attempt delivery log entries

PublicCreateCreditNoteLine

priceId
​string

Product price ID. Required on a billable line — the line credits this product. Omit only for text / separator / discount lines (set lineType instead).

Example: 0197A943-2325-7829-B835-B6C71A293065
lineType
​string · enum

Semantic type of the line (refund, cancellation credit, text, separator, etc.)

Enum values:
subscription
usage
proration_initial
proration_post_trial
proration_credit
proration_charge
proration_adjustment
proration_phase_transition
description
​string

Custom description for this line item

Example: Premium widget - Blue color - Return
quantity
​number

Quantity to credit. Required on a billable line; omit for text / separator / discount lines.

Example: 2
unitPrice
​string

One-time unit-price override as a POSITIVE decimal string (the magnitude). Defaults to the price's current amount when omitted. The credit (negative) sign, totalPrice, and VAT are applied server-side and must not be sent.

Example: 1083.32

PublicCreateCreditNote

customerId
​string · required

Customer ID this credit note is for

Example: 0197A943-2325-7829-B835-B6C71A293065
date
​string · required

Credit note date (ISO date, YYYY-MM-DD)

Example: 2024-01-15
​PublicCreateCreditNoteLine[] · required

Credit note lines

customerDepartmentId
​string

Customer department ID (for EAN-based e-invoicing and address override)

Example: 0197A943-2325-7829-B835-B6C71A293065
customerContactId
​string

Customer contact ID (credit note recipient)

Example: 0197A943-2325-7829-B835-B6C71A293065
invoiceNumber
​string

Original invoice number this credit note credits. When set, the referenced invoice is marked credited.

Example: 1
currency
​string

Currency code (ISO 4217). Defaults to the company default currency.

Example: DKK
reference
​string

Reference / PO number ("PO-nr.")

Example: PO-12345
ourReference
​string

Our reference ("Vores ref.")

Example: Jane Doe
description
​string

Optional description of the credit note

Example: Credit for returned items
notes
​string

Additional notes or comments

Example: Credit issued due to product defect

PublicCreditNoteLine

id
​string · required

Line item ID

Example: 0197A943-2325-7829-B835-B6C71A293065
quantity
​number · required

Quantity

Example: 2
unitPrice
​string · required

Unit price (decimal string)

Example: 1083.32
totalPrice
​string · required

Total price (decimal string)

Example: 2166.65
priceId
​string | null

Price ID this line references

description
​string | null

Custom description for this line item

lineType
​string | null · enum

Semantic line type

Enum values:
subscription
usage
proration_initial
proration_post_trial
proration_credit
proration_charge
proration_adjustment
proration_phase_transition
vatAmount
​string | null

VAT amount (decimal string)

vatRate
​string | null

VAT rate percentage (decimal string)

PublicCreditNote

id
​string · required

Credit note ID

Example: 0197A943-2325-7829-B835-B6C71A293065
number
​string · required

Credit note number

Example: 1
status
​string · enum · required

Credit note status

Enum values:
draft
scheduled
sending
sent
Example: sent
date
​string · required

Credit note date (ISO date)

Example: 2024-01-15
currency
​string · required

Currency code (ISO 4217)

Example: DKK
subtotal
​string · required

Subtotal before VAT (decimal string)

Example: 2166.65
vat
​string · required

VAT amount (decimal string)

Example: 541.66
amount
​string · required

Total amount including VAT (decimal string)

Example: 2708.31
​PublicCreditNoteLine[] · required

Credit note lines

createdAt
​string · required

Creation timestamp (ISO)

Example: 2024-01-15T10:30:00.000Z
updatedAt
​string · required

Last update timestamp (ISO)

Example: 2024-01-15T10:30:00.000Z
invoiceNumber
​string | null

Original invoice number this credit note credits

customerId
​string | null

Customer ID

reference
​string | null

Reference / PO number

ourReference
​string | null

Our reference ("Vores ref.")

notes
​string | null

Additional notes

PublicCreditNoteListItem

id
​string · required

Credit note ID

Example: 0197A943-2325-7829-B835-B6C71A293065
number
​string · required

Credit note number

Example: 1
status
​string · enum · required

Credit note status

Enum values:
draft
scheduled
sending
sent
Example: sent
date
​string · required

Credit note date (ISO date)

Example: 2024-01-15
currency
​string · required

Currency code (ISO 4217)

Example: DKK
subtotal
​string · required

Subtotal before VAT (decimal string)

Example: 2166.65
vat
​string · required

VAT amount (decimal string)

Example: 541.66
amount
​string · required

Total amount including VAT (decimal string)

Example: 2708.31
createdAt
​string · required

Creation timestamp (ISO)

Example: 2024-01-15T10:30:00.000Z
updatedAt
​string · required

Last update timestamp (ISO)

Example: 2024-01-15T10:30:00.000Z
invoiceNumber
​string | null

Original invoice number this credit note credits

customerId
​string | null

Customer ID

reference
​string | null

Reference / PO number

ourReference
​string | null

Our reference ("Vores ref.")

notes
​string | null

Additional notes

PublicListCreditNotesResponse

​PublicCreditNoteListItem[] · required

Credit notes on this page (line items omitted; GET one for lines)

total
​number · required

Total credit notes matching the query

Example: 42
page
​number · required

Current page (1-indexed)

Example: 1
limit
​number · required

Items per page

Example: 25
totalPages
​number · required

Total pages

Example: 2

PublicSendCreditNote

deliveryType
​string · enum · required

Delivery channel

Enum values:
Email
Sproom
Manual
Example: Email
overrideEmail
​string

Override recipient email for this send only

overrideEanNumber
​string

Override EAN number for this send only

updateCustomerRecord
​boolean

Persist the override email / EAN onto the customer record

Default: false
documentTemplateId
​string

Override document template for PDF generation

PublicQuoteListItem

id
​string · required

Quote identifier

type
​string · enum · required

Always "quote"

Enum values:
quote
orderConfirmation
status
​object · required

Stored lifecycle status (draft/sent/accepted/rejected)

displayStatus
​object · required

Status to display. Equals status except derived states: "converted" or "expired".

date
​string · required

Quote date (ISO, YYYY-MM-DD)

Example: 2026-06-11
amount
​string · required

Total amount including VAT

subtotal
​string · required

Subtotal excluding VAT

vat
​string · required

Total VAT

currency
​string · required

Currency code

Example: DKK
createdAt
​string · required

Created timestamp (ISO)

updatedAt
​string · required

Updated timestamp (ISO)

documentNumber
​string

Allocated quote number (null until sent)

validUntil
​string

Valid-until date (ISO, YYYY-MM-DD)

Example: 2026-07-11
reference
​string

PO number ("PO-nr.")

ourReference
​string

Our reference ("Vores ref.")

notes
​string

Notes

customerId
​string

Customer id

sourceDocumentId
​string

Source document id (set when this quote originated from another document)

convertedToDocumentId
​string

Id of the order confirmation this quote was converted into

convertedToInvoiceId
​string

Id of the invoice this quote was converted into

sentAt
​string

Timestamp the quote was sent (ISO)

PublicListQuotesResponse

​PublicQuoteListItem[] · required

List of quotes (line items omitted; GET one quote for lines)

total
​number · required

Total number of quotes matching the query

Example: 42
page
​number · required

Current page number (1-indexed)

Example: 1
limit
​number · required

Maximum number of items per page

Example: 25
totalPages
​number · required

Total number of pages available

Example: 2

PublicQuoteLine

id
​string · required

Line identifier

quantity
​number · required

Quantity

Example: 2
unitPrice
​string · required

Unit price

Example: 1000.00
totalPrice
​string · required

Total price for the line

Example: 2000.00
description
​string

Line description shown on the quote

lineType
​string

Semantic line type

vatRate
​string

VAT rate (percentage)

Example: 25
vatAmount
​string

VAT amount for the line

PublicQuote

id
​string · required

Quote identifier

type
​string · enum · required

Always "quote"

Enum values:
quote
orderConfirmation
status
​object · required

Stored lifecycle status (draft/sent/accepted/rejected)

displayStatus
​object · required

Status to display. Equals status except derived states: "converted" or "expired".

date
​string · required

Quote date (ISO, YYYY-MM-DD)

Example: 2026-06-11
amount
​string · required

Total amount including VAT

subtotal
​string · required

Subtotal excluding VAT

vat
​string · required

Total VAT

currency
​string · required

Currency code

Example: DKK
createdAt
​string · required

Created timestamp (ISO)

updatedAt
​string · required

Updated timestamp (ISO)

​PublicQuoteLine[] · required
documentNumber
​string

Allocated quote number (null until sent)

validUntil
​string

Valid-until date (ISO, YYYY-MM-DD)

Example: 2026-07-11
reference
​string

PO number ("PO-nr.")

ourReference
​string

Our reference ("Vores ref.")

notes
​string

Notes

customerId
​string

Customer id

sourceDocumentId
​string

Source document id (set when this quote originated from another document)

convertedToDocumentId
​string

Id of the order confirmation this quote was converted into

convertedToInvoiceId
​string

Id of the invoice this quote was converted into

sentAt
​string

Timestamp the quote was sent (ISO)

PublicCreateQuoteLine

priceId
​string

Product price id. Required on a billable line — the line bills this product. Omit only for text / separator / discount lines (set lineType instead).

description
​string

Custom description for the line

lineType
​string · enum

Semantic line type. Use text / separator / discount / interval_discount for non-billable lines; any other value marks the line billable (priceId + quantity required).

Enum values:
subscription
usage
proration_initial
proration_post_trial
proration_credit
proration_charge
proration_adjustment
proration_phase_transition
quantity
​number

Quantity. Required on a billable line; omit for text / separator / discount lines.

Example: 2
unitPrice
​string

One-time unit-price override. Defaults to the price's current amount in the document currency. totalPrice and VAT are computed server-side and must not be sent.

Example: 1000.00

PublicCreateQuote

customerId
​string · required

Customer this quote is for

date
​string · required

Quote date (ISO, YYYY-MM-DD)

Example: 2026-06-11
​PublicCreateQuoteLine[] · required
customerDepartmentId
​string

Customer department id

customerContactId
​string

Customer contact id ("Deres ref.")

validUntil
​string

Valid-until date (ISO, YYYY-MM-DD)

Example: 2026-07-11
currency
​string

Currency code

Example: DKK
reference
​string

PO number ("PO-nr.")

ourReference
​string

Our reference ("Vores ref.")

notes
​string

Notes shown on the quote

PublicSendQuote

deliveryType
​string · enum

Delivery method. Defaults to Manual. Sproom/e-invoice does not apply to quotes.

Enum values:
Email
Manual
recipientEmail
​string

Override recipient email for Email delivery

PublicConvertQuotePayload

customerId
​string · required

Customer for the converted document

date
​string · required

Document date (ISO, YYYY-MM-DD)

Example: 2026-06-11
​PublicCreateQuoteLine[] · required
customerDepartmentId
​string

Customer department id

customerContactId
​string

Customer contact id

currency
​string

Currency code

reference
​string

PO number ("PO-nr.")

ourReference
​string

Our reference ("Vores ref.")

notes
​string

Notes

PublicConvertQuote

target
​string · enum · required

Target to convert into. Use "orderConfirmation" to confirm the quote, or "invoice" to convert it directly into an invoice.

Enum values:
orderConfirmation
invoice
​object

Edited target document (review-before-finalize). Omit to copy the source verbatim.

PublicConvertQuoteResult

targetType
​string · required

Type of document produced by the conversion ("invoice" or "orderConfirmation")

Example: orderConfirmation
targetId
​string · required

Identifier of the produced document

PublicUpdateQuote

customerId
​string · required

Customer this quote is for

date
​string · required

Quote date (ISO, YYYY-MM-DD)

Example: 2026-06-11
​PublicCreateQuoteLine[] · required
customerDepartmentId
​string

Customer department id

customerContactId
​string

Customer contact id ("Deres ref.")

validUntil
​string

Valid-until date (ISO, YYYY-MM-DD)

Example: 2026-07-11
currency
​string

Currency code

Example: DKK
reference
​string

PO number ("PO-nr.")

ourReference
​string

Our reference ("Vores ref.")

notes
​string

Notes shown on the quote

PublicOrderConfirmationListItem

id
​string · required

Document identifier

status
​object · required

Stored lifecycle status (draft/sent)

displayStatus
​object · required

Status to display. Equals status except the derived "converted" state.

date
​string · required

Document date (ISO, YYYY-MM-DD)

Example: 2026-06-11
amount
​string · required

Total amount including VAT

subtotal
​string · required

Subtotal excluding VAT

vat
​string · required

Total VAT

currency
​string · required

Currency code

Example: DKK
createdAt
​string · required

Created timestamp (ISO)

updatedAt
​string · required

Updated timestamp (ISO)

documentNumber
​string

Allocated document number (null until sent)

reference
​string

PO number ("PO-nr.")

ourReference
​string

Our reference ("Vores ref.")

notes
​string

Notes

customerId
​string

Customer id

sourceDocumentId
​string

Source document id (the quote this order confirmation was converted from)

convertedToInvoiceId
​string

Id of the invoice this order confirmation was converted into

sentAt
​string

Timestamp the document was sent (ISO)

PublicListOrderConfirmationsResponse

​PublicOrderConfirmationListItem[] · required

List of order confirmations (line items omitted; GET one for lines)

total
​number · required

Total number of documents matching the query

Example: 42
page
​number · required

Current page number (1-indexed)

Example: 1
limit
​number · required

Maximum number of items per page

Example: 25
totalPages
​number · required

Total number of pages available

Example: 2

PublicOrderConfirmationLine

id
​string · required

Line identifier

quantity
​number · required

Quantity

Example: 2
unitPrice
​string · required

Unit price

Example: 1000.00
totalPrice
​string · required

Total price for the line

Example: 2000.00
description
​string

Line description shown on the document

lineType
​string

Semantic line type

vatRate
​string

VAT rate (percentage)

Example: 25
vatAmount
​string

VAT amount for the line

PublicOrderConfirmation

id
​string · required

Document identifier

status
​object · required

Stored lifecycle status (draft/sent)

displayStatus
​object · required

Status to display. Equals status except the derived "converted" state.

date
​string · required

Document date (ISO, YYYY-MM-DD)

Example: 2026-06-11
amount
​string · required

Total amount including VAT

subtotal
​string · required

Subtotal excluding VAT

vat
​string · required

Total VAT

currency
​string · required

Currency code

Example: DKK
createdAt
​string · required

Created timestamp (ISO)

updatedAt
​string · required

Updated timestamp (ISO)

​PublicOrderConfirmationLine[] · required
documentNumber
​string

Allocated document number (null until sent)

reference
​string

PO number ("PO-nr.")

ourReference
​string

Our reference ("Vores ref.")

notes
​string

Notes

customerId
​string

Customer id

sourceDocumentId
​string

Source document id (the quote this order confirmation was converted from)

convertedToInvoiceId
​string

Id of the invoice this order confirmation was converted into

sentAt
​string

Timestamp the document was sent (ISO)

PublicCreateOrderConfirmationLine

priceId
​string

Product price id. Required on a billable line — the line bills this product. Omit only for text / separator / discount lines (set lineType instead).

description
​string

Custom description for the line

lineType
​string · enum

Semantic line type. Use text / separator / discount / interval_discount for non-billable lines; any other value marks the line billable (priceId + quantity required).

Enum values:
subscription
usage
proration_initial
proration_post_trial
proration_credit
proration_charge
proration_adjustment
proration_phase_transition
quantity
​number

Quantity. Required on a billable line; omit for text / separator / discount lines.

Example: 2
unitPrice
​string

One-time unit-price override. Defaults to the price's current amount in the document currency. totalPrice and VAT are computed server-side and must not be sent.

Example: 1000.00

PublicCreateOrderConfirmation

customerId
​string · required

Customer this order confirmation is for

date
​string · required

Document date (ISO, YYYY-MM-DD)

Example: 2026-06-11
​PublicCreateOrderConfirmationLine[] · required
customerDepartmentId
​string

Customer department id

customerContactId
​string

Customer contact id ("Deres ref.")

currency
​string

Currency code

Example: DKK
reference
​string

PO number ("PO-nr.")

ourReference
​string

Our reference ("Vores ref.")

notes
​string

Notes shown on the document

PublicSendOrderConfirmation

deliveryType
​string · enum

Delivery method. Defaults to Manual. Sproom/e-invoice does not apply to order confirmations.

Enum values:
Email
Manual
recipientEmail
​string

Override recipient email for Email delivery

PublicConvertOrderConfirmationPayload

customerId
​string · required

Customer for the converted document

date
​string · required

Document date (ISO, YYYY-MM-DD)

Example: 2026-06-11
​PublicCreateOrderConfirmationLine[] · required
customerDepartmentId
​string

Customer department id

customerContactId
​string

Customer contact id

currency
​string

Currency code

reference
​string

PO number ("PO-nr.")

ourReference
​string

Our reference ("Vores ref.")

notes
​string

Notes

PublicConvertOrderConfirmation

target
​string · enum · required

Target to convert into. An order confirmation only ever converts into an "invoice".

Enum values:
invoice
​object

Edited target document (review-before-finalize). Omit to copy the source verbatim.

PublicConvertOrderConfirmationResult

targetType
​string · required

Type of document produced by the conversion (always "invoice")

Example: invoice
targetId
​string · required

Identifier of the produced document

PublicUpdateOrderConfirmation

customerId
​string · required

Customer this order confirmation is for

date
​string · required

Document date (ISO, YYYY-MM-DD)

Example: 2026-06-11
​PublicCreateOrderConfirmationLine[] · required
customerDepartmentId
​string

Customer department id

customerContactId
​string

Customer contact id ("Deres ref.")

currency
​string

Currency code

Example: DKK
reference
​string

PO number ("PO-nr.")

ourReference
​string

Our reference ("Vores ref.")

notes
​string

Notes shown on the document

status
​string

New stored status (validated against the document type: draft/sent for order confirmations).

ProductGroupResponse

id
​string · required

The unique identifier of the product group

Example: 550e8400-e29b-41d4-a716-446655440000
number
​string · required

Unique product-group number within the company

Example: PG001
name
​string · required

Name of the product group

Example: Office Supplies
domesticAccountId
​string · required

Ledger account ID for domestic sales

Example: 550e8400-e29b-41d4-a716-446655440000
createdAt
​string · date-time · required

When the product group was created

Example: 2024-01-15T10:30:00Z
updatedAt
​string · date-time · required

When the product group was last updated

Example: 2024-01-15T10:30:00Z
description
​string | null

Optional description

Example: Products for office use
domesticAccountNumber
​number | null

Domestic account number

Example: 1010
domesticAccountName
​string | null

Domestic account name

Example: Sales — domestic
euAccountId
​string | null

Ledger account ID for EU sales (Rubric B)

euAccountNumber
​number | null

EU account number

euAccountName
​string | null

EU account name

abroadAccountId
​string | null

Ledger account ID for sales abroad (Rubric C)

abroadAccountNumber
​number | null

Abroad account number

abroadAccountName
​string | null

Abroad account name

domesticWithoutVatAccountId
​string | null

Ledger account ID for domestic sales without VAT

domesticWithoutVatAccountNumber
​number | null

Domestic-without-VAT account number

domesticWithoutVatAccountName
​string | null

Domestic-without-VAT account name

productCount
​number

Number of products in this group (list responses only)

Example: 12

ListProductGroupsResponse

​ProductGroupResponse[] · required

Page of product groups

total
​number · required

Total number of matching product groups

Example: 42
page
​number · required

Current page number

Example: 1
limit
​number · required

Items per page

Example: 25
totalPages
​number · required

Total number of pages

Example: 2

CreateProductGroupRequest

number
​string · required

Unique product-group number within the company

Example: PG001
name
​string · required

Name of the product group

Example: Office Supplies
domesticAccountId
​string · required

Ledger account ID for domestic sales. Must reference an existing account that carries a VAT code valid for sales.

Example: 550e8400-e29b-41d4-a716-446655440000
euAccountId
​string · required

Ledger account ID for EU sales (Rubric B). Must carry a sales-valid VAT code.

abroadAccountId
​string · required

Ledger account ID for sales abroad (Rubric C). Must carry a sales-valid VAT code.

domesticWithoutVatAccountId
​string · required

Ledger account ID for domestic sales without VAT.

description
​string

Optional description

Example: Products for office use

UpdateProductGroupRequest

number
​string

Unique product-group number within the company

Example: PG001
name
​string

Name of the product group

Example: Office Supplies
description
​string

Optional description

Example: Products for office use
domesticAccountId
​string

Ledger account ID for domestic sales

euAccountId
​string

Ledger account ID for EU sales (Rubric B)

abroadAccountId
​string

Ledger account ID for sales abroad (Rubric C)

domesticWithoutVatAccountId
​string

Ledger account ID for domestic sales without VAT

ProductListItem

id
​string · required

The unique identifier of the product

Example: 550e8400-e29b-41d4-a716-446655440000
productNumber
​string · required

Unique product number within the company

Example: P001
name
​string · required

Name of the product

Example: Web Hosting
unit
​string · required

Unit of measurement

Example: pcs
productGroupId
​string · required

Product group this product belongs to

productType
​string · enum · required

Product type (goods or services) for EU VAT

Enum values:
goods
services
isActive
​boolean · required

Whether the product is active

Example: true
isArchived
​boolean · required

Whether the product is archived

Example: false
isLocked
​boolean · required

Whether the product is locked (in use, cannot be deleted)

Example: false
createdAt
​string · date-time · required

When the product was created

Example: 2024-01-15T10:30:00Z
updatedAt
​string · date-time · required

When the product was last updated

Example: 2024-01-15T10:30:00Z
description
​string | null

Optional description

ListProductsResponse

​ProductListItem[] · required

Page of products (prices omitted; GET one product for its prices)

total
​number · required

Total number of matching products

Example: 42
page
​number · required

Current page number

Example: 1
limit
​number · required

Items per page

Example: 25
totalPages
​number · required

Total number of pages

Example: 2

ProductPriceTierResponse

id
​string · required

Tier ID

Example: 550e8400-e29b-41d4-a716-446655440000
fromQuantity
​number · required

Starting quantity (inclusive)

Example: 1
unitAmount
​string · required

Price per unit for this tier

Example: 99.99
toQuantity
​number | null

Ending quantity (inclusive). Null = no upper limit.

Example: 10
flatFee
​string | null

Optional flat fee for this tier

Example: 10.00

ProductPriceResponse

id
​string · required

The unique identifier of the price (use as a line priceId)

Example: 550e8400-e29b-41d4-a716-446655440000
productId
​string · required

The product this price belongs to

billingPeriodType
​string · enum · required

Billing period type

Enum values:
recurring
usage
one_time
pricingModel
​string · enum · required

Pricing model

Enum values:
flat_rate
package
volume
graduated
currency
​string · required

Currency of the displayed unitAmount (ISO 4217)

Example: DKK
baseCurrency
​string · required

Base currency (source of truth for conversions)

Example: DKK
status
​string · enum · required

Price status

Enum values:
draft
active
inactive
archived
isDefault
​boolean · required

Whether this is the default price for the product

Example: false
isLocked
​boolean · required

Whether the price is locked (in use by a subscription/invoice)

Example: false
vatRatesByZone
​object · required

VAT rates by zone (derived from the product group), e.g. { domestic: "25", eu: "0", abroad: "0", domestic_without_vat: "0" }

nickname
​string | null

Optional nickname (e.g. "Monthly")

unitAmount
​string | null

Unit amount for flat-rate pricing in currency

Example: 99.99
billingInterval
​string | null · enum

Billing interval (null for one-time)

Enum values:
day
week
month
year
billingIntervalCount
​number | null

Billing interval count

Example: 1
availableCurrencies
​string[]

Currencies with a price-history entry

meterId
​string | null

Meter ID for usage-based pricing

​ProductPriceTierResponse[]

Pricing tiers (package/volume/graduated)

ProductResponse

id
​string · required

The unique identifier of the product

Example: 550e8400-e29b-41d4-a716-446655440000
productNumber
​string · required

Unique product number within the company

Example: P001
name
​string · required

Name of the product

Example: Web Hosting
unit
​string · required

Unit of measurement

Example: pcs
productGroupId
​string · required

Product group this product belongs to

productType
​string · enum · required

Product type (goods or services) for EU VAT

Enum values:
goods
services
isActive
​boolean · required

Whether the product is active

Example: true
isArchived
​boolean · required

Whether the product is archived

Example: false
isLocked
​boolean · required

Whether the product is locked (in use, cannot be deleted)

Example: false
createdAt
​string · date-time · required

When the product was created

Example: 2024-01-15T10:30:00Z
updatedAt
​string · date-time · required

When the product was last updated

Example: 2024-01-15T10:30:00Z
description
​string | null

Optional description

​ProductPriceResponse[]

Prices configured for this product

CreateProductPriceTierRequest

fromQuantity
​number · required

Starting quantity (inclusive)

Example: 1
unitAmount
​string · required

Price per unit for this tier

Example: 99.99
toQuantity
​number

Ending quantity (inclusive). Omit for the open-ended top tier.

Example: 10
flatFee
​string

Optional flat fee for this tier

Example: 10.00

CreateProductInitialPriceRequest

billingPeriodType
​string · enum · required

Billing period type. RECURRING requires a Subscription license; USAGE requires Subscription + Metered Products.

Enum values:
recurring
usage
one_time
pricingModel
​string · enum · required

Pricing model

Enum values:
flat_rate
package
volume
graduated
nickname
​string

Optional nickname (e.g. "Monthly")

Example: Monthly
unitAmount
​string

Unit amount. Required for FLAT_RATE pricing; for tiered models (PACKAGE/VOLUME/GRADUATED) the amounts live in tiers.

Example: 99.99
billingInterval
​string · enum

Billing interval (required unless one-time)

Enum values:
day
week
month
year
billingIntervalCount
​number

Billing interval count

Example: 1
currency
​string

Currency code (ISO 4217)

Example: DKK
meterId
​string

Meter ID (required for USAGE pricing)

​CreateProductPriceTierRequest[]

Pricing tiers. Required for tiered models: PACKAGE (exactly 1), VOLUME / GRADUATED (one or more, last tier open-ended). Omit for FLAT_RATE.

CreateProductRequest

productNumber
​string · required

Unique product number within the company

Example: P001
name
​string · required

Name of the product

Example: Web Hosting
unit
​string · required

Unit of measurement

Example: pcs
productGroupId
​string · required

Product group this product belongs to (must exist)

Example: 550e8400-e29b-41d4-a716-446655440000
description
​string

Optional description

isActive
​boolean

Whether the product is active

Default: true
productType
​string · enum

Product type (goods or services)

Enum values:
goods
services
Default: services
​object

Optional initial price. If provided it is created, activated and set as default in one transaction.

UpdateProductRequest

productNumber
​string

Unique product number within the company

Example: P001
name
​string

Name of the product

Example: Web Hosting
description
​string

Optional description

unit
​string

Unit of measurement

Example: pcs
productGroupId
​string

Product group this product belongs to

isActive
​boolean

Whether the product is active

productType
​string · enum

Product type (goods or services)

Enum values:
goods
services

CreateProductPriceRequest

productId
​string · required

The product this price belongs to

Example: 550e8400-e29b-41d4-a716-446655440000
billingPeriodType
​string · enum · required

Billing period type. RECURRING requires a Subscription license; USAGE requires Subscription + Metered Products.

Enum values:
recurring
usage
one_time
pricingModel
​string · enum · required

Pricing model

Enum values:
flat_rate
package
volume
graduated
nickname
​string

Optional nickname (e.g. "Monthly")

Example: Monthly
unitAmount
​string

Unit amount. Required for FLAT_RATE pricing; for tiered models (PACKAGE/VOLUME/GRADUATED) the amounts live in tiers.

Example: 99.99
billingInterval
​string · enum

Billing interval (required unless one-time)

Enum values:
day
week
month
year
billingIntervalCount
​number

Billing interval count

Example: 1
currency
​string

Currency code (ISO 4217). Defaults to the company default.

Example: DKK
meterId
​string

Meter ID (required for USAGE pricing)

​CreateProductPriceTierRequest[]

Pricing tiers. Required for tiered models: PACKAGE (exactly 1), VOLUME / GRADUATED (one or more, last tier open-ended). Omit for FLAT_RATE.

UpdateProductPriceRequest

nickname
​string

Optional nickname

Example: Monthly
unitAmount
​string

Unit amount for flat-rate pricing

Example: 99.99
billingPeriodType
​string · enum

Billing period type

Enum values:
recurring
usage
one_time
pricingModel
​string · enum

Pricing model

Enum values:
flat_rate
package
volume
graduated
billingInterval
​string | null · enum

Billing interval (null for one-time)

Enum values:
day
week
month
year
billingIntervalCount
​number

Billing interval count

Example: 1
currency
​string

Currency code (ISO 4217)

Example: DKK
status
​string · enum

Price status

Enum values:
draft
active
inactive
archived
meterId
​string

Meter ID for usage-based pricing

​CreateProductPriceTierRequest[]

Pricing tiers

DocumentTemplateListItem

id
​string · required

The unique identifier of the template

Example: 550e8400-e29b-41d4-a716-446655440000
name
​string · required

Template name

Example: Premium Invoice
documentType
​string · enum · required

Document type this template applies to

Enum values:
invoice-template
credit-note-template
quote-template
order-confirmation-template
isDefault
​boolean · required

Whether this is the default template for its document type

Example: false
createdAt
​string · date-time · required

When the template was created

Example: 2024-01-15T10:30:00Z
updatedAt
​string · date-time · required

When the template was last updated

Example: 2024-01-15T10:30:00Z

ListDocumentTemplatesResponse

​DocumentTemplateListItem[] · required

Page of document templates

total
​number · required

Total number of matching templates

Example: 7
page
​number · required

Current page number

Example: 1
limit
​number · required

Items per page

Example: 25
totalPages
​number · required

Total number of pages

Example: 1

ProjectSubproject

id
​string · required

Unique identifier of the subproject.

Example: 550e8400-e29b-41d4-a716-446655440010
dimensionValueId
​string · required

The journal-tag value ID that represents this subproject in the dimensions system. Use this value when tagging ledger transactions to the subproject.

Example: 550e8400-e29b-41d4-a716-446655440011
name
​string · required

Display name of the subproject.

Example: Phase 1
isDefault
​boolean · required

Whether this is the default (catch-all) subproject for the project.

Example: false
sortOrder
​number · required

Display sort order (ascending).

Example: 1
budgetHours
​number | null

Budget in hours for this subproject. Null when no budget is set.

Example: 120
budgetAmount
​number | null

Budget amount in the project currency for this subproject. Null when no budget is set.

Example: 15000
color
​string | null

Hex colour code for visual identification in the UI. Null when not set.

Example: #4A90E2

Project

id
​string · required

Unique identifier of the project.

Example: 550e8400-e29b-41d4-a716-446655440000
name
​string · required

Display name of the project.

Example: Website Redesign 2025
isArchived
​boolean · required

Whether the project has been archived. Archived projects are read-only.

Example: false
currency
​string · required

ISO 4217 currency code used for budget amounts on this project.

Example: DKK
dimensionId
​string · required

The dimension category ID (journal-tag category) that backs this project. Subproject values live as dimension values under this category.

Example: 550e8400-e29b-41d4-a716-446655440002
defaultSubprojectId
​string · required

ID of the default subproject (the catch-all subproject created with the project).

Example: 550e8400-e29b-41d4-a716-446655440010
​ProjectSubproject[] · required

All subprojects for this project, sorted by sortOrder ascending.

createdAt
​string · required

ISO 8601 timestamp when the project was created.

Example: 2025-01-15T10:00:00.000Z
updatedAt
​string · required

ISO 8601 timestamp when the project was last updated.

Example: 2025-06-01T14:30:00.000Z
customerId
​string | null

ID of the customer this project belongs to. Null when not linked to a customer.

Example: 550e8400-e29b-41d4-a716-446655440001
budgetHours
​number | null

Total budget in hours across all subprojects. Null when not set.

Example: 500
budgetAmount
​number | null

Total budget amount in the project currency. Null when not set.

Example: 100000
startDate
​string | null

Project start date (inclusive), ISO 8601 date string. Null when not set.

Example: 2025-01-01
endDate
​string | null

Project end date (inclusive), ISO 8601 date string. Null when not set.

Example: 2025-12-31
externalReference
​string | null

Your system external reference for this project. Useful for idempotent upserts and cross-system reconciliation. Null when not set.

Example: proj-external-123
color
​string | null

Hex colour code for visual identification. Null when not set.

Example: #FF5733

UpsertProjectRequest

name
​string · minLength: 1 · maxLength: 120 · required

Display name for the project. Must be unique within your company.

Example: Website Redesign 2025
customerId
​string | null

ID of the customer this project belongs to.

Example: 550e8400-e29b-41d4-a716-446655440001
currency
​string · minLength: 3 · maxLength: 3

ISO 4217 currency code for budget amounts. Defaults to the customer's currency or the company base currency when omitted.

Example: DKK
budgetHours
​number | null

Total budget in hours. Null clears the budget.

Example: 500
budgetAmount
​number | null

Total budget amount in the project currency. Null clears the budget.

Example: 100000
startDate
​string | null

Project start date (inclusive), ISO 8601 date string.

Example: 2025-01-01
endDate
​string | null

Project end date (inclusive), ISO 8601 date string.

Example: 2025-12-31
externalReference
​string | null · minLength: 1 · maxLength: 255

Your system external reference for this project. Must be unique within your company. The upsert finds an existing project by this value and updates it, or creates a new one.

Example: proj-external-123
color
​string | null · maxLength: 16

Hex colour code for visual identification.

Example: #FF5733

CreateProjectRequest

name
​string · minLength: 1 · maxLength: 120 · required

Display name for the project. Must be unique within your company.

Example: Website Redesign 2025
customerId
​string | null

ID of the customer this project belongs to.

Example: 550e8400-e29b-41d4-a716-446655440001
currency
​string · minLength: 3 · maxLength: 3

ISO 4217 currency code for budget amounts. Defaults to the customer's currency or the company base currency when omitted.

Example: DKK
budgetHours
​number | null

Total budget in hours. Null clears the budget.

Example: 500
budgetAmount
​number | null

Total budget amount in the project currency. Null clears the budget.

Example: 100000
startDate
​string | null

Project start date (inclusive), ISO 8601 date string.

Example: 2025-01-01
endDate
​string | null

Project end date (inclusive), ISO 8601 date string.

Example: 2025-12-31
externalReference
​string | null · minLength: 1 · maxLength: 255

Your system external reference for this project. Must be unique within your company. Can be used for idempotent upserts via PUT /.

Example: proj-external-123
color
​string | null · maxLength: 16

Hex colour code for visual identification.

Example: #FF5733

ProjectProfitTotals

revenue
​number · required

Base-currency revenue in the date range (positive figure, sign-flipped from REVENUE ledgers).

Example: 80000
cost
​number · required

Base-currency cost in the date range (positive figure, EXPENSE ledgers).

Example: 60000
profit
​number · required

revenue - cost.

Example: 20000
isOverBudget
​boolean · required

True when burnPercent > 100 (over budget). False when under budget or no budget.

Example: false
budgetAmount
​number | null

The budget amount this burn is measured against. Null when no budget is set.

Example: 100000
burnPercent
​number | null

cost / budgetAmount * 100, rounded. Null when no budget is set or budgetAmount is 0.

Example: 60

ProjectSubprojectProfit

revenue
​number · required

Base-currency revenue in the date range (positive figure, sign-flipped from REVENUE ledgers).

Example: 80000
cost
​number · required

Base-currency cost in the date range (positive figure, EXPENSE ledgers).

Example: 60000
profit
​number · required

revenue - cost.

Example: 20000
isOverBudget
​boolean · required

True when burnPercent > 100 (over budget). False when under budget or no budget.

Example: false
subprojectId
​string · required

Subproject ID.

Example: 550e8400-e29b-41d4-a716-446655440010
dimensionValueId
​string · required

The dimension value ID (journal-tag ID) for this subproject.

Example: 550e8400-e29b-41d4-a716-446655440011
name
​string · required

Display name of the subproject.

Example: Phase 1
isDefault
​boolean · required

Whether this is the default (catch-all) subproject.

Example: false
budgetAmount
​number | null

The budget amount this burn is measured against. Null when no budget is set.

Example: 100000
burnPercent
​number | null

cost / budgetAmount * 100, rounded. Null when no budget is set or budgetAmount is 0.

Example: 60

ProjectProfit

projectId
​string · required

Project ID.

Example: 550e8400-e29b-41d4-a716-446655440000
from
​string · required

Inclusive range start actually used (after defaulting), YYYY-MM-DD.

Example: 2025-01-01
to
​string · required

Inclusive range end actually used (after defaulting), YYYY-MM-DD.

Example: 2025-12-31
currency
​string · required

Company base currency the amounts are expressed in.

Example: DKK
​object · required

Aggregate totals for the project.

​ProjectSubprojectProfit[] · required

Per-subproject profit breakdown.

UpdateProjectRequest

name
​string · minLength: 1 · maxLength: 120

New display name for the project.

Example: Website Redesign 2026
customerId
​string | null

Customer ID. Null clears the customer link.

Example: 550e8400-e29b-41d4-a716-446655440001
currency
​string · minLength: 3 · maxLength: 3

ISO 4217 currency code.

Example: EUR
budgetHours
​number | null

Budget in hours. Null clears the budget.

Example: 600
budgetAmount
​number | null

Budget amount in the project currency. Null clears the budget.

Example: 120000
startDate
​string | null

Project start date (inclusive), ISO 8601. Null clears the date.

Example: 2025-01-01
endDate
​string | null

Project end date (inclusive), ISO 8601. Null clears the date.

Example: 2025-12-31
externalReference
​string | null · maxLength: 255

External reference. Null clears the value.

Example: proj-external-123
color
​string | null · maxLength: 16

Hex colour code. Null clears the value.

Example: #FF5733
isArchived
​boolean

Archive or un-archive the project.

Example: false

CreateSubprojectRequest

name
​string · minLength: 1 · maxLength: 120 · required

Display name for the subproject.

Example: Phase 1
budgetHours
​number | null

Budget in hours for this subproject. Null clears the budget.

Example: 120
budgetAmount
​number | null

Budget amount in the project currency. Null clears the budget.

Example: 15000
color
​string | null · maxLength: 16

Hex colour code. Null clears the value.

Example: #4A90E2
sortOrder
​number

Sort order (ascending). Defaults to 0.

Example: 1

UpdateSubprojectRequest

name
​string · minLength: 1 · maxLength: 120

New display name for the subproject.

Example: Phase 2
budgetHours
​number | null

Budget in hours. Null clears the budget.

Example: 200
budgetAmount
​number | null

Budget amount in the project currency. Null clears the budget.

Example: 25000
color
​string | null · maxLength: 16

Hex colour code. Null clears the value.

Example: #4A90E2
sortOrder
​number

Sort order (ascending).

Example: 2

UsageReportRequestDto

value
​number · required

Usage value to record

Example: 100
customerId
​string · required

Customer ID this usage is associated with.

Example: 550e8400-e29b-41d4-a716-446655440000
meterId
​string

Meter identifier. Provide meterId or meterName. Meter must be ACTIVE; usage will be rejected for archived meters.

Example: 550e8400-e29b-41d4-a716-446655440000
meterName
​string

Meter name. Provide meterId or meterName. Meter must be ACTIVE; usage will be rejected for archived meters.

Example: api_calls
timestamp
​string

ISO-8601 timestamp. Defaults to now.

Example: 2024-01-15T10:30:00Z
metadata
​object

Additional metadata for the usage event (values must be string, number, or boolean)

Example: {"region":"us-east-1","feature":"api-calls"}
On this page
  • CompanyResponse
  • RateLimitTierResponse
  • ApiKeyInfoResponse
  • AccountResponse
  • CustomerGroupResponse
  • CustomerDepartmentResponse
  • CustomerContactResponse
  • CustomerResponse
  • CreateCustomerRequest
  • CreateCustomerResponse
  • SubscriptionTransitionItem
  • UpdateCustomerRequest
  • DimensionValue
  • Dimension
  • CreateDimensionRequest
  • DimensionResponse
  • UpdateDimensionRequest
  • CreateDimensionValueRequest
  • DimensionValueResponse
  • UpdateDimensionValueRequest
  • AttachmentRequest
  • DraftSplitEntryLine
  • CreateDraftJournalEntryRequest
  • CreateDraftJournalEntryBatchRequest
  • DraftSplitEntryLineResponse
  • DraftJournalEntryResponse
  • CreateDraftJournalEntryBatchResponse
  • ListDraftJournalEntriesResponse
  • JournalEntryResponse
  • SplitEntryLine
  • CreateDraftJournalEntryV2Request
  • CreateDraftJournalEntryV2BatchRequest
  • CreateDraftJournalEntryV2BatchResponse
  • UpdateDraftJournalEntryV2Request
  • UpdateJournalEntryRequest
  • UpdateJournalEntryResponse
  • CreateJournalEntryRequest
  • ReverseJournalEntryRequest
  • ReverseJournalEntryResponse
  • BatchReverseJournalEntriesRequest
  • BatchReverseJournalEntriesResultItem
  • BatchReverseJournalEntriesResponse
  • ListJournalEntriesResponse
  • JournalEntryAttachmentResponse
  • JournalEntryAttachmentsListResponse
  • CreateJournalEntryV2Dto
  • CreateJournalEntryV2BatchRequest
  • CreateJournalEntryV2BatchResponse
  • CreateJournalEntryBatchRequest
  • CreateJournalEntryBatchResponse
  • JournalCategoryResponse
  • MeterSubscriptionProductDTO
  • MeterSubscriptionDTO
  • MeterSubscriptionsResponseDTO
  • PaymentMethodResponse
  • CreateCardSaveLinkRequest
  • PaymentLinkResponse
  • ApplyPaymentMethodToSubscriptionsDto
  • PublicSubscriptionPlanPhaseProduct
  • PublicSubscriptionPlanPhase
  • PublicSubscriptionPlanResponse
  • PublicListSubscriptionPlansResponse
  • PublicCancelSubscriptionRequest
  • PublicCustomerSubscriptionResponse
  • PublicCustomerSubscriptionListItem
  • PublicListCustomerSubscriptionsResponse
  • PublicAssignSubscriptionProductOverride
  • PublicAssignSubscriptionRequest
  • PublicScheduledChange
  • PublicUpdateSubscriptionRequest
  • DefaultContactDto
  • CreateCustomerRequestDto
  • PublicProvisionCustomerRequest
  • PublicProvisionCustomerResponse
  • PublicResolvePortalPlansRequest
  • PublicResolvePortalPlansResponse
  • PublicPortalPlansListResponse
  • PublicPortalPlanResponse
  • PublicPortalSsoJwks
  • PublicHandoffMembership
  • PublicHandoffMintRequest
  • PublicHandoffMintResponse
  • PublicRevokeSessionsRequest
  • PublicRevokeSessionsResponse
  • VatCodeResponse
  • VendorGroupResponse
  • VendorDepartmentResponse
  • VendorContactResponse
  • VendorResponse
  • CreateVendorContactRequest
  • CreateVendorRequest
  • CreateVendorResponse
  • CreateWebhookEndpointRequest
  • WebhookEndpointWithSecret
  • WebhookEndpoint
  • WebhookEndpointList
  • UpdateWebhookEndpointRequest
  • TestWebhookEndpointRequest
  • TestWebhookEndpointResult
  • PublicCreateInvoiceLine
  • PublicCreateInvoice
  • PublicInvoiceLine
  • PublicInvoice
  • PublicInvoiceListItem
  • PublicListInvoicesResponse
  • PublicSendInvoice
  • PublicSendInvoiceResponse
  • PublicDeliveryStatusSummary
  • PublicDeliveryLogEntry
  • PublicDeliveryStatusResponse
  • PublicCreateCreditNoteLine
  • PublicCreateCreditNote
  • PublicCreditNoteLine
  • PublicCreditNote
  • PublicCreditNoteListItem
  • PublicListCreditNotesResponse
  • PublicSendCreditNote
  • PublicQuoteListItem
  • PublicListQuotesResponse
  • PublicQuoteLine
  • PublicQuote
  • PublicCreateQuoteLine
  • PublicCreateQuote
  • PublicSendQuote
  • PublicConvertQuotePayload
  • PublicConvertQuote
  • PublicConvertQuoteResult
  • PublicUpdateQuote
  • PublicOrderConfirmationListItem
  • PublicListOrderConfirmationsResponse
  • PublicOrderConfirmationLine
  • PublicOrderConfirmation
  • PublicCreateOrderConfirmationLine
  • PublicCreateOrderConfirmation
  • PublicSendOrderConfirmation
  • PublicConvertOrderConfirmationPayload
  • PublicConvertOrderConfirmation
  • PublicConvertOrderConfirmationResult
  • PublicUpdateOrderConfirmation
  • ProductGroupResponse
  • ListProductGroupsResponse
  • CreateProductGroupRequest
  • UpdateProductGroupRequest
  • ProductListItem
  • ListProductsResponse
  • ProductPriceTierResponse
  • ProductPriceResponse
  • ProductResponse
  • CreateProductPriceTierRequest
  • CreateProductInitialPriceRequest
  • CreateProductRequest
  • UpdateProductRequest
  • CreateProductPriceRequest
  • UpdateProductPriceRequest
  • DocumentTemplateListItem
  • ListDocumentTemplatesResponse
  • ProjectSubproject
  • Project
  • UpsertProjectRequest
  • CreateProjectRequest
  • ProjectProfitTotals
  • ProjectSubprojectProfit
  • ProjectProfit
  • UpdateProjectRequest
  • CreateSubprojectRequest
  • UpdateSubprojectRequest
  • UsageReportRequestDto