LedgerBee Developer
  • Getting started
  • Conventions
  • Products
  • Configuration
  • API Reference
Information
Accounts
    List accountsget
API Key
    Get current API keyget
Company
    Get company detailsget
Credit Notes
    List credit notesgetCreate a credit notepostGet a credit notegetGet the delivery status of a credit notegetDownload the credit note PDFgetSend a credit note to the customerpost
Customers
    List customersgetCreate a customerpostGet a customergetUpdate a customerpatchList a customer's contactsgetList a customer's departmentsgetList customer groupsget
Dimensions
    List all dimensionsgetCreate a new dimension categorypostGet a dimensiongetUpdate a dimension categoryputDelete a dimension categorydeleteCreate a new dimension valuepostUpdate a dimension valueputDelete a dimension valuedelete
Document Templates
    List document templatesget
Draft Journal Entries
    Create multiple draft journal entries in batchpostList draft journal entriesgetCreate a draft journal entrypostGet a draft journal entrygetDelete a draft journal entrydeleteBook a draft journal entrypost
Draft Journal Entries (v2)
    Create draft journal entries in batch (v2)postList draft journal entries (v2)getCreate a draft journal entry (v2)postGet a draft journal entry (v2)getDelete a draft journal entry (v2)deleteUpdate a draft journal entry (v2)patchBook a draft journal entry (v2)post
Entitlements
    List entitlementsgetCreate an entitlementpostGet an entitlementgetDelete an entitlementdeleteUpdate an entitlementpatch
Invoices
    List invoicesgetCreate a draft invoicepostGet an invoicegetGet the delivery status of an invoicegetDownload the invoice PDFgetSend an invoice to the customerpost
Journal Categories
    List journal categoriesget
Journal Entries
    Create multiple journal entries in batchpostList journal entriesgetCreate a journal entrypostGet a 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
Journal Entries (v2)
    Create a journal entry (v2)postCreate journal entries in batch (v2)post
MCP
    LedgerBee Developer MCP Serverpost
Meters
    List meter subscriptions by IDgetReport usagepostList meter subscriptions by nameget
Order Confirmations
    List order confirmationsgetCreate a draft order confirmationpostGet an order confirmationgetUpdate a draft order confirmationpatchConvert an order confirmation into an invoicepostDownload an order confirmation as PDFgetSend an order confirmationpost
Payment Methods
    List saved payment methods for a customergetCancel 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
Portal Plans
    List the full plan cataloguegetGet a plangetResolve the gated pricing catalogue for an identified buyer (partner display)post
Portal SSO
    Get a tenant's SSO signing keys (JWKS)getMint a customer-portal SSO handoff referencepostProvision a customer + grant portal access (partner JIT provisioning)postRevoke (force-refresh) a user's customer-portal sessionspost
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 projectsgetCreate or update a project by external referenceputCreate a projectpostGet a projectgetUpdate a projectputGet project profitgetAdd a subprojectpostUpdate a subprojectputDelete a subprojectdelete
Quotes
    List quotesgetCreate a draft quotepostGet a quotegetUpdate a draft quotepatchConvert a quotepostDownload a quote as PDFgetSend a quotepost
Subscriptions
    List customer subscriptionsgetAssign a subscription to a customerpostGet a customer subscription by its stable idgetUpdate a customer subscriptionpatchRetry a failed card paymentpostList a subscription's pending scheduled changesgetCancel a single pending scheduled changedeleteCancel a customer subscriptionpostList subscription plansgetCreate a subscription planpostArchive a subscription planpost
Suppliers
    List suppliersgetCreate a supplierpostList supplier contactsgetList supplier departmentsgetList supplier groupsget
VAT Codes
    List VAT codesget
Vendors
    List vendorsgetCreate a vendorpostList vendor contactsgetList vendor departmentsgetList vendor groupsget
Webhook Endpoints
    List webhook endpointsgetCreate a webhook endpointpostRetrieve a webhook endpointgetUpdate a webhook endpointputDelete a webhook endpointdeleteRoll the signing secretpostSend a test eventpost
Schemas
LedgerBee Public API
LedgerBee Public API

Products

Download schema

Catalogue products. Each product belongs to a product group and carries one or more prices.


List products

GET
https://api.ledgerbee.com/api
/v1/products
x-api-key (header)
or
OAuth 2.0

Retrieves a paginated list of your company's products, each including its prices.

Pass ?search= to prefix-match on product name or number, or ?productGroupId= to narrow the list to one product group.

Required Scope

  • products-read

List products › query Parameters

page
​number · min: 1

Page number (1-indexed)

