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

Suppliers

Download schema

List suppliers

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

Retrieves all suppliers for your company, sorted by supplier number.

The list is cached for 5 seconds; creating a supplier through this API invalidates the cache, so a just-created supplier is immediately visible.

Required Scope

  • suppliers-read

List suppliers › Responses

List of suppliers for the company

​SupplierResponse[]
SupplierResponse
id
​string · required

The unique identifier of the supplier

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

Supplier number

Example: V001
name
​string · required

Name of the supplier

Example: Acme Supplies
supplierGroupId
​string · required

Supplier group ID

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

Currency code

Example: DKK
status
​string · enum · required

Supplier status

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

Supplier group name

Example: Domestic Suppliers
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 supplier)

Example: 1000
GET/v1/suppliers
curl https://api.ledgerbee.com/api/v1/suppliers \ --header 'x-api-key: <api-key>'
Example Responses
[ { "id": "550e8400-e29b-41d4-a716-446655440000", "supplierNumber": "V001", "name": "Acme Supplies", "supplierGroupId": "550e8400-e29b-41d4-a716-446655440001", "supplierGroupName": "Domestic Suppliers", "email": "contact@acme-supplies.com", "phone": "+45 12345678", "address": "123 Main Street", "city": "Copenhagen", "postalCode": "2100", "countryCode": "DK", "vatNumber": "DK12345678", "currency": "DKK", "attention": "Accounts Payable", "paymentTerms": 30, "openingBalance": 1000, "status": "active" } ]
json
application/json

Create a supplier

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

Creates a supplier together with its contacts.

supplierNumber is trimmed and must be unique within your company — a duplicate returns 400 with error code SUPPLIER_NUMBER_ALREADY_EXISTS.

Exactly one contact must be marked as default. When you provide a single contact it is made the default automatically; otherwise a missing or duplicated default returns 400 with error code CONTACT_DEFAULT_REQUIRED or CONTACT_MULTIPLE_DEFAULTS.

supplierGroupId must reference an existing supplier group in your company (404 SUPPLIER_GROUP_NOT_FOUND), and defaultAccountId, when provided, must reference an existing ledger account (404 LEDGER_NOT_FOUND).

The response contains only the new supplier's id and supplierNumber; fetch the full record via the list endpoint.

Required Scope

  • suppliers-write

Create a supplier › Headers

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

Optional idempotency key for safely retrying mutating requests.

Create a supplier › Request Body

CreateSupplierRequest
supplierNumber
​string · required

Unique supplier number

Example: V001
name
​string · required

Supplier name

Example: Acme Supplies
supplierGroupId
​string · required

Supplier group ID

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

Currency code

Example: DKK
countryCode
​string · required

Two-letter country code

Example: DK
​CreateSupplierContactRequest[] · required

Contacts for the supplier. 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 · maxLength: 255

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 supplier, negative = a credit position.

Example: 1000
defaultAccountId
​string

Default ledger account ID

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

Create a supplier › Responses

Supplier created successfully

CreateSupplierResponse
id
​string · required

The unique identifier of the created supplier

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

Supplier number

