Suppliers
List suppliers
Credential: a company's API key or OAuth token.
Retrieves all suppliers for your company, sorted by supplier number. Each
supplier carries its full metadata map.
Pass metadata[key]=value query parameters to return only the suppliers
whose metadata carries every given key with exactly the given value (AND
semantics, exact match, at most 10 pairs). A request with more than 10 pairs
returns 400 with error code METADATA_TOO_MANY_FILTERS.
The unfiltered list is cached for 5 seconds; creating a supplier through this API invalidates the cache, so a just-created supplier is immediately visible. A filtered list is never cached, so a metadata change is visible on the next filtered read.
Pagination
The list is returned in full, as an array, unless you send cursor,
page or limit. Sending any of them switches the response to a
paginated object (data, total, page, limit, totalPages,
nextCursor, hasMore); page and limit take their defaults when
omitted. A paginated read is never cached.
To walk the whole list, send limit and then pass each response's
nextCursor back as cursor, with the same filters, until hasMore is
false. Paging by page is deprecated, and page cannot be sent with
cursor (400 PAGINATION_CURSOR_WITH_PAGE). A cursor replayed with other filters is
refused with 400 PAGINATION_INVALID_CURSOR. From
2026-12-31, a page past the first of a list with more
than 10,000 items is refused with
400 PAGINATION_OFFSET_TOO_DEEP.
Required Scope
suppliers-read
query Parameters
Exact-match metadata filters in the form metadata[key]=value. Multiple pairs combine with AND semantics — a record matches only if it carries every given key with exactly the given value. At most 10 pairs per request.
cursorOpaque cursor from the previous response's nextCursor. Returns the items after it, in the same order. Send the same filters as the request that produced it, and do not send page. The preferred way to page through the list. Sending cursor, page or limit switches the response from the full array to a paginated object.
pageDeprecated: page with cursor instead. Page number (1-indexed). Sending cursor, page or limit switches the response from the full array to a paginated object. When only limit or cursor is sent, page is 1.
limitNumber of items per page. Sending cursor, page or limit switches the response from the full array to a paginated object. When limit is omitted from a paginated request, it is 25.
List suppliers › Responses
The full list of suppliers matching the given filters, or one page of it when cursor, page or limit is sent
Decision Table
| Variant | Matching Criteria |
|---|---|
| type = array | |
| type = object · requires: data, total, page +4 more |
idThe unique identifier of the supplier
supplierNumberSupplier number
nameName of the supplier
supplierGroupIdSupplier group ID
currencyCurrency code
statusSupplier status
supplierGroupNameSupplier group name
emailEmail address
phonePhone number
addressStreet address
cityCity
postalCodePostal code
countryCodeTwo-letter country code (ISO 3166-1 alpha-2)
vatNumberVAT registration number
attentionAttention field
paymentTermsPayment terms in days
openingBalanceOpening balance in the company base currency (signed: positive = we owe the supplier)
Key-value metadata attached to the supplier
Create a supplier
Credential: a company's API key or OAuth token.
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).
An optional metadata map (string keys to string values, at most 50 entries,
keys up to 128 characters, values up to 500 characters) is stored with the
supplier. An invalid map is rejected before the supplier is created, with error
code METADATA_KEY_REQUIRED, METADATA_KEY_TOO_LONG,
METADATA_VALUE_TOO_LONG, METADATA_DUPLICATE_KEY or
METADATA_TOO_MANY_ENTRIES.
The response contains only the new supplier's id and supplierNumber;
fetch the full record, including its metadata, via the list endpoint.
Required Scope
suppliers-write
Headers
x-api-idempotency-keyOptional idempotency key for safely retrying mutating requests.
Create a supplier › Request Body
supplierNumberUnique supplier number
nameSupplier name
supplierGroupIdSupplier group ID
currency^[A-Za-z]{3}$ · requiredThe currency this supplier bills us in, ISO 4217 alpha-3.
countryCodeTwo-letter country code
Contacts for the supplier. At least one contact with isDefault: true is required.
emailEmail address
phonePhone number
addressStreet address
cityCity
postalCodePostal code
vatNumberVAT registration number
attentionAttention field
paymentTermsPayment terms in days
openingBalanceOpening balance in the company base currency, seeding payables that predate LedgerBee. Signed: positive = we owe the supplier, negative = a credit position.
defaultAccountIdDefault ledger account ID
Key-value metadata to attach to the supplier. At most 50 entries; keys up to 128 characters, string values up to 500 characters. Read it back, or filter on it, through the list endpoint.
Create a supplier › Responses
Supplier created successfully
idThe unique identifier of the created supplier
supplierNumberSupplier number
Delete a supplier
Credential: a company's API key or OAuth token.
Deletes a supplier, together with its contacts, departments and metadata, following the same rules as deleting one in LedgerBee.
A supplier that any booked journal entry or draft entry still points at is not
deleted. The request is refused with 400 and the code
SUPPLIER_HAS_REFERENCES; details.journalEntryCount and
details.draftCount say how many entries point at it. Delete or reassign the
drafts first; a supplier with booked entries cannot be deleted.
Returns 404 with the code SUPPLIER_NOT_FOUND when the supplier does not
exist in your company.
Required Scope
suppliers-write
path Parameters
supplierIdSupplier ID
Headers
x-api-idempotency-keyOptional idempotency key for safely retrying mutating requests.
Delete a supplier › Responses
Supplier deleted
List supplier contacts
Credential: a company's API key or OAuth token.
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
path Parameters
supplierIdSupplier ID
List supplier contacts › Responses
List of contacts for a supplier
idThe unique identifier of the contact
nameName of the contact
isDefaultForSupplierWhether this is the default contact for the supplier
emailEmail address
phonePhone number
List supplier departments
Credential: a company's API key or OAuth token.
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
path Parameters
supplierIdSupplier ID
List supplier departments › Responses
List of departments for a supplier
idThe unique identifier of the department
nameName of the department
isDefaultWhether this is the default department for the supplier
isActiveWhether the department is active
poNumberPurchase order number
eanNumberEAN number for e-invoicing
addressStreet address
cityCity
postalCodePostal code
countryCodeTwo-letter country code (ISO 3166-1 alpha-2)
List supplier groups
Credential: a company's API key or OAuth token.
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
idThe unique identifier of the supplier group
nameName of the supplier group
descriptionDescription of the supplier group
defaultAccountIdDefault ledger account ID