Default: 1
limit
​number · min: 1 · max: 100

Maximum number of items per page

Default: 25
search
​string

Prefix search on name or number

Example: Hosting
productGroupId
​string

Filter by product group ID

sortBy
​string · enum

Field to sort by

Enum values:
productNumber
name
createdAt
Default: createdAt
sortOrder
​string · enum

Sort direction

Enum values:
ASC
DESC
Default: DESC

List products › Responses

Paginated list of products for the company (each includes its prices)

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
GET/v1/products
curl https://api.ledgerbee.com/api/v1/products \ --header 'x-api-key: <api-key>'
Example Responses
{ "data": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "productNumber": "P001", "name": "Web Hosting", "description": "description", "unit": "pcs", "productGroupId": "productGroupId", "productType": "goods", "isActive": true, "isArchived": false, "isLocked": false, "createdAt": "2024-01-15T10:30:00Z", "updatedAt": "2024-01-15T10:30:00Z" } ], "total": 42, "page": 1, "limit": 25, "totalPages": 2 }
json
application/json

Create a product

POST
https://api.ledgerbee.com/api
/v1/products
x-api-key (header)
or
OAuth 2.0

Creates a product.

An optional initial price can be supplied inline — it is created, activated, and set as the product's default price in the same transaction.

Required Scope

  • products-write

Create a product › Headers

x-api-idempotency-key
​string · maxLength: 255

Optional idempotency key for safely retrying mutating requests.

Create a product › Request Body

CreateProductRequest
productNumber
​string · required

Unique product number within the company

Example: P001
name
​string · maxLength: 300 · required

Name of the product

Example: Web Hosting
unit
​string · maxLength: 255 · 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 · maxLength: 1000

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.

entitlementIds
​array | null · maxItems: 100

Externally managed entitlement IDs to bind (max 100)

Create a product › Responses

Product created successfully

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

​EntitlementRef[]

Entitlements granted by this product

POST/v1/products
curl https://api.ledgerbee.com/api/v1/products \ --request POST \ --header 'Content-Type: application/json' \ --header 'x-api-key: <api-key>' \ --data '{ "productNumber": "P001", "name": "Web Hosting", "description": "string", "unit": "pcs", "productGroupId": "550e8400-e29b-41d4-a716-446655440000", "isActive": true, "productType": "services", "initialPrice": { "nickname": "Monthly", "unitAmount": "99.99", "billingPeriodType": "recurring", "pricingModel": "flat_rate", "billingInterval": "day", "billingIntervalCount": 1, "currency": "DKK", "meterId": "string", "tiers": [] }, "entitlementIds": [ "string" ] }'
Example Request Body
{ "productNumber": "P001", "name": "Web Hosting", "description": "string", "unit": "pcs", "productGroupId": "550e8400-e29b-41d4-a716-446655440000", "isActive": true, "productType": "services", "initialPrice": { "nickname": "Monthly", "unitAmount": "99.99", "billingPeriodType": "recurring", "pricingModel": "flat_rate", "billingInterval": "day", "billingIntervalCount": 1, "currency": "DKK", "meterId": "string", "tiers": [] }, "entitlementIds": [ "string" ] }
json
application/json
Example Responses
{ "id": "550e8400-e29b-41d4-a716-446655440000", "productNumber": "P001", "name": "Web Hosting", "description": "description", "unit": "pcs", "productGroupId": "productGroupId", "productType": "goods", "isActive": true, "isArchived": false, "isLocked": false, "prices": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "productId": "productId", "nickname": "nickname", "unitAmount": "99.99", "billingPeriodType": "recurring", "pricingModel": "flat_rate", "billingInterval": "day", "billingIntervalCount": 1, "currency": "DKK", "baseCurrency": "DKK", "availableCurrencies": [ "string" ], "status": "draft", "isDefault": false, "isLocked": false, "meterId": "meterId", "tiers": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "fromQuantity": 1, "toQuantity": 10, "unitAmount": "99.99", "flatFee": "10.00" } ], "vatRatesByZone": {} } ], "entitlements": [ { "id": "id", "name": "Advanced reporting", "key": "advanced_reporting" } ], "createdAt": "2024-01-15T10:30:00Z", "updatedAt": "2024-01-15T10:30:00Z" }
json
application/json

Get a product

GET
https://api.ledgerbee.com/api
/v1/products/{productId}
x-api-key (header)
or
OAuth 2.0

Returns a single product, including its prices.

Required Scope

  • products-read

Get a product › path Parameters

productId
​string · required

Product ID

Get a product › Responses

Product details, including its prices

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