Example: V001
POST/v1/suppliers
curl https://api.ledgerbee.com/api/v1/suppliers \ --request POST \ --header 'Content-Type: application/json' \ --header 'x-api-key: <api-key>' \ --data '{ "supplierNumber": "V001", "name": "Acme Supplies", "supplierGroupId": "550e8400-e29b-41d4-a716-446655440001", "currency": "DKK", "countryCode": "DK", "email": "contact@acme-supplies.com", "phone": "+45 12345678", "address": "123 Main Street", "city": "Copenhagen", "postalCode": "2100", "vatNumber": "DK12345678", "attention": "Accounts Payable", "paymentTerms": 30, "openingBalance": 1000, "defaultAccountId": "550e8400-e29b-41d4-a716-446655440002", "contacts": [ { "name": "John Doe", "email": "john.doe@acme-supplies.com", "phone": "+45 12345678", "isDefault": true } ] }'
Example Request Body
{ "supplierNumber": "V001", "name": "Acme Supplies", "supplierGroupId": "550e8400-e29b-41d4-a716-446655440001", "currency": "DKK", "countryCode": "DK", "email": "contact@acme-supplies.com", "phone": "+45 12345678", "address": "123 Main Street", "city": "Copenhagen", "postalCode": "2100", "vatNumber": "DK12345678", "attention": "Accounts Payable", "paymentTerms": 30, "openingBalance": 1000, "defaultAccountId": "550e8400-e29b-41d4-a716-446655440002", "contacts": [ { "name": "John Doe", "email": "john.doe@acme-supplies.com", "phone": "+45 12345678", "isDefault": true } ] }
json
application/json
Example Responses
{ "id": "550e8400-e29b-41d4-a716-446655440000", "supplierNumber": "V001" }
json
application/json

List supplier contacts

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

Retrieves all contacts for a supplier, with the default contact first and the rest sorted alphabetically by name.

Returns 404 with error code SUPPLIER_NOT_FOUND when the supplier does not exist in your company.

Required Scope

  • suppliers-read

List supplier contacts › path Parameters

supplierId
​string · required

Supplier ID

List supplier contacts › Responses

List of contacts for a supplier

​SupplierContactResponse[]
SupplierContactResponse
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
isDefaultForSupplier
​boolean · required

Whether this is the default contact for the supplier

Example: true
email
​string

Email address

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

Phone number

Example: +45 12345678
GET/v1/suppliers/{supplierId}/contacts
curl https://api.ledgerbee.com/api/v1/suppliers/:supplierId/contacts \ --header 'x-api-key: <api-key>'
Example Responses
[ { "id": "550e8400-e29b-41d4-a716-446655440000", "name": "John Doe", "email": "john.doe@acme-supplies.com", "phone": "+45 12345678", "isDefaultForSupplier": true } ]
json
application/json

List supplier departments

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

Retrieves all departments for a supplier, with the default department first and the rest sorted alphabetically by name.

Returns 404 with error code SUPPLIER_NOT_FOUND when the supplier does not exist in your company.

Required Scope

  • suppliers-read

List supplier departments › path Parameters

supplierId
​string · required

Supplier ID

List supplier departments › Responses

List of departments for a supplier

​SupplierDepartmentResponse[]
SupplierDepartmentResponse
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 supplier

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
GET/v1/suppliers/{supplierId}/departments
curl https://api.ledgerbee.com/api/v1/suppliers/:supplierId/departments \ --header 'x-api-key: <api-key>'
Example Responses
[ { "id": "550e8400-e29b-41d4-a716-446655440000", "name": "Headquarters", "isDefault": true, "isActive": true, "poNumber": "PO-12345", "eanNumber": "5790000000000", "address": "123 Main Street", "city": "Copenhagen", "postalCode": "2100", "countryCode": "DK" } ]
json
application/json

List supplier groups

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

Retrieves all supplier groups for your company, sorted alphabetically by name.

The list is cached for 5 seconds.

Required Scope

  • suppliers-read

List supplier groups › Responses

List of supplier groups for the company

​SupplierGroupResponse[]
SupplierGroupResponse
id
​string · required

The unique identifier of the supplier group

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

Name of the supplier group

Example: Domestic Suppliers
description
​string

Description of the supplier group

Example: All domestic supplier accounts
defaultAccountId
​string

Default ledger account ID

Example: 550e8400-e29b-41d4-a716-446655440001
GET/v1/suppliers/groups
curl https://api.ledgerbee.com/api/v1/suppliers/groups \ --header 'x-api-key: <api-key>'
Example Responses
[ { "id": "550e8400-e29b-41d4-a716-446655440000", "name": "Domestic Suppliers", "description": "All domestic supplier accounts", "defaultAccountId": "550e8400-e29b-41d4-a716-446655440001" } ]
json
application/json

SubscriptionsVAT Codes