openapi: 3.1.0
info:
title: Moneybird API
description: The Moneybird API allows you to interact with a Moneybird account in a RESTful manner. For comprehensive and up-to-date information on authentication, endpoints, usage, webhooks, and best practices, please refer to the documentation at [developer.moneybird.com](https://developer.moneybird.com). All details, examples, and guides are available on their respective pages.
version: v2-20260108-683cbfbf17
termsOfService: https://www.moneybird.nl/terms/
contact:
name: Moneybird
email: support@moneybird.com
url: https://developer.moneybird.com
servers:
- url: https://moneybird.com/api/v2
description: Production server
security:
- bearerAuth: []
tags:
- name: Administrations
description: |-
Administrations are the top level entities in Moneybird. Use the following endpoints to get
information about the administrations you have access to.
- name: Assets
description: |-
Assets are significant purchases, like company cars, laptops or furniture, that are used over
multiple years. They are recorded to manage depreciation and comply with tax regulations.
- name: Contacts
description: |-
Contacts are the entities in Moneybird that represent your customers, suppliers or other
business relations. Use the following endpoints to get information about contacts, create
new contacts or update existing contacts.
- name: Custom fields
description: Custom fields can be used to add extra information to sales invoices, contacts and identities.
- name: Customer contact portal
description: |-
The customer contact portal allows you to create temporary links to the customer contact
portal. Allowing your customers to view their invoices, subscriptions and other related information.
- name: Document styles
description: |-
Document styles are used to define the layout of documents, like invoices and estimates. You
can have multiple document styles for different purposes.
- name: Downloads
description: |-
Downloads are files that have been generated as exports from your administration. These can be
CSV exports of contacts, sales invoices, time entries, or various financial reports. Use these
endpoints to retrieve a list of available downloads and to download the files.
- name: 'Documents: General documents'
description: |-
General documents are documents that are not invoices, estimates, or other specific document
types. They can be used to store other financial documents.
- name: 'Documents: General journal documents'
description: |-
General journal documents are used for manual bookkeeping entries, to correct errors or make
adjustments.
- name: 'Documents: Purchase invoices'
description: Purchase invoices are invoices you receive from your suppliers.
- name: 'Documents: Receipts'
description: Receipts are proofs of payment for expenses.
- name: 'Documents: Typeless documents'
description: |-
Typeless documents are documents of which the type is not yet known. For example, a document
uploaded via email or via the bulk uploader. It is not possible to update a typeless
document, except for adding attachments. You will need to set its type first. You cannot set
the type of typeless documents using the API yet, but you can do this via the website.
- name: Estimates
description: |-
Estimates (or quotes) are proposals for products or services that you can send to your
clients.
- name: External sales invoices
description: |-
External sales invoices are invoices created in other systems that you want to import into
Moneybird for a complete overview of your revenue.
- name: Financial accounts
description: |-
Financial accounts represent your bank accounts, credit cards, private withdrawals/deposits
and other payment services. They are used to track payments and financial mutations.
- name: Financial mutations
description: Financial mutations are the transactions on your financial accounts.
- name: Financial statements
description: |-
Financial statements are comprised of financial mutations that are booked on a financial
account. They provide a detailed record of all transactions for a specific account.
- name: Identities
description: |-
Identities are the different profiles or trade names under which you can send documents from
your administration.
- name: Ledger accounts
description: |-
Ledger accounts are the categories in your bookkeeping, like revenue, costs, assets, and
liabilities.
- name: Payments
description: Payments are records of money being transferred for invoices.
- name: Products
description: Products are the goods or services you sell. You can add them to invoices and estimates.
- name: Projects
description: |-
Projects allow you to group time entries and financials for specific projects you are working
on.
- name: Purchase transactions
description: Purchase transactions are outgoing payments you initiate from Moneybird
- name: Recurring sales invoices
description: |-
Recurring sales invoices are templates for invoices that are sent automatically at a
recurring interval.
- name: Reports
description: |-
Reports provide analytical data about your administration, such as revenue and expense
breakdowns by various dimensions like projects, contacts, or time periods.
- name: Sales invoices
description: |-
Sales invoices are the invoices you send to your customers for products or services you have
delivered.
- name: Subscription templates
description: Subscription templates define the products and prices for subscriptions.
- name: Subscriptions
description: |-
Subscriptions allow you to automatically invoice customers on a recurring basis for the
services you provide.
- name: Tax rates
description: Tax rates are the VAT tariffs that apply to your products and services.
- name: Time entries
description: |-
Time entries are used to track time spent on projects, which can then be billed to
customers.
- name: Users
description: |-
Administrations can have multiple users. Use the following endpoints to get information about
the users in an administration.
- name: Verifications
description: |-
Verifications are used to retrieve all verified information within an administration, such as
e-mail addresses, bank account numbers, Chamber of Commerce numbers, and tax numbers.
- name: Webhooks
description: |-
Webhooks are a way to subscribe to events that happen in Moneybird. When an event occurs,
Moneybird will send a POST request to the URL you provided. This way, you can keep your own
system in sync with Moneybird.
For example, you can subscribe to the `contact_created` event to receive a notification when
a new contact is created in Moneybird.
- name: Workflows
description: |-
Workflows determine the settings of the invoice and estimate workflow. Use the following
to get information about the workflows in an administration.
paths:
/administrations{format}:
get:
summary: List all administrations
description: Lists all administrations the current user has access to.
tags:
- Administrations
parameters:
- $ref: '#/components/parameters/format'
responses:
'200':
description: A list of administrations
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/administration_response'
examples:
ReturnAListOfAdministrationsThatUserHasAccessTo:
summary: Return a list of administrations that user has access to
value:
- id: 1767872419803269
name: Administratie
language: nl
currency: EUR
country: NL
time_zone: Europe/Amsterdam
access: user
suspended: false
period_locked_until: null
- id: 123
name: Parkietje B.V.
language: nl
currency: EUR
country: NL
time_zone: Europe/Amsterdam
access: user
suspended: false
period_locked_until: null
ReturnsAccessTypeUserWhenHavingDirectAccessToTheAdministration:
summary: Returns access type user when having direct access to the administration
value:
- id: '176787242052031611'
name: Parkietje B.V.
language: nl
currency: EUR
country: NL
time_zone: Europe/Amsterdam
access: user
suspended: false
period_locked_until: null
ValidatesThatAUserHasAccessToMultipleAdministrationsViaDifferentWays:
summary: Validates that a user has access to multiple administrations via different ways
value:
- id: '176787242032376900'
name: Administratie
language: nl
currency: EUR
country: NL
time_zone: Europe/Amsterdam
access: accountant_company
suspended: false
period_locked_until: null
- id: 123
name: Parkietje B.V.
language: nl
currency: EUR
country: NL
time_zone: Europe/Amsterdam
access: user
suspended: false
period_locked_until: null
operationId: get_administrations
/{administration_id}/assets/{id}/disposals{format}:
post:
summary: Create a disposal
description: |-
Creates a disposal for the asset at the given date.
Requires the asset to not have a disposal already.
Furthermore, the asset must be fully depreciated so the value of the asset at the disposal date must be zero.
tags:
- Assets
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
type: object
unevaluatedProperties: false
properties:
date:
type: string
format: date
description: Has to be after the purchase date of the asset, and cannot be in the future or in the locked period of the administration.
reason:
type: string
enum:
- out_of_use
- sold
- private_withdrawal
- divested
required:
- date
- reason
examples:
AddsADisposal:
summary: Adds a disposal
value:
date: '2026-01-08'
reason: out_of_use
responses:
'201':
description: A disposal
content:
application/json:
schema:
$ref: '#/components/schemas/disposal_response'
examples:
AddsADisposal:
summary: Adds a disposal
value:
date: '2026-01-08'
reason: out_of_use
externally_booked: false
asset_id: '475689086019961972'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA400IfTheReasonIsInvalid:
summary: Returns a 400 if the reason is invalid
value:
error: reason does not have a valid value
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA404IfTheAssetDoesNotExist:
summary: Returns a 404 if the asset does not exist
value:
error: 'Record not found for model name: asset'
'422':
description: Unprocessable entity
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/symbolic_error'
- $ref: '#/components/schemas/non_symbolic_error'
examples:
ReturnsA422TheAssetIsNotInvalid:
summary: Returns a 422 the asset is not invalid
value:
error:
date:
- is invalid, asset is not fully depreciated on this date
details:
date:
- error: invalid_asset_not_fully_depreciated
operationId: post_administration_id_assets_id_disposals
/{administration_id}/assets/{id}/sources/{detail_id}{format}:
delete:
summary: Delete a source
description: Deletes a source from an asset. Does not delete the detail or the asset
tags:
- Assets
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: detail_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Source deleted
'404':
$ref: '#/components/responses/404_not_found'
operationId: delete_administration_id_assets_id_sources_detail_id
/{administration_id}/assets/{id}/sources{format}:
post:
summary: Add a source to an asset
description: |-
Adds a detail as a source to an asset.
The detail must have the same ledger account as the asset.
tags:
- Assets
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
type: object
unevaluatedProperties: false
properties:
detail_id:
$ref: '#/components/schemas/identifier'
required:
- detail_id
examples:
CreatesANewSource:
summary: Creates a new source
value:
detail_id: 475689076771522400
responses:
'201':
description: A detail that is added as a source to an asset
content:
application/json:
schema:
$ref: '#/components/schemas/source_response'
examples:
CreatesANewSource:
summary: Creates a new source
value:
id: '475689076788299638'
asset_id: '475689076476872520'
detail_id: '475689076771522421'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA400IfTheDetailIdIsNotAInteger:
summary: Returns a 400 if the detail id is not a integer
value:
error: detail_id is invalid
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA404IfTheAssetDoesNotExist:
summary: Returns a 404 if the asset does not exist
value:
error: 'Record not found for model name: asset'
'422':
description: Unprocessable entity
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/symbolic_error'
- $ref: '#/components/schemas/non_symbolic_error'
examples:
ReturnsA422IfTheDetailIsNotValid:
summary: Returns a 422 if the detail is not valid
value:
error:
detail:
- The ledger account of the detail must be equal to the ledger account of the asset
details:
detail:
- error: not_equal_to_asset_ledger_account
operationId: post_administration_id_assets_id_sources
/{administration_id}/assets/{id}/value_changes/arbitrary{format}:
post:
summary: Create an arbitrary value change
description: |-
Creates an arbitrary value change for the asset at the given date.
If the amount is larger than the value of the asset at the given date, a 422 error will be returned.
Any existing linear value changes after the given date will be removed.
tags:
- Assets
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
type: object
unevaluatedProperties: false
properties:
date:
type: string
format: date
description: Has to be after the purchase date of the asset, and cannot be in the future or in the locked period of the administration.
amount:
$ref: '#/components/schemas/number'
description: Note that a negative amount means the asset decreases in value while a positive amount means the asset increases in value.
description:
type: string
externally_booked:
type: boolean
description: Set to true if the value change is already externally booked and doesn't need to be booked by Moneybird.
default: false
required:
- date
- amount
- description
examples:
AddsAArbitraryValueChange:
summary: Adds a arbitrary value change
value:
date: '2026-01-08'
amount: -10
externally_booked: true
description: some description
responses:
'201':
description: A value change
content:
application/json:
schema:
$ref: '#/components/schemas/value_change_response'
examples:
AddsAArbitraryValueChange:
summary: Adds a arbitrary value change
value:
type: arbitrary
date: '2026-01-08'
amount: '-10.0'
description: some description
externally_booked: true
asset_id: '475689082691782312'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA400IfTheDateIsNotAValidDate:
summary: Returns a 400 if the date is not a valid date
value:
error: Date is invalid
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA404IfTheAssetDoesNotExist:
summary: Returns a 404 if the asset does not exist
value:
error: 'Record not found for model name: asset'
'422':
description: Unprocessable entity
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/symbolic_error'
- $ref: '#/components/schemas/non_symbolic_error'
examples:
ReturnsA422IfTheValueChangeIsInvalid:
summary: Returns a 422 if the value change is invalid
value:
error:
date:
- can not be before the commissioning date of the asset
details:
date:
- error: cannot_be_before_purchase_date
operationId: post_administration_id_assets_id_value_changes_arbitrary
/{administration_id}/assets/{id}/value_changes/divestment{format}:
post:
summary: Create a divestment value change
description: |-
Creates a divestment value change for the asset at the given date.
The remaining value of the asset will be taken from the balance sheet and the profit will be booked as book result.
The amount of the value change will automatically be set to the value of the asset at the given date.
If the value change is created successfully, a disposal will be created for the asset.
Any existing linear value changes after the given date will be removed.
tags:
- Assets
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
type: object
unevaluatedProperties: false
properties:
date:
type: string
format: date
description: Has to be after the purchase date of the asset, and cannot be in the future or in the locked period of the administration.
required:
- date
examples:
AddsADivestmentValueChange:
summary: Adds a divestment value change
value:
date: '2026-01-08'
responses:
'201':
description: A value change
content:
application/json:
schema:
$ref: '#/components/schemas/value_change_response'
examples:
AddsADivestmentValueChange:
summary: Adds a divestment value change
value:
type: divestment
date: '2026-01-08'
amount: '-12145.67'
description: null
externally_booked: false
asset_id: '475689078506914901'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA400IfTheDateIsNotAValidDate:
summary: Returns a 400 if the date is not a valid date
value:
error: Date is invalid
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA404IfTheAssetDoesNotExist:
summary: Returns a 404 if the asset does not exist
value:
error: 'Record not found for model name: asset'
'422':
description: Unprocessable entity
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/symbolic_error'
- $ref: '#/components/schemas/non_symbolic_error'
examples:
ReturnsA422IfTheValueChangeIsInvalid:
summary: Returns a 422 if the value change is invalid
value:
error:
date:
- can not be before the commissioning date of the asset
details:
date:
- error: cannot_be_before_purchase_date
operationId: post_administration_id_assets_id_value_changes_divestment
/{administration_id}/assets/{id}/value_changes/full_depreciation{format}:
post:
summary: Create a full depreciation value change
description: |-
Creates a full depreciation value change for the asset at the given date.
The remaining value of the asset will be taken from the balance sheet.
The amount of the value change will automatically be set to the value of the asset at the given date.
If the value change is created successfully, a disposal will be created for the asset.
Any existing linear value changes after the given date will be removed.
tags:
- Assets
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
type: object
unevaluatedProperties: false
properties:
date:
type: string
format: date
description: Has to be after the purchase date of the asset, and cannot be in the future or in the locked period of the administration.
description:
type: string
required:
- date
- description
examples:
AddsAFullDepreciationValueChange:
summary: Adds a full depreciation value change
value:
date: '2026-01-08'
description: some description
responses:
'201':
description: A value change
content:
application/json:
schema:
$ref: '#/components/schemas/value_change_response'
examples:
AddsAFullDepreciationValueChange:
summary: Adds a full depreciation value change
value:
type: full_depreciation
date: '2026-01-08'
amount: '-12145.67'
description: some description
externally_booked: false
asset_id: '475689079643571436'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA400IfTheDateIsNotAValidDate:
summary: Returns a 400 if the date is not a valid date
value:
error: Date is invalid
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA404IfTheAssetDoesNotExist:
summary: Returns a 404 if the asset does not exist
value:
error: 'Record not found for model name: asset'
'422':
description: Unprocessable entity
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/symbolic_error'
- $ref: '#/components/schemas/non_symbolic_error'
examples:
ReturnsA422IfTheValueChangeIsInvalid:
summary: Returns a 422 if the value change is invalid
value:
error:
date:
- can not be before the commissioning date of the asset
details:
date:
- error: cannot_be_before_purchase_date
operationId: post_administration_id_assets_id_value_changes_full_depreciation
/{administration_id}/assets/{id}/value_changes/manual{format}:
post:
summary: Create a manual value change
description: |-
Creates a manual value change for the asset at the given date.
If the amount is larger than the value of the asset at the given date, a 422 error will be returned.
tags:
- Assets
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
type: object
unevaluatedProperties: false
properties:
date:
type: string
format: date
description: Has to be after the purchase date of the asset, and cannot be in the future or in the locked period of the administration.
amount:
$ref: '#/components/schemas/number'
description: Note that a negative amount means the asset decreases in value while a positive amount means the asset increases in value.
description:
type: string
externally_booked:
type: boolean
description: Set to true if the value change is already externally booked and doesn't need to be booked by Moneybird.
default: false
required:
- date
- amount
- description
examples:
AddsAManualValueChange:
summary: Adds a manual value change
value:
date: '2026-01-08'
amount: -10
externally_booked: true
description: some description
responses:
'201':
description: A value change
content:
application/json:
schema:
$ref: '#/components/schemas/value_change_response'
examples:
AddsAManualValueChange:
summary: Adds a manual value change
value:
type: manual
date: '2026-01-08'
amount: '-10.0'
description: some description
externally_booked: true
asset_id: '475689074563221043'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA400IfTheDateIsNotAValidDate:
summary: Returns a 400 if the date is not a valid date
value:
error: Date is invalid
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA404IfTheAssetDoesNotExist:
summary: Returns a 404 if the asset does not exist
value:
error: 'Record not found for model name: asset'
'422':
description: Unprocessable entity
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/symbolic_error'
- $ref: '#/components/schemas/non_symbolic_error'
examples:
ReturnsA422IfTheValueChangeIsInvalid:
summary: Returns a 422 if the value change is invalid
value:
error:
date:
- can not be before the commissioning date of the asset
details:
date:
- error: cannot_be_before_purchase_date
operationId: post_administration_id_assets_id_value_changes_manual
/{administration_id}/assets/{id}/value_changes/retroactive_linear_value_changes{format}:
post:
summary: Create linear value changes retroactively
description: |-
Creates linear value changes that were not created yet.
Use this if a new asset has just been created or if an arbitrary value change was created and the missing linear value changes need to be recalculated and recreated.
This will create missing value changes for all months between the purchase date of the asset or the date of the last arbitrary value change and the last month of the administration.
Requires a asset with a value change plan (so no assets that belong to a land or building category).
Also requires that the asset has remaining value, has missing value changes at the end of some months and that all missing linear value changes are outside the locked period.
This process will be performed asynchronously so no result will be returned. Use `Get /assets/:id` to check the result after a while.
tags:
- Assets
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
$ref: '#/components/responses/204_no_content'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA404IfTheAssetDoesNotExist:
summary: Returns a 404 if the asset does not exist
value:
error: 'Record not found for model name: asset'
'422':
description: Unprocessable entity
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/symbolic_error'
- $ref: '#/components/schemas/non_symbolic_error'
examples:
ReturnsA422IfTheAssetHasNoValueChangePlan:
summary: Returns a 422 if the asset has no value change plan
value:
error: Asset has no value change plan
ReturnsA422IfTheAssetIsNotValidWithRetroactiveValueChangesScope:
summary: Returns a 422 if the asset is not valid with retroactive value changes scope
value:
error: The value change plan of the asset is not active
operationId: post_administration_id_assets_id_value_changes_retroactive_linear_value_changes
/{administration_id}/assets/{id}{format}:
get:
summary: Get an asset by ID
description: Returns the asset with the given ID.
tags:
- Assets
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'200':
description: An asset
content:
application/json:
schema:
$ref: '#/components/schemas/asset_response'
examples:
ReturnsTheAsset:
summary: Returns the asset
value:
id: '475689081360090601'
ledger_account_id: '475689081354847720'
name: Asset 1
purchase_date: '2025-08-01'
purchase_value: '12345.67'
current_value: '12145.67'
value_change_plan:
lifespan_in_years: 5
residual_value: '10.0'
active: true
monthly_depreciation: '216.71'
disposal: null
value_changes:
- type: arbitrary
date: '2025-09-01'
amount: '-50.0'
description: Value change 1
externally_booked: false
asset_id: '475689081360090601'
- type: arbitrary
date: '2025-10-01'
amount: '-50.0'
description: Value change 2
externally_booked: false
asset_id: '475689081360090601'
- type: arbitrary
date: '2025-11-01'
amount: '-50.0'
description: Value change 3
externally_booked: false
asset_id: '475689081360090601'
- type: arbitrary
date: '2025-12-01'
amount: '-50.0'
description: Value change 4
externally_booked: false
asset_id: '475689081360090601'
sources: []
ReturnsTheAssetWithADisposal:
summary: Returns the asset with a disposal
value:
id: '475689081654740501'
ledger_account_id: '475689081649497620'
name: Asset 1
purchase_date: '2020-01-08'
purchase_value: '12345.67'
current_value: '0.0'
value_change_plan:
lifespan_in_years: 5
residual_value: '10.0'
active: false
monthly_depreciation: '205.59'
disposal:
date: '2026-01-08'
reason: out_of_use
externally_booked: false
asset_id: '475689081654740501'
value_changes:
- type: manual
date: '2026-01-08'
amount: '-12345.67'
description: Depreciation
externally_booked: false
asset_id: '475689081654740501'
sources: []
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA404IfTheAssetDoesNotExist:
summary: Returns a 404 if the asset does not exist
value:
error: 'Record not found for model name: asset'
operationId: get_administration_id_assets_id
patch:
summary: Update an asset
description: |-
Updates the asset with the given ID.
If the asset is active (the purchase date is in the past), only the `name` can be updated.
tags:
- Assets
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
type: object
unevaluatedProperties: false
properties:
asset:
type: object
unevaluatedProperties: false
properties:
name:
type: string
description: The name of the asset
ledger_account_id:
$ref: '#/components/schemas/identifier'
description: The ID of the ledger account
purchase_date:
type: string
description: The purchase date of the asset
purchase_value:
$ref: '#/components/schemas/number'
description: The purchase value of the asset
value_change_plan_attributes:
unevaluatedProperties: false
properties:
lifespan_in_years:
$ref: '#/components/schemas/number'
description: The lifespan of the asset in years
residual_value:
$ref: '#/components/schemas/number'
description: The residual value of the asset at the end of the lifespan
required:
- asset
examples:
UpdatesTheAsset:
summary: Updates the asset
value:
asset:
name: New Name
AllowsUpdatingEveryAttributeOfAPlannedAsset:
summary: Allows updating every attribute of a planned asset
value:
asset:
name: New Name
ledger_account_id: 475689081242650050
purchase_date: '2026-01-08'
purchase_value: 10000
value_change_plan_attributes:
lifespan_in_years: 10
residual_value: 500
responses:
'200':
description: Asset updated
content:
application/json:
schema:
$ref: '#/components/schemas/asset_response'
examples:
UpdatesTheAsset:
summary: Updates the asset
value:
id: '475689080925980077'
ledger_account_id: '475689080920737196'
name: New Name
purchase_date: '2025-08-01'
purchase_value: '12345.67'
current_value: '12145.67'
value_change_plan:
lifespan_in_years: 5
residual_value: '10.0'
active: true
monthly_depreciation: '216.71'
disposal: null
value_changes:
- type: arbitrary
date: '2025-09-01'
amount: '-50.0'
description: Value change 1
externally_booked: false
asset_id: '475689080925980077'
- type: arbitrary
date: '2025-10-01'
amount: '-50.0'
description: Value change 2
externally_booked: false
asset_id: '475689080925980077'
- type: arbitrary
date: '2025-11-01'
amount: '-50.0'
description: Value change 3
externally_booked: false
asset_id: '475689080925980077'
- type: arbitrary
date: '2025-12-01'
amount: '-50.0'
description: Value change 4
externally_booked: false
asset_id: '475689080925980077'
sources: []
AllowsUpdatingEveryAttributeOfAPlannedAsset:
summary: Allows updating every attribute of a planned asset
value:
id: '475689081252087259'
ledger_account_id: '475689081242650073'
name: New Name
purchase_date: '2026-01-08'
purchase_value: '10000.0'
current_value: '10000.0'
value_change_plan:
lifespan_in_years: 10
residual_value: '500.0'
active: true
monthly_depreciation: '79.17'
disposal: null
value_changes: []
sources: []
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA400IfTheInputAttributesAreInvalid:
summary: Returns a 400 if the input attributes are invalid
value:
error: asset[purchase_value] does not have a valid value
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA404IfTheAssetDoesNotExist:
summary: Returns a 404 if the asset does not exist
value:
error: 'Record not found for model name: asset'
'422':
description: Unprocessable entity
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/symbolic_error'
- $ref: '#/components/schemas/non_symbolic_error'
examples:
ReturnsA422IfAnActiveAssetGetsAnInvalidAttributeUpdate:
summary: Returns a 422 if an active asset gets an invalid attribute update
value:
error:
base:
- Cannot update asset when it has value changes
details:
base:
- error: cannot_update_with_value_changes
operationId: patch_administration_id_assets_id
delete:
summary: Delete an asset
description: Deletes the asset with the given ID.
tags:
- Assets
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Asset deleted
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA404IfTheAssetDoesNotExist:
summary: Returns a 404 if the asset does not exist
value:
error: 'Record not found for model name: asset'
'422':
description: Unprocessable entity
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/symbolic_error'
- $ref: '#/components/schemas/non_symbolic_error'
examples:
ReturnsA422IfTheAssetIsInTheLockedPeriod:
summary: Returns a 422 if the asset is in the locked period
value:
error: Asset cannot be deleted because there are journal entries in the locked period of the administration.
operationId: delete_administration_id_assets_id
/{administration_id}/assets{format}:
get:
summary: List all assets
description: |-
Returns a list of all assets.
The list is paginated. Use the `per_page` and `page` parameters to control the pagination.
tags:
- Assets
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: ledger_account_id
in: query
required: false
schema:
$ref: '#/components/schemas/identifier'
description: Filter on the ID of the ledger account
examples:
ReturnsAListOfAssetsFilteredByLedgerAccount:
summary: Returns a list of assets filtered by ledger account
value: '475689084085340020'
- name: active
in: query
required: false
schema:
type:
- boolean
- string
default: true
description: Whether to include only active assets
examples:
ReturnsAPaginatedListOfAssets:
summary: Returns a paginated list of assets
value: 'false'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
description: A list of assets
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/asset_response'
examples:
ReturnsAListOfAssetsFilteredByLedgerAccount:
summary: Returns a list of assets filtered by ledger account
value:
- id: '475689084091631477'
ledger_account_id: '475689084085340020'
name: Asset 3
purchase_date: '2025-08-01'
purchase_value: '12345.67'
current_value: '12145.67'
value_change_plan:
lifespan_in_years: 5
residual_value: '10.0'
active: true
monthly_depreciation: '216.71'
disposal: null
value_changes:
- type: arbitrary
date: '2025-09-01'
amount: '-50.0'
description: Value change 1
externally_booked: false
asset_id: '475689084091631477'
- type: arbitrary
date: '2025-10-01'
amount: '-50.0'
description: Value change 2
externally_booked: false
asset_id: '475689084091631477'
- type: arbitrary
date: '2025-11-01'
amount: '-50.0'
description: Value change 3
externally_booked: false
asset_id: '475689084091631477'
- type: arbitrary
date: '2025-12-01'
amount: '-50.0'
description: Value change 4
externally_booked: false
asset_id: '475689084091631477'
sources: []
ReturnsAPaginatedListOfAssets:
summary: Returns a paginated list of assets
value:
- id: '475689084642133963'
ledger_account_id: '475689084637939658'
name: Asset 2
purchase_date: '2020-01-08'
purchase_value: '12345.67'
current_value: '0.0'
value_change_plan:
lifespan_in_years: 5
residual_value: '10.0'
active: false
monthly_depreciation: '205.59'
disposal:
date: '2026-01-08'
reason: out_of_use
externally_booked: false
asset_id: '475689084642133963'
value_changes:
- type: manual
date: '2026-01-08'
amount: '-12345.67'
description: Depreciation
externally_booked: false
asset_id: '475689084642133963'
sources: []
ReturnsAListOfAllAssets:
summary: Returns a list of all assets
value:
- id: '475689084879112166'
ledger_account_id: '475689084873869285'
name: Asset 1
purchase_date: '2025-08-01'
purchase_value: '12345.67'
current_value: '12145.67'
value_change_plan:
lifespan_in_years: 5
residual_value: '10.0'
active: true
monthly_depreciation: '216.71'
disposal: null
value_changes:
- type: arbitrary
date: '2025-09-01'
amount: '-50.0'
description: Value change 1
externally_booked: false
asset_id: '475689084879112166'
- type: arbitrary
date: '2025-10-01'
amount: '-50.0'
description: Value change 2
externally_booked: false
asset_id: '475689084879112166'
- type: arbitrary
date: '2025-11-01'
amount: '-50.0'
description: Value change 3
externally_booked: false
asset_id: '475689084879112166'
- type: arbitrary
date: '2025-12-01'
amount: '-50.0'
description: Value change 4
externally_booked: false
asset_id: '475689084879112166'
sources: []
- id: '475689085189489682'
ledger_account_id: '475689085183198225'
name: Asset 2
purchase_date: '2020-01-08'
purchase_value: '12345.67'
current_value: '0.0'
value_change_plan:
lifespan_in_years: 5
residual_value: '10.0'
active: false
monthly_depreciation: '205.59'
disposal:
date: '2026-01-08'
reason: out_of_use
externally_booked: false
asset_id: '475689085189489682'
value_changes:
- type: manual
date: '2026-01-08'
amount: '-12345.67'
description: Depreciation
externally_booked: false
asset_id: '475689085189489682'
sources: []
ReturnsAListOfActiveAssets:
summary: Returns a list of active assets
value:
- id: '475689085476799533'
ledger_account_id: '475689085470508076'
name: Asset 1
purchase_date: '2025-08-01'
purchase_value: '12345.67'
current_value: '12145.67'
value_change_plan:
lifespan_in_years: 5
residual_value: '10.0'
active: true
monthly_depreciation: '216.71'
disposal: null
value_changes:
- type: arbitrary
date: '2025-09-01'
amount: '-50.0'
description: Value change 1
externally_booked: false
asset_id: '475689085476799533'
- type: arbitrary
date: '2025-10-01'
amount: '-50.0'
description: Value change 2
externally_booked: false
asset_id: '475689085476799533'
- type: arbitrary
date: '2025-11-01'
amount: '-50.0'
description: Value change 3
externally_booked: false
asset_id: '475689085476799533'
- type: arbitrary
date: '2025-12-01'
amount: '-50.0'
description: Value change 4
externally_booked: false
asset_id: '475689085476799533'
sources: []
operationId: get_administration_id_assets
post:
summary: Create a new asset
description: Creates a new asset.
tags:
- Assets
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
type: object
unevaluatedProperties: false
properties:
asset:
type: object
unevaluatedProperties: false
properties:
name:
type: string
description: The name of the asset
ledger_account_id:
$ref: '#/components/schemas/identifier'
description: The ID of the ledger account
purchase_date:
type: string
description: The purchase date of the asset
purchase_value:
$ref: '#/components/schemas/number'
description: The purchase value of the asset
value_change_plan_attributes:
unevaluatedProperties: false
properties:
lifespan_in_years:
$ref: '#/components/schemas/number'
description: The lifespan of the asset in years
residual_value:
$ref: '#/components/schemas/number'
description: The residual value of the asset at the end of the lifespan
default: 0
required:
- lifespan_in_years
required:
- name
- ledger_account_id
- purchase_date
- purchase_value
- value_change_plan_attributes
examples:
CreatesANewAsset:
summary: Creates a new asset
value:
asset:
name: Test Asset
ledger_account_id: 475689078393668700
purchase_date: '2026-01-08'
purchase_value: 1000
value_change_plan_attributes:
lifespan_in_years: 5
residual_value: 100
responses:
'201':
description: Asset created
content:
application/json:
schema:
$ref: '#/components/schemas/asset_response'
examples:
CreatesANewAsset:
summary: Creates a new asset
value:
id: '475689078405203022'
ledger_account_id: '475689078393668685'
name: Test Asset
purchase_date: '2026-01-08'
purchase_value: '1000.0'
current_value: '1000.0'
value_change_plan:
lifespan_in_years: 5
residual_value: '100.0'
active: true
monthly_depreciation: '15.0'
disposal: null
value_changes: []
sources: []
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA400IfTheRequestWhenParametersAreMissing:
summary: Returns a 400 if the request when parameters are missing
value:
error: asset[name] is missing
ReturnsA400IfTheParametersAreIncorrect:
summary: Returns a 400 if the parameters are incorrect
value:
error: asset[purchase_value] does not have a valid value, asset[value_change_plan_attributes][lifespan_in_years] does not have a valid value, asset[value_change_plan_attributes][residual_value] does not have a valid value
ReturnsA400IfThePurchaseDateIsNotAValidDate:
summary: Returns a 400 if the purchase date is not a valid date
value:
error: asset[purchase_date] is invalid
'422':
description: Unprocessable entity
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/symbolic_error'
- $ref: '#/components/schemas/non_symbolic_error'
examples:
ReturnsA422IfTheAssetIsNotValid:
summary: Returns a 422 if the asset is not valid
value:
error:
ledger_account:
- is invalid
details:
ledger_account:
- error: invalid
operationId: post_administration_id_assets
/{administration_id}/contacts/customer_id/{customer_id}{format}:
get:
summary: Get contact by customer id
description: Returns all information about a contact by the given customer id
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- name: customer_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'200':
description: A contact
content:
application/json:
schema:
$ref: '#/components/schemas/contact_response'
examples:
ReturnAContact:
summary: Return a contact
value:
id: '475689027310192221'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: Appleseed
address1: Hoofdstraat 12
address2: ''
zipcode: 1234 AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:29.662Z'
updated_at: '2026-01-08T11:40:29.679Z'
version: 1767872429
sales_invoices_url: https://moneybird.dev/123/sales_invoices/5b07f76cb1b2a7824d792a0d693192192ddddb78d5dc314de79f2fbc87e09822/all
notes: []
custom_fields: []
contact_people:
- id: '475689027314386527'
contact_id: '475689027310192221'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:29.666Z'
updated_at: '2026-01-08T11:40:29.666Z'
version: 1767872429
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:29.673Z'
updated_at: '2026-01-08T11:40:29.673Z'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns404WhenContactDoesNotExist:
summary: Returns 404 when contact does not exist
value:
error: record not found
symbolic:
customer_id: not_found
operationId: get_administration_id_contacts_customer_id_customer_id
/{administration_id}/contacts/filter{format}:
get:
summary: Filter contacts
description: |-
Returns a paginated list of all contacts in the administration.
The `filter` argument allows you to filter the list of contacts. Filters are a combination of keys and values,
separated by a comma: `first_name:henk,last_name:jansen`. The available options for filtering are:
| **Filter** | **Type** | **Default** | **Description** |
| - | - | - | - |
| created_after | `String` | | Select contacts created after the given time (exclusive). ISO 8601 formatted string. The time to compare with is in UTC timezone |
| updated_after | `String` | | Select contacts updated after the given time (exclusive). ISO 8601 formatted string. The time to compare with is in UTC timezone |
| first_name | `String` | | Select contacts with the given first name. Case-insensitive |
| last_name | `String` | | Select contacts with the given last name. Case-insensitive |
| estimate_workflow_id | `Integer` | | Filters contacts by a single Estimate workflow |
| invoice_workflow_id | `Integer` | | Filters contacts by a single Invoice workflow |
| contact_type | `String` | | The contact type. Possible values `all`, `company`, `private_individual` |
| delivery_method | `String` | | The delivery method for invoices. Possible values. Possible values `all`, `email`, `post`, `manual`, `peppol`, `simplerinvoicing` |
| trusted_type | `String` | | Whether the contact is trusted. Possible values `all`, `trusted`, `not_trusted` |
| - | - | - | - |
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
schema:
type: string
examples:
AllowsFilteringByFirstname:
summary: Allows filtering by firstname
value: first_name:piet
ReturnsOnlyContactsUpdatedAfterGivenDatetime:
summary: Returns only contacts updated after given datetime
value: updated_after:2026-01-08 11:40:31 UTC
ReturnsAllContactsCreatedAfterGivenDatetime:
summary: Returns all contacts created after given datetime
value: created_after:2026-01-07 11:40:27 UTC
- name: include_archived
in: query
required: false
schema:
type:
- boolean
- string
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/per_page'
responses:
'200':
description: A list of contacts
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/contact_response'
examples:
AllowsFilteringByFirstname:
summary: Allows filtering by firstname
value:
- id: '475689024319653832'
administration_id: 123
company_name: Relation 1
firstname: Piet
lastname: null
address1: null
address2: null
zipcode: null
city: null
country: NL
phone: null
delivery_method: Email
customer_id: customer-1
tax_number: null
chamber_of_commerce: null
bank_account: null
is_trusted: false
max_transfer_amount: null
attention: null
email: contact1@example.com
email_ubl: false
send_invoices_to_attention: null
send_invoices_to_email: contact1@example.com
send_estimates_to_attention: null
send_estimates_to_email: null
sepa_active: false
sepa_iban: null
sepa_iban_account_name: null
sepa_bic: null
sepa_mandate_id: null
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: null
credit_card_reference: null
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: null
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:26.810Z'
updated_at: '2026-01-08T11:40:26.813Z'
version: 1767872426
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
events: []
ReturnsOnlyContactsUpdatedAfterGivenDatetime:
summary: Returns only contacts updated after given datetime
value:
- id: '475689024431851485'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: foo
address1: Hoofdstraat 12
address2: ''
zipcode: 1234 AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:26.918Z'
updated_at: '2026-01-08T11:41:31.961Z'
version: 1767872491
sales_invoices_url: https://moneybird.dev/123/sales_invoices/336244ab75181847a78f5559fa89a6133991368d4e980a9dde5114293045388c/all
notes: []
custom_fields: []
contact_people:
- id: '475689024436045791'
contact_id: '475689024431851485'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:26.921Z'
updated_at: '2026-01-08T11:40:26.921Z'
version: 1767872426
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:26.927Z'
updated_at: '2026-01-08T11:40:26.927Z'
ReturnsAllContactsCreatedAfterGivenDatetime:
summary: Returns all contacts created after given datetime
value:
- id: '475689024551389180'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '3'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:27.031Z'
updated_at: '2026-01-08T11:40:27.031Z'
version: 1767872427
sales_invoices_url: https://moneybird.dev/123/sales_invoices/1b893f905bc578cd5f84a9e95e816740c27445c7c8fdeaa219d8df2a777100dd/all
notes: []
custom_fields: []
contact_people: []
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:27.034Z'
updated_at: '2026-01-08T11:40:27.034Z'
- id: '475689024512591855'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: Appleseed
address1: Hoofdstraat 12
address2: ''
zipcode: 1234 AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:26.994Z'
updated_at: '2026-01-08T11:40:27.008Z'
version: 1767872427
sales_invoices_url: https://moneybird.dev/123/sales_invoices/850750267a4daba05eb21726cad8416df390a37d5f71e4d08672edb1fea48f91/all
notes: []
custom_fields: []
contact_people:
- id: '475689024515737585'
contact_id: '475689024512591855'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:26.998Z'
updated_at: '2026-01-08T11:40:26.998Z'
version: 1767872426
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:27.003Z'
updated_at: '2026-01-08T11:40:27.003Z'
- id: '475689024534611958'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: 1 Infinite Loop
address2: ''
zipcode: '123456'
city: Redmond
country: NL
phone: ''
delivery_method: Email
customer_id: '2'
tax_number: ''
chamber_of_commerce: ''
bank_account: NL50TEST0166567191
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: true
sepa_iban: NL50TEST0166567191
sepa_iban_account_name: Foobar Holding B.V.
sepa_bic: RABONL2U
sepa_mandate_id: MAN12313
sepa_mandate_date: '2014-01-01'
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:27.015Z'
updated_at: '2026-01-08T11:40:27.015Z'
version: 1767872427
sales_invoices_url: https://moneybird.dev/123/sales_invoices/6112f0aa53821f82fe31298c863f76a33454a11b23341a84f82619a41252547e/all
notes: []
custom_fields: []
contact_people:
- id: '475689024537757688'
contact_id: '475689024534611958'
administration_id: 123
firstname: John
lastname: Doe
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:27.019Z'
updated_at: '2026-01-08T11:40:27.019Z'
version: 1767872427
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:27.023Z'
updated_at: '2026-01-08T11:40:27.023Z'
operationId: get_administration_id_contacts_filter
/{administration_id}/contacts/synchronization{format}:
get:
summary: List all ids and versions
description: |-
Returns all contacts in the administration. The list contains the contact id and the version of the contact.
Check if the version of the contact is newer than the version you have stored locally, use the `POST`
variant for fetching contacts with the given ids.
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
schema:
type: string
examples:
RetrievesTheIdSForSynchronizationWithAFilter:
summary: Retrieves the id's for synchronization with a filter
value: first_name:henk
- name: include_archived
in: query
required: false
schema:
type:
- boolean
- string
responses:
'200':
description: IDs and versions of records
content:
application/json:
schema:
type: array
items:
type: object
unevaluatedProperties: false
properties:
id:
type:
- integer
- string
version:
type:
- integer
- string
examples:
RetrievesTheIdSForSynchronizationWithAFilter:
summary: Retrieves the id's for synchronization with a filter
value:
- id: '475689026107475303'
version: 1767872428
ReturnAListOfIdSAndVersionIdS:
summary: Return a list of id's and version id's
value:
- id: '475689026178778475'
version: 1767872428
- id: '475689026207090034'
version: 1767872428
operationId: get_administration_id_contacts_synchronization
post:
summary: Fetch contacts with given ids
description: |-
Given a list of contact ids, returns the contact information belonging to the contacts.
Returns a maximum of 100 contacts, even if more ids are provided.
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
ids:
type: array
items:
type:
- integer
- string
required:
- ids
examples:
ReturnAListOfGivenIds:
summary: Return a list of given ids
value:
ids:
- 475689029767005300
- 475689029797414000
responses:
'200':
description: A list of contacts
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/contact_response'
examples:
ReturnAListOfGivenIds:
summary: Return a list of given ids
value:
- id: '475689029767005285'
administration_id: 123
company_name: Bar Foo
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '3'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:32.005Z'
updated_at: '2026-01-08T11:40:32.005Z'
version: 1767872432
sales_invoices_url: https://moneybird.dev/123/sales_invoices/ae140bbf451ff7730ec324b1a7de2072c7bf6a8d0eeba29591b0050860cdfabe/all
notes: []
custom_fields: []
contact_people:
- id: '475689029770151015'
contact_id: '475689029767005285'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:32.008Z'
updated_at: '2026-01-08T11:40:32.008Z'
version: 1767872432
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:32.014Z'
updated_at: '2026-01-08T11:40:32.014Z'
- id: '475689029797413998'
administration_id: 123
company_name: Foo Bar
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '5'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:32.034Z'
updated_at: '2026-01-08T11:40:32.034Z'
version: 1767872432
sales_invoices_url: https://moneybird.dev/123/sales_invoices/401b4ab545cc9927eb589a9b34ced91d51518f9aba8d73dec5c2769ee59a02cb/all
notes: []
custom_fields: []
contact_people:
- id: '475689029800559728'
contact_id: '475689029797413998'
administration_id: 123
firstname: Mark
lastname: van Vliet
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:32.038Z'
updated_at: '2026-01-08T11:40:32.038Z'
version: 1767872432
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:32.043Z'
updated_at: '2026-01-08T11:40:32.043Z'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA400StatusWhenIdsAreNotProvided:
summary: Returns a 400 status when ids are not provided
value:
error: Ids is required
symbolic:
ids: required
operationId: post_administration_id_contacts_synchronization
/{administration_id}/contacts/{contact_id}/contact_people/{id}{format}:
get:
summary: Get contact person
description: Returns all information about a contact person.
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- name: contact_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'200':
description: A contact person
content:
application/json:
schema:
$ref: '#/components/schemas/contact_person_response'
examples:
ReturnAContactPerson:
summary: Return a contact person
value:
id: '475689028467820369'
contact_id: '475689028463626063'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:30.766Z'
updated_at: '2026-01-08T11:40:30.766Z'
version: 1767872430
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns404WhenContactPersonDoesNotExist:
summary: Returns 404 when contact person does not exist
value:
error: record not found
symbolic:
id: not_found
operationId: get_administration_id_contacts_contact_id_contact_people_id
patch:
summary: Update a contact person
description: |-
When updating a contact, you only need to provide the information you want to change. Attributes you don't
provide in the request will not be updated.
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- name: contact_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
contact_person:
type: object
unevaluatedProperties: false
properties:
firstname:
type: string
lastname:
type: string
phone:
type: string
email:
type: string
description: Should be a valid email addresses.
department:
type: string
required: []
required: []
examples:
UpdateAContactPerson:
summary: Update a contact person
value:
contact_person:
firstname: John
lastname: Doe
responses:
'200':
description: Contact person updated
content:
application/json:
schema:
$ref: '#/components/schemas/contact_person_response'
examples:
UpdateAContactPerson:
summary: Update a contact person
value:
id: '475689028593649517'
contact_id: '475689028590503787'
administration_id: 123
firstname: John
lastname: Doe
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:30.887Z'
updated_at: '2026-01-08T11:40:30.921Z'
version: 1767872430
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA404StatusWhenTheContactPersonIsNotFound:
summary: Returns a 404 status when the contact person is not found
value:
error: contact person not found
symbolic:
contact_person_id: not_found
'422':
description: Unprocessable entity
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/symbolic_error'
- $ref: '#/components/schemas/non_symbolic_error'
examples:
ReturnsA422StatusWhenWrongParamsAreProvided:
summary: Returns a 422 status when wrong params are provided
value:
error:
firstname:
- can't be blank
lastname:
- can't be blank
details:
firstname:
- error: blank
lastname:
- error: blank
operationId: patch_administration_id_contacts_contact_id_contact_people_id
delete:
summary: Delete a contact person
description: Deletes a contact person.
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- name: contact_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Contact person deleted
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA404StatusWhenTheContactPersonIsNotFound:
summary: Returns a 404 status when the contact person is not found
value:
error: record not found
symbolic:
id: not_found
operationId: delete_administration_id_contacts_contact_id_contact_people_id
/{administration_id}/contacts/{contact_id}/contact_people{format}:
post:
summary: Create a new contact person
description: Creating a new contact person in the administration requires at least a `contact_person` hash including `firstname` and `lastname`.
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- name: contact_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
contact_person:
type: object
unevaluatedProperties: false
properties:
firstname:
type: string
lastname:
type: string
phone:
type: string
email:
type: string
description: Should be a valid email addresses.
department:
type: string
required: []
required: []
examples:
CreateANewContactPersonWithMinimumParams:
summary: Create a new contact person with minimum params
value:
contact_person:
firstname: John
lastname: Doe
CreateANewContactPersonWithAllParams:
summary: Create a new contact person with all params
value:
contact_person:
firstname: John
lastname: Doe
phone: '123456789'
email: johndoe@moneybird.com
department: Sales
responses:
'201':
description: Contact person created
content:
application/json:
schema:
$ref: '#/components/schemas/contact_person_response'
examples:
CreateANewContactPersonWithMinimumParams:
summary: Create a new contact person with minimum params
value:
id: '475689025853719849'
contact_id: '475689025809679644'
administration_id: 123
firstname: John
lastname: Doe
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:28.273Z'
updated_at: '2026-01-08T11:40:28.273Z'
version: 1767872428
CreateANewContactPersonWithAllParams:
summary: Create a new contact person with all params
value:
id: '475689025921877306'
contact_id: '475689025879934253'
administration_id: 123
firstname: John
lastname: Doe
phone: '123456789'
email: johndoe@moneybird.com
department: Sales
created_at: '2026-01-08T11:40:28.338Z'
updated_at: '2026-01-08T11:40:28.338Z'
version: 1767872428
'422':
description: Unprocessable entity
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/symbolic_error'
- $ref: '#/components/schemas/non_symbolic_error'
examples:
ReturnsA422StatusWhenWrongParamsAreProvided:
summary: Returns a 422 status when wrong params are provided
value:
error:
firstname:
- can't be blank
lastname:
- can't be blank
details:
firstname:
- error: blank
lastname:
- error: blank
ReturnsA422StatusWhenAWrongContactPersonIdIsProvided:
summary: Returns a 422 status when a wrong contact person id is provided
value:
error:
contact:
- must exist
details:
contact:
- error: blank
operationId: post_administration_id_contacts_contact_id_contact_people
/{administration_id}/contacts/{contact_id}/moneybird_payments_mandate/url{format}:
post:
summary: Request an URL for setting up a Moneybird Payments mandate
description: |-
Obtains an URL for setting up a Moneybird Payments mandate. You must provide
this URL to your contact to set-up the mandate. Your contact is required to
make a 15 cent payment. Every generated URL using this endpoint is valid
for 14 days after creation. Only available when Moneybird Payments is enabled
for the administration.
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- name: contact_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
mandate_request:
type: object
unevaluatedProperties: false
properties:
identity_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid identity id.
workflow_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid workflow id. Restricts the available payment methods to the methods available for the selected workflow.
required: []
required: []
examples:
RequestsANewMoneybirdPaymentsMandateUrl:
summary: Requests a new moneybird payments mandate url
value: {}
RequestsANewMoneybirdPaymentsMandateUrlWithACustomWorkflowId:
summary: Requests a new moneybird payments mandate url with a custom workflow id
value:
mandate_request:
workflow_id: 475689024772637760
responses:
'201':
description: A URL for setting up a Moneybird Payments mandate
content:
application/json:
schema:
type: object
properties:
url:
type: string
examples:
RequestsANewMoneybirdPaymentsMandateUrl:
summary: Requests a new moneybird payments mandate url
value:
url: https://moneybird.dev/123/mandate_requests/zICBpl9yYWlsc4KkZGF0YdlBMTc2Nzg3MjI5MTQ1MDUgNDc1Njg5MDI0NjAwNjcxMjMyIDQ3NTY4ODg4MzA1NzU5MTQwMgogICAgICBhZHllbiCjZXhwxwsHzmlyDKvOCPphuAA--6b4be65400ab12ea56bd2d31b9a4349c8b65db51
RequestsANewMoneybirdPaymentsMandateUrlWithACustomWorkflowId:
summary: Requests a new moneybird payments mandate url with a custom workflow id
value:
url: https://moneybird.dev/123/mandate_requests/zICBpl9yYWlsc4KkZGF0YdlTMTc2Nzg3MjI5MTQ1MDUgNDc1Njg5MDI0Njk1MDQzMDkyIDQ3NTY4ODg4MzA1NzU5MTQwMgogICAgICBhZHllbiA0NzU2ODkwMjQ3NzI2Mzc3MzOjZXhwxwsHzmlyDKvOD6BEJgA--492f50bed7feb23b4a1b1814b4156b7b7b707a55
'403':
description: Error code
content:
application/json:
schema:
type: integer
examples:
DoesNotAllowAccessIfMoneybirdPaymentsIsDisabledForTheAdministration:
summary: Does not allow access if moneybird payments is disabled for the administration
value: 403
ReturnsA403StatusWhenAWrongContactIdIsProvided:
summary: Returns a 403 status when a wrong contact id is provided
value: 403
operationId: post_administration_id_contacts_contact_id_moneybird_payments_mandate_url
/{administration_id}/contacts/{contact_id}/moneybird_payments_mandate{format}:
get:
summary: Get Moneybird Payments mandate
description: |-
Returns information about the stored Moneybird Payments mandate. Only
available when Moneybird Payments is enabled for the administration.
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- name: contact_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'200':
description: A Moneybird Payments mandate
content:
application/json:
schema:
$ref: '#/components/schemas/recurring_contract_response'
examples:
ReturnsLimitedInformationIfMandateExistsButOnlyLimitedInformationIsAvailable:
summary: Returns limited information if mandate exists, but only limited information is available
value:
type: mccorporatecredit
sepa_mandate: false
bank: null
iban: null
bic: null
iban_account_name: null
card_expiry_month: '3'
card_expiry_year: '2030'
card_final_digits: '0010'
created_at: '2022-04-11T09:17:56.000Z'
ReturnsInformationAboutTheStoredMoneybirdPaymentsMandate:
summary: Returns information about the stored moneybird payments mandate
value:
type: idealtestissuer5
sepa_mandate: true
bank: Test Issuer 5
iban: NL81TEST0536169128
bic: TESTNL05
iban_account_name: E. Klaassen
card_expiry_month: null
card_expiry_year: null
card_final_digits: null
created_at: '2022-04-07T13:31:09.000Z'
'403':
description: Error code
content:
application/json:
schema:
type: integer
examples:
DoesNotAllowAccessIfMoneybirdPaymentsIsDisabledForTheAdministration:
summary: Does not allow access if moneybird payments is disabled for the administration
value: 403
'404':
description: Error code
content:
application/json:
schema:
type: integer
examples:
DoesReturnNotFoundWhenThereIsNoMoneybirdPaymentsMandateFound:
summary: Does return not found when there is no moneybird payments mandate found
value: 404
operationId: get_administration_id_contacts_contact_id_moneybird_payments_mandate
post:
summary: Request a new Moneybird Payments mandate
description: |-
Sends a request for a Moneybird Payments mandate to a contact via e-mail.
Your contact will receive an email containing a link to authorise direct
debit payments through Moneybird Payments. Your contact is required to
make a 15 cent payment. Only available when Moneybird Payments is enabled
for the administration.
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- name: contact_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
mandate_request:
type: object
unevaluatedProperties: false
properties:
email_message:
type: string
identity_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid identity id.
workflow_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid workflow id. Restricts the available payment methods to the methods available for the selected workflow.
required: []
required: []
examples:
AllowsSettingAWorkflowId:
summary: Allows setting a workflow id
value:
mandate_request:
workflow_id: 475689025479378100
RequestsANewMoneybirdPaymentsMandate:
summary: Requests a new moneybird payments mandate
value: {}
AllowsForACustomMessageWithinTheRequestE-mail:
summary: Allows for a custom message within the request e-mail
value:
mandate_request:
email_message: We use direct debit for our services, for which we require your authorisation. You can authorise us for direct debit through the button below. This requires you to make a one-time payment of 15 cents. This way we can verify your bank account.
responses:
'204':
description: Moneybird Payments mandate requested
'403':
description: Error code
content:
application/json:
schema:
type: integer
examples:
DoesNotAllowAccessIfMoneybirdPaymentsIsDisabledForTheAdministration:
summary: Does not allow access if moneybird payments is disabled for the administration
value: 403
ReturnsA403StatusWhenAWrongContactIdIsProvided:
summary: Returns a 403 status when a wrong contact id is provided
value: 403
operationId: post_administration_id_contacts_contact_id_moneybird_payments_mandate
delete:
summary: Delete a stored Moneybird Payments mandate
description: |-
Deletes the stored Moneybird Payments mandate for the contact. Only
available when Moneybird Payments is enabled for the administration.
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- name: contact_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Contact deleted
'403':
description: Error code
content:
application/json:
schema:
type: integer
examples:
DoesNotAllowAccessIfMoneybirdPaymentsIsDisabledForTheAdministration:
summary: Does not allow access if moneybird payments is disabled for the administration
value: 403
ReturnsA403StatusWhenAWrongContactIdIsProvided:
summary: Returns a 403 status when a wrong contact id is provided
value: 403
operationId: delete_administration_id_contacts_contact_id_moneybird_payments_mandate
/{administration_id}/contacts/{contact_id}/notes/{id}{format}:
delete:
summary: Destroys note from entity
description: Deletes a note from the contact.
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- name: contact_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Note deleted
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA400StatusWhenUserHasNoPermissionsToNotes:
summary: Returns a 400 status when user has no permissions to notes
value:
error: User has no permissions to notes for Contact
symbolic:
user: insufficient_permissions
operationId: delete_administration_id_contacts_contact_id_notes_id
/{administration_id}/contacts/{contact_id}/notes{format}:
post:
summary: Adds note to entity
description: Adds a note to the contact.
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- name: contact_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
note:
type: object
unevaluatedProperties: false
properties:
note:
type: string
description: '**Required**. Text for the note or to-do.'
todo:
type:
- boolean
- string
description: If `true` the note is a to-do.
assignee_id:
$ref: '#/components/schemas/identifier'
description: Assign to-do to user. Should be a valid user id. If assignee_id is provided the note will be a to-do.
required: []
required: []
examples:
CreateANote:
summary: Create a note
value:
note:
note: Text of the note
assignee_id: 475689029958894700
todo: true
responses:
'201':
description: Note created
content:
application/json:
schema:
$ref: '#/components/schemas/note_response'
examples:
CreateANote:
summary: Create a note
value:
id: '475689029975671955'
administration_id: 123
entity_id: '475689029920097413'
entity_type: Contact
user_id: 17678722914505
assignee_id: '475689029958894737'
todo: true
note: Text of the note
completed_at: null
completed_by_id: null
todo_type: null
data: {}
created_at: '2026-01-08T11:40:32.205Z'
updated_at: '2026-01-08T11:40:32.205Z'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA400StatusWhenAWrongContactIdIsProvided:
summary: Returns a 400 status when a wrong contact id is provided
value:
error: Entity is invalid; User has no permissions to notes for Contact
symbolic:
entity: not_found
user: insufficient_permissions
'422':
description: Unprocessable entity
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/symbolic_error'
- $ref: '#/components/schemas/non_symbolic_error'
examples:
ReturnsA422StatusWhenWrongParamsAreProvided:
summary: Returns a 422 status when wrong params are provided
value:
error:
note:
- can't be blank
todo_type:
- can't be blank
details:
note:
- error: blank
todo_type:
- error: blank
operationId: post_administration_id_contacts_contact_id_notes
/{administration_id}/contacts/{id}/additional_charges{format}:
post:
summary: Create an additional charge to be invoiced at start of next period
description: |-
At the end of the current period, the additional charges for a contact are merged
where possible and an invoice will be created for them. The invoice will be scheduled
for sending at the first day of the next month.
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
type: object
additionalProperties: true
examples:
CreatesAUsageCharge:
summary: Creates a usage charge
value:
product_id: 475689026448262600
amount: 5 x
price: 100
period: 20210601..20210630
description: Transaction Costs
ViewsAdditionalChargesOfAContact:
summary: Views additional charges of a contact
value: {}
responses:
'201':
description: Subscription additional charge created
content:
application/json:
schema:
$ref: '#/components/schemas/subscription_additional_charge_response'
examples:
CreatesAUsageCharge:
summary: Creates a usage charge
value:
id: '475689026469234085'
administration_id: 123
contact_id: '475689026401076631'
subscription_id: null
product_id: '475689026448262563'
detail_id: null
amount: 5 x
price: '100.0'
period: 202106..202106
description: Transaction Costs
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA400StatusWhenASubscriptionIdIsProvided:
summary: Returns a 400 status when a subscription id is provided
value:
error: contact_id or subscription_id is required
symbolic:
contact_id: required
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA404StatusWhenAWrongProductIdIsProvided:
summary: Returns a 404 status when a wrong product id is provided
value:
error: Product not found
symbolic:
product_id: not_found
operationId: post_administration_id_contacts_id_additional_charges
get:
summary: Get additional charges
description: Get the additional charges of the given contact.
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
- name: include_billed
in: query
required: false
schema:
type:
- boolean
- string
description: If true, includes the additional charges that have already been billed. Default is false.
examples:
DoesReturnBilledAdditionalChargesIfIncludeBilledIsTrue:
summary: Does return billed additional charges if include billed is true
value: 'true'
responses:
'200':
description: A list of additional charges
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/subscription_additional_charge_response'
examples:
DoesReturnBilledAdditionalChargesIfIncludeBilledIsTrue:
summary: Does return billed additional charges if include billed is true
value:
- id: '475689026899150342'
administration_id: 123
contact_id: '475689026859304441'
subscription_id: null
product_id: '475689026898101765'
detail_id: null
amount: 1 x
price: '100.0'
period: 202106..202106
description: Transaction Costs
- id: '475689026983036441'
administration_id: 123
contact_id: '475689026859304441'
subscription_id: null
product_id: '475689026904393223'
detail_id: '475689026978842136'
amount: 1 x
price: '100.0'
period: 202106..202106
description: Transaction Costs
'404':
$ref: '#/components/responses/404_not_found'
operationId: get_administration_id_contacts_id_additional_charges
/{administration_id}/contacts/{id}/archive{format}:
patch:
summary: Archive a contact
description: Archives a contact.
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Contact archived
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA400StatusWhenTheContactIsAlreadyArchived:
summary: Returns a 400 status when the contact is already archived
value:
error: Contact can not be archived
symbolic:
id: can_not_be_archived
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA404StatusWhenTheContactIsNotFound:
summary: Returns a 404 status when the contact is not found
value:
error: record not found
symbolic:
id: not_found
operationId: patch_administration_id_contacts_id_archive
/{administration_id}/contacts/{id}{format}:
get:
summary: Get contact
description: Returns all information about a contact.
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
- name: include_archived
in: query
required: false
schema:
type:
- boolean
- string
responses:
'200':
description: A contact
content:
application/json:
schema:
$ref: '#/components/schemas/contact_response'
examples:
ReturnAContact:
summary: Return a contact
value:
id: '475689024049121162'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: Appleseed
address1: Hoofdstraat 12
address2: ''
zipcode: 1234 AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:26.553Z'
updated_at: '2026-01-08T11:40:26.569Z'
version: 1767872426
sales_invoices_url: https://moneybird.dev/123/sales_invoices/50ba991268c67712d5ddae788249b2f7dda861606e400ef033fa064cd96b68f6/all
notes: []
custom_fields: []
contact_people:
- id: '475689024054364044'
contact_id: '475689024049121162'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:26.557Z'
updated_at: '2026-01-08T11:40:26.557Z'
version: 1767872426
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:26.563Z'
updated_at: '2026-01-08T11:40:26.563Z'
ReturnsSepaIbanAsBankAccount:
summary: Returns sepa iban as bank account
value:
id: '475689024121472920'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: Appleseed
address1: Hoofdstraat 12
address2: ''
zipcode: 1234 AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: NL50TEST0166567191
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: NL50TEST0166567191
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:26.621Z'
updated_at: '2026-01-08T11:40:26.654Z'
version: 1767872426
sales_invoices_url: https://moneybird.dev/123/sales_invoices/292acb9a1bdde13963b071ed945ce73b2bd7781f345d6e82fab0b3cc8f62a00d/all
notes: []
custom_fields: []
contact_people:
- id: '475689024124618650'
contact_id: '475689024121472920'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:26.624Z'
updated_at: '2026-01-08T11:40:26.624Z'
version: 1767872426
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:26.630Z'
updated_at: '2026-01-08T11:40:26.630Z'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns404WhenContactDoesNotExist:
summary: Returns 404 when contact does not exist
value:
error: record not found
symbolic:
id: not_found
operationId: get_administration_id_contacts_id
patch:
summary: Update a contact
description: |-
When updating a contact, you only need to provide the information you want to change. Attributes you don't
provide in the request will not be updated. Optional attributes can be removed by setting them to an empty string value.
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
contact:
type: object
unevaluatedProperties: false
properties:
company_name:
type: string
description: A contact requires a non-blank `company_name`, `firstname` or `lastname`.
address1:
type: string
address2:
type: string
zipcode:
type: string
city:
type: string
country:
type: string
description: ISO two-character country code, e.g. NL or DE.
phone:
type: string
delivery_method:
type: string
description: Can be `Email`, `Simplerinvoicing`, `Peppol`, `Manual` or `Post`.
email_ubl:
type:
- boolean
- string
customer_id:
type: string
description: Will be assigned automatically if empty. Should be unique for the administration.
tax_number:
type: string
firstname:
type: string
description: A contact requires a non-blank `company_name`, `firstname` or `lastname`.
lastname:
type: string
description: A contact requires a non-blank `company_name`, `firstname` or `lastname`.
chamber_of_commerce:
type: string
bank_account:
type: string
send_invoices_to_attention:
type: string
send_invoices_to_email:
type: string
description: Should be one or more valid email addresses, separated by a comma.
send_estimates_to_attention:
type: string
send_estimates_to_email:
type: string
description: Should be one or more valid email addresses, separated by a comma.
sepa_active:
type:
- boolean
- string
description: When `true`, all other SEPA fields are required.
sepa_iban:
type: string
description: Should be a valid IBAN.
sepa_iban_account_name:
type: string
sepa_bic:
type: string
description: Should be a valid BIC.
sepa_mandate_id:
type: string
description: Should be unique for the administration.
sepa_mandate_date:
type: string
description: Should be a date in the past.
sepa_sequence_type:
type: string
description: Can be `RCUR`, `FRST`, `OOFF` or `FNAL`.
invoice_workflow_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid invoice workflow id.
estimate_workflow_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid estimate workflow id.
si_identifier_type:
type: string
description: Can be `0002`, `0007`, `0009`, `0037`, `0060`, `0088`, `0096`, `0097`, `0106`, `0130`, `0135`, `0142`, `0151`, `0183`, `0184`, `0188`, `0190`, `0191`, `0192`, `0193`, `0195`, `0196`, `0198`, `0199`, `0200`, `0201`, `0204`, `0205`, `0208`, `0209`, `0210`, `0211`, `0212`, `0213`, `0215`, `0216`, `0221`, `0230`, `9910`, `9913`, `9914`, `9915`, `9918`, `9919`, `9920`, `9922`, `9923`, `9924`, `9925`, `9926`, `9927`, `9928`, `9929`, `9930`, `9931`, `9932`, `9933`, `9934`, `9935`, `9936`, `9937`, `9938`, `9939`, `9940`, `9941`, `9942`, `9943`, `9944`, `9945`, `9946`, `9947`, `9948`, `9949`, `9950`, `9951`, `9952`, `9953`, `9957` or `9959`.
si_identifier:
type: string
direct_debit:
type:
- boolean
- string
custom_fields_attributes:
$ref: '#/components/schemas/custom_fields_attributes'
required: []
required:
- contact
examples:
UpdatesAContactWithGivenSiIdentifier:
summary: Updates a contact with given si identifier
value:
contact:
si_identifier: '1234567'
si_identifier_type: NL:KVK
CreatesAContactPersonWhenCompanyNameFirstnameAndLastnameExistTogether:
summary: Creates a contact person when company name, firstname and lastname exist together
value:
contact:
firstname: Money
lastname: Bird
UpdateTheSepaSequenceType:
summary: Update the sepa sequence type
value:
contact:
sepa_sequence_type: FNAL
UpdateAContact:
summary: Update a contact
value:
contact:
company_name: Test B.V.
UpdateAContactThatHasSepaActivated:
summary: Update a contact that has sepa activated
value:
contact:
company_name: Test B.V.
responses:
'200':
description: Contact updated
content:
application/json:
schema:
$ref: '#/components/schemas/contact_response'
examples:
UpdatesAContactWithGivenSiIdentifier:
summary: Updates a contact with given si identifier
value:
id: '475689027747448502'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: Appleseed
address1: Hoofdstraat 12
address2: ''
zipcode: 1234 AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: '1234567'
si_identifier_type: NL:KVK
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:30.079Z'
updated_at: '2026-01-08T11:40:30.122Z'
version: 1767872430
sales_invoices_url: https://moneybird.dev/123/sales_invoices/f6e2c9c1bf5350d067f76ec5132852aee4274c461579fc904ab50783d05bf923/all
notes: []
custom_fields: []
contact_people:
- id: '475689027750594232'
contact_id: '475689027747448502'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:30.083Z'
updated_at: '2026-01-08T11:40:30.083Z'
version: 1767872430
- id: '475689027800925893'
contact_id: '475689027747448502'
administration_id: 123
firstname: null
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:30.131Z'
updated_at: '2026-01-08T11:40:30.131Z'
version: 1767872430
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:30.089Z'
updated_at: '2026-01-08T11:40:30.089Z'
- administration_id: 123
user_id: 17678722914505
action: contact_changed
link_entity_id: null
link_entity_type: null
data:
changes:
si_identifier:
- ''
- '1234567'
created_at: '2026-01-08T11:40:30.125Z'
updated_at: '2026-01-08T11:40:30.125Z'
CreatesAContactPersonWhenCompanyNameFirstnameAndLastnameExistTogether:
summary: Creates a contact person when company name, firstname and lastname exist together
value:
id: '475689027872229078'
administration_id: 123
company_name: Moneybird B.V.
firstname: Money
lastname: Bird
address1: null
address2: null
zipcode: null
city: null
country: NL
phone: null
delivery_method: Email
customer_id: customer-1
tax_number: null
chamber_of_commerce: null
bank_account: null
is_trusted: false
max_transfer_amount: null
attention: null
email: contact1@example.com
email_ubl: false
send_invoices_to_attention: null
send_invoices_to_email: contact1@example.com
send_estimates_to_attention: null
send_estimates_to_email: null
sepa_active: false
sepa_iban: null
sepa_iban_account_name: null
sepa_bic: null
sepa_mandate_id: null
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: null
credit_card_reference: null
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: null
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:30.199Z'
updated_at: '2026-01-08T11:40:30.208Z'
version: 1767872430
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people:
- id: '475689027891103450'
contact_id: '475689027872229078'
administration_id: 123
firstname: Money
lastname: Bird
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:30.216Z'
updated_at: '2026-01-08T11:40:30.216Z'
version: 1767872430
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_changed
link_entity_id: null
link_entity_type: null
data:
changes:
firstname:
- null
- Money
lastname:
- null
- Bird
created_at: '2026-01-08T11:40:30.211Z'
updated_at: '2026-01-08T11:40:30.211Z'
UpdateTheSepaSequenceType:
summary: Update the sepa sequence type
value:
id: '475689027947726565'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: 1 Infinite Loop
address2: ''
zipcode: '123456'
city: Redmond
country: NL
phone: ''
delivery_method: Email
customer_id: '2'
tax_number: ''
chamber_of_commerce: ''
bank_account: NL50TEST0166567191
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: true
sepa_iban: NL50TEST0166567191
sepa_iban_account_name: Foobar Holding B.V.
sepa_bic: RABONL2U
sepa_mandate_id: MAN12313
sepa_mandate_date: '2014-01-01'
sepa_sequence_type: FNAL
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:30.270Z'
updated_at: '2026-01-08T11:40:30.290Z'
version: 1767872430
sales_invoices_url: https://moneybird.dev/123/sales_invoices/e0ff3efe67d14b3b70491b2c510869c95397da9720c9c05a44c7226c1c6185bc/all
notes: []
custom_fields: []
contact_people:
- id: '475689027950872295'
contact_id: '475689027947726565'
administration_id: 123
firstname: John
lastname: Doe
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:30.274Z'
updated_at: '2026-01-08T11:40:30.274Z'
version: 1767872430
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:30.278Z'
updated_at: '2026-01-08T11:40:30.278Z'
- administration_id: 123
user_id: 17678722914505
action: contact_changed
link_entity_id: null
link_entity_type: null
data:
changes:
sepa_sequence_type:
- RCUR
- FNAL
created_at: '2026-01-08T11:40:30.292Z'
updated_at: '2026-01-08T11:40:30.292Z'
UpdateAContact:
summary: Update a contact
value:
id: '475689028010641134'
administration_id: 123
company_name: Test B.V.
firstname: null
lastname: Appleseed
address1: Hoofdstraat 12
address2: ''
zipcode: 1234 AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:30.331Z'
updated_at: '2026-01-08T11:40:30.376Z'
version: 1767872430
sales_invoices_url: https://moneybird.dev/123/sales_invoices/69d2945d4403187dfe6cea88bc0935effeef74c40030f437c231ff51964cefb7/all
notes: []
custom_fields: []
contact_people:
- id: '475689028014835440'
contact_id: '475689028010641134'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:30.334Z'
updated_at: '2026-01-08T11:40:30.334Z'
version: 1767872430
- id: '475689028070409981'
contact_id: '475689028010641134'
administration_id: 123
firstname: null
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:30.388Z'
updated_at: '2026-01-08T11:40:30.388Z'
version: 1767872430
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:30.340Z'
updated_at: '2026-01-08T11:40:30.340Z'
- administration_id: 123
user_id: 17678722914505
action: contact_changed
link_entity_id: null
link_entity_type: null
data:
changes:
company_name:
- Foobar Holding B.V.
- Test B.V.
created_at: '2026-01-08T11:40:30.378Z'
updated_at: '2026-01-08T11:40:30.378Z'
UpdateAContactThatHasSepaActivated:
summary: Update a contact that has sepa activated
value:
id: '475689028336748344'
administration_id: 123
company_name: Test B.V.
firstname: null
lastname: null
address1: 1 Infinite Loop
address2: ''
zipcode: '123456'
city: Redmond
country: NL
phone: ''
delivery_method: Email
customer_id: '2'
tax_number: ''
chamber_of_commerce: ''
bank_account: NL50TEST0166567191
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: true
sepa_iban: NL50TEST0166567191
sepa_iban_account_name: Foobar Holding B.V.
sepa_bic: RABONL2U
sepa_mandate_id: MAN12313
sepa_mandate_date: '2014-01-01'
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:30.641Z'
updated_at: '2026-01-08T11:40:30.660Z'
version: 1767872430
sales_invoices_url: https://moneybird.dev/123/sales_invoices/d459486a42067624b795084069b207aeb008f793b90d98d9713027b181201fb1/all
notes: []
custom_fields: []
contact_people:
- id: '475689028339894074'
contact_id: '475689028336748344'
administration_id: 123
firstname: John
lastname: Doe
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:30.645Z'
updated_at: '2026-01-08T11:40:30.645Z'
version: 1767872430
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:30.649Z'
updated_at: '2026-01-08T11:40:30.649Z'
- administration_id: 123
user_id: 17678722914505
action: contact_changed
link_entity_id: null
link_entity_type: null
data:
changes:
company_name:
- Foobar Holding B.V.
- Test B.V.
created_at: '2026-01-08T11:40:30.662Z'
updated_at: '2026-01-08T11:40:30.662Z'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
DoesNotAllowMakingTheContactTrustedThroughTheApi:
summary: Does not allow making the contact trusted through the api
value:
error: An contact can only be trusted during the approval of a payment.
symbolic:
is_trusted: permission
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA404StatusWhenTheContactIsNotFound:
summary: Returns a 404 status when the contact is not found
value:
error: record not found
symbolic:
id: not_found
'422':
description: Unprocessable entity
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/symbolic_error'
- $ref: '#/components/schemas/non_symbolic_error'
examples:
ReturnsAnErrorWhenRecordIsInvalid:
summary: Returns an error when record is invalid
value:
error:
firstname:
- is required
lastname:
- is required
company_name:
- is required
details:
firstname:
- error: is required
lastname:
- error: is required
company_name:
- error: is required
operationId: patch_administration_id_contacts_id
delete:
summary: Delete a contact
description: Deletes a contact.
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Contact deleted
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA404StatusWhenTheContactIsNotFound:
summary: Returns a 404 status when the contact is not found
value:
error: record not found
symbolic:
id: not_found
operationId: delete_administration_id_contacts_id
/{administration_id}/contacts{format}:
get:
summary: List all contacts
description: |-
Returns a paginated list of contacts in the administration.
Searching for contacts can be done by providing the `query` parameter with search terms. The API searches for matches in the following contact fields:
- `company_name`
- `attention`
- `firstname`
- `lastname`
- `address1`
- `address2`
- `zipcode`
- `city`
- `country`
- `email`
- `phone`
- `customer_id`
- `tax_number`
- `chamber_of_commerce`
- `bank_account`
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
- name: query
in: query
required: false
schema:
type: string
examples:
AllowsFilteringByNameInCombinationWithPagination:
summary: Allows filtering by name in combination with pagination
value: appleseed
ReturnsEmptyListWhenNoMatchesWithFilter:
summary: Returns empty list when no matches with filter
value: sdfadsfdsafdsafadsgasdfadsfdsf
- name: include_archived
in: query
required: false
schema:
type:
- boolean
- string
- name: todo
in: query
required: false
schema:
type: string
- name: contact_field
in: query
required: false
schema:
type: string
- name: contact_value
in: query
required: false
schema:
type: string
responses:
'200':
description: A list of contacts
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/contact_response'
examples:
ReturnAListOfContacts:
summary: Return a list of contacts
value:
- id: '475689030114084019'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '3'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:32.336Z'
updated_at: '2026-01-08T11:40:32.336Z'
version: 1767872432
sales_invoices_url: https://moneybird.dev/123/sales_invoices/79f5b426f0be610c094d9e5b6f1b765a727c6569107b489e09381881cfed8719/all
notes: []
custom_fields: []
contact_people: []
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:32.339Z'
updated_at: '2026-01-08T11:40:32.339Z'
- id: '475689030073189542'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: Appleseed
address1: Hoofdstraat 12
address2: ''
zipcode: 1234 AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:32.297Z'
updated_at: '2026-01-08T11:40:32.311Z'
version: 1767872432
sales_invoices_url: https://moneybird.dev/123/sales_invoices/1526cf6412fa35dbb3e493de31393fe4c1417c0bdcd3f34b68ecf3b322a551c8/all
notes: []
custom_fields: []
contact_people:
- id: '475689030076335272'
contact_id: '475689030073189542'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:32.301Z'
updated_at: '2026-01-08T11:40:32.301Z'
version: 1767872432
- id: '475689030121424054'
contact_id: '475689030073189542'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-01-08T11:40:32.344Z'
updated_at: '2026-01-08T11:40:32.344Z'
version: 1767872432
- id: '475689030127715513'
contact_id: '475689030073189542'
administration_id: 123
firstname: Foo
lastname: Bar
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-01-08T11:40:32.350Z'
updated_at: '2026-01-08T11:40:32.350Z'
version: 1767872432
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:32.307Z'
updated_at: '2026-01-08T11:40:32.307Z'
- id: '475689030096258221'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: 1 Infinite Loop
address2: ''
zipcode: '123456'
city: Redmond
country: NL
phone: ''
delivery_method: Email
customer_id: '2'
tax_number: ''
chamber_of_commerce: ''
bank_account: NL50TEST0166567191
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: true
sepa_iban: NL50TEST0166567191
sepa_iban_account_name: Foobar Holding B.V.
sepa_bic: RABONL2U
sepa_mandate_id: MAN12313
sepa_mandate_date: '2014-01-01'
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:32.319Z'
updated_at: '2026-01-08T11:40:32.319Z'
version: 1767872432
sales_invoices_url: https://moneybird.dev/123/sales_invoices/81fa9a4cb84375a87128ecc181d57234adf16304bcdaace5d0f46f92c857ebbc/all
notes: []
custom_fields: []
contact_people:
- id: '475689030099403951'
contact_id: '475689030096258221'
administration_id: 123
firstname: John
lastname: Doe
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:32.322Z'
updated_at: '2026-01-08T11:40:32.322Z'
version: 1767872432
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:32.328Z'
updated_at: '2026-01-08T11:40:32.328Z'
AllowsFilteringByNameInCombinationWithPagination:
summary: Allows filtering by name in combination with pagination
value: []
AllowsFilteringByName:
summary: Allows filtering by name
value:
- id: '475689042495669460'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: Appleseed
address1: Hoofdstraat 12
address2: ''
zipcode: 1234 AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:44.144Z'
updated_at: '2026-01-08T11:40:44.268Z'
version: 1767872444
sales_invoices_url: https://moneybird.dev/123/sales_invoices/d267177be7f54bc03861c3fd5e3da992238effad28a9898bedb05ac0acdd545b/all
notes: []
custom_fields: []
contact_people:
- id: '475689042499863766'
contact_id: '475689042495669460'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:44.148Z'
updated_at: '2026-01-08T11:40:44.148Z'
version: 1767872444
- id: '475689042806047972'
contact_id: '475689042495669460'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-01-08T11:40:44.440Z'
updated_at: '2026-01-08T11:40:44.440Z'
version: 1767872444
- id: '475689042813388007'
contact_id: '475689042495669460'
administration_id: 123
firstname: Foo
lastname: Bar
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-01-08T11:40:44.447Z'
updated_at: '2026-01-08T11:40:44.447Z'
version: 1767872444
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:44.261Z'
updated_at: '2026-01-08T11:40:44.261Z'
ReturnsPaginatedContactsOnPage1:
summary: Returns paginated contacts on page 1
value:
- id: '475689042998985999'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '3'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:44.624Z'
updated_at: '2026-01-08T11:40:44.624Z'
version: 1767872444
sales_invoices_url: https://moneybird.dev/123/sales_invoices/31f9be613873657b47549f90e241636c70d1c692fc8b332dec1549555c8ad8b3/all
notes: []
custom_fields: []
contact_people: []
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:44.627Z'
updated_at: '2026-01-08T11:40:44.627Z'
ReturnsEmptyListWhenNoMatchesWithFilter:
summary: Returns empty list when no matches with filter
value: []
ReturnsPaginatedContactsOnPage2:
summary: Returns paginated contacts on page 2
value:
- id: '475689049372230960'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: Appleseed
address1: Hoofdstraat 12
address2: ''
zipcode: 1234 AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:50.701Z'
updated_at: '2026-01-08T11:40:50.717Z'
version: 1767872450
sales_invoices_url: https://moneybird.dev/123/sales_invoices/ce3bb2dad2a9fd39570498dac2661f65de1a2cd83f2b94ef7f3f86226c446b69/all
notes: []
custom_fields: []
contact_people:
- id: '475689049375376690'
contact_id: '475689049372230960'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-01-08T11:40:50.706Z'
updated_at: '2026-01-08T11:40:50.706Z'
version: 1767872450
- id: '475689049422562624'
contact_id: '475689049372230960'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-01-08T11:40:50.750Z'
updated_at: '2026-01-08T11:40:50.750Z'
version: 1767872450
- id: '475689049428854083'
contact_id: '475689049372230960'
administration_id: 123
firstname: Foo
lastname: Bar
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-01-08T11:40:50.756Z'
updated_at: '2026-01-08T11:40:50.756Z'
version: 1767872450
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:50.712Z'
updated_at: '2026-01-08T11:40:50.712Z'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsAnErrorWhenTooManyContactsAreRequested:
summary: Returns an error when too many contacts are requested
value:
error: per_page does not have a valid value
operationId: get_administration_id_contacts
post:
summary: Create a new contact
description: |-
Creating a new contact in the administration requires at least a `company_name` or a `firstname` and `lastname`.
When filling a custom field, both `id` and `value` are required. See the custom field example for more information.
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
contact:
type: object
unevaluatedProperties: false
properties:
company_name:
type: string
description: A contact requires a non-blank `company_name`, `firstname` or `lastname`.
address1:
type: string
address2:
type: string
zipcode:
type: string
city:
type: string
country:
type: string
description: ISO two-character country code, e.g. NL or DE.
phone:
type: string
delivery_method:
type: string
description: Can be `Email`, `Simplerinvoicing`, `Peppol`, `Manual` or `Post`.
customer_id:
type: string
description: Will be assigned automatically if empty. Should be unique for the administration.
tax_number:
type: string
firstname:
type: string
description: A contact requires a non-blank `company_name`, `firstname` or `lastname`.
lastname:
type: string
description: A contact requires a non-blank `company_name`, `firstname` or `lastname`.
chamber_of_commerce:
type: string
bank_account:
type: string
send_invoices_to_attention:
type: string
send_invoices_to_email:
type: string
description: Should be one or more valid email addresses, separated by a comma.
send_estimates_to_attention:
type: string
send_estimates_to_email:
type: string
description: Should be one or more valid email addresses, separated by a comma.
sepa_active:
type:
- boolean
- string
description: When `true`, all other SEPA fields are required.
sepa_iban:
type: string
description: Should be a valid IBAN.
sepa_iban_account_name:
type: string
sepa_bic:
type: string
description: Should be a valid BIC.
sepa_mandate_id:
type: string
description: Should be unique for the administration.
sepa_mandate_date:
type: string
description: Should be a date in the past.
sepa_sequence_type:
type: string
description: Can be `RCUR`, `FRST`, `OOFF` or `FNAL`.
si_identifier_type:
type: string
description: Can be `0002`, `0007`, `0009`, `0037`, `0060`, `0088`, `0096`, `0097`, `0106`, `0130`, `0135`, `0142`, `0151`, `0183`, `0184`, `0188`, `0190`, `0191`, `0192`, `0193`, `0195`, `0196`, `0198`, `0199`, `0200`, `0201`, `0204`, `0205`, `0208`, `0209`, `0210`, `0211`, `0212`, `0213`, `0215`, `0216`, `0221`, `0230`, `9910`, `9913`, `9914`, `9915`, `9918`, `9919`, `9920`, `9922`, `9923`, `9924`, `9925`, `9926`, `9927`, `9928`, `9929`, `9930`, `9931`, `9932`, `9933`, `9934`, `9935`, `9936`, `9937`, `9938`, `9939`, `9940`, `9941`, `9942`, `9943`, `9944`, `9945`, `9946`, `9947`, `9948`, `9949`, `9950`, `9951`, `9952`, `9953`, `9957` or `9959`.
si_identifier:
type: string
invoice_workflow_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid invoice workflow id.
estimate_workflow_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid estimate workflow id.
email_ubl:
type:
- boolean
- string
direct_debit:
type:
- boolean
- string
custom_fields_attributes:
$ref: '#/components/schemas/custom_fields_attributes'
contact_person:
type: object
unevaluatedProperties: false
properties:
firstname:
type: string
lastname:
type: string
required:
- firstname
- lastname
required: []
required:
- contact
examples:
CreateANewContactWithGivenSiIdentifier:
summary: Create a new contact with given si identifier
value:
contact:
company_name: Test B.V.
si_identifier: '1234567'
si_identifier_type: NL:KVK
CreateANewContact:
summary: Create a new contact
value:
contact:
company_name: Test B.V.
AddingValuesForCustomFields:
summary: Adding values for custom fields
value:
contact:
company_name: Test B.V.
custom_fields_attributes:
'0':
id: 475689029465015360
value: Field value
CreateANewContactWithMandateDateInTimezoneGap:
summary: Create a new contact with mandate date in timezone gap
value:
contact:
company_name: Test B.V.
sepa_active: true
sepa_iban: NL91ABNA0417164300
sepa_iban_account_name: Foo Bar
sepa_mandate_date: 2017-6-30
sepa_mandate_id: NL123214
responses:
'201':
description: Contact created
content:
application/json:
schema:
$ref: '#/components/schemas/contact_response'
examples:
CreateANewContactWithGivenSiIdentifier:
summary: Create a new contact with given si identifier
value:
id: '475689029003642825'
administration_id: 123
company_name: Test B.V.
firstname: ''
lastname: ''
address1: ''
address2: ''
zipcode: ''
city: ''
country: NL
phone: ''
delivery_method: Email
customer_id: '3'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: ''
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: ''
send_estimates_to_attention: ''
send_estimates_to_email: ''
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: '1234567'
si_identifier_type: NL:KVK
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:31.277Z'
updated_at: '2026-01-08T11:40:31.277Z'
version: 1767872431
sales_invoices_url: https://moneybird.dev/123/sales_invoices/c956bad1dc0d67c9d6c3067b7528e7aa941b7843a5df561350461f5f84525462/all
notes: []
custom_fields: []
contact_people: []
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:31.280Z'
updated_at: '2026-01-08T11:40:31.280Z'
CreateANewContact:
summary: Create a new contact
value:
id: '475689029370643474'
administration_id: 123
company_name: Test B.V.
firstname: ''
lastname: ''
address1: ''
address2: ''
zipcode: ''
city: ''
country: NL
phone: ''
delivery_method: Email
customer_id: '3'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: ''
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: ''
send_estimates_to_attention: ''
send_estimates_to_email: ''
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:31.627Z'
updated_at: '2026-01-08T11:40:31.627Z'
version: 1767872431
sales_invoices_url: https://moneybird.dev/123/sales_invoices/86adfd2422ed46230ded42adb26f761453047d195c8ab6cb30ffb16441dc2d53/all
notes: []
custom_fields: []
contact_people: []
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:31.630Z'
updated_at: '2026-01-08T11:40:31.630Z'
AddingValuesForCustomFields:
summary: Adding values for custom fields
value:
id: '475689029478646822'
administration_id: 123
company_name: Test B.V.
firstname: ''
lastname: ''
address1: ''
address2: ''
zipcode: ''
city: ''
country: NL
phone: ''
delivery_method: Email
customer_id: '3'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: ''
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: ''
send_estimates_to_attention: ''
send_estimates_to_email: ''
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:40:31.730Z'
updated_at: '2026-01-08T11:40:31.730Z'
version: 1767872431
sales_invoices_url: https://moneybird.dev/123/sales_invoices/287a323f84dfb76bdd07d1a2628b7862ed6581506ec8ffc1fb17f662cf698262/all
notes: []
custom_fields:
- id: '475689029465015332'
name: Number
value: Field value
contact_people: []
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:40:31.733Z'
updated_at: '2026-01-08T11:40:31.733Z'
CreateANewContactWithMandateDateInTimezoneGap:
summary: Create a new contact with mandate date in timezone gap
value:
id: '475689029570921527'
administration_id: 123
company_name: Test B.V.
firstname: ''
lastname: ''
address1: ''
address2: ''
zipcode: ''
city: ''
country: NL
phone: ''
delivery_method: Email
customer_id: '3'
tax_number: ''
chamber_of_commerce: ''
bank_account: NL91ABNA0417164300
is_trusted: false
max_transfer_amount: null
attention: ''
email: ''
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: ''
send_estimates_to_attention: ''
send_estimates_to_email: ''
sepa_active: true
sepa_iban: NL91ABNA0417164300
sepa_iban_account_name: Foo Bar
sepa_bic: ABNANL2A
sepa_mandate_id: NL123214
sepa_mandate_date: '2017-06-30'
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2017-06-30T23:30:00.011Z'
updated_at: '2017-06-30T23:30:00.011Z'
version: 1498865400
sales_invoices_url: https://moneybird.dev/123/sales_invoices/29890b2a7a11c0d5a0bcdd787e42098bcc548fae6620071e34dbe0e134abccd2/all
notes: []
custom_fields: []
contact_people: []
archived: false
events:
- administration_id: 123
user_id: 17678722914505
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2017-06-30T23:30:00.014Z'
updated_at: '2017-06-30T23:30:00.014Z'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsAnErrorWhenFieldsAreNotProvided:
summary: Returns an error when fields are not provided
value:
error: Contact is required
symbolic:
contact: required
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsAnErrorWhenCustomFieldCannotBeFound:
summary: Returns an error when custom field cannot be found
value:
error: Custom field with id 1234 not found for administration
symbolic:
custom_fields_attributes: not_found
'422':
description: Unprocessable entity
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/symbolic_error'
- $ref: '#/components/schemas/non_symbolic_error'
examples:
ReturnsAnErrorWhenRecordIsInvalid:
summary: Returns an error when record is invalid
value:
error:
firstname:
- is required
lastname:
- is required
company_name:
- is required
details:
firstname:
- error: is required
lastname:
- error: is required
company_name:
- error: is required
DoesNotCreateContactWhenMandateDateIsFutureInAdministrationTimezone:
summary: Does not create contact when mandate date is future in administration timezone
value:
error:
sepa_mandate_date:
- cannot be in the future
details:
sepa_mandate_date:
- error: not_in_future
operationId: post_administration_id_contacts
/{administration_id}/custom_fields{format}:
get:
summary: List all custom fields
description: |-
Custom fields are used to add extra information to entities in the administration. The `source`
field can be `sales_invoices`, `contact` or `identity` and defines for which entities the custom
field can be used. The id of a custom field is required to add a value for a custom field to an
entity.
tags:
- Custom fields
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
responses:
'200':
description: A list of custom fields
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/custom_field_response'
examples:
ReturnsAllCustomFieldsOfAnAdministration:
summary: Returns all custom fields of an administration
value:
- id: '475689108745749648'
administration_id: 123
name: custom_field_a5cdd4f2a4be3a305b3a
source: sales_invoice
operationId: get_administration_id_custom_fields
/{administration_id}/customer_contact_portal/{contact_id}/invoices{format}:
get:
summary: Get a temporary link to the invoices in the customer contact portal
description: Generate a temporary link to the invoices in the customer contact portal. The link will expire after 1 hour.
tags:
- Customer contact portal
parameters:
- $ref: '#/components/parameters/administration_id'
- name: contact_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'200':
description: Temporary link generated successfully
content:
application/json:
schema:
type: string
example: https://moneybird.com/temporary-link
examples:
ReturnsATemporaryLinkThatRedirectsToTheInvoicesPage:
summary: Returns a temporary link that redirects to the invoices page
value: http://moneybird.com
'404':
description: Contact not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns404WhenTheContactDoesNotExist:
summary: Returns 404 when the contact does not exist
value:
error: 'Record not found for model name: Contact'
operationId: get_administration_id_customer_contact_portal_contact_id_invoices
/{administration_id}/customer_contact_portal/{contact_id}/subscriptions/{id}{format}:
get:
summary: Get a temporary link to the subscriptions in the customer contact portal
description: |-
Generate a temporary link to the subscriptions in the customer contact portal. The link will expire after 1 hour.
Creating the online sales link can be done using the [Create online sales link endpoint](https://developer.moneybird.com/api/subscription-templates#create-online-sales-link).
tags:
- Customer contact portal
parameters:
- $ref: '#/components/parameters/administration_id'
- name: contact_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'200':
description: Temporary link generated successfully
content:
application/json:
schema:
type: string
example: https://moneybird.com/temporary-link
examples:
ReturnsATemporaryLink:
summary: Returns a temporary link
value: http://moneybird.com
'404':
description: Contact or subscription not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns404WhenTheSubscriptionHasNoSubscriptionTemplate:
summary: Returns 404 when the subscription has no subscription template
value:
error: 'Record not found for model name: Subscription'
operationId: get_administration_id_customer_contact_portal_contact_id_subscriptions_id
/{administration_id}/customer_contact_portal/{contact_id}{format}:
get:
summary: Get a temporary link to the customer contact portal
description: Generate a temporary link to the customer contact portal. The link will expire after 1 hour.
tags:
- Customer contact portal
parameters:
- $ref: '#/components/parameters/administration_id'
- name: contact_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'200':
description: Temporary link generated successfully
content:
application/json:
schema:
type: string
example: https://moneybird.com/temporary-link
examples:
CallsGeneratetemporarylinkMutation:
summary: Calls generatetemporarylink mutation
value: http://moneybird.com
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns404WhenTheContactDoesNotExist:
summary: Returns 404 when the contact does not exist
value:
error: 'Record not found for model name: Contact'
operationId: get_administration_id_customer_contact_portal_contact_id
/{administration_id}/document_styles{format}:
get:
summary: List all document styles
description: Returns a list of all document styles.
tags:
- Document styles
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
responses:
'200':
description: A list of document styles
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/document_style_response'
examples:
ReturnsAllDocumentstylesOfAnAdministration:
summary: Returns all documentstyles of an administration
value:
- id: '475688883890160792'
administration_id: 123
name: Standaard
identity_id: '475688883057591402'
default: true
logo_hash: null
logo_container_full_width: false
logo_display_width: 50
logo_position: right
background_hash: null
paper_size: A4
address_position: left
font_size: 9
font_family: lucida_grande
print_on_stationery: false
custom_css: null
invoice_sender_address:
- field: company_name
bold: true
- field: address
- field: newline
- field: email
- field: phone
- field: newline
- field: chamber_of_commerce
label: true
- field: tax_number
label: true
- field: bank_account_number
label: true
invoice_metadata_left:
- field: reference
invoice_metadata_right:
- field: invoice_date
- field: due_date
estimate_sender_address:
- field: company_name
bold: true
- field: address
- field: newline
- field: email
- field: phone
- field: newline
- field: chamber_of_commerce
label: true
- field: tax_number
label: true
- field: bank_account_number
label: true
estimate_metadata_left:
- field: reference
estimate_metadata_right:
- field: estimate_date
- field: due_date
created_at: '2026-01-08T11:38:12.884Z'
updated_at: '2026-01-08T11:38:12.907Z'
operationId: get_administration_id_document_styles
/{administration_id}/documents/general_documents/synchronization{format}:
get:
summary: List ids and versions of general documents
description: |-
Returns all documents in the administration. The list contains the document id and the version of the document.
Check if the version of the document is newer than the version you have stored locally, use the `POST`
variant for fetching documents with the given ids.
tags:
- 'Documents: General documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
schema:
type: string
description: 'String terms, example: key1:value1,key2:value2.'
examples:
RetrievesAllIdsForSynchronizationUsingAFilter:
summary: Retrieves all ids for synchronization using a filter
value: period:this_month
responses:
'200':
description: IDs and versions of records
content:
application/json:
schema:
type: array
items:
type: object
unevaluatedProperties: false
properties:
id:
type:
- integer
- string
version:
type:
- integer
- string
examples:
RetrievesAllIdsForSynchronization:
summary: Retrieves all ids for synchronization
value:
- id: '475688888785962401'
version: 1767872297
- id: '475688888797496739'
version: 1767872297
- id: '475688888806933925'
version: 1767872297
RetrievesAllIdsForSynchronizationUsingAFilter:
summary: Retrieves all ids for synchronization using a filter
value:
- id: '475688888928568760'
version: 1767872297
- id: '475688888938005946'
version: 1767872297
- id: '475688888948491708'
version: 1767872297
operationId: get_administration_id_documents_general_documents_synchronization
post:
summary: Fetch general documents with given ids
description: |-
Given a list of document ids, returns the document information belonging to the documents.
Returns a maximum of 100 documents, even if more ids are provided.
tags:
- 'Documents: General documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
ids:
type: array
items:
type:
- integer
- string
required:
- ids
examples:
RetrievesDocumentsForGivenIds:
summary: Retrieves documents for given ids
value:
ids:
- 475688888629724540
- 475688888638113150
responses:
'200':
description: A list of general documents
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/general_document_response'
examples:
RetrievesDocumentsForGivenIds:
summary: Retrieves documents for given ids
value:
- id: '475688888629724556'
administration_id: 123
contact_id: null
contact: null
reference: Contract
date: '2026-01-08'
due_date: null
entry_number: 3
state: saved
exchange_rate: '1.0'
created_at: '2026-01-08T11:38:17.406Z'
updated_at: '2026-01-08T11:38:17.406Z'
version: 1767872297
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:17.409Z'
updated_at: '2026-01-08T11:38:17.409Z'
- id: '475688888638113166'
administration_id: 123
contact_id: null
contact: null
reference: Contract
date: '2026-01-08'
due_date: null
entry_number: 4
state: saved
exchange_rate: '1.0'
created_at: '2026-01-08T11:38:17.415Z'
updated_at: '2026-01-08T11:38:17.415Z'
version: 1767872297
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:17.417Z'
updated_at: '2026-01-08T11:38:17.417Z'
operationId: post_administration_id_documents_general_documents_synchronization
/{administration_id}/documents/general_documents/{general_document_id}/notes/{id}{format}:
delete:
summary: Destroys note from entity
description: Deletes a note from the general document.
tags:
- 'Documents: General documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: general_document_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Note deleted
'400':
$ref: '#/components/responses/400_bad_request'
operationId: delete_administration_id_documents_general_documents_general_document_id_notes_id
/{administration_id}/documents/general_documents/{general_document_id}/notes{format}:
post:
summary: Adds note to entity
description: Adds a note to the general document.
tags:
- 'Documents: General documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: general_document_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
note:
type: object
unevaluatedProperties: false
properties:
note:
type: string
description: '**Required**. Text for the note or to-do.'
todo:
type:
- boolean
- string
description: If `true` the note is a to-do.
assignee_id:
$ref: '#/components/schemas/identifier'
description: Assign to-do to user. Should be a valid user id. If assignee_id is provided the note will be a to-do.
required: []
required: []
examples:
CreateANote:
summary: Create a note
value:
note:
note: Text of the note
assignee_id: 475688891786987260
todo: true
responses:
'201':
description: Note created
content:
application/json:
schema:
$ref: '#/components/schemas/note_response'
examples:
CreateANote:
summary: Create a note
value:
id: '475688891838367471'
administration_id: 123
entity_id: '475688891768112875'
entity_type: Document
user_id: 17678722914505
assignee_id: '475688891786987245'
todo: true
note: Text of the note
completed_at: null
completed_by_id: null
todo_type: null
data: {}
created_at: '2026-01-08T11:38:20.466Z'
updated_at: '2026-01-08T11:38:20.466Z'
'400':
$ref: '#/components/responses/400_bad_request'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: post_administration_id_documents_general_documents_general_document_id_notes
/{administration_id}/documents/general_documents/{id}/attachments/{attachment_id}/download{format}:
get:
summary: Download attachment
description: |-
Download the attachment. The response will be a redirect to a temporarily available URL
where the attachment can be downloaded. Use the `Location` header in the response
to download the attachment.
tags:
- 'Documents: General documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: attachment_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'302':
description: Found
content:
text/plain:
schema:
type: string
examples:
DownloadsTheAttachment:
summary: Downloads the attachment
value: '{"message":"Use the Location header to download the attachment"}'
'404':
$ref: '#/components/responses/404_not_found'
operationId: get_administration_id_documents_general_documents_id_attachments_attachment_id_download
/{administration_id}/documents/general_documents/{id}/attachments/{attachment_id}{format}:
delete:
summary: Delete an attachment
description: Deletes an attachment of an attachable.
tags:
- 'Documents: General documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: attachment_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Attachment deleted
'404':
$ref: '#/components/responses/404_not_found'
operationId: delete_administration_id_documents_general_documents_id_attachments_attachment_id
/{administration_id}/documents/general_documents/{id}/attachments{format}:
post:
summary: Add attachment to general document
description: Add an attachment to a general document.
tags:
- 'Documents: General documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'200':
description: Status code
content:
application/json:
schema:
type: integer
examples:
UploadsAnAttachment:
summary: Uploads an attachment
value: 200
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: post_administration_id_documents_general_documents_id_attachments
/{administration_id}/documents/general_documents/{id}{format}:
get:
summary: Get general document
description: Returns a general document by id.
tags:
- 'Documents: General documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'200':
description: A general document
content:
application/json:
schema:
$ref: '#/components/schemas/general_document_response'
examples:
ReturnsTheWantedGeneralDocument:
summary: Returns the wanted general document
value:
id: '475688887490970878'
administration_id: 123
contact_id: null
contact: null
reference: Contract
date: '2026-01-08'
due_date: null
entry_number: 2
state: saved
exchange_rate: '1.0'
created_at: '2026-01-08T11:38:16.320Z'
updated_at: '2026-01-08T11:38:16.320Z'
version: 1767872296
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:16.323Z'
updated_at: '2026-01-08T11:38:16.323Z'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
OnlyReturnsGeneralDocuments:
summary: Only returns general documents
value:
error: record not found
symbolic:
id: not_found
operationId: get_administration_id_documents_general_documents_id
delete:
summary: Delete a general document
description: Deletes a general document.
tags:
- 'Documents: General documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'200':
description: Status code
content:
application/json:
schema:
type: integer
examples:
DeletesTheGeneralDocument:
summary: Deletes the general document
value: 200
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
operationId: delete_administration_id_documents_general_documents_id
patch:
summary: Update a general document
description: Updates a general document.
tags:
- 'Documents: General documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
general_document:
type: object
unevaluatedProperties: false
properties:
reference:
type: string
description: '**Required**.'
date:
type: string
description: '**Required**.'
due_date:
type: string
reminder_date:
type: string
contact_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid contact id.
reminder:
type: object
unevaluatedProperties: false
properties:
date:
type: string
message:
type: string
required:
- date
required: []
remove_contact:
type:
- boolean
- string
required: []
examples:
UpdatesTheGeneralDocument:
summary: Updates the general document
value:
general_document:
reference: updated reference
responses:
'200':
description: General document updated
content:
application/json:
schema:
$ref: '#/components/schemas/general_document_response'
examples:
UpdatesTheGeneralDocument:
summary: Updates the general document
value:
id: '475688892510504782'
administration_id: 123
contact_id: null
contact: null
reference: updated reference
date: '2026-01-08'
due_date: null
entry_number: 2
state: saved
exchange_rate: '1.0'
created_at: '2026-01-08T11:38:21.106Z'
updated_at: '2026-01-08T11:38:21.131Z'
version: 1767872301
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:21.109Z'
updated_at: '2026-01-08T11:38:21.109Z'
- administration_id: 123
user_id: 17678722914505
action: document_updated
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:21.134Z'
updated_at: '2026-01-08T11:38:21.134Z'
'404':
$ref: '#/components/responses/404_not_found'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: patch_administration_id_documents_general_documents_id
/{administration_id}/documents/general_documents{format}:
get:
summary: Get general documents
description: |-
Returns a paginated list of documents of this type in the administration.
The `filter` argument allows you to filter on the list of documents. Filters are a combination of keys and values,
separated by a comma: `key:value,key2:value2`. The most common filter method will be `period`: `period:this_month`.
Filtering works the same as in the web application, for more advanced examples, change the filtering in the web
application and learn from the resulting URI.
tags:
- 'Documents: General documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
schema:
type: string
description: 'String terms, example: `key1:value1,key2:value2`.'
- name: new_filter
in: query
required: false
schema:
type: string
description: 'String terms, example: `key1:value1,key2:value2`.'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/per_page'
- name: exclude_new_general_journal_documents
in: query
required: false
schema:
type:
- boolean
- string
responses:
'200':
description: A list of general documents
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/general_document_response'
examples:
ReturnsAListOfGeneralDocuments:
summary: Returns a list of general documents
value:
- id: '475688891148404365'
administration_id: 123
contact_id: null
contact: null
reference: Contract
date: '2026-01-08'
due_date: null
entry_number: 5
state: saved
exchange_rate: '1.0'
created_at: '2026-01-08T11:38:19.809Z'
updated_at: '2026-01-08T11:38:19.809Z'
version: 1767872299
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:19.811Z'
updated_at: '2026-01-08T11:38:19.811Z'
- id: '475688891138967179'
administration_id: 123
contact_id: null
contact: null
reference: Contract
date: '2026-01-08'
due_date: null
entry_number: 4
state: saved
exchange_rate: '1.0'
created_at: '2026-01-08T11:38:19.799Z'
updated_at: '2026-01-08T11:38:19.799Z'
version: 1767872299
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:19.802Z'
updated_at: '2026-01-08T11:38:19.802Z'
- id: '475688891128481417'
administration_id: 123
contact_id: null
contact: null
reference: Contract
date: '2026-01-08'
due_date: null
entry_number: 3
state: saved
exchange_rate: '1.0'
created_at: '2026-01-08T11:38:19.790Z'
updated_at: '2026-01-08T11:38:19.790Z'
version: 1767872299
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:19.792Z'
updated_at: '2026-01-08T11:38:19.792Z'
- id: '475688891117995655'
administration_id: 123
contact_id: null
contact: null
reference: Contract
date: '2026-01-08'
due_date: null
entry_number: 2
state: saved
exchange_rate: '1.0'
created_at: '2026-01-08T11:38:19.779Z'
updated_at: '2026-01-08T11:38:19.779Z'
version: 1767872299
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:19.783Z'
updated_at: '2026-01-08T11:38:19.783Z'
ReturnsPaginatedGeneralDocumentsOnPage1:
summary: Returns paginated general documents on page 1
value:
- id: '475688891331905190'
administration_id: 123
contact_id: null
contact: null
reference: Contract
date: '2026-01-08'
due_date: null
entry_number: 5
state: saved
exchange_rate: '1.0'
created_at: '2026-01-08T11:38:19.984Z'
updated_at: '2026-01-08T11:38:19.984Z'
version: 1767872299
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:19.986Z'
updated_at: '2026-01-08T11:38:19.986Z'
ReturnsPaginatedGeneralDocumentsOnPage2:
summary: Returns paginated general documents on page 2
value:
- id: '475688891497580221'
administration_id: 123
contact_id: null
contact: null
reference: Contract
date: '2026-01-08'
due_date: null
entry_number: 4
state: saved
exchange_rate: '1.0'
created_at: '2026-01-08T11:38:20.142Z'
updated_at: '2026-01-08T11:38:20.142Z'
version: 1767872300
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:20.144Z'
updated_at: '2026-01-08T11:38:20.144Z'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsAnErrorWhenTooManyGeneralDocumentsAreRequested:
summary: Returns an error when too many general documents are requested
value:
error: Per Page is too big
symbolic:
per_page: max
operationId: get_administration_id_documents_general_documents
post:
summary: Create a new general document
description: Creates a new general document.
tags:
- 'Documents: General documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
general_document:
type: object
unevaluatedProperties: false
properties:
reference:
type: string
description: '**Required**.'
date:
type: string
description: '**Required**.'
due_date:
type: string
reminder_date:
type: string
contact_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid contact id.
reminder:
type: object
unevaluatedProperties: false
properties:
date:
type: string
message:
type: string
required:
- date
required: []
required: []
examples:
CreatesTheGeneralDocument:
summary: Creates the general document
value:
general_document:
reference: foobar
contact_id: 475688888161011000
responses:
'201':
description: General document created
content:
application/json:
schema:
$ref: '#/components/schemas/general_document_response'
examples:
CreatesTheGeneralDocument:
summary: Creates the general document
value:
id: '475688888249091428'
administration_id: 123
contact_id: '475688888161011027'
contact:
id: '475688888161011027'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:16.959Z'
updated_at: '2026-01-08T11:38:16.959Z'
version: 1767872296
sales_invoices_url: https://moneybird.dev/123/sales_invoices/bb1f22e839cde6e6a0b532a655b37825e4b5961305dffca10e5781576828cd33/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: foobar
date: '2026-01-08'
due_date: null
entry_number: 3
state: saved
exchange_rate: '1.0'
created_at: '2026-01-08T11:38:17.043Z'
updated_at: '2026-01-08T11:38:17.043Z'
version: 1767872297
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:17.047Z'
updated_at: '2026-01-08T11:38:17.047Z'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
RequiresAllInput:
summary: Requires all input
value:
error: General Document is required
symbolic:
general_document: required
'402':
$ref: '#/components/responses/402_payment_required'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: post_administration_id_documents_general_documents
/{administration_id}/documents/general_journal_documents/synchronization{format}:
get:
summary: List ids and versions of general journal documents
description: |-
Returns all documents in the administration. The list contains the document id and the version of the document.
Check if the version of the document is newer than the version you have stored locally, use the `POST`
variant for fetching documents with the given ids.
tags:
- 'Documents: General journal documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
schema:
type: string
description: 'String terms, example: key1:value1,key2:value2.'
examples:
RetrievesAllIdsForSynchronizationUsingAFilter:
summary: Retrieves all ids for synchronization using a filter
value: period:this_month
responses:
'200':
description: IDs and versions of records
content:
application/json:
schema:
type: array
items:
type: object
unevaluatedProperties: false
properties:
id:
type:
- integer
- string
version:
type:
- integer
- string
examples:
RetrievesAllIdsForSynchronizationUsingAFilter:
summary: Retrieves all ids for synchronization using a filter
value:
- id: '475689069104334117'
version: 1767872469
- id: '475689069144180024'
version: 1767872469
- id: '475689069184025931'
version: 1767872469
RetrievesAllIdsForSynchronization:
summary: Retrieves all ids for synchronization
value:
- id: '475689069301466481'
version: 1767872469
- id: '475689069341312388'
version: 1767872469
- id: '475689069381158295'
version: 1767872469
operationId: get_administration_id_documents_general_journal_documents_synchronization
post:
summary: Fetch general journal documents with given ids
description: |-
Given a list of document ids, returns the document information belonging to the documents.
Returns a maximum of 100 documents, even if more ids are provided.
tags:
- 'Documents: General journal documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
ids:
type: array
items:
type:
- integer
- string
required:
- ids
examples:
RetrievesDocumentsForGivenIds:
summary: Retrieves documents for given ids
value:
ids:
- 475689069577242050
- 475689069621282300
responses:
'200':
description: A list of general journal documents
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/general_journal_document_response'
examples:
RetrievesDocumentsForGivenIds:
summary: Retrieves documents for given ids
value:
- id: '475689069577242064'
administration_id: 123
reference: Deprecations
date: '2026-01-08'
journal_type: null
created_at: '2026-01-08T11:41:09.971Z'
updated_at: '2026-01-08T11:41:09.971Z'
version: 1767872469
general_journal_document_entries:
- id: '475689069579339217'
administration_id: 123
ledger_account_id: '475689069549979087'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-01-08T11:41:09.973Z'
updated_at: '2026-01-08T11:41:09.973Z'
description: First
- id: '475689069579339218'
administration_id: 123
ledger_account_id: '475689069549979087'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-01-08T11:41:09.974Z'
updated_at: '2026-01-08T11:41:09.974Z'
description: Second
- id: '475689069580387795'
administration_id: 123
ledger_account_id: '475689069549979087'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-01-08T11:41:09.975Z'
updated_at: '2026-01-08T11:41:09.975Z'
description: Third
- id: '475689069581436372'
administration_id: 123
ledger_account_id: '475689069549979087'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-01-08T11:41:09.976Z'
updated_at: '2026-01-08T11:41:09.976Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:09.978Z'
updated_at: '2026-01-08T11:41:09.978Z'
- id: '475689069621282275'
administration_id: 123
reference: Deprecations
date: '2026-01-08'
journal_type: null
created_at: '2026-01-08T11:41:10.013Z'
updated_at: '2026-01-08T11:41:10.013Z'
version: 1767872470
general_journal_document_entries:
- id: '475689069622330852'
administration_id: 123
ledger_account_id: '475689069597165026'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-01-08T11:41:10.015Z'
updated_at: '2026-01-08T11:41:10.015Z'
description: First
- id: '475689069623379429'
administration_id: 123
ledger_account_id: '475689069597165026'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-01-08T11:41:10.016Z'
updated_at: '2026-01-08T11:41:10.016Z'
description: Second
- id: '475689069624428006'
administration_id: 123
ledger_account_id: '475689069597165026'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-01-08T11:41:10.017Z'
updated_at: '2026-01-08T11:41:10.017Z'
description: Third
- id: '475689069625476583'
administration_id: 123
ledger_account_id: '475689069597165026'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-01-08T11:41:10.017Z'
updated_at: '2026-01-08T11:41:10.017Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:10.019Z'
updated_at: '2026-01-08T11:41:10.019Z'
operationId: post_administration_id_documents_general_journal_documents_synchronization
/{administration_id}/documents/general_journal_documents/{general_journal_document_id}/notes/{id}{format}:
delete:
summary: Destroys note from entity
description: Deletes a note from the general journal document.
tags:
- 'Documents: General journal documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: general_journal_document_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Note deleted
'400':
$ref: '#/components/responses/400_bad_request'
operationId: delete_administration_id_documents_general_journal_documents_general_journal_document_id_notes_id
/{administration_id}/documents/general_journal_documents/{general_journal_document_id}/notes{format}:
post:
summary: Adds note to entity
description: Adds a note to the general journal document.
tags:
- 'Documents: General journal documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: general_journal_document_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
note:
type: object
unevaluatedProperties: false
properties:
note:
type: string
description: '**Required**. Text for the note or to-do.'
todo:
type:
- boolean
- string
description: If `true` the note is a to-do.
assignee_id:
$ref: '#/components/schemas/identifier'
description: Assign to-do to user. Should be a valid user id. If assignee_id is provided the note will be a to-do.
required: []
required: []
examples:
CreateANote:
summary: Create a note
value:
note:
note: Text of the note
assignee_id: 475689071397569540
todo: true
responses:
'201':
description: Note created
content:
application/json:
schema:
$ref: '#/components/schemas/note_response'
examples:
CreateANote:
summary: Create a note
value:
id: '475689071416443922'
administration_id: 123
entity_id: '475689071376599038'
entity_type: Document
user_id: 17678722914505
assignee_id: '475689071397569552'
todo: true
note: Text of the note
completed_at: null
completed_by_id: null
todo_type: null
data: {}
created_at: '2026-01-08T11:41:11.725Z'
updated_at: '2026-01-08T11:41:11.725Z'
'400':
$ref: '#/components/responses/400_bad_request'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: post_administration_id_documents_general_journal_documents_general_journal_document_id_notes
/{administration_id}/documents/general_journal_documents/{id}/attachments/{attachment_id}/download{format}:
get:
summary: Download attachment
description: |-
Download the attachment. The response will be a redirect to a temporarily available URL
where the attachment can be downloaded. Use the `Location` header in the response
to download the attachment.
tags:
- 'Documents: General journal documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: attachment_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'302':
description: Found
content:
text/plain:
schema:
type: string
examples:
DownloadsTheAttachment:
summary: Downloads the attachment
value: '{"message":"Use the Location header to download the attachment"}'
'404':
$ref: '#/components/responses/404_not_found'
operationId: get_administration_id_documents_general_journal_documents_id_attachments_attachment_id_download
/{administration_id}/documents/general_journal_documents/{id}/attachments/{attachment_id}{format}:
delete:
summary: Delete an attachment
description: Deletes an attachment of an attachable.
tags:
- 'Documents: General journal documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: attachment_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Attachment deleted
'404':
$ref: '#/components/responses/404_not_found'
operationId: delete_administration_id_documents_general_journal_documents_id_attachments_attachment_id
/{administration_id}/documents/general_journal_documents/{id}/attachments{format}:
post:
summary: Add attachment to general journal document
description: Add an attachment to a general journal document.
tags:
- 'Documents: General journal documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'200':
description: Status code
content:
application/json:
schema:
type: integer
examples:
UploadsAnAttachment:
summary: Uploads an attachment
value: 200
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: post_administration_id_documents_general_journal_documents_id_attachments
/{administration_id}/documents/general_journal_documents/{id}{format}:
get:
summary: Get general journal document
description: Returns a general journal document by id.
tags:
- 'Documents: General journal documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'200':
description: A general journal document
content:
application/json:
schema:
$ref: '#/components/schemas/general_journal_document_response'
examples:
ReturnsTheWantedGeneralJournalDocument:
summary: Returns the wanted general journal document
value:
id: '475689070986528652'
administration_id: 123
reference: Deprecations
date: '2026-01-08'
journal_type: null
created_at: '2026-01-08T11:41:11.315Z'
updated_at: '2026-01-08T11:41:11.315Z'
version: 1767872471
general_journal_document_entries:
- id: '475689070987577229'
administration_id: 123
ledger_account_id: '475689070963459979'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-01-08T11:41:11.317Z'
updated_at: '2026-01-08T11:41:11.317Z'
description: First
- id: '475689070988625806'
administration_id: 123
ledger_account_id: '475689070963459979'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-01-08T11:41:11.318Z'
updated_at: '2026-01-08T11:41:11.318Z'
description: Second
- id: '475689070989674383'
administration_id: 123
ledger_account_id: '475689070963459979'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-01-08T11:41:11.319Z'
updated_at: '2026-01-08T11:41:11.319Z'
description: Third
- id: '475689070990722960'
administration_id: 123
ledger_account_id: '475689070963459979'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-01-08T11:41:11.320Z'
updated_at: '2026-01-08T11:41:11.320Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:11.322Z'
updated_at: '2026-01-08T11:41:11.322Z'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
OnlyReturnsGeneralJournalDocuments:
summary: Only returns general journal documents
value:
error: record not found
symbolic:
id: not_found
operationId: get_administration_id_documents_general_journal_documents_id
delete:
summary: Delete a general journal document
description: Deletes a general journal document.
tags:
- 'Documents: General journal documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'200':
description: Status code
content:
application/json:
schema:
type: integer
examples:
DeletesTheGeneralJournalDocument:
summary: Deletes the general journal document
value: 200
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
operationId: delete_administration_id_documents_general_journal_documents_id
patch:
summary: Update a general journal document
description: Updates a general journal document.
tags:
- 'Documents: General journal documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
general_journal_document:
type: object
unevaluatedProperties: false
properties:
reference:
type: string
date:
type: string
origin:
type: string
description: Can be `api`, `upload`, `endpoint`, `si`, `si_local`, `si_peppol`, `email`, `moneybird_bv` or `mollie`.
journal_type:
type: string
description: Can be `["fiscal_year_ending", "fiscal_year_ending"]`.
general_journal_document_entries_attributes:
oneOf:
- type: array
items:
type: object
unevaluatedProperties: false
properties:
id:
type: integer
ledger_account_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid ledger account id.
tax_rate_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid tax rate id.
description:
type: string
debit:
$ref: '#/components/schemas/number'
description: Both a decimal and a string '10,95' are accepted.
credit:
$ref: '#/components/schemas/number'
description: Both a decimal and a string '10,95' are accepted.
project_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid project id.
row_order:
type: integer
_destroy:
type:
- boolean
- string
contact_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid contact id.
required: []
- type: object
additionalProperties:
type: object
properties:
id:
type: integer
ledger_account_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid ledger account id.
tax_rate_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid tax rate id.
description:
type: string
debit:
$ref: '#/components/schemas/number'
description: Both a decimal and a string '10,95' are accepted.
credit:
$ref: '#/components/schemas/number'
description: Both a decimal and a string '10,95' are accepted.
project_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid project id.
row_order:
type: integer
_destroy:
type:
- boolean
- string
contact_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid contact id.
required: []
required: []
all_taxes:
type:
- boolean
- string
required: []
examples:
UpdatesTheGeneralJournalDocument:
summary: Updates the general journal document
value:
general_journal_document:
reference: updated reference
responses:
'200':
description: General journal document updated
content:
application/json:
schema:
$ref: '#/components/schemas/general_journal_document_response'
examples:
UpdatesTheGeneralJournalDocument:
summary: Updates the general journal document
value:
id: '475689070026032725'
administration_id: 123
reference: updated reference
date: '2026-01-08'
journal_type: null
created_at: '2026-01-08T11:41:10.400Z'
updated_at: '2026-01-08T11:41:10.438Z'
version: 1767872470
general_journal_document_entries:
- id: '475689070028129878'
administration_id: 123
ledger_account_id: '475689069999818324'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-01-08T11:41:10.401Z'
updated_at: '2026-01-08T11:41:10.401Z'
description: First
- id: '475689070029178455'
administration_id: 123
ledger_account_id: '475689069999818324'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-01-08T11:41:10.403Z'
updated_at: '2026-01-08T11:41:10.403Z'
description: Second
- id: '475689070030227032'
administration_id: 123
ledger_account_id: '475689069999818324'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-01-08T11:41:10.403Z'
updated_at: '2026-01-08T11:41:10.403Z'
description: Third
- id: '475689070031275609'
administration_id: 123
ledger_account_id: '475689069999818324'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-01-08T11:41:10.404Z'
updated_at: '2026-01-08T11:41:10.404Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:10.407Z'
updated_at: '2026-01-08T11:41:10.407Z'
- administration_id: 123
user_id: 17678722914505
action: document_updated
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:10.440Z'
updated_at: '2026-01-08T11:41:10.440Z'
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: patch_administration_id_documents_general_journal_documents_id
/{administration_id}/documents/general_journal_documents{format}:
get:
summary: Get general journal documents
description: |-
Returns a paginated list of documents of this type in the administration.
The `filter` argument allows you to filter on the list of documents. Filters are a combination of keys and values,
separated by a comma: `key:value,key2:value2`. The most common filter method will be `period`: `period:this_month`.
Filtering works the same as in the web application, for more advanced examples, change the filtering in the web
application and learn from the resulting URI.
tags:
- 'Documents: General journal documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
schema:
type: string
description: 'String terms, example: `key1:value1,key2:value2`.'
- name: new_filter
in: query
required: false
schema:
type: string
description: 'String terms, example: `key1:value1,key2:value2`.'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/per_page'
- name: exclude_new_general_journal_documents
in: query
required: false
schema:
type:
- boolean
- string
responses:
'200':
description: A list of general journal documents
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/general_journal_document_response'
examples:
ReturnsAListOfGeneralJournalDocuments:
summary: Returns a list of general journal documents
value:
- id: '475689067622696766'
administration_id: 123
reference: Deprecations
date: '2026-01-08'
journal_type: null
created_at: '2026-01-08T11:41:08.107Z'
updated_at: '2026-01-08T11:41:08.107Z'
version: 1767872468
general_journal_document_entries:
- id: '475689067623745343'
administration_id: 123
ledger_account_id: '475689067598579517'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-01-08T11:41:08.109Z'
updated_at: '2026-01-08T11:41:08.109Z'
description: First
- id: '475689067624793920'
administration_id: 123
ledger_account_id: '475689067598579517'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-01-08T11:41:08.110Z'
updated_at: '2026-01-08T11:41:08.110Z'
description: Second
- id: '475689067625842497'
administration_id: 123
ledger_account_id: '475689067598579517'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-01-08T11:41:08.111Z'
updated_at: '2026-01-08T11:41:08.111Z'
description: Third
- id: '475689067626891074'
administration_id: 123
ledger_account_id: '475689067598579517'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-01-08T11:41:08.112Z'
updated_at: '2026-01-08T11:41:08.112Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:08.114Z'
updated_at: '2026-01-08T11:41:08.114Z'
- id: '475689067578656555'
administration_id: 123
reference: Deprecations
date: '2026-01-08'
journal_type: null
created_at: '2026-01-08T11:41:08.066Z'
updated_at: '2026-01-08T11:41:08.066Z'
version: 1767872468
general_journal_document_entries:
- id: '475689067580753708'
administration_id: 123
ledger_account_id: '475689067556636458'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-01-08T11:41:08.067Z'
updated_at: '2026-01-08T11:41:08.067Z'
description: First
- id: '475689067581802285'
administration_id: 123
ledger_account_id: '475689067556636458'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-01-08T11:41:08.068Z'
updated_at: '2026-01-08T11:41:08.068Z'
description: Second
- id: '475689067582850862'
administration_id: 123
ledger_account_id: '475689067556636458'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-01-08T11:41:08.069Z'
updated_at: '2026-01-08T11:41:08.069Z'
description: Third
- id: '475689067583899439'
administration_id: 123
ledger_account_id: '475689067556636458'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-01-08T11:41:08.070Z'
updated_at: '2026-01-08T11:41:08.070Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:08.073Z'
updated_at: '2026-01-08T11:41:08.073Z'
- id: '475689067537762072'
administration_id: 123
reference: Deprecations
date: '2026-01-08'
journal_type: null
created_at: '2026-01-08T11:41:08.027Z'
updated_at: '2026-01-08T11:41:08.027Z'
version: 1767872468
general_journal_document_entries:
- id: '475689067539859225'
administration_id: 123
ledger_account_id: '475689067516790551'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-01-08T11:41:08.028Z'
updated_at: '2026-01-08T11:41:08.028Z'
description: First
- id: '475689067540907802'
administration_id: 123
ledger_account_id: '475689067516790551'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-01-08T11:41:08.029Z'
updated_at: '2026-01-08T11:41:08.029Z'
description: Second
- id: '475689067540907803'
administration_id: 123
ledger_account_id: '475689067516790551'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-01-08T11:41:08.030Z'
updated_at: '2026-01-08T11:41:08.030Z'
description: Third
- id: '475689067541956380'
administration_id: 123
ledger_account_id: '475689067516790551'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-01-08T11:41:08.031Z'
updated_at: '2026-01-08T11:41:08.031Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:08.033Z'
updated_at: '2026-01-08T11:41:08.033Z'
- id: '475689067498964741'
administration_id: 123
reference: Deprecations
date: '2026-01-08'
journal_type: null
created_at: '2026-01-08T11:41:07.989Z'
updated_at: '2026-01-08T11:41:07.989Z'
version: 1767872467
general_journal_document_entries:
- id: '475689067500013318'
administration_id: 123
ledger_account_id: '475689067476944644'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-01-08T11:41:07.991Z'
updated_at: '2026-01-08T11:41:07.991Z'
description: First
- id: '475689067501061895'
administration_id: 123
ledger_account_id: '475689067476944644'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-01-08T11:41:07.992Z'
updated_at: '2026-01-08T11:41:07.992Z'
description: Second
- id: '475689067502110472'
administration_id: 123
ledger_account_id: '475689067476944644'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-01-08T11:41:07.993Z'
updated_at: '2026-01-08T11:41:07.993Z'
description: Third
- id: '475689067503159049'
administration_id: 123
ledger_account_id: '475689067476944644'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-01-08T11:41:07.994Z'
updated_at: '2026-01-08T11:41:07.994Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:07.996Z'
updated_at: '2026-01-08T11:41:07.996Z'
ReturnsPaginatedGeneralJournalDocumentsOnPage2:
summary: Returns paginated general journal documents on page 2
value:
- id: '475689067858626442'
administration_id: 123
reference: Deprecations
date: '2026-01-08'
journal_type: null
created_at: '2026-01-08T11:41:08.332Z'
updated_at: '2026-01-08T11:41:08.332Z'
version: 1767872468
general_journal_document_entries:
- id: '475689067859675019'
administration_id: 123
ledger_account_id: '475689067833460617'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-01-08T11:41:08.334Z'
updated_at: '2026-01-08T11:41:08.334Z'
description: First
- id: '475689067860723596'
administration_id: 123
ledger_account_id: '475689067833460617'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-01-08T11:41:08.335Z'
updated_at: '2026-01-08T11:41:08.335Z'
description: Second
- id: '475689067861772173'
administration_id: 123
ledger_account_id: '475689067833460617'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-01-08T11:41:08.336Z'
updated_at: '2026-01-08T11:41:08.336Z'
description: Third
- id: '475689067862820750'
administration_id: 123
ledger_account_id: '475689067833460617'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-01-08T11:41:08.337Z'
updated_at: '2026-01-08T11:41:08.337Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:08.339Z'
updated_at: '2026-01-08T11:41:08.339Z'
ReturnsPaginatedGeneralJournalDocumentsOnPage1:
summary: Returns paginated general journal documents on page 1
value:
- id: '475689068430099547'
administration_id: 123
reference: Deprecations
date: '2026-01-08'
journal_type: null
created_at: '2026-01-08T11:41:08.877Z'
updated_at: '2026-01-08T11:41:08.877Z'
version: 1767872468
general_journal_document_entries:
- id: '475689068431148124'
administration_id: 123
ledger_account_id: '475689068404933722'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-01-08T11:41:08.879Z'
updated_at: '2026-01-08T11:41:08.879Z'
description: First
- id: '475689068432196701'
administration_id: 123
ledger_account_id: '475689068404933722'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-01-08T11:41:08.880Z'
updated_at: '2026-01-08T11:41:08.880Z'
description: Second
- id: '475689068433245278'
administration_id: 123
ledger_account_id: '475689068404933722'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-01-08T11:41:08.881Z'
updated_at: '2026-01-08T11:41:08.881Z'
description: Third
- id: '475689068434293855'
administration_id: 123
ledger_account_id: '475689068404933722'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-01-08T11:41:08.882Z'
updated_at: '2026-01-08T11:41:08.882Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:08.884Z'
updated_at: '2026-01-08T11:41:08.884Z'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsAnErrorWhenTooManyGeneralJournalDocumentsAreRequested:
summary: Returns an error when too many general journal documents are requested
value:
error: Per Page is too big
symbolic:
per_page: max
operationId: get_administration_id_documents_general_journal_documents
post:
summary: Create a new general journal document
description: Creates a new general journal document.
tags:
- 'Documents: General journal documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
general_journal_document:
type: object
unevaluatedProperties: false
properties:
reference:
type: string
date:
type: string
origin:
type: string
description: Can be `api`, `upload`, `endpoint`, `si`, `si_local`, `si_peppol`, `email`, `moneybird_bv` or `mollie`.
journal_type:
type: string
description: Can be `["fiscal_year_ending", "fiscal_year_ending"]`.
general_journal_document_entries_attributes:
oneOf:
- type: array
items:
type: object
unevaluatedProperties: false
properties:
id:
type: integer
ledger_account_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid ledger account id.
tax_rate_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid tax rate id.
description:
type: string
debit:
$ref: '#/components/schemas/number'
description: Both a decimal and a string '10,95' are accepted.
credit:
$ref: '#/components/schemas/number'
description: Both a decimal and a string '10,95' are accepted.
project_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid project id.
row_order:
type: integer
_destroy:
type:
- boolean
- string
contact_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid contact id.
required: []
- type: object
additionalProperties:
type: object
properties:
id:
type: integer
ledger_account_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid ledger account id.
tax_rate_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid tax rate id.
description:
type: string
debit:
$ref: '#/components/schemas/number'
description: Both a decimal and a string '10,95' are accepted.
credit:
$ref: '#/components/schemas/number'
description: Both a decimal and a string '10,95' are accepted.
project_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid project id.
row_order:
type: integer
_destroy:
type:
- boolean
- string
contact_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid contact id.
required: []
required: []
required: []
examples:
CreatesTheGeneralJournalDocument:
summary: Creates the general journal document
value:
general_journal_document:
reference: foobar
general_journal_document_entries_attributes:
'0':
ledger_account_id: 475689068669175000
debit: 100
credit: 0
'1':
ledger_account_id: 475689068719506600
debit: 0
credit: 100
responses:
'201':
description: General journal document created
content:
application/json:
schema:
$ref: '#/components/schemas/general_journal_document_response'
examples:
CreatesTheGeneralJournalDocument:
summary: Creates the general journal document
value:
id: '475689068745721019'
administration_id: 123
reference: foobar
date: '2026-01-08'
journal_type: null
created_at: '2026-01-08T11:41:09.178Z'
updated_at: '2026-01-08T11:41:09.178Z'
version: 1767872469
general_journal_document_entries:
- id: '475689068747818172'
administration_id: 123
ledger_account_id: '475689068669174948'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: null
created_at: '2026-01-08T11:41:09.180Z'
updated_at: '2026-01-08T11:41:09.180Z'
description: null
- id: '475689068748866749'
administration_id: 123
ledger_account_id: '475689068719506617'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: null
created_at: '2026-01-08T11:41:09.181Z'
updated_at: '2026-01-08T11:41:09.181Z'
description: null
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:09.183Z'
updated_at: '2026-01-08T11:41:09.183Z'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
RequiresAllInput:
summary: Requires all input
value:
error: General Journal Document is required
symbolic:
general_journal_document: required
'402':
$ref: '#/components/responses/402_payment_required'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: post_administration_id_documents_general_journal_documents
/{administration_id}/documents/purchase_invoices/synchronization{format}:
get:
summary: List ids and versions of purchase invoices
description: |-
Returns all documents in the administration. The list contains the document id and the version of the document.
Check if the version of the document is newer than the version you have stored locally, use the `POST`
variant for fetching documents with the given ids.
tags:
- 'Documents: Purchase invoices'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
schema:
type: string
description: 'String terms, example: key1:value1,key2:value2.'
examples:
RetrievesAllIdsForSynchronizationUsingAFilter:
summary: Retrieves all ids for synchronization using a filter
value: period:this_month
responses:
'200':
description: IDs and versions of records
content:
application/json:
schema:
type: array
items:
type: object
unevaluatedProperties: false
properties:
id:
type:
- integer
- string
version:
type:
- integer
- string
examples:
RetrievesAllIdsForSynchronizationUsingAFilter:
summary: Retrieves all ids for synchronization using a filter
value:
- id: '475688988669118177'
version: 1767872392
- id: '475688988744615673'
version: 1767872392
- id: '475688988784461573'
version: 1767872392
RetrievesAllIdsForSynchronization:
summary: Retrieves all ids for synchronization
value:
- id: '475688988868347670'
version: 1767872393
- id: '475688988940699438'
version: 1767872393
- id: '475688988983691066'
version: 1767872393
operationId: get_administration_id_documents_purchase_invoices_synchronization
post:
summary: Fetch purchase invoices with given ids
description: |-
Given a list of document ids, returns the document information belonging to the documents.
Returns a maximum of 100 documents, even if more ids are provided.
tags:
- 'Documents: Purchase invoices'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
ids:
type: array
items:
type:
- integer
- string
required:
- ids
examples:
RetrievesDocumentsForGivenIds:
summary: Retrieves documents for given ids
value:
ids:
- 475688988526511800
- 475688988565309100
responses:
'200':
description: A list of purchase invoices
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/purchase_invoice_response'
examples:
RetrievesDocumentsForGivenIds:
summary: Retrieves documents for given ids
value:
- id: '475688988526511812'
administration_id: 123
contact_id: '475688988422702761'
contact:
id: '475688988422702761'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:52.576Z'
updated_at: '2026-01-08T11:39:52.576Z'
version: 1767872392
sales_invoices_url: https://moneybird.dev/123/sales_invoices/57bfa117add5a8c0c30e76c0057b92956bd23f579e1975a6aedfa20daee9fb9c/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-01-08'
due_date: '2026-01-22'
entry_number: 3
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: false
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
created_at: '2026-01-08T11:39:52.675Z'
updated_at: '2026-01-08T11:39:52.678Z'
version: 1767872392
details:
- id: '475688988528608965'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:52.677Z'
updated_at: '2026-01-08T11:39:52.677Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:52.680Z'
updated_at: '2026-01-08T11:39:52.680Z'
- id: '475688988565309136'
administration_id: 123
contact_id: '475688988422702761'
contact:
id: '475688988422702761'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:52.576Z'
updated_at: '2026-01-08T11:39:52.576Z'
version: 1767872392
sales_invoices_url: https://moneybird.dev/123/sales_invoices/57bfa117add5a8c0c30e76c0057b92956bd23f579e1975a6aedfa20daee9fb9c/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-01-08'
due_date: '2026-01-22'
entry_number: 4
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: false
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
created_at: '2026-01-08T11:39:52.713Z'
updated_at: '2026-01-08T11:39:52.716Z'
version: 1767872392
details:
- id: '475688988567406289'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:52.714Z'
updated_at: '2026-01-08T11:39:52.714Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:52.717Z'
updated_at: '2026-01-08T11:39:52.717Z'
operationId: post_administration_id_documents_purchase_invoices_synchronization
/{administration_id}/documents/purchase_invoices/{id}/attachments/{attachment_id}/download{format}:
get:
summary: Download attachment
description: |-
Download the attachment. The response will be a redirect to a temporarily available URL
where the attachment can be downloaded. Use the `Location` header in the response
to download the attachment.
tags:
- 'Documents: Purchase invoices'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: attachment_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'302':
description: Found
content:
text/plain:
schema:
type: string
examples:
DownloadsTheAttachment:
summary: Downloads the attachment
value: '{"message":"Use the Location header to download the attachment"}'
'404':
$ref: '#/components/responses/404_not_found'
operationId: get_administration_id_documents_purchase_invoices_id_attachments_attachment_id_download
/{administration_id}/documents/purchase_invoices/{id}/attachments/{attachment_id}{format}:
delete:
summary: Delete an attachment
description: Deletes an attachment of an attachable.
tags:
- 'Documents: Purchase invoices'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: attachment_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Attachment deleted
'404':
$ref: '#/components/responses/404_not_found'
operationId: delete_administration_id_documents_purchase_invoices_id_attachments_attachment_id
/{administration_id}/documents/purchase_invoices/{id}/attachments{format}:
post:
summary: Add attachment to purchase invoice
description: Add an attachment to a purchase invoice.
tags:
- 'Documents: Purchase invoices'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'200':
description: Status code
content:
application/json:
schema:
type: integer
examples:
UploadsAnAttachment:
summary: Uploads an attachment
value: 200
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: post_administration_id_documents_purchase_invoices_id_attachments
/{administration_id}/documents/purchase_invoices/{id}/payments/{payment_id}{format}:
delete:
summary: Delete a payment
description: Deletes a payment from a purchase invoice.
tags:
- 'Documents: Purchase invoices'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: payment_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Payment deleted
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
operationId: delete_administration_id_documents_purchase_invoices_id_payments_payment_id
/{administration_id}/documents/purchase_invoices/{id}/payments{format}:
post:
summary: Create a payment
description: Registers a payment for a purchase invoice.
tags:
- 'Documents: Purchase invoices'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
payment:
type: object
unevaluatedProperties: false
properties:
payment_date:
type: string
price:
$ref: '#/components/schemas/number'
description: Both a decimal and a string '10,95' are accepted. Should be a number -1,000,000,000 <= *n* <= 1,000,000,000.
price_base:
$ref: '#/components/schemas/number'
description: Amount paid expressed in the base currency. Required for foreign currencies. Should be a number -1,000,000,000 <= *n* <= 1,000,000,000.
financial_account_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid financial account id.
financial_mutation_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid financial mutation id.
transaction_identifier:
type: string
manual_payment_action:
type: string
description: Can be `private_payment`, `payment_without_proof`, `cash_payment`, `rounding_error`, `bank_transfer`, `balance_settlement` or `invoices_settlement`.
ledger_account_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid ledger account id.
invoice_id:
$ref: '#/components/schemas/identifier'
required:
- payment_date
- price
required: []
examples:
CreateAPayment:
summary: Create a payment
value:
payment:
payment_date: '2026-01-08T11:39:52.312Z'
price: '363.0'
responses:
'201':
description: Payment created
content:
application/json:
schema:
$ref: '#/components/schemas/payment_response'
examples:
CreateAPayment:
summary: Create a payment
value:
id: '475688988159510123'
administration_id: 123
invoice_type: Document
invoice_id: '475688988096595539'
financial_account_id: null
user_id: 17678722914505
payment_transaction_id: null
transaction_identifier: null
price: '363.0'
price_base: '363.0'
payment_date: '2026-01-08'
credit_invoice_id: null
financial_mutation_id: null
ledger_account_id: '475688883267306625'
linked_payment_id: null
manual_payment_action: null
created_at: '2026-01-08T11:39:52.325Z'
updated_at: '2026-01-08T11:39:52.325Z'
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: post_administration_id_documents_purchase_invoices_id_payments
/{administration_id}/documents/purchase_invoices/{id}/register_payment{format}:
patch:
summary: Register a payment for a purchase invoice
description: This endpoint is deprecated and should no longer be used. It has been replaced by `Create a payment`.
deprecated: true
x-sunset: '2026-12-31'
tags:
- 'Documents: Purchase invoices'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
payment:
type: object
unevaluatedProperties: false
properties:
payment_date:
type: string
price:
$ref: '#/components/schemas/number'
description: Both a decimal and a string '10,95' are accepted. Should be a number -1,000,000,000 <= *n* <= 1,000,000,000.
price_base:
$ref: '#/components/schemas/number'
description: Amount paid expressed in the base currency. Required for foreign currencies. Should be a number -1,000,000,000 <= *n* <= 1,000,000,000.
financial_account_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid financial account id.
financial_mutation_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid financial mutation id.
transaction_identifier:
type: string
manual_payment_action:
type: string
description: Can be `private_payment`, `payment_without_proof`, `cash_payment`, `rounding_error`, `bank_transfer`, `balance_settlement` or `invoices_settlement`.
ledger_account_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid ledger account id.
invoice_id:
$ref: '#/components/schemas/identifier'
required:
- payment_date
- price
required: []
examples:
CreateAPayment:
summary: Create a payment
value:
payment:
payment_date: '2026-01-08T11:39:53.244Z'
price: '363.0'
responses:
'200':
description: Status code
content:
application/json:
schema:
type: integer
examples:
CreateAPayment:
summary: Create a payment
value: 200
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
operationId: patch_administration_id_documents_purchase_invoices_id_register_payment
/{administration_id}/documents/purchase_invoices/{id}{format}:
get:
summary: Get purchase invoice
description: Returns a purchase invoice by id.
tags:
- 'Documents: Purchase invoices'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'200':
description: A purchase invoice
content:
application/json:
schema:
$ref: '#/components/schemas/purchase_invoice_response'
examples:
ReturnsTheWantedPurchaseInvoice:
summary: Returns the wanted purchase invoice
value:
id: '475688992153536091'
administration_id: 123
contact_id: '475688992118933080'
contact:
id: '475688992118933080'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:56.101Z'
updated_at: '2026-01-08T11:39:56.101Z'
version: 1767872396
sales_invoices_url: https://moneybird.dev/123/sales_invoices/cfc143a009474998c421d3ba87b6c1811d3dff26be826fe410041178c7522d10/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-01-08'
due_date: '2026-01-22'
entry_number: 1
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: false
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
created_at: '2026-01-08T11:39:56.134Z'
updated_at: '2026-01-08T11:39:56.138Z'
version: 1767872396
details:
- id: '475688992155633244'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:56.137Z'
updated_at: '2026-01-08T11:39:56.137Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:56.140Z'
updated_at: '2026-01-08T11:39:56.140Z'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
OnlyReturnsPurchaseInvoices:
summary: Only returns purchase invoices
value:
error: record not found
symbolic:
id: not_found
operationId: get_administration_id_documents_purchase_invoices_id
delete:
summary: Delete a purchase invoices
description: Deletes a purchase invoice.
tags:
- 'Documents: Purchase invoices'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'200':
description: Status code
content:
application/json:
schema:
type: integer
examples:
DeletesThePurchaseInvoice:
summary: Deletes the purchase invoice
value: 200
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
operationId: delete_administration_id_documents_purchase_invoices_id
patch:
summary: Update purchase invoice
description: Updates a purchase invoice.
tags:
- 'Documents: Purchase invoices'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
purchase_invoice:
type: object
unevaluatedProperties: false
properties:
contact_id:
$ref: '#/components/schemas/identifier'
description: '**Required**. Should be a valid contact id.'
reference:
type: string
description: '**Required**.'
date:
type: string
description: '**Required**.'
due_date:
type: string
currency:
type: string
description: ISO three-character currency code, e.g. EUR or USD.
prices_are_incl_tax:
type:
- boolean
- string
revenue_invoice:
type:
- boolean
- string
details_attributes:
$ref: '#/components/schemas/details_attributes'
required: []
required: []
examples:
UpdatesInvoiceDetails:
summary: Updates invoice details
value:
purchase_invoice:
details_attributes:
'0':
description: New detail
price: 99
amount: 1
tax_rate_id: 475688883332318340
ledger_account_id: 475688883240043650
'1':
id: 475688989436676030
_destroy: true
UpdatesThePurchaseInvoice:
summary: Updates the purchase invoice
value:
purchase_invoice:
reference: updated reference
responses:
'200':
description: Purchase invoice updated
content:
application/json:
schema:
$ref: '#/components/schemas/purchase_invoice_response'
examples:
UpdatesInvoiceDetails:
summary: Updates invoice details
value:
id: '475688989435627428'
administration_id: 123
contact_id: '475688989405218721'
contact:
id: '475688989405218721'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:53.514Z'
updated_at: '2026-01-08T11:39:53.514Z'
version: 1767872393
sales_invoices_url: https://moneybird.dev/123/sales_invoices/4ecd87a05d6a9d9ed421dbcf9b798537c2e42651eeffd465b85e13bc15e0bb5c/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-01-08'
due_date: '2026-01-22'
entry_number: 1
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: false
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '99.0'
total_price_excl_tax_base: '99.0'
total_price_incl_tax: '119.79'
total_price_incl_tax_base: '119.79'
created_at: '2026-01-08T11:39:53.542Z'
updated_at: '2026-01-08T11:39:53.625Z'
version: 1767872393
details:
- id: '475688989520562108'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: '1'
amount_decimal: '1.0'
description: New detail
price: '99.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '99.0'
total_price_excl_tax_with_discount_base: '99.0'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:53.624Z'
updated_at: '2026-01-08T11:39:53.624Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:53.547Z'
updated_at: '2026-01-08T11:39:53.547Z'
- administration_id: 123
user_id: 17678722914505
action: document_updated
link_entity_id: null
link_entity_type: null
data:
changes:
total_price_excl_tax:
- '300.0'
- '99.0'
total_price_excl_tax_base:
- '300.0'
- '99.0'
total_price_incl_tax:
- '363.0'
- '119.79'
total_price_incl_tax_base:
- '363.0'
- '119.79'
cached_taxes:
- - tax_rate_id: '475688883332318348'
report_reference: NL/5b
payable: false
debit: '63.0'
credit: 0
- - tax_rate_id: '475688883332318348'
report_reference: NL/5b
payable: false
debit: '20.79'
credit: 0
updated_at:
- '2026-01-08T12:39:53.545+01:00'
- '2026-01-08T12:39:53.618+01:00'
created_at: '2026-01-08T11:39:53.626Z'
updated_at: '2026-01-08T11:39:53.626Z'
UpdatesThePurchaseInvoice:
summary: Updates the purchase invoice
value:
id: '475688989922165804'
administration_id: 123
contact_id: '475688989891757097'
contact:
id: '475688989891757097'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:53.977Z'
updated_at: '2026-01-08T11:39:53.977Z'
version: 1767872393
sales_invoices_url: https://moneybird.dev/123/sales_invoices/1a9a291853b0304960c9b644c90d8ccf768f025656d255da88d1bdfef54cacc2/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: updated reference
date: '2026-01-08'
due_date: '2026-01-22'
entry_number: 1
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: false
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
created_at: '2026-01-08T11:39:54.006Z'
updated_at: '2026-01-08T11:39:54.071Z'
version: 1767872394
details:
- id: '475688989923214381'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:54.008Z'
updated_at: '2026-01-08T11:39:54.008Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:54.010Z'
updated_at: '2026-01-08T11:39:54.010Z'
- administration_id: 123
user_id: 17678722914505
action: document_updated
link_entity_id: null
link_entity_type: null
data:
changes:
reference:
- 2013-01234
- updated reference
updated_at:
- '2026-01-08T12:39:54.009+01:00'
- '2026-01-08T12:39:54.071+01:00'
created_at: '2026-01-08T11:39:54.074Z'
updated_at: '2026-01-08T11:39:54.074Z'
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: patch_administration_id_documents_purchase_invoices_id
/{administration_id}/documents/purchase_invoices/{purchase_invoice_id}/notes/{id}{format}:
delete:
summary: Destroys note from entity
description: Deletes a note from the purchase invoice.
tags:
- 'Documents: Purchase invoices'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: purchase_invoice_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Note deleted
'400':
$ref: '#/components/responses/400_bad_request'
operationId: delete_administration_id_documents_purchase_invoices_purchase_invoice_id_notes_id
/{administration_id}/documents/purchase_invoices/{purchase_invoice_id}/notes{format}:
post:
summary: Adds note to entity
description: Adds a note to the purchase invoice.
tags:
- 'Documents: Purchase invoices'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: purchase_invoice_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
note:
type: object
unevaluatedProperties: false
properties:
note:
type: string
description: '**Required**. Text for the note or to-do.'
todo:
type:
- boolean
- string
description: If `true` the note is a to-do.
assignee_id:
$ref: '#/components/schemas/identifier'
description: Assign to-do to user. Should be a valid user id. If assignee_id is provided the note will be a to-do.
required: []
required: []
examples:
CreateANote:
summary: Create a note
value:
note:
note: Text of the note
assignee_id: 475688991942772300
todo: true
responses:
'201':
description: Note created
content:
application/json:
schema:
$ref: '#/components/schemas/note_response'
examples:
CreateANote:
summary: Create a note
value:
id: '475688991961646647'
administration_id: 123
entity_id: '475688991888246301'
entity_type: Document
user_id: 17678722914505
assignee_id: '475688991942772277'
todo: true
note: Text of the note
completed_at: null
completed_by_id: null
todo_type: null
data: {}
created_at: '2026-01-08T11:39:55.951Z'
updated_at: '2026-01-08T11:39:55.951Z'
'400':
$ref: '#/components/responses/400_bad_request'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: post_administration_id_documents_purchase_invoices_purchase_invoice_id_notes
/{administration_id}/documents/purchase_invoices{format}:
get:
summary: Get purchase invoices
description: |-
Returns a paginated list of documents of this type in the administration.
The `filter` argument allows you to filter on the list of documents. Filters are a combination of keys and values,
separated by a comma: `key:value,key2:value2`. The most common filter method will be `period`: `period:this_month`.
Filtering works the same as in the web application, for more advanced examples, change the filtering in the web
application and learn from the resulting URI.
tags:
- 'Documents: Purchase invoices'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
schema:
type: string
description: 'String terms, example: `key1:value1,key2:value2`.'
- name: new_filter
in: query
required: false
schema:
type: string
description: 'String terms, example: `key1:value1,key2:value2`.'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/per_page'
- name: exclude_new_general_journal_documents
in: query
required: false
schema:
type:
- boolean
- string
responses:
'200':
description: A list of purchase invoices
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/purchase_invoice_response'
examples:
ReturnsPaginatedPurchaseInvoicesOnPage1:
summary: Returns paginated purchase invoices on page 1
value:
- id: '475688990513562829'
administration_id: 123
contact_id: '475688990267147418'
contact:
id: '475688990267147418'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:54.335Z'
updated_at: '2026-01-08T11:39:54.335Z'
version: 1767872394
sales_invoices_url: https://moneybird.dev/123/sales_invoices/30b1cf4c24250a6d41d0811a11a82bed826f1a2858d0f6a1632987b136bead08/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-01-08'
due_date: '2026-01-22'
entry_number: 5
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: false
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
created_at: '2026-01-08T11:39:54.570Z'
updated_at: '2026-01-08T11:39:54.574Z'
version: 1767872394
details:
- id: '475688990515659982'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:54.572Z'
updated_at: '2026-01-08T11:39:54.572Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:54.575Z'
updated_at: '2026-01-08T11:39:54.575Z'
ReturnsAListOfPurchaseInvoices:
summary: Returns a list of purchase invoices
value:
- id: '475688990802969870'
administration_id: 123
contact_id: '475688990599546075'
contact:
id: '475688990599546075'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:54.653Z'
updated_at: '2026-01-08T11:39:54.653Z'
version: 1767872394
sales_invoices_url: https://moneybird.dev/123/sales_invoices/4f6c7df774c3b6997f1263102bc7455eaebac5d3c7a1f385a600147cb88054d6/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-01-08'
due_date: '2026-01-22'
entry_number: 5
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: false
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
created_at: '2026-01-08T11:39:54.845Z'
updated_at: '2026-01-08T11:39:54.850Z'
version: 1767872394
details:
- id: '475688990805067023'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:54.848Z'
updated_at: '2026-01-08T11:39:54.848Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:54.851Z'
updated_at: '2026-01-08T11:39:54.851Z'
- id: '475688990759978242'
administration_id: 123
contact_id: '475688990599546075'
contact:
id: '475688990599546075'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:54.653Z'
updated_at: '2026-01-08T11:39:54.653Z'
version: 1767872394
sales_invoices_url: https://moneybird.dev/123/sales_invoices/4f6c7df774c3b6997f1263102bc7455eaebac5d3c7a1f385a600147cb88054d6/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-01-08'
due_date: '2026-01-22'
entry_number: 4
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: false
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
created_at: '2026-01-08T11:39:54.806Z'
updated_at: '2026-01-08T11:39:54.809Z'
version: 1767872394
details:
- id: '475688990762075395'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:54.808Z'
updated_at: '2026-01-08T11:39:54.808Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:54.811Z'
updated_at: '2026-01-08T11:39:54.811Z'
- id: '475688990716986614'
administration_id: 123
contact_id: '475688990599546075'
contact:
id: '475688990599546075'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:54.653Z'
updated_at: '2026-01-08T11:39:54.653Z'
version: 1767872394
sales_invoices_url: https://moneybird.dev/123/sales_invoices/4f6c7df774c3b6997f1263102bc7455eaebac5d3c7a1f385a600147cb88054d6/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-01-08'
due_date: '2026-01-22'
entry_number: 3
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: false
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
created_at: '2026-01-08T11:39:54.764Z'
updated_at: '2026-01-08T11:39:54.769Z'
version: 1767872394
details:
- id: '475688990720132343'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:54.767Z'
updated_at: '2026-01-08T11:39:54.767Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:54.770Z'
updated_at: '2026-01-08T11:39:54.770Z'
- id: '475688990636246238'
administration_id: 123
contact_id: '475688990599546075'
contact:
id: '475688990599546075'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:54.653Z'
updated_at: '2026-01-08T11:39:54.653Z'
version: 1767872394
sales_invoices_url: https://moneybird.dev/123/sales_invoices/4f6c7df774c3b6997f1263102bc7455eaebac5d3c7a1f385a600147cb88054d6/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-01-08'
due_date: '2026-01-22'
entry_number: 1
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: false
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
created_at: '2026-01-08T11:39:54.687Z'
updated_at: '2026-01-08T11:39:54.691Z'
version: 1767872394
details:
- id: '475688990638343391'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:54.689Z'
updated_at: '2026-01-08T11:39:54.689Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:54.693Z'
updated_at: '2026-01-08T11:39:54.693Z'
ReturnsPaginatedPurchaseInvoicesOnPage2:
summary: Returns paginated purchase invoices on page 2
value:
- id: '475688991029462339'
administration_id: 123
contact_id: '475688990883710236'
contact:
id: '475688990883710236'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:54.923Z'
updated_at: '2026-01-08T11:39:54.923Z'
version: 1767872394
sales_invoices_url: https://moneybird.dev/123/sales_invoices/84a1e6d92bc2f594b7fa8c113faf7be5aca0a461fd6534f2ace95bae7687e43a/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-01-08'
due_date: '2026-01-22'
entry_number: 4
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: false
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
created_at: '2026-01-08T11:39:55.062Z'
updated_at: '2026-01-08T11:39:55.065Z'
version: 1767872395
details:
- id: '475688991030510916'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:55.064Z'
updated_at: '2026-01-08T11:39:55.064Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:55.066Z'
updated_at: '2026-01-08T11:39:55.066Z'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsAnErrorWhenTooManyPurchaseInvoicesAreRequested:
summary: Returns an error when too many purchase invoices are requested
value:
error: Per Page is too big
symbolic:
per_page: max
operationId: get_administration_id_documents_purchase_invoices
post:
summary: Create a new purchase invoice
description: Creates a new purchase invoice.
tags:
- 'Documents: Purchase invoices'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
purchase_invoice:
type: object
unevaluatedProperties: false
properties:
contact_id:
$ref: '#/components/schemas/identifier'
description: '**Required**. Should be a valid contact id.'
reference:
type: string
description: '**Required**.'
date:
type: string
description: '**Required**.'
due_date:
type: string
currency:
type: string
description: ISO three-character currency code, e.g. EUR or USD.
prices_are_incl_tax:
type:
- boolean
- string
revenue_invoice:
type:
- boolean
- string
details_attributes:
$ref: '#/components/schemas/details_attributes'
required: []
required: []
examples:
CreatesThePurchaseInvoice:
summary: Creates the purchase invoice
value:
purchase_invoice:
reference: foobar
contact_id: 475688985275925570
details_attributes:
'0':
description: Lunch
price: 20
tax_rate_id: 475688883332318340
ledger_account_id: 475688883240043650
responses:
'201':
description: Purchase invoice created
content:
application/json:
schema:
$ref: '#/components/schemas/purchase_invoice_response'
examples:
CreatesThePurchaseInvoice:
summary: Creates the purchase invoice
value:
id: '475688985386026100'
administration_id: 123
contact_id: '475688985275925593'
contact:
id: '475688985275925593'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:49.575Z'
updated_at: '2026-01-08T11:39:49.575Z'
version: 1767872389
sales_invoices_url: https://moneybird.dev/123/sales_invoices/9346dfe93cc3105caf2f855b2f23e4a816284da16f227b54543c8da134b2cb83/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: foobar
date: '2026-01-08'
due_date: null
entry_number: 3
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: false
origin: api
paid_at: null
tax_number: ''
total_price_excl_tax: '20.0'
total_price_excl_tax_base: '20.0'
total_price_incl_tax: '24.2'
total_price_incl_tax_base: '24.2'
created_at: '2026-01-08T11:39:49.680Z'
updated_at: '2026-01-08T11:39:49.683Z'
version: 1767872389
details:
- id: '475688985387074677'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Lunch
price: '20.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '20.0'
total_price_excl_tax_with_discount_base: '20.0'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:49.682Z'
updated_at: '2026-01-08T11:39:49.682Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:49.685Z'
updated_at: '2026-01-08T11:39:49.685Z'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
RequiresAllInput:
summary: Requires all input
value:
error: Purchase Invoice is required
symbolic:
purchase_invoice: required
'402':
$ref: '#/components/responses/402_payment_required'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: post_administration_id_documents_purchase_invoices
/{administration_id}/documents/receipts/synchronization{format}:
get:
summary: List ids and versions of receipts
description: |-
Returns all documents in the administration. The list contains the document id and the version of the document.
Check if the version of the document is newer than the version you have stored locally, use the `POST`
variant for fetching documents with the given ids.
tags:
- 'Documents: Receipts'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
schema:
type: string
description: 'String terms, example: key1:value1,key2:value2.'
examples:
RetrievesAllIdsForSynchronizationUsingAFilter:
summary: Retrieves all ids for synchronization using a filter
value: period:this_month
responses:
'200':
description: IDs and versions of records
content:
application/json:
schema:
type: array
items:
type: object
unevaluatedProperties: false
properties:
id:
type:
- integer
- string
version:
type:
- integer
- string
examples:
RetrievesAllIdsForSynchronization:
summary: Retrieves all ids for synchronization
value:
- id: '475688974022608751'
version: 1767872378
- id: '475688974096009095'
version: 1767872378
- id: '475688974128514963'
version: 1767872378
RetrievesAllIdsForSynchronizationUsingAFilter:
summary: Retrieves all ids for synchronization using a filter
value:
- id: '475688974195623844'
version: 1767872379
- id: '475688974265878460'
version: 1767872379
- id: '475688974299432904'
version: 1767872379
operationId: get_administration_id_documents_receipts_synchronization
post:
summary: Fetch receipts with given ids
description: |-
Given a list of document ids, returns the document information belonging to the documents.
Returns a maximum of 100 documents, even if more ids are provided.
tags:
- 'Documents: Receipts'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
ids:
type: array
items:
type:
- integer
- string
required:
- ids
examples:
RetrievesDocumentsForGivenIds:
summary: Retrieves documents for given ids
value:
ids:
- 475688973897828160
- 475688973929285440
responses:
'200':
description: A list of receipts
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/receipt_response'
examples:
RetrievesDocumentsForGivenIds:
summary: Retrieves documents for given ids
value:
- id: '475688973897828178'
administration_id: 123
contact_id: '475688973800310583'
contact:
id: '475688973800310583'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:38.631Z'
updated_at: '2026-01-08T11:39:38.631Z'
version: 1767872378
sales_invoices_url: https://moneybird.dev/123/sales_invoices/905a251e397fbe07d6815bf13fae0e703d563224cbc792401461b355ef8d3b8c/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-01-08'
due_date: null
entry_number: 3
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: true
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '247.93'
total_price_excl_tax_base: '247.93'
total_price_incl_tax: '300.0'
total_price_incl_tax_base: '300.0'
created_at: '2026-01-08T11:39:38.724Z'
updated_at: '2026-01-08T11:39:38.728Z'
version: 1767872378
details:
- id: '475688973899925331'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '247.93'
total_price_excl_tax_with_discount_base: '247.93'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:38.726Z'
updated_at: '2026-01-08T11:39:38.726Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:38.729Z'
updated_at: '2026-01-08T11:39:38.729Z'
- id: '475688973929285470'
administration_id: 123
contact_id: '475688973800310583'
contact:
id: '475688973800310583'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:38.631Z'
updated_at: '2026-01-08T11:39:38.631Z'
version: 1767872378
sales_invoices_url: https://moneybird.dev/123/sales_invoices/905a251e397fbe07d6815bf13fae0e703d563224cbc792401461b355ef8d3b8c/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-01-08'
due_date: null
entry_number: 4
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: true
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '247.93'
total_price_excl_tax_base: '247.93'
total_price_incl_tax: '300.0'
total_price_incl_tax_base: '300.0'
created_at: '2026-01-08T11:39:38.755Z'
updated_at: '2026-01-08T11:39:38.758Z'
version: 1767872378
details:
- id: '475688973931382623'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '247.93'
total_price_excl_tax_with_discount_base: '247.93'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:38.756Z'
updated_at: '2026-01-08T11:39:38.756Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:38.759Z'
updated_at: '2026-01-08T11:39:38.759Z'
operationId: post_administration_id_documents_receipts_synchronization
/{administration_id}/documents/receipts/{id}/attachments/{attachment_id}/download{format}:
get:
summary: Download attachment
description: |-
Download the attachment. The response will be a redirect to a temporarily available URL
where the attachment can be downloaded. Use the `Location` header in the response
to download the attachment.
tags:
- 'Documents: Receipts'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: attachment_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'302':
description: Found
content:
text/plain:
schema:
type: string
examples:
DownloadsTheAttachment:
summary: Downloads the attachment
value: '{"message":"Use the Location header to download the attachment"}'
'404':
$ref: '#/components/responses/404_not_found'
operationId: get_administration_id_documents_receipts_id_attachments_attachment_id_download
/{administration_id}/documents/receipts/{id}/attachments/{attachment_id}{format}:
delete:
summary: Delete an attachment
description: Deletes an attachment of an attachable.
tags:
- 'Documents: Receipts'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: attachment_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Attachment deleted
'404':
$ref: '#/components/responses/404_not_found'
operationId: delete_administration_id_documents_receipts_id_attachments_attachment_id
/{administration_id}/documents/receipts/{id}/attachments{format}:
post:
summary: Add attachment to receipt
description: Add an attachment to a receipt.
tags:
- 'Documents: Receipts'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'200':
description: Status code
content:
application/json:
schema:
type: integer
examples:
UploadsAnAttachment:
summary: Uploads an attachment
value: 200
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: post_administration_id_documents_receipts_id_attachments
/{administration_id}/documents/receipts/{id}/payments/{payment_id}{format}:
delete:
summary: Delete a payment
description: Deletes a payment from a receipt.
tags:
- 'Documents: Receipts'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: payment_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Payment deleted
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
operationId: delete_administration_id_documents_receipts_id_payments_payment_id
/{administration_id}/documents/receipts/{id}/payments{format}:
post:
summary: Create a payment
description: Registers a payment for a receipt.
tags:
- 'Documents: Receipts'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
payment:
type: object
unevaluatedProperties: false
properties:
payment_date:
type: string
price:
$ref: '#/components/schemas/number'
description: Both a decimal and a string '10,95' are accepted. Should be a number -1,000,000,000 <= *n* <= 1,000,000,000.
price_base:
$ref: '#/components/schemas/number'
description: Amount paid expressed in the base currency. Required for foreign currencies. Should be a number -1,000,000,000 <= *n* <= 1,000,000,000.
financial_account_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid financial account id.
financial_mutation_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid financial mutation id.
transaction_identifier:
type: string
manual_payment_action:
type: string
description: Can be `private_payment`, `payment_without_proof`, `cash_payment`, `rounding_error`, `bank_transfer`, `balance_settlement` or `invoices_settlement`.
ledger_account_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid ledger account id.
invoice_id:
$ref: '#/components/schemas/identifier'
required:
- payment_date
- price
required: []
examples:
CreateAPayment:
summary: Create a payment
value:
payment:
payment_date: '2026-01-08T11:39:40.061Z'
price: '300.0'
responses:
'201':
description: Payment created
content:
application/json:
schema:
$ref: '#/components/schemas/payment_response'
examples:
CreateAPayment:
summary: Create a payment
value:
id: '475688975315502311'
administration_id: 123
invoice_type: Document
invoice_id: '475688975244199119'
financial_account_id: null
user_id: 17678722914505
payment_transaction_id: null
transaction_identifier: null
price: '300.0'
price_base: '300.0'
payment_date: '2026-01-08'
credit_invoice_id: null
financial_mutation_id: null
ledger_account_id: '475688883267306625'
linked_payment_id: null
manual_payment_action: null
created_at: '2026-01-08T11:39:40.076Z'
updated_at: '2026-01-08T11:39:40.076Z'
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: post_administration_id_documents_receipts_id_payments
/{administration_id}/documents/receipts/{id}/register_payment{format}:
patch:
summary: Register a payment for a receipt
description: This endpoint is deprecated and should no longer be used. It has been replaced by `Create a payment`.
deprecated: true
x-sunset: '2026-12-31'
tags:
- 'Documents: Receipts'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
payment:
type: object
unevaluatedProperties: false
properties:
payment_date:
type: string
price:
$ref: '#/components/schemas/number'
description: Both a decimal and a string '10,95' are accepted. Should be a number -1,000,000,000 <= *n* <= 1,000,000,000.
price_base:
$ref: '#/components/schemas/number'
description: Amount paid expressed in the base currency. Required for foreign currencies. Should be a number -1,000,000,000 <= *n* <= 1,000,000,000.
financial_account_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid financial account id.
financial_mutation_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid financial mutation id.
transaction_identifier:
type: string
manual_payment_action:
type: string
description: Can be `private_payment`, `payment_without_proof`, `cash_payment`, `rounding_error`, `bank_transfer`, `balance_settlement` or `invoices_settlement`.
ledger_account_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid ledger account id.
invoice_id:
$ref: '#/components/schemas/identifier'
required:
- payment_date
- price
required: []
examples:
RegistersPayments:
summary: Registers payments
value:
payment:
payment_date: '2026-01-08T11:39:43.832Z'
price: '300.0'
responses:
'200':
description: Status code
content:
application/json:
schema:
type: integer
examples:
RegistersPayments:
summary: Registers payments
value: 200
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
operationId: patch_administration_id_documents_receipts_id_register_payment
/{administration_id}/documents/receipts/{id}{format}:
get:
summary: Get a receipt
description: Returns a receipt by id.
tags:
- 'Documents: Receipts'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'200':
description: A receipt
content:
application/json:
schema:
$ref: '#/components/schemas/receipt_response'
examples:
ReturnsTheWantedReceipt:
summary: Returns the wanted receipt
value:
id: '475688978968741841'
administration_id: 123
contact_id: '475688978944624590'
contact:
id: '475688978944624590'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:43.537Z'
updated_at: '2026-01-08T11:39:43.537Z'
version: 1767872383
sales_invoices_url: https://moneybird.dev/123/sales_invoices/f7e9ed8536eee3e62c5ad9947a87359258f1761441ff29ed278e09e7a65186ff/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-01-08'
due_date: null
entry_number: 1
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: true
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '247.93'
total_price_excl_tax_base: '247.93'
total_price_incl_tax: '300.0'
total_price_incl_tax_base: '300.0'
created_at: '2026-01-08T11:39:43.560Z'
updated_at: '2026-01-08T11:39:43.563Z'
version: 1767872383
details:
- id: '475688978969790418'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '247.93'
total_price_excl_tax_with_discount_base: '247.93'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:43.561Z'
updated_at: '2026-01-08T11:39:43.561Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:43.564Z'
updated_at: '2026-01-08T11:39:43.564Z'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
OnlyReturnsReceipts:
summary: Only returns receipts
value:
error: record not found
symbolic:
id: not_found
operationId: get_administration_id_documents_receipts_id
delete:
summary: Delete a receipts
description: Deletes a receipt.
tags:
- 'Documents: Receipts'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'200':
description: Status code
content:
application/json:
schema:
type: integer
examples:
DeletesTheReceipt:
summary: Deletes the receipt
value: 200
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
operationId: delete_administration_id_documents_receipts_id
patch:
summary: Update a receipt
description: Updates a receipt.
tags:
- 'Documents: Receipts'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
receipt:
type: object
unevaluatedProperties: false
properties:
contact_id:
$ref: '#/components/schemas/identifier'
description: '**Required**. Should be a valid contact id.'
reference:
type: string
description: '**Required**.'
date:
type: string
description: '**Required**.'
currency:
type: string
description: ISO three-character currency code, e.g. EUR or USD.
prices_are_incl_tax:
type:
- boolean
- string
origin:
type: string
description: Can be `api`, `upload`, `endpoint`, `si`, `si_local`, `si_peppol`, `email`, `moneybird_bv` or `mollie`.
details_attributes:
$ref: '#/components/schemas/details_attributes'
required: []
payment:
type: object
unevaluatedProperties: false
properties:
financial_account_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid financial account id.
required: []
required: []
examples:
UpdatesTheReceipt:
summary: Updates the receipt
value:
receipt:
reference: updated reference
UpdatesTheReceiptDetails:
summary: Updates the receipt details
value:
receipt:
details_attributes:
'0':
id: 475688974866711700
description: updated description
price: 20
responses:
'200':
description: Receipt updated
content:
application/json:
schema:
$ref: '#/components/schemas/receipt_response'
examples:
UpdatesTheReceipt:
summary: Updates the receipt
value:
id: '475688974604567576'
administration_id: 123
contact_id: '475688974580450325'
contact:
id: '475688974580450325'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:39.375Z'
updated_at: '2026-01-08T11:39:39.375Z'
version: 1767872379
sales_invoices_url: https://moneybird.dev/123/sales_invoices/cd42969a092c4682437850b0efe92163c76c0a7d7beea15766846e5fbce0d84c/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: updated reference
date: '2026-01-08'
due_date: null
entry_number: 1
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: true
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '247.93'
total_price_excl_tax_base: '247.93'
total_price_incl_tax: '300.0'
total_price_incl_tax_base: '300.0'
created_at: '2026-01-08T11:39:39.398Z'
updated_at: '2026-01-08T11:39:39.467Z'
version: 1767872379
details:
- id: '475688974605616153'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '247.93'
total_price_excl_tax_with_discount_base: '247.93'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:39.400Z'
updated_at: '2026-01-08T11:39:39.400Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:39.402Z'
updated_at: '2026-01-08T11:39:39.402Z'
- administration_id: 123
user_id: 17678722914505
action: document_updated
link_entity_id: null
link_entity_type: null
data:
changes:
reference:
- Lunch supermarket
- updated reference
updated_at:
- '2026-01-08T12:39:39.401+01:00'
- '2026-01-08T12:39:39.467+01:00'
created_at: '2026-01-08T11:39:39.470Z'
updated_at: '2026-01-08T11:39:39.470Z'
UpdatesTheReceiptDetails:
summary: Updates the receipt details
value:
id: '475688974864614501'
administration_id: 123
contact_id: '475688974839448674'
contact:
id: '475688974839448674'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:39.623Z'
updated_at: '2026-01-08T11:39:39.623Z'
version: 1767872379
sales_invoices_url: https://moneybird.dev/123/sales_invoices/fa55061b7cc7953b42096bc2763347bb6f5c48991f73d23ac51b18d06d9348df/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-01-08'
due_date: null
entry_number: 1
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: true
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '16.53'
total_price_excl_tax_base: '16.53'
total_price_incl_tax: '20.0'
total_price_incl_tax_base: '20.0'
created_at: '2026-01-08T11:39:39.647Z'
updated_at: '2026-01-08T11:39:39.724Z'
version: 1767872379
details:
- id: '475688974866711654'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: updated description
price: '20.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '16.53'
total_price_excl_tax_with_discount_base: '16.53'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:39.648Z'
updated_at: '2026-01-08T11:39:39.723Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:39.651Z'
updated_at: '2026-01-08T11:39:39.651Z'
- administration_id: 123
user_id: 17678722914505
action: document_updated
link_entity_id: null
link_entity_type: null
data:
changes:
total_price_excl_tax:
- '247.93'
- '16.53'
total_price_excl_tax_base:
- '247.93'
- '16.53'
total_price_incl_tax:
- '300.0'
- '20.0'
total_price_incl_tax_base:
- '300.0'
- '20.0'
cached_taxes:
- - tax_rate_id: '475688883332318348'
report_reference: NL/5b
payable: false
debit: '52.07'
credit: 0
- - tax_rate_id: '475688883332318348'
report_reference: NL/5b
payable: false
debit: '3.47'
credit: 0
updated_at:
- '2026-01-08T12:39:39.650+01:00'
- '2026-01-08T12:39:39.721+01:00'
created_at: '2026-01-08T11:39:39.725Z'
updated_at: '2026-01-08T11:39:39.725Z'
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: patch_administration_id_documents_receipts_id
/{administration_id}/documents/receipts/{receipt_id}/notes/{id}{format}:
delete:
summary: Destroys note from entity
description: Deletes a note from the receipt.
tags:
- 'Documents: Receipts'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: receipt_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Note deleted
'400':
$ref: '#/components/responses/400_bad_request'
operationId: delete_administration_id_documents_receipts_receipt_id_notes_id
/{administration_id}/documents/receipts/{receipt_id}/notes{format}:
post:
summary: Adds note to entity
description: Adds a note to the receipt.
tags:
- 'Documents: Receipts'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: receipt_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
note:
type: object
unevaluatedProperties: false
properties:
note:
type: string
description: '**Required**. Text for the note or to-do.'
todo:
type:
- boolean
- string
description: If `true` the note is a to-do.
assignee_id:
$ref: '#/components/schemas/identifier'
description: Assign to-do to user. Should be a valid user id. If assignee_id is provided the note will be a to-do.
required: []
required: []
examples:
CreateANote:
summary: Create a note
value:
note:
note: Text of the note
assignee_id: 475688978898487230
todo: true
responses:
'201':
description: Note created
content:
application/json:
schema:
$ref: '#/components/schemas/note_response'
examples:
CreateANote:
summary: Create a note
value:
id: '475688978915264458'
administration_id: 123
entity_id: '475688978841864112'
entity_type: Document
user_id: 17678722914505
assignee_id: '475688978898487240'
todo: true
note: Text of the note
completed_at: null
completed_by_id: null
todo_type: null
data: {}
created_at: '2026-01-08T11:39:43.509Z'
updated_at: '2026-01-08T11:39:43.509Z'
'400':
$ref: '#/components/responses/400_bad_request'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: post_administration_id_documents_receipts_receipt_id_notes
/{administration_id}/documents/receipts{format}:
get:
summary: List receipts
description: |-
Returns a paginated list of documents of this type in the administration.
The `filter` argument allows you to filter on the list of documents. Filters are a combination of keys and values,
separated by a comma: `key:value,key2:value2`. The most common filter method will be `period`: `period:this_month`.
Filtering works the same as in the web application, for more advanced examples, change the filtering in the web
application and learn from the resulting URI.
tags:
- 'Documents: Receipts'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
schema:
type: string
description: 'String terms, example: `key1:value1,key2:value2`.'
- name: new_filter
in: query
required: false
schema:
type: string
description: 'String terms, example: `key1:value1,key2:value2`.'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/per_page'
- name: exclude_new_general_journal_documents
in: query
required: false
schema:
type:
- boolean
- string
responses:
'200':
description: A list of receipts
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/receipt_response'
examples:
ReturnsPaginatedReceiptsOnPage2:
summary: Returns paginated receipts on page 2
value:
- id: '475688972653168121'
administration_id: 123
contact_id: '475688972497978834'
contact:
id: '475688972497978834'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:37.389Z'
updated_at: '2026-01-08T11:39:37.389Z'
version: 1767872377
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0240bda4c78b2974aa1071b9b9320f65114f467b5a110aea0e0d63eb636c746f/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-01-08'
due_date: null
entry_number: 4
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: true
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '247.93'
total_price_excl_tax_base: '247.93'
total_price_incl_tax: '300.0'
total_price_incl_tax_base: '300.0'
created_at: '2026-01-08T11:39:37.538Z'
updated_at: '2026-01-08T11:39:37.541Z'
version: 1767872377
details:
- id: '475688972655265274'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '247.93'
total_price_excl_tax_with_discount_base: '247.93'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:37.539Z'
updated_at: '2026-01-08T11:39:37.539Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:37.542Z'
updated_at: '2026-01-08T11:39:37.542Z'
ReturnsPaginatedReceiptsOnPage1:
summary: Returns paginated receipts on page 1
value:
- id: '475688973120833159'
administration_id: 123
contact_id: '475688972964595284'
contact:
id: '475688972964595284'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:37.834Z'
updated_at: '2026-01-08T11:39:37.834Z'
version: 1767872377
sales_invoices_url: https://moneybird.dev/123/sales_invoices/c129304bc00e4f5905a8babbeee8c3e7c924833146ce2e0b107ace4e49ba9ef1/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-01-08'
due_date: null
entry_number: 5
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: true
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '247.93'
total_price_excl_tax_base: '247.93'
total_price_incl_tax: '300.0'
total_price_incl_tax_base: '300.0'
created_at: '2026-01-08T11:39:37.984Z'
updated_at: '2026-01-08T11:39:37.987Z'
version: 1767872377
details:
- id: '475688973122930312'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '247.93'
total_price_excl_tax_with_discount_base: '247.93'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:37.985Z'
updated_at: '2026-01-08T11:39:37.985Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:37.988Z'
updated_at: '2026-01-08T11:39:37.988Z'
ReturnsAListOfReceipts:
summary: Returns a list of receipts
value:
- id: '475688973359908552'
administration_id: 123
contact_id: '475688973197379221'
contact:
id: '475688973197379221'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:38.056Z'
updated_at: '2026-01-08T11:39:38.056Z'
version: 1767872378
sales_invoices_url: https://moneybird.dev/123/sales_invoices/8294acceeb27f1c37c291d4fda9ecd8b2c19d6b2c1029296622b5fc5944f5425/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-01-08'
due_date: null
entry_number: 5
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: true
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '247.93'
total_price_excl_tax_base: '247.93'
total_price_incl_tax: '300.0'
total_price_incl_tax_base: '300.0'
created_at: '2026-01-08T11:39:38.211Z'
updated_at: '2026-01-08T11:39:38.214Z'
version: 1767872378
details:
- id: '475688973360957129'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '247.93'
total_price_excl_tax_with_discount_base: '247.93'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:38.213Z'
updated_at: '2026-01-08T11:39:38.213Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:38.216Z'
updated_at: '2026-01-08T11:39:38.216Z'
- id: '475688973327402684'
administration_id: 123
contact_id: '475688973197379221'
contact:
id: '475688973197379221'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:38.056Z'
updated_at: '2026-01-08T11:39:38.056Z'
version: 1767872378
sales_invoices_url: https://moneybird.dev/123/sales_invoices/8294acceeb27f1c37c291d4fda9ecd8b2c19d6b2c1029296622b5fc5944f5425/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-01-08'
due_date: null
entry_number: 4
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: true
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '247.93'
total_price_excl_tax_base: '247.93'
total_price_incl_tax: '300.0'
total_price_incl_tax_base: '300.0'
created_at: '2026-01-08T11:39:38.180Z'
updated_at: '2026-01-08T11:39:38.183Z'
version: 1767872378
details:
- id: '475688973328451261'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '247.93'
total_price_excl_tax_with_discount_base: '247.93'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:38.182Z'
updated_at: '2026-01-08T11:39:38.182Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:38.184Z'
updated_at: '2026-01-08T11:39:38.184Z'
- id: '475688973293848240'
administration_id: 123
contact_id: '475688973197379221'
contact:
id: '475688973197379221'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:38.056Z'
updated_at: '2026-01-08T11:39:38.056Z'
version: 1767872378
sales_invoices_url: https://moneybird.dev/123/sales_invoices/8294acceeb27f1c37c291d4fda9ecd8b2c19d6b2c1029296622b5fc5944f5425/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-01-08'
due_date: null
entry_number: 3
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: true
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '247.93'
total_price_excl_tax_base: '247.93'
total_price_incl_tax: '300.0'
total_price_incl_tax_base: '300.0'
created_at: '2026-01-08T11:39:38.148Z'
updated_at: '2026-01-08T11:39:38.152Z'
version: 1767872378
details:
- id: '475688973295945393'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '247.93'
total_price_excl_tax_with_discount_base: '247.93'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:38.150Z'
updated_at: '2026-01-08T11:39:38.150Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:38.153Z'
updated_at: '2026-01-08T11:39:38.153Z'
- id: '475688973223593624'
administration_id: 123
contact_id: '475688973197379221'
contact:
id: '475688973197379221'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:38.056Z'
updated_at: '2026-01-08T11:39:38.056Z'
version: 1767872378
sales_invoices_url: https://moneybird.dev/123/sales_invoices/8294acceeb27f1c37c291d4fda9ecd8b2c19d6b2c1029296622b5fc5944f5425/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-01-08'
due_date: null
entry_number: 1
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: true
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '247.93'
total_price_excl_tax_base: '247.93'
total_price_incl_tax: '300.0'
total_price_incl_tax_base: '300.0'
created_at: '2026-01-08T11:39:38.081Z'
updated_at: '2026-01-08T11:39:38.085Z'
version: 1767872378
details:
- id: '475688973225690777'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Delivery Apple iPad
price: '300.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '247.93'
total_price_excl_tax_with_discount_base: '247.93'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:38.083Z'
updated_at: '2026-01-08T11:39:38.083Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:38.086Z'
updated_at: '2026-01-08T11:39:38.086Z'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsAnErrorWhenTooManyReceiptsAreRequested:
summary: Returns an error when too many receipts are requested
value:
error: Per Page is too big
symbolic:
per_page: max
operationId: get_administration_id_documents_receipts
post:
summary: Create a new receipt
description: Creates a new receipt.
tags:
- 'Documents: Receipts'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
receipt:
type: object
unevaluatedProperties: false
properties:
contact_id:
$ref: '#/components/schemas/identifier'
description: '**Required**. Should be a valid contact id.'
reference:
type: string
description: '**Required**.'
date:
type: string
description: '**Required**.'
currency:
type: string
description: ISO three-character currency code, e.g. EUR or USD.
prices_are_incl_tax:
type:
- boolean
- string
origin:
type: string
description: Can be `api`, `upload`, `endpoint`, `si`, `si_local`, `si_peppol`, `email`, `moneybird_bv` or `mollie`.
details_attributes:
$ref: '#/components/schemas/details_attributes'
required: []
payment:
type: object
unevaluatedProperties: false
properties:
financial_account_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid financial account id.
required: []
required: []
examples:
CreatesTheReceipt:
summary: Creates the receipt
value:
receipt:
reference: foobar
contact_id: 475688975991834000
details_attributes:
'0':
description: Lunch
price: 20
tax_rate_id: 475688883332318340
ledger_account_id: 475688883240043650
responses:
'201':
description: Receipt created
content:
application/json:
schema:
$ref: '#/components/schemas/receipt_response'
examples:
CreatesTheReceipt:
summary: Creates the receipt
value:
id: '475688976090400151'
administration_id: 123
contact_id: '475688975991833980'
contact:
id: '475688975991833980'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:39:40.721Z'
updated_at: '2026-01-08T11:39:40.721Z'
version: 1767872380
sales_invoices_url: https://moneybird.dev/123/sales_invoices/c500cfc25e15417fc9cf22cd7d5766a7eb4a198ed64470595c291cd52e1df95f/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: foobar
date: '2026-01-08'
due_date: null
entry_number: 3
state: open
currency: EUR
exchange_rate: '1.0'
revenue_invoice: false
prices_are_incl_tax: true
origin: null
paid_at: null
tax_number: ''
total_price_excl_tax: '16.53'
total_price_excl_tax_base: '16.53'
total_price_incl_tax: '20.0'
total_price_incl_tax_base: '20.0'
created_at: '2026-01-08T11:39:40.815Z'
updated_at: '2026-01-08T11:39:40.818Z'
version: 1767872380
details:
- id: '475688976092497304'
administration_id: 123
tax_rate_id: '475688883332318348'
ledger_account_id: '475688883240043640'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Lunch
price: '20.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '16.53'
total_price_excl_tax_with_discount_base: '16.53'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-01-08T11:39:40.817Z'
updated_at: '2026-01-08T11:39:40.817Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:39:40.820Z'
updated_at: '2026-01-08T11:39:40.820Z'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
RequiresAllInput:
summary: Requires all input
value:
error: Receipt is required
symbolic:
receipt: required
'402':
$ref: '#/components/responses/402_payment_required'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: post_administration_id_documents_receipts
/{administration_id}/documents/typeless_documents/synchronization{format}:
get:
summary: List ids and versions of typeless documents
description: |-
Returns all documents in the administration. The list contains the document id and the version of the document.
Check if the version of the document is newer than the version you have stored locally, use the `POST`
variant for fetching documents with the given ids.
tags:
- 'Documents: Typeless documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
schema:
type: string
description: 'String terms, example: key1:value1,key2:value2.'
responses:
'200':
description: IDs and versions of records
content:
application/json:
schema:
type: array
items:
type: object
unevaluatedProperties: false
properties:
id:
type:
- integer
- string
version:
type:
- integer
- string
examples:
RetrievesAllIdsForSynchronization:
summary: Retrieves all ids for synchronization
value:
- id: '475689071792882801'
version: 1767872472
- id: '475689071802319987'
version: 1767872472
- id: '475689071811757173'
version: 1767872472
operationId: get_administration_id_documents_typeless_documents_synchronization
post:
summary: Fetch typeless documents with given ids
description: |-
Given a list of document ids, returns the document information belonging to the documents.
Returns a maximum of 100 documents, even if more ids are provided.
tags:
- 'Documents: Typeless documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
ids:
type: array
items:
type:
- integer
- string
required:
- ids
examples:
RetrievesDocumentsForGivenIds:
summary: Retrieves documents for given ids
value:
ids:
- 475689071901934700
- 475689071910323300
responses:
'200':
description: A list of typeless documents
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/typeless_document_response'
examples:
RetrievesDocumentsForGivenIds:
summary: Retrieves documents for given ids
value:
- id: '475689071901934730'
administration_id: 123
contact_id: null
contact: null
reference: '20130456'
date: '2026-01-08'
state: new
origin: null
created_at: '2026-01-08T11:41:12.188Z'
updated_at: '2026-01-08T11:41:12.188Z'
version: 1767872472
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:12.191Z'
updated_at: '2026-01-08T11:41:12.191Z'
- id: '475689071910323340'
administration_id: 123
contact_id: null
contact: null
reference: '20130456'
date: '2026-01-08'
state: new
origin: null
created_at: '2026-01-08T11:41:12.197Z'
updated_at: '2026-01-08T11:41:12.197Z'
version: 1767872472
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:12.199Z'
updated_at: '2026-01-08T11:41:12.199Z'
operationId: post_administration_id_documents_typeless_documents_synchronization
/{administration_id}/documents/typeless_documents/{id}/attachments/{attachment_id}/download{format}:
get:
summary: Download attachment
description: |-
Download the attachment. The response will be a redirect to a temporarily available URL
where the attachment can be downloaded. Use the `Location` header in the response
to download the attachment.
tags:
- 'Documents: Typeless documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: attachment_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'302':
description: Found
content:
text/plain:
schema:
type: string
examples:
DownloadsTheAttachment:
summary: Downloads the attachment
value: '{"message":"Use the Location header to download the attachment"}'
'404':
$ref: '#/components/responses/404_not_found'
operationId: get_administration_id_documents_typeless_documents_id_attachments_attachment_id_download
/{administration_id}/documents/typeless_documents/{id}/attachments/{attachment_id}{format}:
delete:
summary: Delete an attachment
description: Deletes an attachment of an attachable.
tags:
- 'Documents: Typeless documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: attachment_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Attachment deleted
'404':
$ref: '#/components/responses/404_not_found'
operationId: delete_administration_id_documents_typeless_documents_id_attachments_attachment_id
/{administration_id}/documents/typeless_documents/{id}/attachments{format}:
post:
summary: Add attachment to typeless document
description: Add an attachment to a typeless document.
tags:
- 'Documents: Typeless documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'200':
description: Status code
content:
application/json:
schema:
type: integer
examples:
UploadsAnAttachment:
summary: Uploads an attachment
value: 200
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: post_administration_id_documents_typeless_documents_id_attachments
/{administration_id}/documents/typeless_documents/{id}{format}:
get:
summary: Get a typeless document
description: Returns a typeless document by id.
tags:
- 'Documents: Typeless documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'200':
description: A typeless document
content:
application/json:
schema:
$ref: '#/components/schemas/typeless_document_response'
examples:
ReturnsTheWantedTypelessDocument:
summary: Returns the wanted typeless document
value:
id: '475689071708996702'
administration_id: 123
contact_id: null
contact: null
reference: '20130456'
date: '2026-01-08'
state: new
origin: null
created_at: '2026-01-08T11:41:12.005Z'
updated_at: '2026-01-08T11:41:12.005Z'
version: 1767872472
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:12.007Z'
updated_at: '2026-01-08T11:41:12.007Z'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
OnlyReturnsTypelessDocuments:
summary: Only returns typeless documents
value:
error: record not found
symbolic:
id: not_found
operationId: get_administration_id_documents_typeless_documents_id
delete:
summary: Delete a typeless document
description: Deletes a typeless document.
tags:
- 'Documents: Typeless documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'200':
description: Status code
content:
application/json:
schema:
type: integer
examples:
DeletesTheTypelessDocument:
summary: Deletes the typeless document
value: 200
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
operationId: delete_administration_id_documents_typeless_documents_id
/{administration_id}/documents/typeless_documents{format}:
get:
summary: Get typeless documents
description: |-
Returns a paginated list of documents of this type in the administration.
The `filter` argument allows you to filter on the list of documents. Filters are a combination of keys and values,
separated by a comma: `key:value,key2:value2`. The most common filter method will be `period`: `period:this_month`.
Filtering works the same as in the web application, for more advanced examples, change the filtering in the web
application and learn from the resulting URI.
tags:
- 'Documents: Typeless documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
schema:
type: string
description: 'String terms, example: `key1:value1,key2:value2`.'
- name: new_filter
in: query
required: false
schema:
type: string
description: 'String terms, example: `key1:value1,key2:value2`.'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/per_page'
- name: exclude_new_general_journal_documents
in: query
required: false
schema:
type:
- boolean
- string
responses:
'200':
description: A list of typeless documents
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/typeless_document_response'
examples:
ReturnsAListOfTypelessDocuments:
summary: Returns a list of typeless documents
value:
- id: '475689072262644959'
administration_id: 123
contact_id: null
contact: null
reference: '20130456'
date: '2026-01-08'
state: new
origin: null
created_at: '2026-01-08T11:41:12.533Z'
updated_at: '2026-01-08T11:41:12.533Z'
version: 1767872472
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:12.535Z'
updated_at: '2026-01-08T11:41:12.535Z'
- id: '475689072254256349'
administration_id: 123
contact_id: null
contact: null
reference: '20130456'
date: '2026-01-08'
state: new
origin: null
created_at: '2026-01-08T11:41:12.525Z'
updated_at: '2026-01-08T11:41:12.525Z'
version: 1767872472
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:12.527Z'
updated_at: '2026-01-08T11:41:12.527Z'
- id: '475689072245867739'
administration_id: 123
contact_id: null
contact: null
reference: '20130456'
date: '2026-01-08'
state: new
origin: null
created_at: '2026-01-08T11:41:12.516Z'
updated_at: '2026-01-08T11:41:12.516Z'
version: 1767872472
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:12.519Z'
updated_at: '2026-01-08T11:41:12.519Z'
- id: '475689072236430553'
administration_id: 123
contact_id: null
contact: null
reference: '20130456'
date: '2026-01-08'
state: new
origin: null
created_at: '2026-01-08T11:41:12.508Z'
updated_at: '2026-01-08T11:41:12.508Z'
version: 1767872472
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:12.510Z'
updated_at: '2026-01-08T11:41:12.510Z'
ReturnsPaginatedTypelessDocumentsOnPage2:
summary: Returns paginated typeless documents on page 2
value:
- id: '475689072471311631'
administration_id: 123
contact_id: null
contact: null
reference: '20130456'
date: '2026-01-08'
state: new
origin: null
created_at: '2026-01-08T11:41:12.731Z'
updated_at: '2026-01-08T11:41:12.731Z'
version: 1767872472
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:12.734Z'
updated_at: '2026-01-08T11:41:12.734Z'
ReturnsPaginatedTypelessDocumentsOnPage1:
summary: Returns paginated typeless documents on page 1
value:
- id: '475689072667395370'
administration_id: 123
contact_id: null
contact: null
reference: '20130456'
date: '2026-01-08'
state: new
origin: null
created_at: '2026-01-08T11:41:12.918Z'
updated_at: '2026-01-08T11:41:12.918Z'
version: 1767872472
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:12.920Z'
updated_at: '2026-01-08T11:41:12.920Z'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsAnErrorWhenTooManyTypelessDocumentsAreRequested:
summary: Returns an error when too many typeless documents are requested
value:
error: Per Page is too big
symbolic:
per_page: max
operationId: get_administration_id_documents_typeless_documents
post:
summary: Create a new typeless document
description: Creates a new typeless document.
tags:
- 'Documents: Typeless documents'
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
typeless_document:
type: object
unevaluatedProperties: false
properties:
reference:
type: string
date:
type: string
contact_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid contact id.
required: []
required: []
examples:
CreatesTheTypelessDocument:
summary: Creates the typeless document
value:
typeless_document:
reference: foobar
contact_id: 475689072972531100
responses:
'201':
description: Typeless document created
content:
application/json:
schema:
$ref: '#/components/schemas/typeless_document_response'
examples:
CreatesTheTypelessDocument:
summary: Creates the typeless document
value:
id: '475689073038591352'
administration_id: 123
contact_id: '475689072972531047'
contact:
id: '475689072972531047'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:41:13.210Z'
updated_at: '2026-01-08T11:41:13.210Z'
version: 1767872473
sales_invoices_url: https://moneybird.dev/123/sales_invoices/d852d83b31fe43dd33ccd9579fe121466314b01a8b446b5875d59dc1779b21a0/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: foobar
date: '2026-01-08'
state: new
origin: api
created_at: '2026-01-08T11:41:13.273Z'
updated_at: '2026-01-08T11:41:13.273Z'
version: 1767872473
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:41:13.275Z'
updated_at: '2026-01-08T11:41:13.275Z'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
RequiresAllInput:
summary: Requires all input
value:
error: Typeless Document is required
symbolic:
typeless_document: required
'402':
$ref: '#/components/responses/402_payment_required'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: post_administration_id_documents_typeless_documents
/{administration_id}/downloads/{id}/download{format}:
post:
summary: Download a file
description: |-
Returns a redirect to the actual file download URL.
The user must have the appropriate permissions to access the download based on its type.
The response is a 302 redirect. The client should follow the `Location` header to download the actual file. The link is valid for 30 seconds.
tags:
- Downloads
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
description: The download ID
responses:
'302':
description: Found
content:
text/plain:
schema:
type: string
examples:
RedirectsToTheDownloadLink:
summary: Redirects to the download link
value: '{"message":"Use the Location header to download the file"}'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns401WhenUserLacksPermission:
summary: Returns 401 when user lacks permission
value:
error: No access to [:sales_invoices]
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns404WhenDownloadDoesNotExist:
summary: Returns 404 when download does not exist
value:
error: 'Record not found for model name: Download'
operationId: post_administration_id_downloads_id_download
/{administration_id}/downloads{format}:
get:
summary: List all downloads
description: |-
Returns a paginated list of all downloads in the administration.
Only downloads that the authenticated user has permission to access will be returned,
based on the download type and the user's permissions within the administration.
tags:
- Downloads
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
- name: download_type
in: query
required: false
schema:
type: string
description: |
Filter downloads by type. Common download types include:
- `auditfile`
- `brugstaat`
- `export_ledger_account_report`
Check the `download_type` field in the response to see all available types.
examples:
ReturnsDownloadsByDownloadType:
summary: Returns downloads by download type
value: export_contacts
- name: downloaded
in: query
required: false
schema:
type:
- boolean
- string
examples:
ReturnsDownloadsByDownloadedStatus:
summary: Returns downloads by downloaded status
value: 'true'
- name: failed
in: query
required: false
schema:
type:
- boolean
- string
examples:
ReturnsDownloadsByFailedStatus:
summary: Returns downloads by failed status
value: 'true'
responses:
'200':
description: A list of downloads
headers:
Link:
$ref: '#/components/headers/link'
X-Total-Count:
$ref: '#/components/headers/x-total-count'
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/download_response'
examples:
ReturnsDownloadsByDownloadedStatus:
summary: Returns downloads by downloaded status
value:
- id: '475688899747775834'
user_id: null
download_type: export_sales_invoices
filename: Unknown
content_type: application/octet-stream
failed: false
downloaded: true
created_at: '2026-01-08T11:38:28.009Z'
updated_at: '2026-01-08T11:38:28.009Z'
ReturnsAllDownloadsOfAnAdministration:
summary: Returns all downloads of an administration
value:
- id: '475688899826419038'
user_id: null
download_type: export_documents
filename: Unknown
content_type: application/octet-stream
failed: true
downloaded: false
created_at: '2026-01-08T11:38:28.085Z'
updated_at: '2026-01-08T11:38:28.085Z'
- id: '475688899824321885'
user_id: null
download_type: export_sales_invoices
filename: Unknown
content_type: application/octet-stream
failed: false
downloaded: true
created_at: '2026-01-08T11:38:28.082Z'
updated_at: '2026-01-08T11:38:28.082Z'
- id: '475688899821176156'
user_id: null
download_type: export_contacts
filename: Unknown
content_type: application/octet-stream
failed: false
downloaded: false
created_at: '2026-01-08T11:38:28.078Z'
updated_at: '2026-01-08T11:38:28.078Z'
ReturnsDownloadsByDownloadType:
summary: Returns downloads by download type
value:
- id: '475688899918693727'
user_id: null
download_type: export_contacts
filename: Unknown
content_type: application/octet-stream
failed: false
downloaded: false
created_at: '2026-01-08T11:38:28.172Z'
updated_at: '2026-01-08T11:38:28.172Z'
ReturnsDownloadsByFailedStatus:
summary: Returns downloads by failed status
value:
- id: '475688899999434084'
user_id: null
download_type: export_documents
filename: Unknown
content_type: application/octet-stream
failed: true
downloaded: false
created_at: '2026-01-08T11:38:28.249Z'
updated_at: '2026-01-08T11:38:28.249Z'
ReturnsPaginatedDownloads:
summary: Returns paginated downloads
value:
- id: '475688900176643433'
user_id: null
download_type: export_sales_invoices
filename: Unknown
content_type: application/octet-stream
failed: false
downloaded: true
created_at: '2026-01-08T11:38:28.418Z'
updated_at: '2026-01-08T11:38:28.418Z'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsAnErrorWhenDownloadTypeIsInvalid:
summary: Returns an error when download type is invalid
value:
error: download_type does not have a valid value
ReturnsAnErrorWhenPerPageExceedsLimit:
summary: Returns an error when per page exceeds limit
value:
error: per_page does not have a valid value
operationId: get_administration_id_downloads
/{administration_id}/estimates/find_by_estimate_id/{estimate_id}{format}:
get:
summary: Get an estimate by estimate_id
description: Returns all information about an estimate with the given estimate id
tags:
- Estimates
parameters:
- $ref: '#/components/parameters/administration_id'
- name: estimate_id
in: path
required: true
schema:
type: string
description: Unique record identifier
example: 2025-0001
- $ref: '#/components/parameters/format'
responses:
'200':
description: An estimate
content:
application/json:
schema:
$ref: '#/components/schemas/estimate_response'
examples:
ReturnsEstimateByGivenEstimateId:
summary: Returns estimate by given estimate
value:
id: '475688910766212997'
administration_id: 123
contact_id: '475688910719027071'
contact:
id: '475688910719027071'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:38.472Z'
updated_at: '2026-01-08T11:38:38.472Z'
version: 1767872318
sales_invoices_url: https://moneybird.dev/123/sales_invoices/64c629edd29d7f01bdd78cc5c6876615dcfce97dd3f716f8ede358f12ce84568/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: '475688910732658562'
contact_person:
id: null
contact_id: '475688910719027071'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-01-08T11:38:38.485Z'
updated_at: '2026-01-08T11:38:38.485Z'
version: 1767872318
estimate_id: 2026-0001
estimate_sequence_id: '0001'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:38.518Z'
updated_at: '2026-01-08T11:38:38.576Z'
public_view_code: '523178'
public_view_code_expires_at: '2026-04-08T11:38:38.549Z'
version: 1767872318
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688910769358726'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:38.520Z'
updated_at: '2026-01-08T11:38:38.575Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/64c629edd29d7f01bdd78cc5c6876615dcfce97dd3f716f8ede358f12ce84568/82dc50152316b0447ec5d616fd4207316ee01cbcc52205968767397cdcb7b9b4/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:38.526Z'
updated_at: '2026-01-08T11:38:38.526Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com; janjanssen@dev.null.moneybird.net
email_message: |-
Geachte Jan Janssen,
Hierbij ontvangt u van ons een prijsopgave 2026-0001 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:38.583Z'
updated_at: '2026-01-08T11:38:38.583Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
RespondsWithA404CodeWhenEstimateDoesNotExist:
summary: Responds with a 404 code when estimate does not exist
value:
error: 'Estimate with estimate_id: 0 was not found'
symbolic:
estimate_id: not_found
operationId: get_administration_id_estimates_find_by_estimate_id_estimate_id
/{administration_id}/estimates/synchronization{format}:
get:
summary: List all ids and versions
description: |-
Returns all estimates in the administration. The list contains the id and version of the estimate.
If the version of the estimate is newer than the version you have stored locally, use the `POST`
variant to fetch estimates with the given ids.
tags:
- Estimates
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
schema:
type: string
examples:
RetrievesTheIdsForSynchronizationFilteredOnState:
summary: Retrieves the ids for synchronization filtered on state
value: state:open
responses:
'200':
description: IDs and versions of records
content:
application/json:
schema:
type: array
items:
type: object
unevaluatedProperties: false
properties:
id:
type:
- integer
- string
version:
type:
- integer
- string
examples:
RetrievesTheIdsForSynchronization:
summary: Retrieves the ids for synchronization
value:
- id: '475688900635919738'
version: 1767872308
- id: '475688900499604853'
version: 1767872308
RetrievesTheIdsForSynchronizationFilteredOnState:
summary: Retrieves the ids for synchronization filtered on state
value:
- id: '475688900794254725'
version: 1767872309
operationId: get_administration_id_estimates_synchronization
post:
summary: Fetch estimates with given ids
description: |-
Given a list of estimate ids, returns the estimate information belonging to the estimates.
Returns a maximum of 100 estimates, even if more ids are provided.
tags:
- Estimates
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
ids:
type: array
items:
type:
- integer
- string
required:
- ids
examples:
RetrievesEstimatesByGivenIds:
summary: Retrieves estimates by given ids
value:
ids:
- 475688906306619000
- 475688906399942300
responses:
'200':
description: A list of estimates
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/estimate_response'
examples:
RetrievesEstimatesByGivenIds:
summary: Retrieves estimates by given ids
value:
- id: '475688906306618988'
administration_id: 123
contact_id: '475688906260481638'
contact:
id: '475688906260481638'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:34.220Z'
updated_at: '2026-01-08T11:38:34.220Z'
version: 1767872314
sales_invoices_url: https://moneybird.dev/123/sales_invoices/e299dfae05e2c30b4014352582247b88e99ac12412a37418b314df785b012681/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: '475688906274113129'
contact_person:
id: null
contact_id: '475688906260481638'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-01-08T11:38:34.233Z'
updated_at: '2026-01-08T11:38:34.233Z'
version: 1767872314
estimate_id: 2026-0001
estimate_sequence_id: '0001'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:34.264Z'
updated_at: '2026-01-08T11:38:34.314Z'
public_view_code: '116354'
public_view_code_expires_at: '2026-04-08T11:38:34.290Z'
version: 1767872314
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688906308716141'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:34.266Z'
updated_at: '2026-01-08T11:38:34.312Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/e299dfae05e2c30b4014352582247b88e99ac12412a37418b314df785b012681/6102a6176ea4fe464f50bd2cbaba9706101ce6bee2ccc85b69ebaa54044917f8/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:34.271Z'
updated_at: '2026-01-08T11:38:34.271Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com; janjanssen@dev.null.moneybird.net
email_message: |-
Geachte Jan Janssen,
Hierbij ontvangt u van ons een prijsopgave 2026-0001 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:34.324Z'
updated_at: '2026-01-08T11:38:34.324Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '475688906399942257'
administration_id: 123
contact_id: '475688906260481638'
contact:
id: '475688906260481638'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:34.220Z'
updated_at: '2026-01-08T11:38:34.220Z'
version: 1767872314
sales_invoices_url: https://moneybird.dev/123/sales_invoices/e299dfae05e2c30b4014352582247b88e99ac12412a37418b314df785b012681/all
notes: []
custom_fields: []
contact_people:
- id: '475688906274113129'
contact_id: '475688906260481638'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-01-08T11:38:34.233Z'
updated_at: '2026-01-08T11:38:34.233Z'
version: 1767872314
archived: false
contact_person_id: null
contact_person: null
estimate_id: null
estimate_sequence_id: null
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: 2
state: draft
estimate_date: null
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: null
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:34.353Z'
updated_at: '2026-01-08T11:38:34.357Z'
public_view_code: null
public_view_code_expires_at: null
version: 1767872314
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688906402039410'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:34.355Z'
updated_at: '2026-01-08T11:38:34.355Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/e299dfae05e2c30b4014352582247b88e99ac12412a37418b314df785b012681/fecd9c18b431b1837ef4b913c3584dc97eb7e30864657b2c146da080a1e25525/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:34.359Z'
updated_at: '2026-01-08T11:38:34.359Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns400IfIdsParamIsMissing:
summary: Returns 400 if ids param is missing
value:
error: Ids is required
symbolic:
ids: required
operationId: post_administration_id_estimates_synchronization
/{administration_id}/estimates/{estimate_id}/attachments/{id}/download{format}:
get:
summary: Download attachment
description: |-
Download the attachment. The response will be a redirect to a temporarily available URL
where the attachment can be downloaded. Use the `Location` header in the response
to download the attachment.
tags:
- Estimates
parameters:
- $ref: '#/components/parameters/administration_id'
- name: estimate_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'302':
description: Found
content:
text/plain:
schema:
type: string
examples:
DownloadsTheAttachment:
summary: Downloads the attachment
value: '{"message":"Use the Location header to download the attachment"}'
'404':
$ref: '#/components/responses/404_not_found'
operationId: get_administration_id_estimates_estimate_id_attachments_id_download
/{administration_id}/estimates/{estimate_id}/attachments/{id}{format}:
delete:
summary: Delete an attachment
description: Deletes an attachment of an attachable.
tags:
- Estimates
parameters:
- $ref: '#/components/parameters/administration_id'
- name: estimate_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Attachment deleted
'404':
$ref: '#/components/responses/404_not_found'
operationId: delete_administration_id_estimates_estimate_id_attachments_id
/{administration_id}/estimates/{estimate_id}/notes/{id}{format}:
delete:
summary: Destroys note from entity
description: Deletes a note from the estimate.
tags:
- Estimates
parameters:
- $ref: '#/components/parameters/administration_id'
- name: estimate_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Note deleted
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns404IfTheIdIsWrong:
summary: Returns 404 if the id is wrong
value:
error: record not found
symbolic:
id: not_found
operationId: delete_administration_id_estimates_estimate_id_notes_id
/{administration_id}/estimates/{estimate_id}/notes{format}:
post:
summary: Adds note to entity
description: Adds a note to the estimate.
tags:
- Estimates
parameters:
- $ref: '#/components/parameters/administration_id'
- name: estimate_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
note:
type: object
unevaluatedProperties: false
properties:
note:
type: string
description: '**Required**. Text for the note or to-do.'
todo:
type:
- boolean
- string
description: If `true` the note is a to-do.
assignee_id:
type:
- integer
- string
description: Assign to-do to user. Should be a valid user id. If assignee_id is provided the note will be a to-do.
required: []
required: []
examples:
CreatesANote:
summary: Creates a note
value:
note:
note: A pending TODO
assignee_id: 475688907030136450
todo: true
responses:
'201':
description: Note created
content:
application/json:
schema:
$ref: '#/components/schemas/note_response'
examples:
CreatesANote:
summary: Creates a note
value:
id: '475688907051108000'
administration_id: 123
entity_id: '475688906955687577'
entity_type: Estimate
user_id: 17678722914505
assignee_id: '475688907030136478'
todo: true
note: A pending TODO
completed_at: null
completed_by_id: null
todo_type: null
data: {}
created_at: '2026-01-08T11:38:34.974Z'
updated_at: '2026-01-08T11:38:34.974Z'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns400IfTheEstimateDoesNotExist:
summary: Returns 400 if the estimate does not exist
value:
error: Entity is invalid; User has no permissions to notes for Estimate
symbolic:
entity: not_found
user: insufficient_permissions
'422':
description: Unprocessable entity
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/symbolic_error'
- $ref: '#/components/schemas/non_symbolic_error'
examples:
Returns422IfTheNoteIsInvalid:
summary: Returns 422 if the note is invalid
value:
error:
note:
- can't be blank
todo_type:
- can't be blank
details:
note:
- error: blank
todo_type:
- error: blank
operationId: post_administration_id_estimates_estimate_id_notes
/{administration_id}/estimates/{id}/attachments{format}:
post:
summary: Add attachment to estimate
description: Add an attachment to an estimate.
tags:
- Estimates
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'200':
description: Status code
content:
application/json:
schema:
type: integer
examples:
UploadsAnAttachment:
summary: Uploads an attachment
value: 200
'400':
$ref: '#/components/responses/400_bad_request'
'404':
$ref: '#/components/responses/404_not_found'
'422':
$ref: '#/components/responses/422_unprocessable_entity'
operationId: post_administration_id_estimates_id_attachments
/{administration_id}/estimates/{id}/bill_estimate{format}:
patch:
summary: Bills an estimate
description: An invoice is created based on the accepted estimate.
tags:
- Estimates
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
examples:
BillsAnAcceptedEstimate:
summary: Bills an accepted estimate
value: {}
BillsAnOpenEstimate:
summary: Bills an open estimate
value: {}
responses:
'200':
description: Estimate billed
content:
application/json:
schema:
$ref: '#/components/schemas/sales_invoice_response'
examples:
BillsAnAcceptedEstimate:
summary: Bills an accepted estimate
value:
id: '475688909455492916'
administration_id: 123
contact_id: '475688909146162979'
contact:
id: '475688909146162979'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:36.972Z'
updated_at: '2026-01-08T11:38:36.972Z'
version: 1767872316
sales_invoices_url: https://moneybird.dev/123/sales_invoices/1234d8e5b6d1e9e618a40aca68c2556e9eddf7f6838b70ff6c976a75829bcc7f/all
notes: []
custom_fields: []
contact_people:
- id: '475688909160843046'
contact_id: '475688909146162979'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-01-08T11:38:36.986Z'
updated_at: '2026-01-08T11:38:36.986Z'
version: 1767872316
archived: false
contact_person_id: null
contact_person: null
invoice_id: null
recurring_sales_invoice_id: null
subscription_id: null
workflow_id: '475688883620676750'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: 1
state: draft
invoice_date: null
due_date: '2026-01-22'
payment_conditions: We verzoeken u vriendelijk het bovenstaande bedrag van {document.total_price} voor {document.due_date} te voldoen op onze bankrekening onder vermelding van de omschrijving {document.payment_reference}. Voor vragen kunt u contact opnemen per e-mail.
payment_reference: null
short_payment_reference: null
reference: Project X
language: nl
currency: EUR
discount: '0.0'
original_sales_invoice_id: null
paused: false
paid_at: null
sent_at: null
created_at: '2026-01-08T11:38:37.267Z'
updated_at: '2026-01-08T11:38:37.272Z'
public_view_code: null
public_view_code_expires_at: null
version: 1767872317
details:
- id: '475688909458638645'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:37.270Z'
updated_at: '2026-01-08T11:38:37.270Z'
payments: []
total_paid: '0.0'
total_unpaid: '363.0'
total_unpaid_base: '363.0'
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
marked_dubious_on: null
marked_uncollectible_on: null
reminder_count: 0
next_reminder: null
original_estimate_id: '475688909295060782'
url: http://moneybird.dev/123/external/1234d8e5b6d1e9e618a40aca68c2556e9eddf7f6838b70ff6c976a75829bcc7f/69d8b61ab7b1568f1f41eed1c25d5047498c8fa30ce82717fd66badfb2c15c79/sales_invoice
payment_url: http://moneybird.dev/123/external/1234d8e5b6d1e9e618a40aca68c2556e9eddf7f6838b70ff6c976a75829bcc7f/69d8b61ab7b1568f1f41eed1c25d5047498c8fa30ce82717fd66badfb2c15c79/sales_invoice
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: sales_invoice_created_based_on_estimate
link_entity_id: null
link_entity_type: null
data:
original_estimate: 2026-0002
created_at: '2026-01-08T11:38:37.275Z'
updated_at: '2026-01-08T11:38:37.275Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
time_entries: []
BillsAnOpenEstimate:
summary: Bills an open estimate
value:
id: '475688910296450920'
administration_id: 123
contact_id: '475688910011238231'
contact:
id: '475688910011238231'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:37.797Z'
updated_at: '2026-01-08T11:38:37.797Z'
version: 1767872317
sales_invoices_url: https://moneybird.dev/123/sales_invoices/9bac6c2abf061814aee970b052e8a3de61ce8bb0c9b7ad6a91aeeb0766805fdf/all
notes: []
custom_fields: []
contact_people:
- id: '475688910025918298'
contact_id: '475688910011238231'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-01-08T11:38:37.811Z'
updated_at: '2026-01-08T11:38:37.811Z'
version: 1767872317
archived: false
contact_person_id: null
contact_person: null
invoice_id: null
recurring_sales_invoice_id: null
subscription_id: null
workflow_id: '475688883620676750'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: 1
state: draft
invoice_date: null
due_date: '2026-01-22'
payment_conditions: We verzoeken u vriendelijk het bovenstaande bedrag van {document.total_price} voor {document.due_date} te voldoen op onze bankrekening onder vermelding van de omschrijving {document.payment_reference}. Voor vragen kunt u contact opnemen per e-mail.
payment_reference: null
short_payment_reference: null
reference: Project X
language: nl
currency: EUR
discount: '0.0'
original_sales_invoice_id: null
paused: false
paid_at: null
sent_at: null
created_at: '2026-01-08T11:38:38.068Z'
updated_at: '2026-01-08T11:38:38.073Z'
public_view_code: null
public_view_code_expires_at: null
version: 1767872318
details:
- id: '475688910298548073'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:38.071Z'
updated_at: '2026-01-08T11:38:38.071Z'
payments: []
total_paid: '0.0'
total_unpaid: '363.0'
total_unpaid_base: '363.0'
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
marked_dubious_on: null
marked_uncollectible_on: null
reminder_count: 0
next_reminder: null
original_estimate_id: '475688910161184610'
url: http://moneybird.dev/123/external/9bac6c2abf061814aee970b052e8a3de61ce8bb0c9b7ad6a91aeeb0766805fdf/b6be3178242d0b44fa4dae1fabcee7add4b5f50a59b97cf2932eafe769ec487a/sales_invoice
payment_url: http://moneybird.dev/123/external/9bac6c2abf061814aee970b052e8a3de61ce8bb0c9b7ad6a91aeeb0766805fdf/b6be3178242d0b44fa4dae1fabcee7add4b5f50a59b97cf2932eafe769ec487a/sales_invoice
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: sales_invoice_created_based_on_estimate
link_entity_id: null
link_entity_type: null
data:
original_estimate: 2026-0002
created_at: '2026-01-08T11:38:38.076Z'
updated_at: '2026-01-08T11:38:38.076Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
time_entries: []
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
CanNotBillAnOpenEstimate:
summary: Can not bill an open estimate
value:
error: Invalid estimate state
symbolic:
id: state
'402':
description: Payment required
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Return402IfLimitIsReached:
summary: Return 402 if limit is reached
value:
error: creating sales invoices is limited
symbolic:
administration: limit_reached
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns404IfTheEstimateDoesNotExist:
summary: Returns 404 if the estimate does not exist
value:
error: record not found
symbolic:
id: not_found
operationId: patch_administration_id_estimates_id_bill_estimate
/{administration_id}/estimates/{id}/change_state{format}:
patch:
summary: Changes the state of an estimate
description: |-
Not every state change is allowed. e.g. open to billed is accepted, draft to open is not.
Note: this only changes the state and does not perform other actions like sending or billing the estimate.
tags:
- Estimates
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
state:
type: string
description: Can be accepted, rejected, open, late, billed or archived.
required:
- state
examples:
ChangesFromOpenToAccepted:
summary: Changes from open to accepted
value:
state: accepted
responses:
'200':
description: Estimate updated
content:
application/json:
schema:
$ref: '#/components/schemas/estimate_response'
examples:
ChangesFromOpenToAccepted:
summary: Changes from open to accepted
value:
id: '475688902463587790'
administration_id: 123
contact_id: '475688902306301379'
contact:
id: '475688902306301379'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:30.449Z'
updated_at: '2026-01-08T11:38:30.449Z'
version: 1767872310
sales_invoices_url: https://moneybird.dev/123/sales_invoices/ff5467f410eb21762b1627600812c0440666e3dcef09ca7bc74ed5094955e88f/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: null
contact_person: null
estimate_id: 2026-0002
estimate_sequence_id: '0002'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: accepted
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: '2026-01-08'
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:30.599Z'
updated_at: '2026-01-08T11:38:30.683Z'
public_view_code: '398679'
public_view_code_expires_at: '2026-04-08T11:38:30.628Z'
version: 1767872310
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688902465684943'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:30.601Z'
updated_at: '2026-01-08T11:38:30.653Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/ff5467f410eb21762b1627600812c0440666e3dcef09ca7bc74ed5094955e88f/f008c61158e65edd119bc4a0a0e02f0fb84c971c30e8bb5c94e9a2268b99daca/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:30.605Z'
updated_at: '2026-01-08T11:38:30.605Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com
email_message: |-
Geachte Foobar Holding B.V.,
Hierbij ontvangt u van ons een prijsopgave 2026-0002 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:30.661Z'
updated_at: '2026-01-08T11:38:30.661Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_mark_accepted
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:30.686Z'
updated_at: '2026-01-08T11:38:30.686Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsAnErrorIfEstimateCannotBeMarkedFromDraftToOpen:
summary: Returns an error if estimate cannot be marked from draft to open
value:
error: State is invalid
symbolic:
state: can_not_change_draft_to_open
Returns400IfTheStateChangeIsInvalid:
summary: Returns 400 if the state change is invalid
value:
error: State isn't an option
symbolic:
state: in
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns404IfTheEstimateDoesNotExist:
summary: Returns 404 if the estimate does not exist
value:
error: record not found
symbolic:
id: not_found
operationId: patch_administration_id_estimates_id_change_state
/{administration_id}/estimates/{id}/download_pdf{format}:
get:
summary: Download estimate PDF by id
description: Redirects to the download URL of the estimate as PDF. The link is valid for 30 seconds.
tags:
- Estimates
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
- name: media
in: query
required: false
schema:
type: string
description: In case you want to hide sender address and logo you can set this to 'stationery'.
responses:
'302':
description: Found
content:
text/plain:
schema:
type: string
examples:
ReturnsEstimateByGivenIdAsPdf:
summary: Returns estimate by given id as pdf
value: '"This resource has been moved temporarily to http://moneybird-storage:3100/b98e89811b589f91a1280d58dad34a627d2365e1229c3231a17047a4a5915d31/9f46ba29cf5f7a8f68529818e59c6ceceb4be252c03ec843fe51af5a01b6642f/download."'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns404WhenEstimateDoesNotExist:
summary: Returns 404 when estimate does not exist
value:
error: record not found
symbolic:
id: not_found
operationId: get_administration_id_estimates_id_download_pdf
/{administration_id}/estimates/{id}/send_estimate{format}:
patch:
summary: Sends an estimate
description: |-
You can provide a send method, email address and message. If you don't provide any arguments, the defaults
from the contact and workflow will be used.
tags:
- Estimates
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
estimate_sending:
type: object
unevaluatedProperties: false
properties:
delivery_method:
type: string
description: Can be `Email`, `Post` or `Manual`. Can be `Email`, `Simplerinvoicing`, `Peppol`, `Manual` or `Post`.
email_address:
type: string
email_message:
type: string
sign_online:
type:
- boolean
- string
required: []
sender:
type:
- boolean
- string
signature_output:
type: string
audit_trail:
type: string
ip_address:
type: string
required: []
examples:
SendsViaEmailIfContactHasDeliveryMethodSimplerinvoicing:
summary: Sends via email if contact has delivery method simplerinvoicing
value: {}
SendsAnEstimateWithAlternativeInformation:
summary: Sends an estimate with alternative information
value:
estimate_sending:
delivery_method: Email
email_address: alternative@example.com
email_message: Hi, this is an estimate with id {invoice_id}!
SendsAnEstimateByGivenId:
summary: Sends an estimate by given id
value: {}
responses:
'200':
description: Estimate updated
content:
application/json:
schema:
$ref: '#/components/schemas/estimate_response'
examples:
SendsViaEmailIfContactHasDeliveryMethodSimplerinvoicing:
summary: Sends via email if contact has delivery method simplerinvoicing
value:
id: '475688905247557168'
administration_id: 123
contact_id: '475688905212954157'
contact:
id: '475688905212954157'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Simplerinvoicing
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: '12345678'
si_identifier_type: NL:KVK
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:33.221Z'
updated_at: '2026-01-08T11:38:33.272Z'
version: 1767872313
sales_invoices_url: https://moneybird.dev/123/sales_invoices/a82e899c2f673f0737499a793b2aa28275f10760df1dfca54fdab5c67c03a783/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: null
contact_person: null
estimate_id: 2026-0001
estimate_sequence_id: '0001'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:33.254Z'
updated_at: '2026-01-08T11:38:33.333Z'
public_view_code: '484049'
public_view_code_expires_at: '2026-04-08T10:38:33.305Z'
version: 1767872313
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688905249654321'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:33.257Z'
updated_at: '2026-01-08T11:38:33.331Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/a82e899c2f673f0737499a793b2aa28275f10760df1dfca54fdab5c67c03a783/2afd0c25c21d65ee25460ec34465157dad5a2a4d1cda89803724407346878222/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:33.261Z'
updated_at: '2026-01-08T11:38:33.261Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com
email_message: |-
Geachte Foobar Holding B.V.,
Hierbij ontvangt u van ons een prijsopgave 2026-0001 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:33.340Z'
updated_at: '2026-01-08T11:38:33.340Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
SendsAnEstimateWithAlternativeInformation:
summary: Sends an estimate with alternative information
value:
id: '475688905715222092'
administration_id: 123
contact_id: '475688905678521929'
contact:
id: '475688905678521929'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:33.665Z'
updated_at: '2026-01-08T11:38:33.665Z'
version: 1767872313
sales_invoices_url: https://moneybird.dev/123/sales_invoices/06a454f647b28d789c315d1c6f207be149b217a832e47e00aae84cd7ab7f1566/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: null
contact_person: null
estimate_id: 2026-0001
estimate_sequence_id: '0001'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:33.700Z'
updated_at: '2026-01-08T11:38:33.766Z'
public_view_code: '963974'
public_view_code_expires_at: '2026-04-08T10:38:33.741Z'
version: 1767872313
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688905717319245'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:33.702Z'
updated_at: '2026-01-08T11:38:33.764Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/06a454f647b28d789c315d1c6f207be149b217a832e47e00aae84cd7ab7f1566/dc44efd19cc423d85524d12ff5a1210af0ba1a84ab1a3dc0b206f75c0fb57614/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:33.707Z'
updated_at: '2026-01-08T11:38:33.707Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: alternative@example.com
email_message: Hi, this is an estimate with id {invoice_id}!
created_at: '2026-01-08T11:38:33.772Z'
updated_at: '2026-01-08T11:38:33.772Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
SendsAnEstimateByGivenId:
summary: Sends an estimate by given id
value:
id: '475688906096903775'
administration_id: 123
contact_id: '475688906059155036'
contact:
id: '475688906059155036'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:34.028Z'
updated_at: '2026-01-08T11:38:34.028Z'
version: 1767872314
sales_invoices_url: https://moneybird.dev/123/sales_invoices/3326e75a2a0d5b550d3daff34e33658677ca96dc4256ccb9e8c6304a2fd4a771/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: null
contact_person: null
estimate_id: 2026-0001
estimate_sequence_id: '0001'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:34.064Z'
updated_at: '2026-01-08T11:38:34.137Z'
public_view_code: '755946'
public_view_code_expires_at: '2026-04-08T10:38:34.110Z'
version: 1767872314
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688906100049504'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:34.067Z'
updated_at: '2026-01-08T11:38:34.136Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/3326e75a2a0d5b550d3daff34e33658677ca96dc4256ccb9e8c6304a2fd4a771/11143015b05730a7a75b1ab84e7ef5ece8ab21173556d01b40cd129dd338d91a/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:34.072Z'
updated_at: '2026-01-08T11:38:34.072Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com
email_message: |-
Geachte Foobar Holding B.V.,
Hierbij ontvangt u van ons een prijsopgave 2026-0001 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:34.145Z'
updated_at: '2026-01-08T11:38:34.145Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsAnErrorIfDeliveryMethodSimplerinvoicingIsGiven:
summary: Returns an error if delivery method simplerinvoicing is given
value:
error: Delivery Method isn't an option
symbolic:
estimate_sending:
delivery_method: in
ReturnsErrorWhenSendingInvalidEstimateWithoutDetails:
summary: Returns error when sending invalid estimate without details
value:
error: details cannot be empty
symbolic:
estimate: details_cannot_be_empty
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns404IfTheEstimateDoesNotExist:
summary: Returns 404 if the estimate does not exist
value:
error: record not found
symbolic:
id: not_found
'422':
description: Unprocessable entity
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/symbolic_error'
- $ref: '#/components/schemas/non_symbolic_error'
examples:
ReturnsErrorWhenSendingEstimateToContactWithoutEmailAddress:
summary: Returns error when sending estimate to contact without email address
value:
error:
email_address:
- can't be blank
details:
email_address:
- error: blank
ReturnsErrorWhenSendingEstimateFromIdentityWithoutEmail:
summary: Returns error when sending estimate from identity without email
value:
error:
delivery_method:
- The sender address must contain an email address
details:
delivery_method:
- error: need_identity_email
operationId: patch_administration_id_estimates_id_send_estimate
/{administration_id}/estimates/{id}{format}:
get:
summary: Get an estimate by id
description: Returns all information about an estimate.
tags:
- Estimates
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
- name: includes
in: query
required: false
schema:
type: array
items:
type: string
responses:
'200':
description: A estimate
content:
application/json:
schema:
$ref: '#/components/schemas/estimate_response'
examples:
ReturnsEstimateByGivenId:
summary: Returns estimate by given id
value:
id: '475688903196542466'
administration_id: 123
contact_id: '475688903153550844'
contact:
id: '475688903153550844'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:31.257Z'
updated_at: '2026-01-08T11:38:31.257Z'
version: 1767872311
sales_invoices_url: https://moneybird.dev/123/sales_invoices/f597cdec63dedee2783976446abe22881d452bee5f1ac2dcc566113cb1ce593d/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: '475688903166133759'
contact_person:
id: null
contact_id: '475688903153550844'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-01-08T11:38:31.270Z'
updated_at: '2026-01-08T11:38:31.270Z'
version: 1767872311
estimate_id: 2026-0001
estimate_sequence_id: '0001'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:31.299Z'
updated_at: '2026-01-08T11:38:31.349Z'
public_view_code: '781839'
public_view_code_expires_at: '2026-04-08T11:38:31.325Z'
version: 1767872311
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688903198639619'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:31.301Z'
updated_at: '2026-01-08T11:38:31.348Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/f597cdec63dedee2783976446abe22881d452bee5f1ac2dcc566113cb1ce593d/5bef8496af53806cd968dc397dc482b38d33cacf990d359cbee4bdd33e66f75f/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:31.305Z'
updated_at: '2026-01-08T11:38:31.305Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com; janjanssen@dev.null.moneybird.net
email_message: |-
Geachte Jan Janssen,
Hierbij ontvangt u van ons een prijsopgave 2026-0001 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:31.357Z'
updated_at: '2026-01-08T11:38:31.357Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
RespondsWithA404CodeWhenEstimateDoesNotExist:
summary: Responds with a 404 code when estimate does not exist
value:
error: record not found
symbolic:
id: not_found
operationId: get_administration_id_estimates_id
patch:
summary: Updates an estimate
description: |-
When updating an estimate, provide only the attributes you want to update. The other
attributes will not be changed.
tags:
- Estimates
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
estimate:
type: object
unevaluatedProperties: false
properties:
contact_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid contact id.
contact_person_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid contact person id.
update_contact:
type:
- boolean
- string
document_style_id:
$ref: '#/components/schemas/identifier'
description: Default document style is used when value is not provided. Should be a valid document style id.
workflow_id:
$ref: '#/components/schemas/identifier'
description: If value is not provided, the workflow saved in the contact is used. If the contact doesn't have a default workflow, the administration's default workflow is used. Should be a valid workflow id.
reference:
type: string
estimate_date:
type: string
estimate_sequence_id:
type: string
remove_estimate_sequence_id:
type:
- boolean
- string
language:
type: string
description: Can be `bg`, `cs`, `da`, `de`, `el`, `en`, `es`, `fr`, `hr`, `hu`, `it`, `no`, `nl`, `nl-be`, `pl`, `pt`, `ro`, `sv`, `tr` or `uk`.
currency:
type: string
description: ISO three-character currency code, e.g. EUR or USD.
prices_are_incl_tax:
type:
- boolean
- string
show_tax:
type:
- boolean
- string
first_due_interval:
type: integer
pre_text:
type: string
post_text:
type: string
discount:
$ref: '#/components/schemas/number'
description: Discount percentage, e.g. 10,0%. Should be a number 0 <= *n* <= 100.
original_sales_invoice_id:
$ref: '#/components/schemas/identifier'
details_attributes:
$ref: '#/components/schemas/details_attributes'
custom_fields_attributes:
$ref: '#/components/schemas/custom_fields_attributes'
required: []
required: []
examples:
UpdatesTheDiscount:
summary: Updates the discount
value:
estimate:
reference: Updated Reference
UpdatesEstimateDetails:
summary: Updates estimate details
value:
estimate:
details_attributes:
'0':
description: Detail description
price: 99
amount: 1
tax_rate_id: 475688883320784000
ledger_account_id: 475688883240043650
'1':
id: 475688908575737600
_destroy: true
responses:
'200':
description: Estimate updated
content:
application/json:
schema:
$ref: '#/components/schemas/estimate_response'
examples:
UpdatesTheDiscount:
summary: Updates the discount
value:
id: '475688908317787890'
administration_id: 123
contact_id: '475688908269553388'
contact:
id: '475688908269553388'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:36.136Z'
updated_at: '2026-01-08T11:38:36.136Z'
version: 1767872316
sales_invoices_url: https://moneybird.dev/123/sales_invoices/38a6f9af3c57381a46ca5fffcb85458972cbd00f2696c00201ae32ce4f757e63/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: '475688908284233455'
contact_person:
id: null
contact_id: '475688908269553388'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-01-08T11:38:36.150Z'
updated_at: '2026-01-08T11:38:36.150Z'
version: 1767872316
estimate_id: 2026-0001
estimate_sequence_id: '0001'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Updated Reference
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:36.182Z'
updated_at: '2026-01-08T11:38:36.294Z'
public_view_code: '069742'
public_view_code_expires_at: '2026-04-08T11:38:36.224Z'
version: 1767872316
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688908319885043'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:36.184Z'
updated_at: '2026-01-08T11:38:36.249Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/38a6f9af3c57381a46ca5fffcb85458972cbd00f2696c00201ae32ce4f757e63/d0f46dca59f1cb5de0f641235cd6fa0cf540aaf7755829b7d3bf941e33c58811/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:36.189Z'
updated_at: '2026-01-08T11:38:36.189Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com; janjanssen@dev.null.moneybird.net
email_message: |-
Geachte Jan Janssen,
Hierbij ontvangt u van ons een prijsopgave 2026-0001 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:36.259Z'
updated_at: '2026-01-08T11:38:36.259Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_updated
link_entity_id: null
link_entity_type: null
data:
reference:
- Project X
- Updated Reference
updated_at:
- '2026-01-08T12:38:36.251+01:00'
- '2026-01-08T12:38:36.294+01:00'
created_at: '2026-01-08T11:38:36.296Z'
updated_at: '2026-01-08T11:38:36.296Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
UpdatesEstimateDetails:
summary: Updates estimate details
value:
id: '475688908573640448'
administration_id: 123
contact_id: '475688908527503098'
contact:
id: '475688908527503098'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:36.382Z'
updated_at: '2026-01-08T11:38:36.382Z'
version: 1767872316
sales_invoices_url: https://moneybird.dev/123/sales_invoices/dda328558db828ccebf3b332d03fa1cc3d194de1244888c2530ff910f7484ebf/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: '475688908541134589'
contact_person:
id: null
contact_id: '475688908527503098'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-01-08T11:38:36.395Z'
updated_at: '2026-01-08T11:38:36.395Z'
version: 1767872316
estimate_id: 2026-0001
estimate_sequence_id: '0001'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:36.426Z'
updated_at: '2026-01-08T11:38:36.547Z'
public_view_code: '945848'
public_view_code_expires_at: '2026-04-08T11:38:36.454Z'
version: 1767872316
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688908698420997'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: '1'
amount_decimal: '1.0'
description: Detail description
price: '99.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '99.0'
total_price_excl_tax_with_discount_base: '99.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:36.545Z'
updated_at: '2026-01-08T11:38:36.545Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '99.0'
total_price_excl_tax_base: '99.0'
total_price_incl_tax: '119.79'
total_price_incl_tax_base: '119.79'
total_discount: '0.0'
url: http://moneybird.dev/123/external/dda328558db828ccebf3b332d03fa1cc3d194de1244888c2530ff910f7484ebf/7d551388be9c2912bd0e353e5fb37e7899319ad886413c6508a1803631d0815c/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:36.433Z'
updated_at: '2026-01-08T11:38:36.433Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com; janjanssen@dev.null.moneybird.net
email_message: |-
Geachte Jan Janssen,
Hierbij ontvangt u van ons een prijsopgave 2026-0001 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:36.488Z'
updated_at: '2026-01-08T11:38:36.488Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_updated
link_entity_id: null
link_entity_type: null
data:
total_price_excl_tax:
- '300.0'
- '99.0'
total_price_excl_tax_base:
- '300.0'
- '99.0'
total_price_incl_tax:
- '363.0'
- '119.79'
total_price_incl_tax_base:
- '363.0'
- '119.79'
cached_taxes:
- - tax_rate_id: '475688883320784009'
report_reference: NL/1a
payable: true
debit: 0
credit: '63.0'
- - tax_rate_id: '475688883320784009'
report_reference: NL/1a
payable: true
debit: 0
credit: '20.79'
updated_at:
- '2026-01-08T12:38:36.480+01:00'
- '2026-01-08T12:38:36.536+01:00'
created_at: '2026-01-08T11:38:36.549Z'
updated_at: '2026-01-08T11:38:36.549Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '99.0'
taxable_amount_base: '99.0'
tax_amount: '20.79'
tax_amount_base: '20.79'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns400IfTheUpdateIsInvalid:
summary: Returns 400 if the update is invalid
value:
error: Estimate can't be nil
symbolic:
estimate: nils
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
RespondsWithA404CodeWhenEstimateDoesNotExist:
summary: Responds with a 404 code when estimate does not exist
value:
error: record not found
symbolic:
id: not_found
'422':
description: Unprocessable entity
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/symbolic_error'
- $ref: '#/components/schemas/non_symbolic_error'
examples:
Returns422IfTheUpdateIsInvalid:
summary: Returns 422 if the update is invalid
value:
error:
language:
- is not included in the list
details:
language:
- error: inclusion
value: abracadabra
operationId: patch_administration_id_estimates_id
delete:
summary: Deletes an estimate
description: Deletes an estimate.
tags:
- Estimates
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Estimate deleted
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns404IfTheEstimateDoesNotExist:
summary: Returns 404 if the estimate does not exist
value:
error: record not found
symbolic:
id: not_found
operationId: delete_administration_id_estimates_id
/{administration_id}/estimates{format}:
get:
summary: List all estimates
description: |-
Returns a paginated list of all estimates in the administration.
The `filter` argument allows you to filter on the list of estimates. Filters are a combination of keys and values,
separated by a comma: `period:this_year,state:all`. The available options for filtering are:
| **Filter** | **Type** | **Default** | **Description** |
| --- | --- | --- | --- |
| state | `String` | `all` | `all`, `draft`, `open`, `late`, `accepted`, `rejected`, `billed` or `archived` |
| period | `String` | `this_year` | This can either be the description of a period (`this_month`, `prev_month`, `next_month`, `this_quarter`, `prev_quarter`, `next_quarter`, `this_year`, `prev_year`, `next_year`) or a custom period (`201301..201302`, `20130101..20130131`) |
| contact_id | `Integer` | | Filters estimates by a single contact |
| workflow_id | `Integer` | | Filters estimates by a single workflow |
You can filter by multiple states at the same time as well. To do this, separate the state values by a pipe: `state:draft|scheduled`.
tags:
- Estimates
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
schema:
type: string
description: See table above for detailed options.
examples:
ReturnsAllEstimatesFilteredOnState:
summary: Returns all estimates filtered on state
value: state:open
ReturnsAllEstimatesFilteredOnPeriod:
summary: Returns all estimates filtered on period
value: period:this_month
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/per_page'
responses:
'200':
description: A list of estimates
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/estimate_response'
examples:
ReturnsAllEstimatesFilteredOnState:
summary: Returns all estimates filtered on state
value:
- id: '475688915269846214'
administration_id: 123
contact_id: '475688914968904883'
contact:
id: '475688914968904883'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:42.525Z'
updated_at: '2026-01-08T11:38:42.525Z'
version: 1767872322
sales_invoices_url: https://moneybird.dev/123/sales_invoices/eb8f94343792eff1b56faf6a5f7b6c77aa6ffd58651d2a39eee5d45eacc170c5/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: null
contact_person: null
estimate_id: 2026-0004
estimate_sequence_id: '0004'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:42.812Z'
updated_at: '2026-01-08T11:38:42.859Z'
public_view_code: '152237'
public_view_code_expires_at: '2026-04-08T11:38:42.838Z'
version: 1767872322
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688915271943367'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:42.814Z'
updated_at: '2026-01-08T11:38:42.858Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/eb8f94343792eff1b56faf6a5f7b6c77aa6ffd58651d2a39eee5d45eacc170c5/87ec0139b3e272a385c12ed9ee712f84132319452431903826580479182ea090/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:42.818Z'
updated_at: '2026-01-08T11:38:42.818Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com
email_message: |-
Geachte Foobar Holding B.V.,
Hierbij ontvangt u van ons een prijsopgave 2026-0004 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:42.867Z'
updated_at: '2026-01-08T11:38:42.867Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '475688915187008706'
administration_id: 123
contact_id: '475688914968904883'
contact:
id: '475688914968904883'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:42.525Z'
updated_at: '2026-01-08T11:38:42.525Z'
version: 1767872322
sales_invoices_url: https://moneybird.dev/123/sales_invoices/eb8f94343792eff1b56faf6a5f7b6c77aa6ffd58651d2a39eee5d45eacc170c5/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: null
contact_person: null
estimate_id: 2026-0003
estimate_sequence_id: '0003'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:42.733Z'
updated_at: '2026-01-08T11:38:42.780Z'
public_view_code: '079503'
public_view_code_expires_at: '2026-04-08T11:38:42.759Z'
version: 1767872322
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688915189105859'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:42.735Z'
updated_at: '2026-01-08T11:38:42.778Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/eb8f94343792eff1b56faf6a5f7b6c77aa6ffd58651d2a39eee5d45eacc170c5/c7afb7510c877d95b19673b2f33b64c0176f8d0b3e986fb445109cce504562b8/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:42.740Z'
updated_at: '2026-01-08T11:38:42.740Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com
email_message: |-
Geachte Foobar Holding B.V.,
Hierbij ontvangt u van ons een prijsopgave 2026-0003 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:42.785Z'
updated_at: '2026-01-08T11:38:42.785Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '475688915104171198'
administration_id: 123
contact_id: '475688914968904883'
contact:
id: '475688914968904883'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:42.525Z'
updated_at: '2026-01-08T11:38:42.525Z'
version: 1767872322
sales_invoices_url: https://moneybird.dev/123/sales_invoices/eb8f94343792eff1b56faf6a5f7b6c77aa6ffd58651d2a39eee5d45eacc170c5/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: null
contact_person: null
estimate_id: 2026-0002
estimate_sequence_id: '0002'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:42.655Z'
updated_at: '2026-01-08T11:38:42.700Z'
public_view_code: '453532'
public_view_code_expires_at: '2026-04-08T11:38:42.679Z'
version: 1767872322
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688915106268351'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:42.657Z'
updated_at: '2026-01-08T11:38:42.699Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/eb8f94343792eff1b56faf6a5f7b6c77aa6ffd58651d2a39eee5d45eacc170c5/45252d7daebb96492c4c6f438f9549902e27038e2be1f618bbc99d7695aa05f3/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:42.661Z'
updated_at: '2026-01-08T11:38:42.661Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com
email_message: |-
Geachte Foobar Holding B.V.,
Hierbij ontvangt u van ons een prijsopgave 2026-0002 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:42.706Z'
updated_at: '2026-01-08T11:38:42.706Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '475688915011896505'
administration_id: 123
contact_id: '475688914968904883'
contact:
id: '475688914968904883'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:42.525Z'
updated_at: '2026-01-08T11:38:42.525Z'
version: 1767872322
sales_invoices_url: https://moneybird.dev/123/sales_invoices/eb8f94343792eff1b56faf6a5f7b6c77aa6ffd58651d2a39eee5d45eacc170c5/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: '475688914981487798'
contact_person:
id: null
contact_id: '475688914968904883'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-01-08T11:38:42.537Z'
updated_at: '2026-01-08T11:38:42.537Z'
version: 1767872322
estimate_id: 2026-0001
estimate_sequence_id: '0001'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:42.566Z'
updated_at: '2026-01-08T11:38:42.619Z'
public_view_code: '507845'
public_view_code_expires_at: '2026-04-08T11:38:42.594Z'
version: 1767872322
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688915013993658'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:42.568Z'
updated_at: '2026-01-08T11:38:42.618Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/eb8f94343792eff1b56faf6a5f7b6c77aa6ffd58651d2a39eee5d45eacc170c5/d7232349fcde0f9f0139df3535c48fcde97a026acb83ad79501e924ae8388e4a/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:42.573Z'
updated_at: '2026-01-08T11:38:42.573Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com; janjanssen@dev.null.moneybird.net
email_message: |-
Geachte Jan Janssen,
Hierbij ontvangt u van ons een prijsopgave 2026-0001 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:42.626Z'
updated_at: '2026-01-08T11:38:42.626Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
ReturnsPaginatedEstimatesOnPage2:
summary: Returns paginated estimates on page 2
value:
- id: '475688916198884602'
administration_id: 123
contact_id: '475688915944080619'
contact:
id: '475688915944080619'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:43.455Z'
updated_at: '2026-01-08T11:38:43.455Z'
version: 1767872323
sales_invoices_url: https://moneybird.dev/123/sales_invoices/92207d9327f0047a1913713d38638c8ab0a561bb3404e11caf532366fe4d0f7b/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: null
contact_person: null
estimate_id: 2026-0003
estimate_sequence_id: '0003'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:43.698Z'
updated_at: '2026-01-08T11:38:43.751Z'
public_view_code: '375686'
public_view_code_expires_at: '2026-04-08T11:38:43.727Z'
version: 1767872323
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688916200981755'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:43.700Z'
updated_at: '2026-01-08T11:38:43.750Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/92207d9327f0047a1913713d38638c8ab0a561bb3404e11caf532366fe4d0f7b/904c7d3b10e60df0394900fa97ab937e1cf6251bf6eb8318d8ba086c07d4c822/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:43.705Z'
updated_at: '2026-01-08T11:38:43.705Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com
email_message: |-
Geachte Foobar Holding B.V.,
Hierbij ontvangt u van ons een prijsopgave 2026-0003 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:43.757Z'
updated_at: '2026-01-08T11:38:43.757Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
ReturnsAllEstimatesOfAnAdministration:
summary: Returns all estimates of an administration
value:
- id: '475688916823835930'
administration_id: 123
contact_id: '475688916493534471'
contact:
id: '475688916493534471'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:43.980Z'
updated_at: '2026-01-08T11:38:43.980Z'
version: 1767872323
sales_invoices_url: https://moneybird.dev/123/sales_invoices/9b0773e57e9bef5d4ef1e4dfb98d2bc39caf6812ea0d931b5781658d8784a29e/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: null
contact_person: null
estimate_id: 2026-0004
estimate_sequence_id: '0004'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:44.295Z'
updated_at: '2026-01-08T11:38:44.339Z'
public_view_code: '168635'
public_view_code_expires_at: '2026-04-08T11:38:44.319Z'
version: 1767872324
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688916825933083'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:44.297Z'
updated_at: '2026-01-08T11:38:44.338Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/9b0773e57e9bef5d4ef1e4dfb98d2bc39caf6812ea0d931b5781658d8784a29e/d09e673adaf77d880632dd183e43c65529e880de6badebf2ab75a32a0156471c/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:44.301Z'
updated_at: '2026-01-08T11:38:44.301Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com
email_message: |-
Geachte Foobar Holding B.V.,
Hierbij ontvangt u van ons een prijsopgave 2026-0004 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:44.345Z'
updated_at: '2026-01-08T11:38:44.345Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '475688916737852694'
administration_id: 123
contact_id: '475688916493534471'
contact:
id: '475688916493534471'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:43.980Z'
updated_at: '2026-01-08T11:38:43.980Z'
version: 1767872323
sales_invoices_url: https://moneybird.dev/123/sales_invoices/9b0773e57e9bef5d4ef1e4dfb98d2bc39caf6812ea0d931b5781658d8784a29e/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: null
contact_person: null
estimate_id: 2026-0003
estimate_sequence_id: '0003'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:44.213Z'
updated_at: '2026-01-08T11:38:44.261Z'
public_view_code: '220683'
public_view_code_expires_at: '2026-04-08T11:38:44.239Z'
version: 1767872324
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688916739949847'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:44.215Z'
updated_at: '2026-01-08T11:38:44.260Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/9b0773e57e9bef5d4ef1e4dfb98d2bc39caf6812ea0d931b5781658d8784a29e/ab93e202e7886e15ecc41cdc3b8dd8da1ae10f0456a958f574ac73eea16fbd85/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:44.219Z'
updated_at: '2026-01-08T11:38:44.219Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com
email_message: |-
Geachte Foobar Holding B.V.,
Hierbij ontvangt u van ons een prijsopgave 2026-0003 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:44.268Z'
updated_at: '2026-01-08T11:38:44.268Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '475688916649772306'
administration_id: 123
contact_id: '475688916493534471'
contact:
id: '475688916493534471'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:43.980Z'
updated_at: '2026-01-08T11:38:43.980Z'
version: 1767872323
sales_invoices_url: https://moneybird.dev/123/sales_invoices/9b0773e57e9bef5d4ef1e4dfb98d2bc39caf6812ea0d931b5781658d8784a29e/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: null
contact_person: null
estimate_id: 2026-0002
estimate_sequence_id: '0002'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:44.128Z'
updated_at: '2026-01-08T11:38:44.177Z'
public_view_code: '797390'
public_view_code_expires_at: '2026-04-08T11:38:44.154Z'
version: 1767872324
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688916651869459'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:44.131Z'
updated_at: '2026-01-08T11:38:44.176Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/9b0773e57e9bef5d4ef1e4dfb98d2bc39caf6812ea0d931b5781658d8784a29e/1ac6ceee61855e8780f04160eef2a4c6530b52dbb86b90dcc789e0b457602598/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:44.135Z'
updated_at: '2026-01-08T11:38:44.135Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com
email_message: |-
Geachte Foobar Holding B.V.,
Hierbij ontvangt u van ons een prijsopgave 2026-0002 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:44.183Z'
updated_at: '2026-01-08T11:38:44.183Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '475688916548060429'
administration_id: 123
contact_id: '475688916493534471'
contact:
id: '475688916493534471'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:43.980Z'
updated_at: '2026-01-08T11:38:43.980Z'
version: 1767872323
sales_invoices_url: https://moneybird.dev/123/sales_invoices/9b0773e57e9bef5d4ef1e4dfb98d2bc39caf6812ea0d931b5781658d8784a29e/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: '475688916509263114'
contact_person:
id: null
contact_id: '475688916493534471'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-01-08T11:38:43.994Z'
updated_at: '2026-01-08T11:38:43.994Z'
version: 1767872323
estimate_id: 2026-0001
estimate_sequence_id: '0001'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:44.031Z'
updated_at: '2026-01-08T11:38:44.090Z'
public_view_code: '489446'
public_view_code_expires_at: '2026-04-08T11:38:44.063Z'
version: 1767872324
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688916551206158'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:44.034Z'
updated_at: '2026-01-08T11:38:44.089Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/9b0773e57e9bef5d4ef1e4dfb98d2bc39caf6812ea0d931b5781658d8784a29e/a435be04497f42079a231b0978f39819161bbaed686add4520ebd3a56dd8eb37/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:44.039Z'
updated_at: '2026-01-08T11:38:44.039Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com; janjanssen@dev.null.moneybird.net
email_message: |-
Geachte Jan Janssen,
Hierbij ontvangt u van ons een prijsopgave 2026-0001 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:44.098Z'
updated_at: '2026-01-08T11:38:44.098Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
ReturnsPaginatedEstimatesOnPage1:
summary: Returns paginated estimates on page 1
value:
- id: '475688917358609718'
administration_id: 123
contact_id: '475688917036696867'
contact:
id: '475688917036696867'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:44.497Z'
updated_at: '2026-01-08T11:38:44.497Z'
version: 1767872324
sales_invoices_url: https://moneybird.dev/123/sales_invoices/ed7f6686fb9dd3d9e50a98f6f2678395e9872a854b6ca53f5a8ad7d16310628b/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: null
contact_person: null
estimate_id: 2026-0004
estimate_sequence_id: '0004'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:44.804Z'
updated_at: '2026-01-08T11:38:44.852Z'
public_view_code: '648662'
public_view_code_expires_at: '2026-04-08T11:38:44.829Z'
version: 1767872324
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688917360706871'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:44.806Z'
updated_at: '2026-01-08T11:38:44.851Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/ed7f6686fb9dd3d9e50a98f6f2678395e9872a854b6ca53f5a8ad7d16310628b/dcc48c9209efe2681c1ee08dfc5860737419d3f0ea68e86eaef1a99471381f6f/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:44.810Z'
updated_at: '2026-01-08T11:38:44.810Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com
email_message: |-
Geachte Foobar Holding B.V.,
Hierbij ontvangt u van ons een prijsopgave 2026-0004 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:44.859Z'
updated_at: '2026-01-08T11:38:44.859Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
ReturnsAllEstimatesFilteredOnPeriod:
summary: Returns all estimates filtered on period
value:
- id: '475688917878703442'
administration_id: 123
contact_id: '475688917555742015'
contact:
id: '475688917555742015'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:44.992Z'
updated_at: '2026-01-08T11:38:44.992Z'
version: 1767872324
sales_invoices_url: https://moneybird.dev/123/sales_invoices/e4e341cc8b2ce5a4a8377399da4ad29208f3a336182fd29aec2ca7bde7dddbac/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: null
contact_person: null
estimate_id: 2026-0004
estimate_sequence_id: '0004'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:45.300Z'
updated_at: '2026-01-08T11:38:45.348Z'
public_view_code: '571940'
public_view_code_expires_at: '2026-04-08T11:38:45.326Z'
version: 1767872325
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688917880800595'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:45.302Z'
updated_at: '2026-01-08T11:38:45.347Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/e4e341cc8b2ce5a4a8377399da4ad29208f3a336182fd29aec2ca7bde7dddbac/4a76533130d016248e1b93801f28d7b955addf7874ef84b8f9746500a5a5f3a5/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:45.306Z'
updated_at: '2026-01-08T11:38:45.306Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com
email_message: |-
Geachte Foobar Holding B.V.,
Hierbij ontvangt u van ons een prijsopgave 2026-0004 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:45.354Z'
updated_at: '2026-01-08T11:38:45.354Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '475688917789574478'
administration_id: 123
contact_id: '475688917555742015'
contact:
id: '475688917555742015'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:44.992Z'
updated_at: '2026-01-08T11:38:44.992Z'
version: 1767872324
sales_invoices_url: https://moneybird.dev/123/sales_invoices/e4e341cc8b2ce5a4a8377399da4ad29208f3a336182fd29aec2ca7bde7dddbac/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: null
contact_person: null
estimate_id: 2026-0003
estimate_sequence_id: '0003'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:45.215Z'
updated_at: '2026-01-08T11:38:45.264Z'
public_view_code: '296918'
public_view_code_expires_at: '2026-04-08T11:38:45.241Z'
version: 1767872325
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688917791671631'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:45.217Z'
updated_at: '2026-01-08T11:38:45.263Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/e4e341cc8b2ce5a4a8377399da4ad29208f3a336182fd29aec2ca7bde7dddbac/fa88d18f55e60de32b8cce127b4a97066d720a741b5014387bde4d63682266b3/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:45.222Z'
updated_at: '2026-01-08T11:38:45.222Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com
email_message: |-
Geachte Foobar Holding B.V.,
Hierbij ontvangt u van ons een prijsopgave 2026-0003 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:45.271Z'
updated_at: '2026-01-08T11:38:45.271Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '475688917700445514'
administration_id: 123
contact_id: '475688917555742015'
contact:
id: '475688917555742015'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:44.992Z'
updated_at: '2026-01-08T11:38:44.992Z'
version: 1767872324
sales_invoices_url: https://moneybird.dev/123/sales_invoices/e4e341cc8b2ce5a4a8377399da4ad29208f3a336182fd29aec2ca7bde7dddbac/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: null
contact_person: null
estimate_id: 2026-0002
estimate_sequence_id: '0002'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:45.130Z'
updated_at: '2026-01-08T11:38:45.178Z'
public_view_code: '677782'
public_view_code_expires_at: '2026-04-08T11:38:45.155Z'
version: 1767872325
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688917702542667'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:45.132Z'
updated_at: '2026-01-08T11:38:45.177Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/e4e341cc8b2ce5a4a8377399da4ad29208f3a336182fd29aec2ca7bde7dddbac/caa47e55d2747d96452034bc2fda906d93f0c333ff070588857efdcfcfe1310c/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:45.137Z'
updated_at: '2026-01-08T11:38:45.137Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com
email_message: |-
Geachte Foobar Holding B.V.,
Hierbij ontvangt u van ons een prijsopgave 2026-0002 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:45.185Z'
updated_at: '2026-01-08T11:38:45.185Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '475688917605025093'
administration_id: 123
contact_id: '475688917555742015'
contact:
id: '475688917555742015'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:44.992Z'
updated_at: '2026-01-08T11:38:44.992Z'
version: 1767872324
sales_invoices_url: https://moneybird.dev/123/sales_invoices/e4e341cc8b2ce5a4a8377399da4ad29208f3a336182fd29aec2ca7bde7dddbac/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: '475688917569373506'
contact_person:
id: null
contact_id: '475688917555742015'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-01-08T11:38:45.005Z'
updated_at: '2026-01-08T11:38:45.005Z'
version: 1767872325
estimate_id: 2026-0001
estimate_sequence_id: '0001'
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: null
state: open
estimate_date: '2026-01-08'
due_date: '2026-01-22'
reference: Project X
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: '2026-01-08'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:45.039Z'
updated_at: '2026-01-08T11:38:45.094Z'
public_view_code: '732939'
public_view_code_expires_at: '2026-04-08T11:38:45.069Z'
version: 1767872325
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '475688917607122246'
administration_id: 123
tax_rate_id: '475688883320784009'
ledger_account_id: '475688883240043641'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Project X
price: '300.0'
period: null
row_order: 1
total_price_excl_tax_with_discount: '300.0'
total_price_excl_tax_with_discount_base: '300.0'
tax_report_reference:
- NL/1a
mandatory_tax_text: null
created_at: '2026-01-08T11:38:45.041Z'
updated_at: '2026-01-08T11:38:45.093Z'
is_optional: false
is_selected: true
prices_are_incl_tax: false
total_price_excl_tax: '300.0'
total_price_excl_tax_base: '300.0'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
total_discount: '0.0'
url: http://moneybird.dev/123/external/e4e341cc8b2ce5a4a8377399da4ad29208f3a336182fd29aec2ca7bde7dddbac/d1f51ac7f209538be4137a90c606ad793012bf0ed75e8352cecfeda27f656a93/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:45.047Z'
updated_at: '2026-01-08T11:38:45.047Z'
- administration_id: 123
user_id: 17678722914505
action: estimate_send_email
link_entity_id: null
link_entity_type: null
data:
email_address: info@example.com; janjanssen@dev.null.moneybird.net
email_message: |-
Geachte Jan Janssen,
Hierbij ontvangt u van ons een prijsopgave 2026-0001 voor onze
diensten.
Met vriendelijke groet,
Parkietje B.V.
created_at: '2026-01-08T11:38:45.101Z'
updated_at: '2026-01-08T11:38:45.101Z'
tax_totals:
- tax_rate_id: '475688883320784009'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsAnErrorWhenTooManyEstimatesAreRequested:
summary: Returns an error when too many estimates are requested
value:
error: per_page does not have a valid value
operationId: get_administration_id_estimates
post:
summary: Creates a new estimate
description: Creates a new estimate.
tags:
- Estimates
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
application/*:
schema:
unevaluatedProperties: false
type: object
properties:
estimate:
type: object
unevaluatedProperties: false
properties:
contact_id:
type:
- integer
- string
description: Should be a valid contact id.
contact_person_id:
type:
- integer
- string
description: Should be a valid contact person id.
document_style_id:
type:
- integer
- string
description: Default document style is used when value is not provided. Should be a valid document style id.
workflow_id:
type:
- integer
- string
description: If value is not provided, the workflow saved in the contact is used. If the contact doesn't have a default workflow, the administration's default workflow is used. Should be a valid workflow id.
reference:
type: string
estimate_date:
type: string
estimate_sequence_id:
type: string
remove_estimate_sequence_id:
type:
- boolean
- string
language:
type: string
description: Can be `bg`, `cs`, `da`, `de`, `el`, `en`, `es`, `fr`, `hr`, `hu`, `it`, `no`, `nl`, `nl-be`, `pl`, `pt`, `ro`, `sv`, `tr` or `uk`.
currency:
type: string
description: ISO three-character currency code, e.g. EUR or USD.
prices_are_incl_tax:
type:
- boolean
- string
show_tax:
type:
- boolean
- string
first_due_interval:
type:
- integer
- string
pre_text:
type: string
post_text:
type: string
discount:
$ref: '#/components/schemas/number'
description: Discount percentage, e.g. 10,0%. Should be a number 0 <= *n* <= 100.
original_sales_invoice_id:
$ref: '#/components/schemas/identifier'
details_attributes:
$ref: '#/components/schemas/details_attributes'
custom_fields_attributes:
$ref: '#/components/schemas/custom_fields_attributes'
required: []
required: []
examples:
CreatesANewEstimate:
summary: Creates a new estimate
value:
estimate:
contact_id: 475688914147869800
reference: Estimate Reference
responses:
'201':
description: Estimate created
content:
application/json:
schema:
$ref: '#/components/schemas/estimate_response'
examples:
CreatesANewEstimate:
summary: Creates a new estimate
value:
id: '475688914297816197'
administration_id: 123
contact_id: '475688914147869818'
contact:
id: '475688914147869818'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: ''
lastname: ''
address1: Hoofdstraat 12
address2: ''
zipcode: 1234AB
city: Amsterdam
country: NL
phone: ''
delivery_method: Email
customer_id: '1'
tax_number: ''
chamber_of_commerce: ''
bank_account: ''
is_trusted: false
max_transfer_amount: null
attention: ''
email: info@example.com
email_ubl: true
send_invoices_to_attention: ''
send_invoices_to_email: info@example.com
send_estimates_to_attention: ''
send_estimates_to_email: info@example.com
sepa_active: false
sepa_iban: ''
sepa_iban_account_name: ''
sepa_bic: ''
sepa_mandate_id: ''
sepa_mandate_date: null
sepa_sequence_type: RCUR
credit_card_number: ''
credit_card_reference: ''
credit_card_type: null
tax_number_validated_at: null
tax_number_valid: null
invoice_workflow_id: null
estimate_workflow_id: null
si_identifier: ''
si_identifier_type: null
moneybird_payments_mandate: false
created_at: '2026-01-08T11:38:41.742Z'
updated_at: '2026-01-08T11:38:41.742Z'
version: 1767872321
sales_invoices_url: https://moneybird.dev/123/sales_invoices/8fdd04f57ff2aa43f41a65253dc0985ebea80b2a9fa641413d3bc4b4a2ad77fc/all
notes: []
custom_fields: []
contact_people:
- id: '475688914162549885'
contact_id: '475688914147869818'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-01-08T11:38:41.756Z'
updated_at: '2026-01-08T11:38:41.756Z'
version: 1767872321
archived: false
contact_person_id: null
contact_person: null
estimate_id: null
estimate_sequence_id: null
workflow_id: '475688883794740372'
document_style_id: '475688883890160792'
identity_id: '475688883057591402'
draft_id: 2
state: draft
estimate_date: null
due_date: '2026-01-22'
reference: Estimate Reference
language: nl
currency: EUR
exchange_rate: '1.0'
discount: '0.0'
original_estimate_id: null
show_tax: true
sign_online: true
sent_at: null
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-01-08T11:38:41.885Z'
updated_at: '2026-01-08T11:38:41.885Z'
public_view_code: null
public_view_code_expires_at: null
version: 1767872321
pre_text: |-
Geachte {recipient.name},
Hierbij ontvangt u van ons de prijsopgave {document.estimate_id} voor de onderstaande diensten.
post_text: |-
We hopen u hiermee voldoende geïnformeerd te hebben.
Met vriendelijke groet,
{company.company_name}
details: []
prices_are_incl_tax: false
total_price_excl_tax: '0.0'
total_price_excl_tax_base: '0.0'
total_price_incl_tax: '0.0'
total_price_incl_tax_base: '0.0'
total_discount: 0
url: http://moneybird.dev/123/external/8fdd04f57ff2aa43f41a65253dc0985ebea80b2a9fa641413d3bc4b4a2ad77fc/aa654d5983d25d73b3fc721006cb9dedc063ad5a6d23cb73225667b3549881cd/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: 17678722914505
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-01-08T11:38:41.889Z'
updated_at: '2026-01-08T11:38:41.889Z'
tax_totals: []
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns400IfTheCreationIsInvalid:
summary: Returns 400 if the creation is invalid
value:
error: Estimate can't be nil
symbolic:
estimate: nils
'422':
description: Unprocessable entity
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/symbolic_error'
- $ref: '#/components/schemas/non_symbolic_error'
examples:
Returns422IfTheCreationIsInvalid:
summary: Returns 422 if the creation is invalid
value:
error:
contact_id:
- can't be blank
language:
- is not included in the list
details:
contact_id:
- error: blank
language:
- error: inclusion
value: abracadabra
operationId: post_administration_id_estimates
/{administration_id}/external_sales_invoices/attachment{format}:
post:
summary: Create external sales invoice from attachment
description: Creates an external sales invoice from an attachment.
tags:
- External sales invoices
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'200':
$ref: '#/components/responses/status_code'
'400':
$ref: '#/components/responses/400_bad_request'
operationId: post_administration_id_external_sales_invoices_attachment
/{administration_id}/external_sales_invoices/{external_sales_invoice_id}/attachments/{id}/download{format}:
get:
summary: Download attachment
description: |-
Download the attachment. The response will be a redirect to a temporarily available URL
where the attachment can be downloaded. Use the `Location` header in the response
to download the attachment.
tags:
- External sales invoices
parameters:
- $ref: '#/components/parameters/administration_id'
- name: external_sales_invoice_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'302':
description: Found
content:
text/plain:
schema:
type: string
examples:
DownloadsTheAttachment:
summary: Downloads the attachment
value: |
We strongly recommend that you use a secure HTTPS endpoint for receiving payload from Moneybird.
If you use unencrypted HTTP, anyone on the network may be able to listen in on sensitive information like contacts and invoices.