LedgerBee Developer
  • Getting started
  • Conventions
  • Products
  • Configuration
  • API Reference
Information
Accounts
    List accountsget
API Key
    Get current API keyget
Authority Extracts
    Submit authority extract datapost
Billing Groups
    Form a billing grouppostGet a billing groupgetAdd members to a billing grouppostRemove a member from a billing groupdeleteCheck billing group eligibilitypost
Budgets
    List budgetsgetGet a budgetgetGet the budget vs actuals comparisongetList a budget's frozen baselinesgetGet a frozen baseline with its snapshot cellsgetList a budget's re-baseline proposalsgetList a budget's scenariosgetResolve a budget's grid under a scenariogetGet the variance report vs a frozen baselinegetGet the runway headlineget
Checkout
    Confirm the checkoutpostQuote a first periodpostIntegration readinessgetMint a checkout sessionpostRehydrate a sessiongetRelease the card hold (edit-after-card)postPoll card statusgetOpen the card windowpostOpen a card-update window for a live subscriptionpost
Company
    Get company detailsget
Connected app OAuth
    JSON Web Key Set used to verify OAuth access-token signaturesgetRFC 8414 authorization-server metadata for the connected-app OAuth servergetRFC 9728 protected-resource metadata for an MCP resourcegetRFC 9728 protected-resource metadata for an MCP resourcegetOpenID Connect discovery document for the connected-app OAuth serverget
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 customerpostCredit a whole invoicepost
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 categorydeleteList distribution keys (paginated)getCreate a distribution keypostGet a distribution keygetList dimension values (paginated)getCreate a new dimension valuepostUpdate a dimension valueputDelete a dimension valuedelete
Document Templates
    List document templatesget
Download Links
    Mint a download link for a document PDFgetDownload a minted linkget
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 categoriesgetCreate a journal categorypostUpdate a journal categoryputDelete a journal categorydelete
Journal Entries
    List journal entriesgetGet a journal entrygetUpdate a journal entry — correct the reference and/or set your external system idpatchGet attachments for a journal entrygetPreview a correction without posting itpostMove postings to different accounts, keeping the document intactpostReverse a posted entry and open a draft to re-enter itpostReverse 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
Open Entries
    List a counterparty’s open entriesget
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 checkout-vouch token (partner-vouched anonymous checkout)postMint 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 productpatchArchive a productpost
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
Settlements
    List a counterparty’s settlementsgetSettle open entries against each otherpostGet a settlementgetCheck what settling these entries would dopost
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

Vendors

Download schema

deprecated

List vendors

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

Retrieves all vendors for your company, sorted by vendor number.

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

DEPRECATED — sunset on 2026-12-31 (RFC 8594; every response carries Deprecation/Sunset/Link headers). Migrate to the supplier endpoints under /api/v1/suppliers — identical shapes with supplier-named fields and SUPPLIER_* error codes.

Required Scope

  • suppliers-read

List vendors › Responses

List of vendors for the company

​VendorResponse[]
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
GET/v1/vendors
curl https://api.ledgerbee.com/api/v1/vendors \ --header 'x-api-key: <api-key>'
Example Responses
[ { "id": "550e8400-e29b-41d4-a716-446655440000", "vendorNumber": "V001", "name": "Acme Supplies", "vendorGroupId": "550e8400-e29b-41d4-a716-446655440001", "vendorGroupName": "Domestic Vendors", "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

deprecated

Create a vendor

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

Creates a vendor together with its contacts.

vendorNumber is trimmed and must be unique within your company — a duplicate returns 400 with error code VENDOR_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.

vendorGroupId must reference an existing vendor group in your company (404 VENDOR_GROUP_NOT_FOUND), and defaultAccountId, when provided, must reference an existing ledger account (404 LEDGER_NOT_FOUND).

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

DEPRECATED — sunset on 2026-12-31 (RFC 8594; every response carries Deprecation/Sunset/Link headers). Migrate to the supplier endpoints under /api/v1/suppliers — identical shapes with supplier-named fields and SUPPLIER_* error codes.

Required Scope

  • suppliers-write

Create a vendor › Headers

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

Optional idempotency key for safely retrying mutating requests.

Create a vendor › Request Body

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 · pattern: ^[A-Za-z]{3}$ · required

The currency this vendor bills us in, ISO 4217 alpha-3.

Example: DKK
countryCode
​string · required

Two-letter country code

Example: DK
​CreateVendorContactRequest[] · minItems: 1 · maxItems: 50 · 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 · 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 vendor, negative = a credit position.

Example: 1000
defaultAccountId
​string

Default ledger account ID

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

Create a vendor › Responses

Vendor created successfully

CreateVendorResponse
id
​string · required

The unique identifier of the created vendor

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

Vendor number

Example: V001
POST/v1/vendors
curl https://api.ledgerbee.com/api/v1/vendors \ --request POST \ --header 'Content-Type: application/json' \ --header 'x-api-key: <api-key>' \ --data '{ "vendorNumber": "V001", "name": "Acme Supplies", "vendorGroupId": "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
{ "vendorNumber": "V001", "name": "Acme Supplies", "vendorGroupId": "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", "vendorNumber": "V001" }
json
application/json

deprecated

List vendor contacts

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

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

Returns 404 with error code VENDOR_NOT_FOUND when the vendor does not exist in your company.

DEPRECATED — sunset on 2026-12-31 (RFC 8594; every response carries Deprecation/Sunset/Link headers). Migrate to the supplier endpoints under /api/v1/suppliers — identical shapes with supplier-named fields and SUPPLIER_* error codes.

Required Scope

  • suppliers-read

List vendor contacts › path Parameters

vendorId
​string · required

Vendor ID

List vendor contacts › Responses

List of contacts for a vendor

​VendorContactResponse[]
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
GET/v1/vendors/{vendorId}/contacts
curl https://api.ledgerbee.com/api/v1/vendors/:vendorId/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", "isDefaultForVendor": true } ]
json
application/json

deprecated

List vendor departments

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

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

Returns 404 with error code VENDOR_NOT_FOUND when the vendor does not exist in your company.

DEPRECATED — sunset on 2026-12-31 (RFC 8594; every response carries Deprecation/Sunset/Link headers). Migrate to the supplier endpoints under /api/v1/suppliers — identical shapes with supplier-named fields and SUPPLIER_* error codes.

Required Scope

  • suppliers-read

List vendor departments › path Parameters

vendorId
​string · required

Vendor ID

List vendor departments › Responses

List of departments for a vendor

​VendorDepartmentResponse[]
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
GET/v1/vendors/{vendorId}/departments
curl https://api.ledgerbee.com/api/v1/vendors/:vendorId/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

deprecated

List vendor groups

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

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

The list is cached for 5 seconds.

DEPRECATED — sunset on 2026-12-31 (RFC 8594; every response carries Deprecation/Sunset/Link headers). Migrate to the supplier endpoints under /api/v1/suppliers — identical shapes with supplier-named fields and SUPPLIER_* error codes.

Required Scope

  • suppliers-read

List vendor groups › Responses

List of vendor groups for the company

​VendorGroupResponse[]
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
GET/v1/vendors/groups
curl https://api.ledgerbee.com/api/v1/vendors/groups \ --header 'x-api-key: <api-key>'
Example Responses
[ { "id": "550e8400-e29b-41d4-a716-446655440000", "name": "Domestic Vendors", "description": "All domestic vendor accounts", "defaultAccountId": "550e8400-e29b-41d4-a716-446655440001" } ]
json
application/json

VAT CodesWebhook Endpoints