​EntitlementRef[]

Entitlements granted by this product

GET/v1/products/{productId}
curl https://api.ledgerbee.com/api/v1/products/:productId \ --header 'x-api-key: <api-key>'
Example Responses
{ "id": "550e8400-e29b-41d4-a716-446655440000", "productNumber": "P001", "name": "Web Hosting", "description": "description", "unit": "pcs", "productGroupId": "productGroupId", "productType": "goods", "isActive": true, "isArchived": false, "isLocked": false, "prices": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "productId": "productId", "nickname": "nickname", "unitAmount": "99.99", "billingPeriodType": "recurring", "pricingModel": "flat_rate", "billingInterval": "day", "billingIntervalCount": 1, "currency": "DKK", "baseCurrency": "DKK", "availableCurrencies": [ "string" ], "status": "draft", "isDefault": false, "isLocked": false, "meterId": "meterId", "tiers": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "fromQuantity": 1, "toQuantity": 10, "unitAmount": "99.99", "flatFee": "10.00" } ], "vatRatesByZone": {} } ], "entitlements": [ { "id": "id", "name": "Advanced reporting", "key": "advanced_reporting" } ], "createdAt": "2024-01-15T10:30:00Z", "updatedAt": "2024-01-15T10:30:00Z" }
json
application/json

Delete a product

DELETE
https://api.ledgerbee.com/api
/v1/products/{productId}
x-api-key (header)
or
OAuth 2.0

Deletes a product. A product that is locked (in use) cannot be deleted.

Required Scope

  • products-write

Delete a product › path Parameters

productId
​string · required

Product ID

Delete a product › Headers

x-api-idempotency-key
​string · maxLength: 255

Optional idempotency key for safely retrying mutating requests.

Delete a product › Responses

Product deleted successfully

No data returned
DELETE/v1/products/{productId}
curl https://api.ledgerbee.com/api/v1/products/:productId \ --request DELETE \ --header 'x-api-key: <api-key>'
Example Responses
No example specified for this content type

Update a product

PATCH
https://api.ledgerbee.com/api
/v1/products/{productId}
x-api-key (header)
or
OAuth 2.0

Updates a product. Only the fields provided in the request are changed.

Required Scope

  • products-write

Update a product › path Parameters

productId
​string · required

Product ID

Update a product › Headers

x-api-idempotency-key
​string · maxLength: 255

Optional idempotency key for safely retrying mutating requests.

Update a product › Request Body

UpdateProductRequest
productNumber
​string

Unique product number within the company

Example: P001
name
​string · maxLength: 300

Name of the product

Example: Web Hosting
description
​string · maxLength: 1000

Optional description

unit
​string · maxLength: 255

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
entitlementIds
​array | null · maxItems: 100

Externally managed entitlement IDs to bind (max 100)

Update a product › Responses

Product updated successfully

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

​EntitlementRef[]

Entitlements granted by this product

PATCH/v1/products/{productId}
curl https://api.ledgerbee.com/api/v1/products/:productId \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'x-api-key: <api-key>' \ --data '{ "productNumber": "P001", "name": "Web Hosting", "description": "string", "unit": "pcs", "productGroupId": "string", "isActive": true, "productType": "goods", "entitlementIds": [ "string" ] }'
Example Request Body
{ "productNumber": "P001", "name": "Web Hosting", "description": "string", "unit": "pcs", "productGroupId": "string", "isActive": true, "productType": "goods", "entitlementIds": [ "string" ] }
json
application/json
Example Responses
{ "id": "550e8400-e29b-41d4-a716-446655440000", "productNumber": "P001", "name": "Web Hosting", "description": "description", "unit": "pcs", "productGroupId": "productGroupId", "productType": "goods", "isActive": true, "isArchived": false, "isLocked": false, "prices": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "productId": "productId", "nickname": "nickname", "unitAmount": "99.99", "billingPeriodType": "recurring", "pricingModel": "flat_rate", "billingInterval": "day", "billingIntervalCount": 1, "currency": "DKK", "baseCurrency": "DKK", "availableCurrencies": [ "string" ], "status": "draft", "isDefault": false, "isLocked": false, "meterId": "meterId", "tiers": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "fromQuantity": 1, "toQuantity": 10, "unitAmount": "99.99", "flatFee": "10.00" } ], "vatRatesByZone": {} } ], "entitlements": [ { "id": "id", "name": "Advanced reporting", "key": "advanced_reporting" } ], "createdAt": "2024-01-15T10:30:00Z", "updatedAt": "2024-01-15T10:30:00Z" }
json
application/json

Product PricesProjects