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-20260814-745d6b04d8
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: Task lists
description: |-
Task lists help you organize and track work within an administration. They contain
groups of tasks that can be assigned to users and tracked for completion.
- name: Task list templates
description: |-
Task list templates are reusable blueprints for creating task lists with predefined
groups and tasks.
- 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.
For a full list of available events and event groups, see the [webhook events documentation](https://developer.moneybird.com/webhooks/events).
- 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
security:
- bearerAuth: []
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:
ValidatesThatAUserHasAccessToMultipleAdministrationsViaDifferentWays:
summary: Validates that a user has access to multiple administrations via different ways
value:
- id: '178669891468521646'
name: Administratie
language: nl
currency: EUR
country: NL
time_zone: Europe/Amsterdam
access: accountant_company
suspended: false
period_locked_until: null
period_start_date: '2026-01-01'
- id: 123
name: Parkietje B.V.
language: nl
currency: EUR
country: NL
time_zone: Europe/Amsterdam
access: user
suspended: false
period_locked_until: null
period_start_date: '2026-01-01'
ReturnAListOfAdministrationsThatUserHasAccessTo:
summary: Return a list of administrations that user has access to
value:
- id: '178669891495239542'
name: Administratie
language: nl
currency: EUR
country: NL
time_zone: Europe/Amsterdam
access: user
suspended: false
period_locked_until: null
period_start_date: '2026-01-01'
- id: 123
name: Parkietje B.V.
language: nl
currency: EUR
country: NL
time_zone: Europe/Amsterdam
access: user
suspended: false
period_locked_until: null
period_start_date: '2026-01-01'
ReturnsAccessTypeUserWhenHavingDirectAccessToTheAdministration:
summary: Returns access type user when having direct access to the administration
value:
- id: '17866989154369781'
name: Parkietje B.V.
language: nl
currency: EUR
country: NL
time_zone: Europe/Amsterdam
access: user
suspended: false
period_locked_until: null
period_start_date: '2026-01-01'
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.
### Required scope(s)
`documents`
tags:
- Assets
security:
- bearerAuth:
- 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:
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-08-14'
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-08-14'
reason: out_of_use
externally_booked: false
asset_id: '495430063966127905'
reinvestment_reserve_sale: null
'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}/reinvestment_reserve_purchase{format}:
post:
summary: Create a reinvestment reserve purchase
description: |-
Records that part of the asset's purchase value is funded from the
reinvestment reserve ("herinvesteringsreserve"). The amount cannot exceed
the asset's depreciatable value (purchase value minus residual value), and
the asset's purchase date may not lie in the locked period.
### Required scope(s)
`documents`
tags:
- Assets
security:
- bearerAuth:
- 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:
type: object
unevaluatedProperties: false
properties:
amount:
$ref: '#/components/schemas/number'
description: The amount taken from the reinvestment reserve.
required:
- amount
examples:
CreatesAReinvestmentReservePurchase:
summary: Creates a reinvestment reserve purchase
value:
amount: 100
responses:
'201':
description: A reinvestment reserve purchase
content:
application/json:
schema:
$ref: '#/components/schemas/reinvestment_reserve_purchase_response'
examples:
CreatesAReinvestmentReservePurchase:
summary: Creates a reinvestment reserve purchase
value:
id: '495430066411407349'
amount: '100.0'
date: '2026-03-01'
asset_id: '495430065998268362'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA400IfTheAmountIsMissing:
summary: Returns a 400 if the amount is missing
value:
error: Amount is missing, Amount does not have a valid value
ReturnsA400IfTheAmountIsNegative:
summary: Returns a 400 if the amount is negative
value:
error: Amount 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:
ReturnsA422IfTheAmountExceedsTheDepreciatableValue:
summary: Returns a 422 if the amount exceeds the depreciatable value
value:
error:
amount:
- cannot exceed the purchase value minus the residual value
- cannot exceed the available reinvestment reserve
details:
amount:
- error: exceeds_depreciatable_value
- error: exceeds_available_reserve
operationId: post_administration_id_assets_id_reinvestment_reserve_purchase
delete:
summary: Delete a reinvestment reserve purchase
description: |-
Removes the reinvestment reserve purchase from the asset.
### Required scope(s)
`documents`
tags:
- Assets
security:
- bearerAuth:
- documents
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Reinvestment reserve purchase deleted
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA404IfTheAssetHasNoReinvestmentReservePurchase:
summary: Returns a 404 if the asset has no reinvestment reserve purchase
value:
error: Not Found
ReturnsA404IfTheAssetDoesNotExist:
summary: Returns a 404 if the asset does not exist
value:
error: 'Record not found for model name: asset'
operationId: delete_administration_id_assets_id_reinvestment_reserve_purchase
/{administration_id}/assets/{id}/reinvestment_reserve_sale{format}:
post:
summary: Create a reinvestment reserve sale
description: |-
Books the book result of the asset's disposal to the reinvestment reserve
("herinvesteringsreserve"). Requires the asset to have a disposal already,
and the disposal date may not lie in the locked period.
### Required scope(s)
`documents`
tags:
- Assets
security:
- bearerAuth:
- 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:
type: object
unevaluatedProperties: false
properties:
amount:
$ref: '#/components/schemas/number'
description: The amount of the book result booked to the reinvestment reserve.
required:
- amount
examples:
CreatesAReinvestmentReserveSale:
summary: Creates a reinvestment reserve sale
value:
amount: 100
responses:
'201':
description: A reinvestment reserve sale
content:
application/json:
schema:
$ref: '#/components/schemas/reinvestment_reserve_sale_response'
examples:
CreatesAReinvestmentReserveSale:
summary: Creates a reinvestment reserve sale
value:
id: '495430061050037801'
amount: '100.0'
date: '2026-08-14'
disposal_id: '495430061021726241'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsA400IfTheAmountIsMissing:
summary: Returns a 400 if the amount is missing
value:
error: Amount is missing, Amount does not have a valid value
ReturnsA400IfTheAmountIsNegative:
summary: Returns a 400 if the amount is negative
value:
error: Amount 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:
ReturnsA422IfTheAssetHasNoDisposal:
summary: Returns a 422 if the asset has no disposal
value:
error: Asset has no disposal
operationId: post_administration_id_assets_id_reinvestment_reserve_sale
delete:
summary: Delete a reinvestment reserve sale
description: |-
Removes the reinvestment reserve sale from the asset's disposal.
### Required scope(s)
`documents`
tags:
- Assets
security:
- bearerAuth:
- documents
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Reinvestment reserve sale 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'
ReturnsA404IfTheAssetHasNoDisposal:
summary: Returns a 404 if the asset has no disposal
value:
error: Not Found
ReturnsA404IfTheAssetSDisposalHasNoReinvestmentReserveSale:
summary: Returns a 404 if the asset's disposal has no reinvestment reserve sale
value:
error: Not Found
operationId: delete_administration_id_assets_id_reinvestment_reserve_sale
/{administration_id}/assets/{id}/sources/{source_id}{format}:
delete:
summary: Delete a source
description: |-
Deletes a source from an asset. Does not delete the detail or the asset
### Required scope(s)
`documents`
tags:
- Assets
security:
- bearerAuth:
- documents
parameters:
- $ref: '#/components/parameters/administration_id'
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- name: source_id
in: path
required: true
schema:
$ref: '#/components/schemas/identifier'
- $ref: '#/components/parameters/format'
responses:
'204':
description: Source 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'
ReturnsA404IfTheSourceDoesNotExist:
summary: Returns a 404 if the source does not exist
value:
error: 'Record not found for model name: Source'
operationId: delete_administration_id_assets_id_sources_source_id
/{administration_id}/assets/{id}/sources{format}:
post:
summary: Add a source to an asset
description: |-
Adds a detail or general journal document entry as a source to an asset.
The booking must have the same ledger account as the asset.
### Required scope(s)
`documents`
tags:
- Assets
security:
- bearerAuth:
- 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:
type: object
unevaluatedProperties: false
oneOf:
- required:
- detail_id
properties:
detail_id:
$ref: '#/components/schemas/identifier'
- required:
- general_journal_document_entry_id
properties:
general_journal_document_entry_id:
$ref: '#/components/schemas/identifier'
examples:
CreatesANewDetailSource:
summary: Creates a new detail source
value:
detail_id: 495430077850322050
CreatesANewGeneralJournalDocumentSource:
summary: Creates a new general journal document source
value:
general_journal_document_entry_id: 495430080556696960
responses:
'201':
description: A detail that is added as a source to an asset
content:
application/json:
schema:
$ref: '#/components/schemas/source_response'
examples:
CreatesANewDetailSource:
summary: Creates a new detail source
value:
id: '495430077865002110'
asset_id: '495430077451863121'
detail_id: '495430077850322045'
CreatesANewGeneralJournalDocumentSource:
summary: Creates a new general journal document source
value:
id: '495430080569279892'
asset_id: '495430080163480935'
general_journal_document_entry_id: '495430080556696979'
'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
ReturnsA400IfTheGeneralJournalDocumentEntryIdIsNotAnInteger:
summary: Returns a 400 if the general journal document entry id is not an integer
value:
error: general_journal_document_entry_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:
booking:
- The ledger account of the source must be equal to the ledger account of the asset
details:
booking:
- error: not_equal_to_asset_ledger_account
ReturnsA422IfTheEntryHasADifferentLedgerAccountThanTheAsset:
summary: Returns a 422 if the entry has a different ledger account than the asset
value:
error:
booking:
- The ledger account of the source must be equal to the ledger account of the asset
details:
booking:
- 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.
### Required scope(s)
`documents`
tags:
- Assets
security:
- bearerAuth:
- 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:
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-08-14'
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-08-14'
amount: '-10.0'
description: some description
externally_booked: true
asset_id: '495430072999610016'
'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.
### Required scope(s)
`documents`
tags:
- Assets
security:
- bearerAuth:
- 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:
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-08-14'
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-08-14'
amount: '-12145.67'
description: null
externally_booked: false
asset_id: '495430071509583369'
'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
- must be after the last arbitrary depreciation
details:
date:
- error: cannot_be_before_purchase_date
- error: after_arbitrary_changes
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.
### Required scope(s)
`documents`
tags:
- Assets
security:
- bearerAuth:
- 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:
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-08-14'
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-08-14'
amount: '-12145.67'
description: some description
externally_booked: false
asset_id: '495430059245438328'
'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
- must be after the last arbitrary depreciation
details:
date:
- error: cannot_be_before_purchase_date
- error: after_arbitrary_changes
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.
### Required scope(s)
`documents`
tags:
- Assets
security:
- bearerAuth:
- 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:
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-08-14'
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-08-14'
amount: '-10.0'
description: some description
externally_booked: true
asset_id: '495430075218397063'
'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.
### Required scope(s)
`documents`
tags:
- Assets
security:
- bearerAuth:
- documents
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:
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
ReturnsA422IfTheAssetHasNoValueChangePlan:
summary: Returns a 422 if the asset has no value change plan
value:
error: Asset has no value change plan
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.
### Required scope(s)
`documents`
tags:
- Assets
security:
- bearerAuth:
- 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: An asset
content:
application/json:
schema:
$ref: '#/components/schemas/asset_response'
examples:
ReturnsTheAsset:
summary: Returns the asset
value:
id: '495430062546355868'
ledger_account_id: '495430062541112987'
name: Asset 1
purchase_date: '2026-03-01'
purchase_value: '12345.67'
calculated_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: '2026-04-01'
amount: '-50.0'
description: Value change 1
externally_booked: false
asset_id: '495430062546355868'
- type: arbitrary
date: '2026-05-01'
amount: '-50.0'
description: Value change 2
externally_booked: false
asset_id: '495430062546355868'
- type: arbitrary
date: '2026-06-01'
amount: '-50.0'
description: Value change 3
externally_booked: false
asset_id: '495430062546355868'
- type: arbitrary
date: '2026-07-01'
amount: '-50.0'
description: Value change 4
externally_booked: false
asset_id: '495430062546355868'
sources: []
reinvestment_reserve_purchase: null
ExposesCalculatedPurchaseValueReducedByTheAppliedReinvestmentReservePurchase:
summary: Exposes calculated purchase value reduced by the applied reinvestment reserve purchase
value:
id: '495430063067498189'
ledger_account_id: '495430063061206732'
name: Asset 1
purchase_date: '2026-03-01'
purchase_value: '1000.0'
calculated_purchase_value: '700.0'
current_value: '700.0'
value_change_plan: null
disposal: null
value_changes: []
sources: []
reinvestment_reserve_purchase:
id: '495430063082178255'
amount: '300.0'
date: '2026-03-01'
asset_id: '495430063067498189'
ReturnsTheAssetWithADisposal:
summary: Returns the asset with a disposal
value:
id: '495430063130412760'
ledger_account_id: '495430063124121303'
name: Asset 1
purchase_date: '2020-08-14'
purchase_value: '12345.67'
calculated_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-08-14'
reason: out_of_use
externally_booked: false
asset_id: '495430063130412760'
reinvestment_reserve_sale: null
value_changes:
- type: manual
date: '2026-08-14'
amount: '-12345.67'
description: Depreciation
externally_booked: false
asset_id: '495430063130412760'
sources: []
reinvestment_reserve_purchase: null
'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.
### Required scope(s)
`documents`
tags:
- Assets
security:
- bearerAuth:
- 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:
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: 495430065823156160
purchase_date: '2026-08-14'
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: '495430064892020573'
ledger_account_id: '495430064885729116'
name: New Name
purchase_date: '2026-03-01'
purchase_value: '12345.67'
calculated_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: '2026-04-01'
amount: '-50.0'
description: Value change 1
externally_booked: false
asset_id: '495430064892020573'
- type: arbitrary
date: '2026-05-01'
amount: '-50.0'
description: Value change 2
externally_booked: false
asset_id: '495430064892020573'
- type: arbitrary
date: '2026-06-01'
amount: '-50.0'
description: Value change 3
externally_booked: false
asset_id: '495430064892020573'
- type: arbitrary
date: '2026-07-01'
amount: '-50.0'
description: Value change 4
externally_booked: false
asset_id: '495430064892020573'
sources: []
reinvestment_reserve_purchase: null
AllowsUpdatingEveryAttributeOfAPlannedAsset:
summary: Allows updating every attribute of a planned asset
value:
id: '495430065833641911'
ledger_account_id: '495430065823156149'
name: New Name
purchase_date: '2026-08-14'
purchase_value: '10000.0'
calculated_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: []
reinvestment_reserve_purchase: null
'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.
### Required scope(s)
`documents`
tags:
- Assets
security:
- bearerAuth:
- documents
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.
### Required scope(s)
`documents`
tags:
- Assets
security:
- bearerAuth:
- documents
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: '495430082211350052'
- name: active
in: query
required: false
schema:
type:
- boolean
- string
default: true
description: Whether to include only active assets
examples:
ReturnsAListOfAllAssets:
summary: Returns a list of all 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:
ReturnsAListOfActiveAssets:
summary: Returns a list of active assets
value:
- id: '495430080598640023'
ledger_account_id: '495430080592348566'
name: Asset 1
purchase_date: '2026-03-01'
purchase_value: '12345.67'
calculated_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: '2026-04-01'
amount: '-50.0'
description: Value change 1
externally_booked: false
asset_id: '495430080598640023'
- type: arbitrary
date: '2026-05-01'
amount: '-50.0'
description: Value change 2
externally_booked: false
asset_id: '495430080598640023'
- type: arbitrary
date: '2026-06-01'
amount: '-50.0'
description: Value change 3
externally_booked: false
asset_id: '495430080598640023'
- type: arbitrary
date: '2026-07-01'
amount: '-50.0'
description: Value change 4
externally_booked: false
asset_id: '495430080598640023'
sources: []
reinvestment_reserve_purchase: null
ReturnsAListOfAssetsFilteredByLedgerAccount:
summary: Returns a list of assets filtered by ledger account
value:
- id: '495430082217641509'
ledger_account_id: '495430082211350052'
name: Asset 3
purchase_date: '2026-03-01'
purchase_value: '12345.67'
calculated_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: '2026-04-01'
amount: '-50.0'
description: Value change 1
externally_booked: false
asset_id: '495430082217641509'
- type: arbitrary
date: '2026-05-01'
amount: '-50.0'
description: Value change 2
externally_booked: false
asset_id: '495430082217641509'
- type: arbitrary
date: '2026-06-01'
amount: '-50.0'
description: Value change 3
externally_booked: false
asset_id: '495430082217641509'
- type: arbitrary
date: '2026-07-01'
amount: '-50.0'
description: Value change 4
externally_booked: false
asset_id: '495430082217641509'
sources: []
reinvestment_reserve_purchase: null
ReturnsAListOfAllAssets:
summary: Returns a list of all assets
value:
- id: '495430082652800591'
ledger_account_id: '495430082646509134'
name: Asset 1
purchase_date: '2026-03-01'
purchase_value: '12345.67'
calculated_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: '2026-04-01'
amount: '-50.0'
description: Value change 1
externally_booked: false
asset_id: '495430082652800591'
- type: arbitrary
date: '2026-05-01'
amount: '-50.0'
description: Value change 2
externally_booked: false
asset_id: '495430082652800591'
- type: arbitrary
date: '2026-06-01'
amount: '-50.0'
description: Value change 3
externally_booked: false
asset_id: '495430082652800591'
- type: arbitrary
date: '2026-07-01'
amount: '-50.0'
description: Value change 4
externally_booked: false
asset_id: '495430082652800591'
sources: []
reinvestment_reserve_purchase: null
- id: '495430083052308091'
ledger_account_id: '495430083047065210'
name: Asset 2
purchase_date: '2020-08-14'
purchase_value: '12345.67'
calculated_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-08-14'
reason: out_of_use
externally_booked: false
asset_id: '495430083052308091'
reinvestment_reserve_sale: null
value_changes:
- type: manual
date: '2026-08-14'
amount: '-12345.67'
description: Depreciation
externally_booked: false
asset_id: '495430083052308091'
sources: []
reinvestment_reserve_purchase: null
ReturnsAPaginatedListOfAssets:
summary: Returns a paginated list of assets
value:
- id: '495430083899557570'
ledger_account_id: '495430083894314689'
name: Asset 2
purchase_date: '2020-08-14'
purchase_value: '12345.67'
calculated_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-08-14'
reason: out_of_use
externally_booked: false
asset_id: '495430083899557570'
reinvestment_reserve_sale: null
value_changes:
- type: manual
date: '2026-08-14'
amount: '-12345.67'
description: Depreciation
externally_booked: false
asset_id: '495430083899557570'
sources: []
reinvestment_reserve_purchase: null
operationId: get_administration_id_assets
post:
summary: Create a new asset
description: |-
Creates a new asset.
### Required scope(s)
`documents`
tags:
- Assets
security:
- bearerAuth:
- documents
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: 495430064761997100
purchase_date: '2026-08-14'
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: '495430064773531476'
ledger_account_id: '495430064761997139'
name: Test Asset
purchase_date: '2026-08-14'
purchase_value: '1000.0'
calculated_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: []
reinvestment_reserve_purchase: null
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
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
ReturnsA400IfTheRequestWhenParametersAreMissing:
summary: Returns a 400 if the request when parameters are missing
value:
error: asset[name] is missing
'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
### Required scope(s)
Any of: `estimates`, `sales_invoices`, `documents`, `bank` or `settings`
tags:
- Contacts
security:
- bearerAuth:
- estimates
- bearerAuth:
- sales_invoices
- bearerAuth:
- documents
- bearerAuth:
- bank
- bearerAuth:
- settings
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: '495429922328675409'
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
direct_debit: false
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-08-14T09:13:34.224Z'
updated_at: '2026-08-14T09:13:34.241Z'
version: 1786698814
sales_invoices_url: https://moneybird.dev/123/sales_invoices/cffbab171eded55b0380277d9c1fdadec5dac349e1fca682d9635c3a30eaf5c1/all
notes: []
custom_fields: []
contact_people:
- id: '495429922331821139'
contact_id: '495429922328675409'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:34.228Z'
updated_at: '2026-08-14T09:13:34.228Z'
version: 1786698814
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:34.235Z'
updated_at: '2026-08-14T09:13:34.235Z'
'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.
### Required scope(s)
Any of: `estimates`, `sales_invoices`, `documents`, `bank` or `settings`
tags:
- Contacts
security:
- bearerAuth:
- estimates
- bearerAuth:
- sales_invoices
- bearerAuth:
- documents
- bearerAuth:
- bank
- bearerAuth:
- settings
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
description: |-
Filters are `key:value` terms separated by commas (e.g. `first_name:henk,contact_type:company`). Any filter you pass replaces the defaults below entirely, so include every key you need. Available filters:
| **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` |
schema:
type: string
examples:
AllowsFilteringByFirstname:
summary: Allows filtering by firstname
value: first_name:piet
ReturnsAllContactsCreatedAfterGivenDatetime:
summary: Returns all contacts created after given datetime
value: created_after:2026-08-13 09:13:35 UTC
ReturnsOnlyContactsUpdatedAfterGivenDatetime:
summary: Returns only contacts updated after given datetime
value: updated_after:2026-08-14 09:13:40 UTC
- name: query
in: query
required: false
description: Free-text search across name, contact people, email, phone, customer id, tax number, chamber of commerce, IBAN, and address fields.
schema:
type: string
- 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: '495429923917268370'
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-2
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
direct_debit: false
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-08-14T09:13:35.739Z'
updated_at: '2026-08-14T09:13:35.742Z'
version: 1786698815
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000002/all
notes: []
custom_fields: []
contact_people: []
archived: false
events: []
ReturnsAllContactsCreatedAfterGivenDatetime:
summary: Returns all contacts created after given datetime
value:
- id: '495429923967600022'
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
direct_debit: false
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-08-14T09:13:35.787Z'
updated_at: '2026-08-14T09:13:35.806Z'
version: 1786698815
sales_invoices_url: https://moneybird.dev/123/sales_invoices/09ed26df1217ad6cf3f7bd590c75289fbae876c5c8bb011927885a16b6029777/all
notes: []
custom_fields: []
contact_people:
- id: '495429923972842904'
contact_id: '495429923967600022'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:35.792Z'
updated_at: '2026-08-14T09:13:35.792Z'
version: 1786698815
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:35.799Z'
updated_at: '2026-08-14T09:13:35.799Z'
- id: '495429923995911581'
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
direct_debit: false
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-08-14T09:13:35.814Z'
updated_at: '2026-08-14T09:13:35.814Z'
version: 1786698815
sales_invoices_url: https://moneybird.dev/123/sales_invoices/2cbc0fa3b19c716a78f99ba52c7b4cb786c90454124fd924f2110d06bfa70652/all
notes: []
custom_fields: []
contact_people:
- id: '495429924000105887'
contact_id: '495429923995911581'
administration_id: 123
firstname: John
lastname: Doe
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:35.818Z'
updated_at: '2026-08-14T09:13:35.818Z'
version: 1786698815
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:35.825Z'
updated_at: '2026-08-14T09:13:35.825Z'
- id: '495429924014785955'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:13:35.832Z'
updated_at: '2026-08-14T09:13:35.832Z'
version: 1786698815
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: '495429924066166182'
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
direct_debit: false
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-08-14T09:13:35.881Z'
updated_at: '2026-08-14T09:14:40.926Z'
version: 1786698880
sales_invoices_url: https://moneybird.dev/123/sales_invoices/e6a343f1e66b1568760d60fb7abb8021258db4525b07242cd5e2432a522a9a0f/all
notes: []
custom_fields: []
contact_people:
- id: '495429924070360488'
contact_id: '495429924066166182'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:35.885Z'
updated_at: '2026-08-14T09:13:35.885Z'
version: 1786698815
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:35.892Z'
updated_at: '2026-08-14T09:13:35.892Z'
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.
### Required scope(s)
Any of: `estimates`, `sales_invoices`, `documents`, `bank` or `settings`
tags:
- Contacts
security:
- bearerAuth:
- estimates
- bearerAuth:
- sales_invoices
- bearerAuth:
- documents
- bearerAuth:
- bank
- bearerAuth:
- settings
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
description: Comma-separated `key:value` filter terms. Same syntax as `GET /contacts/filter` — see that operation's description for the available keys.
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: '495429927054607379'
version: 1786698818
ReturnAListOfIdSAndVersionIdS:
summary: Return a list of id's and version id's
value:
- id: '495429927091307543'
version: 1786698818
- id: '495429927118570526'
version: 1786698818
operationId: get_administration_id_contacts_synchronization
post:
summary: Fetch contacts with given ids
x-query: true
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.
### Required scope(s)
Any of: `estimates`, `sales_invoices`, `documents`, `bank` or `settings`
tags:
- Contacts
security:
- bearerAuth:
- estimates
- bearerAuth:
- sales_invoices
- bearerAuth:
- documents
- bearerAuth:
- bank
- bearerAuth:
- settings
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:
- 495429930133226750
- 495429930156295400
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: '495429930133226750'
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
direct_debit: false
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-08-14T09:13:41.667Z'
updated_at: '2026-08-14T09:13:41.667Z'
version: 1786698821
sales_invoices_url: https://moneybird.dev/123/sales_invoices/04b657173cccc18f5e288e3801fbb849c2be5c1058f53cdd62bb552c05cb9feb/all
notes: []
custom_fields: []
contact_people:
- id: '495429930136372480'
contact_id: '495429930133226750'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:41.671Z'
updated_at: '2026-08-14T09:13:41.671Z'
version: 1786698821
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:41.676Z'
updated_at: '2026-08-14T09:13:41.676Z'
- id: '495429930156295430'
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: '4'
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
direct_debit: false
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-08-14T09:13:41.689Z'
updated_at: '2026-08-14T09:13:41.689Z'
version: 1786698821
sales_invoices_url: https://moneybird.dev/123/sales_invoices/77938fb84bdd6760739cbac02bc08e7f41eb08e6b06ecc56845b23ad2923d700/all
notes: []
custom_fields: []
contact_people:
- id: '495429930159441160'
contact_id: '495429930156295430'
administration_id: 123
firstname: Mark
lastname: van Vliet
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:41.693Z'
updated_at: '2026-08-14T09:13:41.693Z'
version: 1786698821
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:41.699Z'
updated_at: '2026-08-14T09:13:41.699Z'
'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.
### Required scope(s)
Any of: `estimates`, `sales_invoices`, `documents`, `bank` or `settings`
tags:
- Contacts
security:
- bearerAuth:
- estimates
- bearerAuth:
- sales_invoices
- bearerAuth:
- documents
- bearerAuth:
- bank
- bearerAuth:
- settings
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: '495429924159489465'
contact_id: '495429924156343735'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:35.971Z'
updated_at: '2026-08-14T09:13:35.971Z'
version: 1786698815
'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.
### Required scope(s)
Any of: `estimates`, `sales_invoices`, `documents`, `bank` or `settings`
tags:
- Contacts
security:
- bearerAuth:
- estimates
- bearerAuth:
- sales_invoices
- bearerAuth:
- documents
- bearerAuth:
- bank
- bearerAuth:
- settings
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: '495429924529636871'
contact_id: '495429924525442565'
administration_id: 123
firstname: John
lastname: Doe
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:36.323Z'
updated_at: '2026-08-14T09:13:36.365Z'
version: 1786698816
'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.
### Required scope(s)
Any of: `estimates`, `sales_invoices`, `documents`, `bank` or `settings`
tags:
- Contacts
security:
- bearerAuth:
- estimates
- bearerAuth:
- sales_invoices
- bearerAuth:
- documents
- bearerAuth:
- bank
- bearerAuth:
- settings
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`.
### Required scope(s)
Any of: `estimates`, `sales_invoices`, `documents`, `bank` or `settings`
tags:
- Contacts
security:
- bearerAuth:
- estimates
- bearerAuth:
- sales_invoices
- bearerAuth:
- documents
- bearerAuth:
- bank
- bearerAuth:
- settings
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: '495429930254861594'
contact_id: '495429930207675661'
administration_id: 123
firstname: John
lastname: Doe
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:41.784Z'
updated_at: '2026-08-14T09:13:41.784Z'
version: 1786698821
CreateANewContactPersonWithAllParams:
summary: Create a new contact person with all params
value:
id: '495429930397467961'
contact_id: '495429930352379180'
administration_id: 123
firstname: John
lastname: Doe
phone: '123456789'
email: johndoe@moneybird.com
department: Sales
created_at: '2026-08-14T09:13:41.920Z'
updated_at: '2026-08-14T09:13:41.920Z'
version: 1786698821
'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.
### Required scope(s)
`sales_invoices` and `settings`
tags:
- Contacts
security:
- bearerAuth:
- sales_invoices
- settings
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: 495429925214357100
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/zICBpl9yYWlsc4KkZGF0YdlFNDk1NDI5ODUyMzE1MjU1OTA5IDQ5NTQyOTkyNTAxMTk4MTkzNyA0OTU0Mjk4NTI2OTI3NDMyNzUKICAgICAgYWR5ZW4go2V4cMcLB85qkVFAzjSKj-QA--46498bbd7d9351eaaf188932ce73ea1b416b4de1
RequestsANewMoneybirdPaymentsMandateUrlWithACustomWorkflowId:
summary: Requests a new moneybird payments mandate url with a custom workflow id
value:
url: https://moneybird.dev/123/mandate_requests/zICBpl9yYWlsc4KkZGF0YdlXNDk1NDI5ODUyMzE1MjU1OTA5IDQ5NTQyOTkyNTEzNjc2MjUwNyA0OTU0Mjk4NTI2OTI3NDMyNzUKICAgICAgYWR5ZW4gNDk1NDI5OTI1MjE0MzU3MTQ4o2V4cMcLB85qkVFAzjuW3V4A--541a47dc2f0ded1926d12ee322af7c049e87692a
'403':
$ref: '#/components/responses/4XX_open_error'
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.
### Required scope(s)
Any of: `estimates`, `sales_invoices`, `documents`, `bank` or `settings`
tags:
- Contacts
security:
- bearerAuth:
- estimates
- bearerAuth:
- sales_invoices
- bearerAuth:
- documents
- bearerAuth:
- bank
- bearerAuth:
- settings
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:
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'
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'
'403':
$ref: '#/components/responses/4XX_open_error'
'404':
$ref: '#/components/responses/4XX_open_error'
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.
### Required scope(s)
`sales_invoices` and `settings`
tags:
- Contacts
security:
- bearerAuth:
- sales_invoices
- settings
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: 495429931215357400
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.
RequestsANewMoneybirdPaymentsMandate:
summary: Requests a new moneybird payments mandate
value: {}
responses:
'204':
description: Moneybird Payments mandate requested
'403':
$ref: '#/components/responses/4XX_open_error'
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.
### Required scope(s)
Any of: `estimates`, `sales_invoices`, `documents`, `bank` or `settings`
tags:
- Contacts
security:
- bearerAuth:
- estimates
- bearerAuth:
- sales_invoices
- bearerAuth:
- documents
- bearerAuth:
- bank
- bearerAuth:
- settings
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':
$ref: '#/components/responses/4XX_open_error'
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.
### Required scope(s)
Any of: `estimates`, `sales_invoices`, `documents`, `bank` or `settings`
tags:
- Contacts
security:
- bearerAuth:
- estimates
- bearerAuth:
- sales_invoices
- bearerAuth:
- documents
- bearerAuth:
- bank
- bearerAuth:
- settings
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.
### Required scope(s)
Any of: `estimates`, `sales_invoices`, `documents`, `bank` or `settings`
tags:
- Contacts
security:
- bearerAuth:
- estimates
- bearerAuth:
- sales_invoices
- bearerAuth:
- documents
- bearerAuth:
- bank
- bearerAuth:
- settings
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: 495429923452749100
todo: true
responses:
'201':
description: Note created
content:
application/json:
schema:
$ref: '#/components/schemas/note_response'
examples:
CreateANote:
summary: Create a note
value:
id: '495429923468477760'
administration_id: 123
entity_id: '495429923413951794'
entity_type: Contact
user_id: '495429852315255909'
assignee_id: '495429923452749118'
todo: true
note: Text of the note
completed_at: null
completed_by_id: null
todo_type: null
data: {}
created_at: '2026-08-14T09:13:35.311Z'
updated_at: '2026-08-14T09:13:35.311Z'
'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.
### Required scope(s)
`sales_invoices`
tags:
- Contacts
security:
- bearerAuth:
- sales_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:
type: object
additionalProperties: true
examples:
CreatesAUsageCharge:
summary: Creates a usage charge
value:
product_id: 495429922539439200
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: '495429922560410747'
administration_id: 123
contact_id: '495429922485961837'
subscription_id: null
product_id: '495429922539439225'
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.
### Required scope(s)
`sales_invoices`
tags:
- Contacts
security:
- bearerAuth:
- sales_invoices
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: '495429925770102553'
administration_id: 123
contact_id: '495429925729208076'
subscription_id: null
product_id: '495429925768005400'
detail_id: null
amount: 1 x
price: '100.0'
period: 202106..202106
description: Transaction Costs
- id: '495429925813094177'
administration_id: 123
contact_id: '495429925729208076'
subscription_id: null
product_id: '495429925774296858'
detail_id: '495429925808899872'
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.
### Required scope(s)
Any of: `estimates`, `sales_invoices`, `documents`, `bank` or `settings`
tags:
- Contacts
security:
- bearerAuth:
- estimates
- bearerAuth:
- sales_invoices
- bearerAuth:
- documents
- bearerAuth:
- bank
- bearerAuth:
- settings
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.
### Required scope(s)
Any of: `estimates`, `sales_invoices`, `documents`, `bank` or `settings`
tags:
- Contacts
security:
- bearerAuth:
- estimates
- bearerAuth:
- sales_invoices
- bearerAuth:
- documents
- bearerAuth:
- bank
- bearerAuth:
- settings
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:
ReturnsSepaIbanAsBankAccount:
summary: Returns sepa iban as bank account
value:
id: '495429925843502884'
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
direct_debit: false
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-08-14T09:13:37.576Z'
updated_at: '2026-08-14T09:13:37.613Z'
version: 1786698817
sales_invoices_url: https://moneybird.dev/123/sales_invoices/88e31f90cb2be5870106fecf290eda033d68fe00cdb3d01436ad22794f892692/all
notes: []
custom_fields: []
contact_people:
- id: '495429925846648614'
contact_id: '495429925843502884'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:37.580Z'
updated_at: '2026-08-14T09:13:37.580Z'
version: 1786698817
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:37.586Z'
updated_at: '2026-08-14T09:13:37.586Z'
ReturnAContact:
summary: Return a contact
value:
id: '495429925915854643'
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
direct_debit: false
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-08-14T09:13:37.645Z'
updated_at: '2026-08-14T09:13:37.661Z'
version: 1786698817
sales_invoices_url: https://moneybird.dev/123/sales_invoices/ecba6f627744c11df670f80f66f1c5ab65a1d4e3a8e2cabcc1f2bac13f3c3d0d/all
notes: []
custom_fields: []
contact_people:
- id: '495429925920048949'
contact_id: '495429925915854643'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:37.649Z'
updated_at: '2026-08-14T09:13:37.649Z'
version: 1786698817
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:37.656Z'
updated_at: '2026-08-14T09:13:37.656Z'
'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.
### Required scope(s)
Any of: `estimates`, `sales_invoices`, `documents`, `bank` or `settings`
tags:
- Contacts
security:
- bearerAuth:
- estimates
- bearerAuth:
- sales_invoices
- bearerAuth:
- documents
- bearerAuth:
- bank
- bearerAuth:
- settings
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
description: Primary street address of the contact.
address2:
type: string
description: Secondary address line (e.g. apartment number, building name).
zipcode:
type: string
description: Postal code or ZIP code of the contact's address.
city:
type: string
description: City or town of the contact's address.
country:
type: string
description: ISO two-character country code, e.g. NL or DE.
phone:
type: string
description: Phone number of the contact.
delivery_method:
type: string
description: Can be `Email`, `Simplerinvoicing`, `Peppol`, `Manual` or `Post`.
email_ubl:
type:
- boolean
- string
description: When `true`, a UBL (Universal Business Language) XML file is attached when emailing invoices to this contact. Enables machine-readable invoice processing.
customer_id:
type: string
description: Will be assigned automatically if empty. Should be unique for the administration.
tax_number:
type: string
description: The tax identification number (VAT number) of the contact, e.g. `NL123456789B01`.
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
description: The CoC (Chamber of Commerce) registration number of the contact's business.
bank_account:
type: string
description: The bank account number (IBAN) of the contact. Used for outgoing payments and displayed on documents.
send_invoices_to_attention:
type: string
description: The name of the person to address invoices to (attention line).
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
description: The name of the person to address estimates to (attention line).
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
description: The account holder name for the SEPA direct debit IBAN.
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
description: The Peppol/e-invoicing identifier value for this contact. The format depends on the `si_identifier_type`.
direct_debit:
type:
- boolean
- string
description: When `true`, invoices for this contact are collected via SEPA direct debit. Requires SEPA fields to be configured.
custom_fields_attributes:
$ref: '#/components/schemas/custom_fields_attributes'
required: []
required:
- contact
examples:
UpdateAContactThatHasSepaActivated:
summary: Update a contact that has sepa activated
value:
contact:
company_name: Test B.V.
UpdateTheSepaSequenceType:
summary: Update the sepa sequence type
value:
contact:
sepa_sequence_type: FNAL
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
UpdateAContact:
summary: Update a contact
value:
contact:
company_name: Test B.V.
responses:
'200':
description: Contact updated
content:
application/json:
schema:
$ref: '#/components/schemas/contact_response'
examples:
UpdateAContactThatHasSepaActivated:
summary: Update a contact that has sepa activated
value:
id: '495429926084675414'
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
direct_debit: false
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-08-14T09:13:37.806Z'
updated_at: '2026-08-14T09:13:37.827Z'
version: 1786698817
sales_invoices_url: https://moneybird.dev/123/sales_invoices/339beedb27ff7dfe214bb828ed456051c23c0f6eeef1a82e27513f646ee7d0e0/all
notes: []
custom_fields: []
contact_people:
- id: '495429926088869720'
contact_id: '495429926084675414'
administration_id: 123
firstname: John
lastname: Doe
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:37.810Z'
updated_at: '2026-08-14T09:13:37.810Z'
version: 1786698817
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:37.816Z'
updated_at: '2026-08-14T09:13:37.816Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:13:37.830Z'
updated_at: '2026-08-14T09:13:37.830Z'
UpdateTheSepaSequenceType:
summary: Update the sepa sequence type
value:
id: '495429926325847944'
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
direct_debit: false
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-08-14T09:13:38.037Z'
updated_at: '2026-08-14T09:13:38.057Z'
version: 1786698818
sales_invoices_url: https://moneybird.dev/123/sales_invoices/5bad640d346ae067e67a2219022249ae2b49b6dece7d9d9ee755ea2479f0a0de/all
notes: []
custom_fields: []
contact_people:
- id: '495429926330042250'
contact_id: '495429926325847944'
administration_id: 123
firstname: John
lastname: Doe
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:38.040Z'
updated_at: '2026-08-14T09:13:38.040Z'
version: 1786698818
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:38.045Z'
updated_at: '2026-08-14T09:13:38.045Z'
- administration_id: 123
user_id: '495429852315255909'
action: contact_changed
link_entity_id: null
link_entity_type: null
data:
changes:
sepa_sequence_type:
- RCUR
- FNAL
created_at: '2026-08-14T09:13:38.059Z'
updated_at: '2026-08-14T09:13:38.059Z'
UpdatesAContactWithGivenSiIdentifier:
summary: Updates a contact with given si identifier
value:
id: '495429926389811089'
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
direct_debit: false
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-08-14T09:13:38.098Z'
updated_at: '2026-08-14T09:13:38.140Z'
version: 1786698818
sales_invoices_url: https://moneybird.dev/123/sales_invoices/ac76bff8b29cbd3aabb3bed3a2a04469547ee8778fea1d10c21c569fa3809d18/all
notes: []
custom_fields: []
contact_people:
- id: '495429926394005395'
contact_id: '495429926389811089'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:38.101Z'
updated_at: '2026-08-14T09:13:38.101Z'
version: 1786698818
- id: '495429926443288480'
contact_id: '495429926389811089'
administration_id: 123
firstname: null
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:38.149Z'
updated_at: '2026-08-14T09:13:38.149Z'
version: 1786698818
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:38.107Z'
updated_at: '2026-08-14T09:13:38.107Z'
- administration_id: 123
user_id: '495429852315255909'
action: contact_changed
link_entity_id: null
link_entity_type: null
data:
changes:
si_identifier:
- ''
- '1234567'
created_at: '2026-08-14T09:13:38.143Z'
updated_at: '2026-08-14T09:13:38.143Z'
CreatesAContactPersonWhenCompanyNameFirstnameAndLastnameExistTogether:
summary: Creates a contact person when company name, firstname and lastname exist together
value:
id: '495429926516688817'
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
direct_debit: false
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-08-14T09:13:38.218Z'
updated_at: '2026-08-14T09:13:38.227Z'
version: 1786698818
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people:
- id: '495429926535563189'
contact_id: '495429926516688817'
administration_id: 123
firstname: Money
lastname: Bird
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:38.236Z'
updated_at: '2026-08-14T09:13:38.236Z'
version: 1786698818
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_changed
link_entity_id: null
link_entity_type: null
data:
changes:
firstname:
- null
- Money
lastname:
- null
- Bird
created_at: '2026-08-14T09:13:38.230Z'
updated_at: '2026-08-14T09:13:38.230Z'
UpdateAContact:
summary: Update a contact
value:
id: '495429926571214777'
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
direct_debit: false
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-08-14T09:13:38.270Z'
updated_at: '2026-08-14T09:13:38.357Z'
version: 1786698818
sales_invoices_url: https://moneybird.dev/123/sales_invoices/d93aef7f774d14398d83662b79fbd0d7b84e3080ddd53a03a1c143ebf8112253/all
notes: []
custom_fields: []
contact_people:
- id: '495429926575409083'
contact_id: '495429926571214777'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:38.274Z'
updated_at: '2026-08-14T09:13:38.274Z'
version: 1786698818
- id: '495429926676072392'
contact_id: '495429926571214777'
administration_id: 123
firstname: null
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:38.370Z'
updated_at: '2026-08-14T09:13:38.370Z'
version: 1786698818
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:38.280Z'
updated_at: '2026-08-14T09:13:38.280Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:13:38.360Z'
updated_at: '2026-08-14T09:13:38.360Z'
'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.
### Required scope(s)
Any of: `estimates`, `sales_invoices`, `documents`, `bank` or `settings`
tags:
- Contacts
security:
- bearerAuth:
- estimates
- bearerAuth:
- sales_invoices
- bearerAuth:
- documents
- bearerAuth:
- bank
- bearerAuth:
- settings
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`
### Required scope(s)
Any of: `estimates`, `sales_invoices`, `documents`, `bank` or `settings`
tags:
- Contacts
security:
- bearerAuth:
- estimates
- bearerAuth:
- sales_invoices
- bearerAuth:
- documents
- bearerAuth:
- bank
- bearerAuth:
- settings
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
- name: contact_import_id
in: query
required: false
description: Restrict to contacts created by the given contact import batch.
schema:
type:
- integer
- string
responses:
'200':
description: A list of contacts
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/contact_response'
examples:
AllowsFilteringByNameInCombinationWithPagination:
summary: Allows filtering by name in combination with pagination
value: []
ReturnsEmptyListWhenNoMatchesWithFilter:
summary: Returns empty list when no matches with filter
value: []
ReturnsPaginatedContactsOnPage1:
summary: Returns paginated contacts on page 1
value:
- id: '495429928884372583'
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
direct_debit: false
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-08-14T09:13:40.476Z'
updated_at: '2026-08-14T09:13:40.493Z'
version: 1786698820
sales_invoices_url: https://moneybird.dev/123/sales_invoices/9208454d3160cbc065002d991a107e697111e33a0d329654d3413991dd62ae03/all
notes: []
custom_fields: []
contact_people:
- id: '495429928888566889'
contact_id: '495429928884372583'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:40.480Z'
updated_at: '2026-08-14T09:13:40.480Z'
version: 1786698820
- id: '495429928929461366'
contact_id: '495429928884372583'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-08-14T09:13:40.520Z'
updated_at: '2026-08-14T09:13:40.520Z'
version: 1786698820
- id: '495429928936801401'
contact_id: '495429928884372583'
administration_id: 123
firstname: Foo
lastname: Bar
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-08-14T09:13:40.527Z'
updated_at: '2026-08-14T09:13:40.527Z'
version: 1786698820
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:40.487Z'
updated_at: '2026-08-14T09:13:40.487Z'
ReturnsPaginatedContactsOnPage2:
summary: Returns paginated contacts on page 2
value:
- id: '495429929101427866'
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
direct_debit: false
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-08-14T09:13:40.683Z'
updated_at: '2026-08-14T09:13:40.683Z'
version: 1786698820
sales_invoices_url: https://moneybird.dev/123/sales_invoices/5cef76815cc717fd0551178edddd4115c215cf2a8aa29bc4d76ca63b58e254cf/all
notes: []
custom_fields: []
contact_people:
- id: '495429929105622172'
contact_id: '495429929101427866'
administration_id: 123
firstname: John
lastname: Doe
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:40.687Z'
updated_at: '2026-08-14T09:13:40.687Z'
version: 1786698820
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:40.694Z'
updated_at: '2026-08-14T09:13:40.694Z'
AllowsFilteringByName:
summary: Allows filtering by name
value:
- id: '495429929546024105'
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
direct_debit: false
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-08-14T09:13:41.107Z'
updated_at: '2026-08-14T09:13:41.212Z'
version: 1786698821
sales_invoices_url: https://moneybird.dev/123/sales_invoices/d82cb3cd51e5abd2b80210a2fc4b23ea119f4a1fb6072d85a67cb3d1311c2e26/all
notes: []
custom_fields: []
contact_people:
- id: '495429929550218411'
contact_id: '495429929546024105'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:41.111Z'
updated_at: '2026-08-14T09:13:41.111Z'
version: 1786698821
- id: '495429929808168120'
contact_id: '495429929546024105'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-08-14T09:13:41.357Z'
updated_at: '2026-08-14T09:13:41.357Z'
version: 1786698821
- id: '495429929816556731'
contact_id: '495429929546024105'
administration_id: 123
firstname: Foo
lastname: Bar
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-08-14T09:13:41.365Z'
updated_at: '2026-08-14T09:13:41.365Z'
version: 1786698821
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:41.205Z'
updated_at: '2026-08-14T09:13:41.205Z'
ReturnAListOfContacts:
summary: Return a list of contacts
value:
- id: '495429929873179839'
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
direct_debit: false
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-08-14T09:13:41.419Z'
updated_at: '2026-08-14T09:13:41.436Z'
version: 1786698821
sales_invoices_url: https://moneybird.dev/123/sales_invoices/7bd2dc22b201e227a3132f56daf192b40258f8a3f060e6257214f68c7037f9b3/all
notes: []
custom_fields: []
contact_people:
- id: '495429929877374145'
contact_id: '495429929873179839'
administration_id: 123
firstname: John
lastname: Appleseed
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:41.423Z'
updated_at: '2026-08-14T09:13:41.423Z'
version: 1786698821
- id: '495429929918268622'
contact_id: '495429929873179839'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-08-14T09:13:41.463Z'
updated_at: '2026-08-14T09:13:41.463Z'
version: 1786698821
- id: '495429929925608657'
contact_id: '495429929873179839'
administration_id: 123
firstname: Foo
lastname: Bar
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-08-14T09:13:41.470Z'
updated_at: '2026-08-14T09:13:41.470Z'
version: 1786698821
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:41.429Z'
updated_at: '2026-08-14T09:13:41.429Z'
- id: '495429929898345670'
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
direct_debit: false
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-08-14T09:13:41.443Z'
updated_at: '2026-08-14T09:13:41.443Z'
version: 1786698821
sales_invoices_url: https://moneybird.dev/123/sales_invoices/7460809c69183170746161bf3b956cdcb423c39d5308360724009e8131b259d4/all
notes: []
custom_fields: []
contact_people:
- id: '495429929902539976'
contact_id: '495429929898345670'
administration_id: 123
firstname: John
lastname: Doe
phone: null
email: null
department: null
created_at: '2026-08-14T09:13:41.447Z'
updated_at: '2026-08-14T09:13:41.447Z'
version: 1786698821
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:41.453Z'
updated_at: '2026-08-14T09:13:41.453Z'
- id: '495429929915122892'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:13:41.459Z'
updated_at: '2026-08-14T09:13:41.459Z'
version: 1786698821
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
events: []
'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.
### Required scope(s)
Any of: `estimates`, `sales_invoices`, `documents`, `bank` or `settings`
tags:
- Contacts
security:
- bearerAuth:
- estimates
- bearerAuth:
- sales_invoices
- bearerAuth:
- documents
- bearerAuth:
- bank
- bearerAuth:
- settings
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
description: Primary street address of the contact.
address2:
type: string
description: Secondary address line (e.g. apartment number, building name).
zipcode:
type: string
description: Postal code or ZIP code of the contact's address.
city:
type: string
description: City or town of the contact's address.
country:
type: string
description: ISO two-character country code, e.g. NL or DE.
phone:
type: string
description: Phone number of the contact.
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
description: The tax identification number (VAT number) of the contact, e.g. `NL123456789B01`.
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
description: The CoC (Chamber of Commerce) registration number of the contact's business.
bank_account:
type: string
description: The bank account number (IBAN) of the contact. Used for outgoing payments and displayed on documents.
send_invoices_to_attention:
type: string
description: The name of the person to address invoices to (attention line), e.g. "Finance Department".
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
description: The name of the person to address estimates to (attention line).
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
description: The account holder name for the SEPA direct debit IBAN.
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
description: The Peppol/e-invoicing identifier value for this contact. The format depends on the `si_identifier_type`.
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
description: When `true`, a UBL (Universal Business Language) XML file is attached when emailing invoices to this contact. Enables machine-readable invoice processing.
direct_debit:
type:
- boolean
- string
description: When `true`, invoices for this contact are collected via SEPA direct debit. Requires SEPA fields to be configured.
custom_fields_attributes:
$ref: '#/components/schemas/custom_fields_attributes'
contact_person:
type: object
description: An optional initial contact person to create along with the contact. Additional contact persons can be managed via the contact persons endpoint.
unevaluatedProperties: false
properties:
firstname:
type: string
description: First name of the contact person.
lastname:
type: string
description: Last name of the contact person.
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: 495429930912318900
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: '495429930543220056'
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: ''
direct_debit: false
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-08-14T09:13:42.058Z'
updated_at: '2026-08-14T09:13:42.058Z'
version: 1786698822
sales_invoices_url: https://moneybird.dev/123/sales_invoices/c2e7266b9589853e925a56d0ce17269d4ef2914ea124c6c48dd2a443b4401bae/all
notes: []
custom_fields: []
contact_people: []
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:42.061Z'
updated_at: '2026-08-14T09:13:42.061Z'
CreateANewContact:
summary: Create a new contact
value:
id: '495429930693166455'
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: ''
direct_debit: false
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-08-14T09:13:42.201Z'
updated_at: '2026-08-14T09:13:42.201Z'
version: 1786698822
sales_invoices_url: https://moneybird.dev/123/sales_invoices/da772bad68d408feeef5e3c2daddb479338733df380ee086c657492f7fe51499/all
notes: []
custom_fields: []
contact_people: []
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:42.204Z'
updated_at: '2026-08-14T09:13:42.204Z'
AddingValuesForCustomFields:
summary: Adding values for custom fields
value:
id: '495429930924901799'
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: ''
direct_debit: false
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-08-14T09:13:42.422Z'
updated_at: '2026-08-14T09:13:42.422Z'
version: 1786698822
sales_invoices_url: https://moneybird.dev/123/sales_invoices/2369eafcee64011d16362f30d231a4d50a4ad47f8b100c20304a5a2fa4921d5a/all
notes: []
custom_fields:
- id: '495429930912318885'
name: Number
value: Field value
contact_people: []
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
action: contact_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:13:42.425Z'
updated_at: '2026-08-14T09:13:42.425Z'
CreateANewContactWithMandateDateInTimezoneGap:
summary: Create a new contact with mandate date in timezone gap
value:
id: '495429931094771142'
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: ''
direct_debit: false
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/efab01030c738bebbeecf32fb562e65938fade79327ebd811597d68e8f64070a/all
notes: []
custom_fields: []
contact_people: []
archived: false
events:
- administration_id: 123
user_id: '495429852315255909'
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.
### Required scope(s)
`settings`
tags:
- Custom fields
security:
- bearerAuth:
- settings
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: '495430092348982830'
administration_id: 123
name: custom_field_c2ef7cb034ff78600ff9
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.
### Required scope(s)
Any of: `sales_invoices` or `estimates`
tags:
- Customer contact portal
security:
- bearerAuth:
- sales_invoices
- bearerAuth:
- estimates
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
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns401ForTheInvoicesLink:
summary: Returns 401 for the invoices link
value:
error: No access to sales_invoices or estimates
'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).
### Required scope(s)
Any of: `sales_invoices` or `estimates`
tags:
- Customer contact portal
security:
- bearerAuth:
- sales_invoices
- bearerAuth:
- estimates
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
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns401ForTheSubscriptionLink:
summary: Returns 401 for the subscription link
value:
error: No access to sales_invoices or estimates
'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'
Returns404WhenTheSubscriptionDoesNotBelongToTheContact:
summary: Returns 404 when the subscription does not belong to the contact
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.
### Required scope(s)
Any of: `sales_invoices` or `estimates`
tags:
- Customer contact portal
security:
- bearerAuth:
- sales_invoices
- bearerAuth:
- estimates
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
ReturnsATemporaryLink:
summary: Returns a temporary link
value: http://moneybird.com
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
Returns401ForTheContactPortalLink:
summary: Returns 401 for the contact portal link
value:
error: No access to sales_invoices or estimates
'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'
Returns404WhenTheContactDoesNotBelongToTheAdministration:
summary: Returns 404 when the contact does not belong to the administration
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.
### Required scope(s)
`settings`
tags:
- Document styles
security:
- bearerAuth:
- settings
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: '495429853658481817'
administration_id: 123
name: Standaard
identity_id: '495429852692743275'
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-08-14T09:12:28.733Z'
updated_at: '2026-08-14T09:12:28.733Z'
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.
### Required scope(s)
`documents`
tags:
- 'Documents: General documents'
security:
- bearerAuth:
- documents
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
description: Comma-separated `key:value` filter terms. Same syntax as `GET /documents/general_documents` — see that operation's description for the available keys.
schema:
type: string
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: '495429878406973166'
version: 1786698772
- id: '495429878417458928'
version: 1786698772
- id: '495429878427944690'
version: 1786698772
RetrievesAllIdsForSynchronizationUsingAFilter:
summary: Retrieves all ids for synchronization using a filter
value:
- id: '495429878539093763'
version: 1786698772
- id: '495429878549579525'
version: 1786698772
- id: '495429878560065287'
version: 1786698772
operationId: get_administration_id_documents_general_documents_synchronization
post:
summary: Fetch general documents with given ids
x-query: true
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.
### Required scope(s)
`documents`
tags:
- 'Documents: General documents'
security:
- bearerAuth:
- 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:
- 495429878266463940
- 495429878277998300
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: '495429878266463963'
administration_id: 123
contact_id: null
contact: null
reference: Contract
date: '2026-08-14'
due_date: null
entry_number: 3
state: saved
exchange_rate: '1.0'
created_at: '2026-08-14T09:12:52.204Z'
updated_at: '2026-08-14T09:12:52.204Z'
version: 1786698772
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:52.206Z'
updated_at: '2026-08-14T09:12:52.206Z'
- id: '495429878277998301'
administration_id: 123
contact_id: null
contact: null
reference: Contract
date: '2026-08-14'
due_date: null
entry_number: 4
state: saved
exchange_rate: '1.0'
created_at: '2026-08-14T09:12:52.214Z'
updated_at: '2026-08-14T09:12:52.214Z'
version: 1786698772
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:52.217Z'
updated_at: '2026-08-14T09:12:52.217Z'
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.
### Required scope(s)
`documents`
tags:
- 'Documents: General documents'
security:
- bearerAuth:
- 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.
### Required scope(s)
`documents`
tags:
- 'Documents: General documents'
security:
- bearerAuth:
- 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: 495429879413606300
todo: true
responses:
'201':
description: Note created
content:
application/json:
schema:
$ref: '#/components/schemas/note_response'
examples:
CreateANote:
summary: Create a note
value:
id: '495429879435626375'
administration_id: 123
entity_id: '495429879402071939'
entity_type: Document
user_id: '495429852315255909'
assignee_id: '495429879413606277'
todo: true
note: Text of the note
completed_at: null
completed_by_id: null
todo_type: null
data: {}
created_at: '2026-08-14T09:12:53.318Z'
updated_at: '2026-08-14T09:12:53.318Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: General documents'
security:
- bearerAuth:
- 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.
### Required scope(s)
`documents`
tags:
- 'Documents: General documents'
security:
- bearerAuth:
- 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.
### Required scope(s)
`documents`
tags:
- 'Documents: General documents'
security:
- bearerAuth:
- 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.
### Required scope(s)
`documents`
tags:
- 'Documents: General documents'
security:
- bearerAuth:
- 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: '495429878959572799'
administration_id: 123
contact_id: null
contact: null
reference: Contract
date: '2026-08-14'
due_date: null
entry_number: 2
state: saved
exchange_rate: '1.0'
created_at: '2026-08-14T09:12:52.865Z'
updated_at: '2026-08-14T09:12:52.865Z'
version: 1786698772
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:52.867Z'
updated_at: '2026-08-14T09:12:52.867Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: General documents'
security:
- bearerAuth:
- 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.
### Required scope(s)
`documents`
tags:
- 'Documents: General documents'
security:
- bearerAuth:
- 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
format: date
description: '**Required**.'
due_date:
type: string
format: date
reminder_date:
type: string
format: date
contact_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid contact id.
reminder:
type: object
unevaluatedProperties: false
description: Creates a reminder to-do for this document.
properties:
date:
type: string
format: date
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: '495429882320258214'
administration_id: 123
contact_id: null
contact: null
reference: updated reference
date: '2026-08-14'
due_date: null
entry_number: 2
state: saved
exchange_rate: '1.0'
created_at: '2026-08-14T09:12:56.069Z'
updated_at: '2026-08-14T09:12:56.097Z'
version: 1786698776
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:56.072Z'
updated_at: '2026-08-14T09:12:56.072Z'
- administration_id: 123
user_id: '495429852315255909'
action: document_updated
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:56.100Z'
updated_at: '2026-08-14T09:12:56.100Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: General documents'
security:
- bearerAuth:
- documents
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
description: |-
Filters are `key:value` terms separated by commas (e.g. `period:this_year,state:open`). Any filter you pass replaces the defaults below entirely, so include every key you need — in particular pass an explicit `period` (a named period or a `YYYYMMDD..YYYYMMDD` range) to look beyond the default financial year. Available filters:
| **Filter** | **Type** | **Default** | **Description** |
| - | - | - | - |
| period | `String` | `this_year` | A named period (`this_week`, `prev_week`, `next_week`, `this_month`, `prev_month`, `next_month`, `this_quarter`, `prev_quarter`, `next_quarter`, `this_year`, `prev_year`, `next_year`) or a custom range (`201301..201302`, `20130101..20130131`) |
| state | `String` | `all` | `all`, `new`, `saved`, `open`, `paid`, `late` or `pending_payment`. `paid`, `late` and `pending_payment` only apply to documents with a payment lifecycle (purchase invoices and receipts) |
| recurring | `String` | `all` | `all`, `enabled` or `disabled` |
| attachment | `String` | `all` | `all`, `with` or `without` |
| reference | `String` | | Documents with the given reference value |
| contact_id | `Integer` | | Documents belonging to the given contact |
| ledger_account_id | `Integer` | | Documents booking against the given ledger account |
| updated_after | `String` | | ISO 8601 timestamp in UTC; documents updated strictly after this time |
Multiple values for `state`, `recurring` and `attachment` can be combined with a pipe, e.g. `state:open|paid`.
schema:
type: string
default: period:this_year
- 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'
responses:
'200':
description: A list of general documents
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/general_document_response'
examples:
ReturnsPaginatedGeneralDocumentsOnPage1:
summary: Returns paginated general documents on page 1
value:
- id: '495429882885440754'
administration_id: 123
contact_id: null
contact: null
reference: Contract
date: '2026-08-14'
due_date: null
entry_number: 5
state: saved
exchange_rate: '1.0'
created_at: '2026-08-14T09:12:56.608Z'
updated_at: '2026-08-14T09:12:56.608Z'
version: 1786698776
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:56.611Z'
updated_at: '2026-08-14T09:12:56.611Z'
ReturnsPaginatedGeneralDocumentsOnPage2:
summary: Returns paginated general documents on page 2
value:
- id: '495429883055310087'
administration_id: 123
contact_id: null
contact: null
reference: Contract
date: '2026-08-14'
due_date: null
entry_number: 4
state: saved
exchange_rate: '1.0'
created_at: '2026-08-14T09:12:56.770Z'
updated_at: '2026-08-14T09:12:56.770Z'
version: 1786698776
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:56.773Z'
updated_at: '2026-08-14T09:12:56.773Z'
ReturnsAListOfGeneralDocuments:
summary: Returns a list of general documents
value:
- id: '495429883389805879'
administration_id: 123
contact_id: null
contact: null
reference: Contract
date: '2026-08-14'
due_date: null
entry_number: 5
state: saved
exchange_rate: '1.0'
created_at: '2026-08-14T09:12:57.090Z'
updated_at: '2026-08-14T09:12:57.090Z'
version: 1786698777
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:57.092Z'
updated_at: '2026-08-14T09:12:57.092Z'
- id: '495429883379320117'
administration_id: 123
contact_id: null
contact: null
reference: Contract
date: '2026-08-14'
due_date: null
entry_number: 4
state: saved
exchange_rate: '1.0'
created_at: '2026-08-14T09:12:57.079Z'
updated_at: '2026-08-14T09:12:57.079Z'
version: 1786698777
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:57.082Z'
updated_at: '2026-08-14T09:12:57.082Z'
- id: '495429883368834355'
administration_id: 123
contact_id: null
contact: null
reference: Contract
date: '2026-08-14'
due_date: null
entry_number: 3
state: saved
exchange_rate: '1.0'
created_at: '2026-08-14T09:12:57.069Z'
updated_at: '2026-08-14T09:12:57.069Z'
version: 1786698777
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:57.071Z'
updated_at: '2026-08-14T09:12:57.071Z'
- id: '495429883355202865'
administration_id: 123
contact_id: null
contact: null
reference: Contract
date: '2026-08-14'
due_date: null
entry_number: 2
state: saved
exchange_rate: '1.0'
created_at: '2026-08-14T09:12:57.056Z'
updated_at: '2026-08-14T09:12:57.056Z'
version: 1786698777
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:57.059Z'
updated_at: '2026-08-14T09:12:57.059Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: General documents'
security:
- bearerAuth:
- 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
format: date
description: '**Required**.'
due_date:
type: string
format: date
reminder_date:
type: string
format: date
contact_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid contact id.
reminder:
type: object
unevaluatedProperties: false
description: Creates a reminder to-do for this document.
properties:
date:
type: string
format: date
message:
type: string
required:
- date
required: []
required: []
examples:
CreatesTheGeneralDocument:
summary: Creates the general document
value:
general_document:
reference: foobar
contact_id: 495429881557943360
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: '495429881657558097'
administration_id: 123
contact_id: '495429881557943361'
contact:
id: '495429881557943361'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:12:55.341Z'
updated_at: '2026-08-14T09:12:55.341Z'
version: 1786698775
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: foobar
date: '2026-08-14'
due_date: null
entry_number: 3
state: saved
exchange_rate: '1.0'
created_at: '2026-08-14T09:12:55.437Z'
updated_at: '2026-08-14T09:12:55.437Z'
version: 1786698775
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:55.440Z'
updated_at: '2026-08-14T09:12:55.440Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: General journal documents'
security:
- bearerAuth:
- documents
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
description: Comma-separated `key:value` filter terms. Same syntax as `GET /documents/general_journal_documents` — see that operation's description for the available keys.
schema:
type: string
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: '495429867115906463'
version: 1786698761
- id: '495429867164140978'
version: 1786698761
- id: '495429867209229765'
version: 1786698761
RetrievesAllIdsForSynchronizationUsingAFilter:
summary: Retrieves all ids for synchronization using a filter
value:
- id: '495429867389584873'
version: 1786698761
- id: '495429867436770812'
version: 1786698761
- id: '495429867481859599'
version: 1786698761
operationId: get_administration_id_documents_general_journal_documents_synchronization
post:
summary: Fetch general journal documents with given ids
x-query: true
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.
### Required scope(s)
`documents`
tags:
- 'Documents: General journal documents'
security:
- bearerAuth:
- 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:
- 495429866883122560
- 495429866930308500
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: '495429866930308475'
administration_id: 123
reference: Deprecations
date: '2026-08-14'
journal_type: null
created_at: '2026-08-14T09:12:41.392Z'
updated_at: '2026-08-14T09:12:41.392Z'
version: 1786698761
general_journal_document_entries:
- id: '495429866932405628'
administration_id: 123
ledger_account_id: '495429866908288378'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-08-14T09:12:41.394Z'
updated_at: '2026-08-14T09:12:41.394Z'
description: First
- id: '495429866933454205'
administration_id: 123
ledger_account_id: '495429866908288378'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-08-14T09:12:41.396Z'
updated_at: '2026-08-14T09:12:41.396Z'
description: Second
- id: '495429866934502782'
administration_id: 123
ledger_account_id: '495429866908288378'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-08-14T09:12:41.396Z'
updated_at: '2026-08-14T09:12:41.396Z'
description: Third
- id: '495429866935551359'
administration_id: 123
ledger_account_id: '495429866908288378'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-08-14T09:12:41.397Z'
updated_at: '2026-08-14T09:12:41.397Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:41.399Z'
updated_at: '2026-08-14T09:12:41.399Z'
- id: '495429866883122536'
administration_id: 123
reference: Deprecations
date: '2026-08-14'
journal_type: null
created_at: '2026-08-14T09:12:41.346Z'
updated_at: '2026-08-14T09:12:41.346Z'
version: 1786698761
general_journal_document_entries:
- id: '495429866884171113'
administration_id: 123
ledger_account_id: '495429866859005287'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-08-14T09:12:41.349Z'
updated_at: '2026-08-14T09:12:41.349Z'
description: First
- id: '495429866885219690'
administration_id: 123
ledger_account_id: '495429866859005287'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-08-14T09:12:41.350Z'
updated_at: '2026-08-14T09:12:41.350Z'
description: Second
- id: '495429866886268267'
administration_id: 123
ledger_account_id: '495429866859005287'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-08-14T09:12:41.351Z'
updated_at: '2026-08-14T09:12:41.351Z'
description: Third
- id: '495429866887316844'
administration_id: 123
ledger_account_id: '495429866859005287'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-08-14T09:12:41.352Z'
updated_at: '2026-08-14T09:12:41.352Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:41.354Z'
updated_at: '2026-08-14T09:12:41.354Z'
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.
### Required scope(s)
`documents`
tags:
- 'Documents: General journal documents'
security:
- bearerAuth:
- 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.
### Required scope(s)
`documents`
tags:
- 'Documents: General journal documents'
security:
- bearerAuth:
- 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: 495429868419286800
todo: true
responses:
'201':
description: Note created
content:
application/json:
schema:
$ref: '#/components/schemas/note_response'
examples:
CreateANote:
summary: Create a note
value:
id: '495429868458084082'
administration_id: 123
entity_id: '495429868382586590'
entity_type: Document
user_id: '495429852315255909'
assignee_id: '495429868419286768'
todo: true
note: Text of the note
completed_at: null
completed_by_id: null
todo_type: null
data: {}
created_at: '2026-08-14T09:12:42.849Z'
updated_at: '2026-08-14T09:12:42.849Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: General journal documents'
security:
- bearerAuth:
- 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.
### Required scope(s)
`documents`
tags:
- 'Documents: General journal documents'
security:
- bearerAuth:
- 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.
### Required scope(s)
`documents`
tags:
- 'Documents: General journal documents'
security:
- bearerAuth:
- 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.
### Required scope(s)
`documents`
tags:
- 'Documents: General journal documents'
security:
- bearerAuth:
- 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: '495429860470031824'
administration_id: 123
reference: Deprecations
date: '2026-08-14'
journal_type: null
created_at: '2026-08-14T09:12:35.231Z'
updated_at: '2026-08-14T09:12:35.231Z'
version: 1786698755
general_journal_document_entries:
- id: '495429860472128977'
administration_id: 123
ledger_account_id: '495429860415505871'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-08-14T09:12:35.234Z'
updated_at: '2026-08-14T09:12:35.234Z'
description: First
- id: '495429860475274706'
administration_id: 123
ledger_account_id: '495429860415505871'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-08-14T09:12:35.236Z'
updated_at: '2026-08-14T09:12:35.236Z'
description: Second
- id: '495429860476323283'
administration_id: 123
ledger_account_id: '495429860415505871'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-08-14T09:12:35.237Z'
updated_at: '2026-08-14T09:12:35.237Z'
description: Third
- id: '495429860477371860'
administration_id: 123
ledger_account_id: '495429860415505871'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-08-14T09:12:35.239Z'
updated_at: '2026-08-14T09:12:35.239Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:35.243Z'
updated_at: '2026-08-14T09:12:35.243Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: General journal documents'
security:
- bearerAuth:
- 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.
### Required scope(s)
`documents`
tags:
- 'Documents: General journal documents'
security:
- bearerAuth:
- 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
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: '495429867651728947'
administration_id: 123
reference: updated reference
date: '2026-08-14'
journal_type: null
created_at: '2026-08-14T09:12:42.081Z'
updated_at: '2026-08-14T09:12:42.137Z'
version: 1786698762
general_journal_document_entries:
- id: '495429867654874676'
administration_id: 123
ledger_account_id: '495429867630757426'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-08-14T09:12:42.084Z'
updated_at: '2026-08-14T09:12:42.084Z'
description: First
- id: '495429867655923253'
administration_id: 123
ledger_account_id: '495429867630757426'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-08-14T09:12:42.085Z'
updated_at: '2026-08-14T09:12:42.085Z'
description: Second
- id: '495429867656971830'
administration_id: 123
ledger_account_id: '495429867630757426'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-08-14T09:12:42.086Z'
updated_at: '2026-08-14T09:12:42.086Z'
description: Third
- id: '495429867658020407'
administration_id: 123
ledger_account_id: '495429867630757426'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-08-14T09:12:42.087Z'
updated_at: '2026-08-14T09:12:42.087Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:42.089Z'
updated_at: '2026-08-14T09:12:42.089Z'
- administration_id: 123
user_id: '495429852315255909'
action: document_updated
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:42.140Z'
updated_at: '2026-08-14T09:12:42.140Z'
'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 `exclude_new_general_journal_documents` parameter, when set to `true`, removes documents that are still in the `new` state from the response. It has no effect on other document types.
### Required scope(s)
`documents`
tags:
- 'Documents: General journal documents'
security:
- bearerAuth:
- documents
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
description: |-
Filters are `key:value` terms separated by commas (e.g. `period:this_year,state:open`). Any filter you pass replaces the defaults below entirely, so include every key you need — in particular pass an explicit `period` (a named period or a `YYYYMMDD..YYYYMMDD` range) to look beyond the default financial year. Available filters:
| **Filter** | **Type** | **Default** | **Description** |
| - | - | - | - |
| period | `String` | `this_year` | A named period (`this_week`, `prev_week`, `next_week`, `this_month`, `prev_month`, `next_month`, `this_quarter`, `prev_quarter`, `next_quarter`, `this_year`, `prev_year`, `next_year`) or a custom range (`201301..201302`, `20130101..20130131`) |
| state | `String` | `all` | `all`, `new`, `saved`, `open`, `paid`, `late` or `pending_payment`. `paid`, `late` and `pending_payment` only apply to documents with a payment lifecycle (purchase invoices and receipts) |
| recurring | `String` | `all` | `all`, `enabled` or `disabled` |
| attachment | `String` | `all` | `all`, `with` or `without` |
| reference | `String` | | Documents with the given reference value |
| contact_id | `Integer` | | Documents belonging to the given contact |
| ledger_account_id | `Integer` | | Documents booking against the given ledger account |
| updated_after | `String` | | ISO 8601 timestamp in UTC; documents updated strictly after this time |
Multiple values for `state`, `recurring` and `attachment` can be combined with a pipe, e.g. `state:open|paid`.
schema:
type: string
default: period:this_year
- 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:
ReturnsPaginatedGeneralJournalDocumentsOnPage1:
summary: Returns paginated general journal documents on page 1
value:
- id: '495429861139023441'
administration_id: 123
reference: Deprecations
date: '2026-08-14'
journal_type: null
created_at: '2026-08-14T09:12:35.869Z'
updated_at: '2026-08-14T09:12:35.869Z'
version: 1786698755
general_journal_document_entries:
- id: '495429861141120594'
administration_id: 123
ledger_account_id: '495429861112809040'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-08-14T09:12:35.871Z'
updated_at: '2026-08-14T09:12:35.871Z'
description: First
- id: '495429861142169171'
administration_id: 123
ledger_account_id: '495429861112809040'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-08-14T09:12:35.872Z'
updated_at: '2026-08-14T09:12:35.872Z'
description: Second
- id: '495429861143217748'
administration_id: 123
ledger_account_id: '495429861112809040'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-08-14T09:12:35.873Z'
updated_at: '2026-08-14T09:12:35.873Z'
description: Third
- id: '495429861144266325'
administration_id: 123
ledger_account_id: '495429861112809040'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-08-14T09:12:35.874Z'
updated_at: '2026-08-14T09:12:35.874Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:35.876Z'
updated_at: '2026-08-14T09:12:35.876Z'
ReturnsAListOfGeneralJournalDocuments:
summary: Returns a list of general journal documents
value:
- id: '495429861517559470'
administration_id: 123
reference: Deprecations
date: '2026-08-14'
journal_type: null
created_at: '2026-08-14T09:12:36.231Z'
updated_at: '2026-08-14T09:12:36.231Z'
version: 1786698756
general_journal_document_entries:
- id: '495429861519656623'
administration_id: 123
ledger_account_id: '495429861493442221'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-08-14T09:12:36.233Z'
updated_at: '2026-08-14T09:12:36.233Z'
description: First
- id: '495429861520705200'
administration_id: 123
ledger_account_id: '495429861493442221'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-08-14T09:12:36.234Z'
updated_at: '2026-08-14T09:12:36.234Z'
description: Second
- id: '495429861521753777'
administration_id: 123
ledger_account_id: '495429861493442221'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-08-14T09:12:36.235Z'
updated_at: '2026-08-14T09:12:36.235Z'
description: Third
- id: '495429861522802354'
administration_id: 123
ledger_account_id: '495429861493442221'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-08-14T09:12:36.236Z'
updated_at: '2026-08-14T09:12:36.236Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:36.238Z'
updated_at: '2026-08-14T09:12:36.238Z'
- id: '495429861467227803'
administration_id: 123
reference: Deprecations
date: '2026-08-14'
journal_type: null
created_at: '2026-08-14T09:12:36.182Z'
updated_at: '2026-08-14T09:12:36.182Z'
version: 1786698756
general_journal_document_entries:
- id: '495429861469324956'
administration_id: 123
ledger_account_id: '495429861443110554'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-08-14T09:12:36.184Z'
updated_at: '2026-08-14T09:12:36.184Z'
description: First
- id: '495429861470373533'
administration_id: 123
ledger_account_id: '495429861443110554'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-08-14T09:12:36.185Z'
updated_at: '2026-08-14T09:12:36.185Z'
description: Second
- id: '495429861471422110'
administration_id: 123
ledger_account_id: '495429861443110554'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-08-14T09:12:36.187Z'
updated_at: '2026-08-14T09:12:36.187Z'
description: Third
- id: '495429861472470687'
administration_id: 123
ledger_account_id: '495429861443110554'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-08-14T09:12:36.187Z'
updated_at: '2026-08-14T09:12:36.187Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:36.189Z'
updated_at: '2026-08-14T09:12:36.189Z'
- id: '495429861420041864'
administration_id: 123
reference: Deprecations
date: '2026-08-14'
journal_type: null
created_at: '2026-08-14T09:12:36.137Z'
updated_at: '2026-08-14T09:12:36.137Z'
version: 1786698756
general_journal_document_entries:
- id: '495429861421090441'
administration_id: 123
ledger_account_id: '495429861394876039'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-08-14T09:12:36.139Z'
updated_at: '2026-08-14T09:12:36.139Z'
description: First
- id: '495429861422139018'
administration_id: 123
ledger_account_id: '495429861394876039'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-08-14T09:12:36.140Z'
updated_at: '2026-08-14T09:12:36.140Z'
description: Second
- id: '495429861424236171'
administration_id: 123
ledger_account_id: '495429861394876039'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-08-14T09:12:36.142Z'
updated_at: '2026-08-14T09:12:36.142Z'
description: Third
- id: '495429861425284748'
administration_id: 123
ledger_account_id: '495429861394876039'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-08-14T09:12:36.143Z'
updated_at: '2026-08-14T09:12:36.143Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:36.145Z'
updated_at: '2026-08-14T09:12:36.145Z'
- id: '495429861370758773'
administration_id: 123
reference: Deprecations
date: '2026-08-14'
journal_type: null
created_at: '2026-08-14T09:12:36.090Z'
updated_at: '2026-08-14T09:12:36.090Z'
version: 1786698756
general_journal_document_entries:
- id: '495429861372855926'
administration_id: 123
ledger_account_id: '495429861345592948'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-08-14T09:12:36.092Z'
updated_at: '2026-08-14T09:12:36.092Z'
description: First
- id: '495429861373904503'
administration_id: 123
ledger_account_id: '495429861345592948'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-08-14T09:12:36.093Z'
updated_at: '2026-08-14T09:12:36.093Z'
description: Second
- id: '495429861374953080'
administration_id: 123
ledger_account_id: '495429861345592948'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-08-14T09:12:36.094Z'
updated_at: '2026-08-14T09:12:36.094Z'
description: Third
- id: '495429861376001657'
administration_id: 123
ledger_account_id: '495429861345592948'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-08-14T09:12:36.095Z'
updated_at: '2026-08-14T09:12:36.095Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:36.097Z'
updated_at: '2026-08-14T09:12:36.097Z'
ReturnsPaginatedGeneralJournalDocumentsOnPage2:
summary: Returns paginated general journal documents on page 2
value:
- id: '495429861804869368'
administration_id: 123
reference: Deprecations
date: '2026-08-14'
journal_type: null
created_at: '2026-08-14T09:12:36.504Z'
updated_at: '2026-08-14T09:12:36.504Z'
version: 1786698756
general_journal_document_entries:
- id: '495429861806966521'
administration_id: 123
ledger_account_id: '495429861783897847'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: 1
created_at: '2026-08-14T09:12:36.506Z'
updated_at: '2026-08-14T09:12:36.506Z'
description: First
- id: '495429861808015098'
administration_id: 123
ledger_account_id: '495429861783897847'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: 2
created_at: '2026-08-14T09:12:36.507Z'
updated_at: '2026-08-14T09:12:36.507Z'
description: Second
- id: '495429861808015099'
administration_id: 123
ledger_account_id: '495429861783897847'
project_id: null
contact_id: null
debit: '50.0'
credit: '0.0'
row_order: 3
created_at: '2026-08-14T09:12:36.508Z'
updated_at: '2026-08-14T09:12:36.508Z'
description: Third
- id: '495429861809063676'
administration_id: 123
ledger_account_id: '495429861783897847'
project_id: null
contact_id: null
debit: '0.0'
credit: '50.0'
row_order: 4
created_at: '2026-08-14T09:12:36.509Z'
updated_at: '2026-08-14T09:12:36.509Z'
description: Fourth
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:36.511Z'
updated_at: '2026-08-14T09:12:36.511Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: General journal documents'
security:
- bearerAuth:
- 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
format: date
description: Date of the journal entry. Defaults to today.
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: 495429869355665300
debit: 100
credit: 0
'1':
ledger_account_id: 495429869414385600
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: '495429869447940015'
administration_id: 123
reference: foobar
date: '2026-08-14'
journal_type: null
created_at: '2026-08-14T09:12:43.793Z'
updated_at: '2026-08-14T09:12:43.793Z'
version: 1786698763
general_journal_document_entries:
- id: '495429869450037168'
administration_id: 123
ledger_account_id: '495429869355665304'
project_id: null
contact_id: null
debit: '100.0'
credit: '0.0'
row_order: null
created_at: '2026-08-14T09:12:43.795Z'
updated_at: '2026-08-14T09:12:43.795Z'
description: null
- id: '495429869451085745'
administration_id: 123
ledger_account_id: '495429869414385581'
project_id: null
contact_id: null
debit: '0.0'
credit: '100.0'
row_order: null
created_at: '2026-08-14T09:12:43.796Z'
updated_at: '2026-08-14T09:12:43.796Z'
description: null
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:43.798Z'
updated_at: '2026-08-14T09:12:43.798Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: Purchase invoices'
security:
- bearerAuth:
- documents
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
description: Comma-separated `key:value` filter terms. Same syntax as `GET /documents/purchase_invoices` — see that operation's description for the available keys.
schema:
type: string
examples:
ReturnsUniqueIdsEvenWhenPurchaseInvoicesHaveMultipleAttachments:
summary: Returns unique ids even when purchase invoices have multiple attachments
value: period:this_month
RetrievesIdsForSynchronizationUsingAnUpdatedAfterFilter:
summary: Retrieves ids for synchronization using an updated after filter
value: updated_after:2026-08-13T09:14:21Z
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:
ReturnsUniqueIdsEvenWhenPurchaseInvoicesHaveMultipleAttachments:
summary: Returns unique ids even when purchase invoices have multiple attachments
value:
- id: '495429971359040616'
version: 1786698860
- id: '495429971440829568'
version: 1786698861
- id: '495429971483821196'
version: 1786698861
RetrievesAllIdsForSynchronization:
summary: Retrieves all ids for synchronization
value:
- id: '495429971568755869'
version: 1786698861
- id: '495429971650544821'
version: 1786698861
- id: '495429971694585025'
version: 1786698861
RetrievesAllIdsForSynchronizationUsingAFilter:
summary: Retrieves all ids for synchronization using a filter
value:
- id: '495429971764839632'
version: 1786698861
- id: '495429971844531432'
version: 1786698861
- id: '495429971886474484'
version: 1786698861
RetrievesIdsForSynchronizationUsingAnUpdatedAfterFilter:
summary: Retrieves ids for synchronization using an updated after filter
value:
- id: '495429971955680515'
version: 1786698861
- id: '495429972036420891'
version: 1786698861
- id: '495429972076266791'
version: 1786698861
operationId: get_administration_id_documents_purchase_invoices_synchronization
post:
summary: Fetch purchase invoices with given ids
x-query: true
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.
### Required scope(s)
`documents`
tags:
- 'Documents: Purchase invoices'
security:
- bearerAuth:
- 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:
- 495429972224116030
- 495429972265010500
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: '495429972224116046'
administration_id: 123
contact_id: '495429972116112692'
contact:
id: '495429972116112692'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:21.705Z'
updated_at: '2026-08-14T09:14:21.705Z'
version: 1786698861
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-08-14'
due_date: '2026-08-28'
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: null
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-08-14T09:14:21.808Z'
updated_at: '2026-08-14T09:14:21.811Z'
version: 1786698861
details:
- id: '495429972225164623'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:21.810Z'
updated_at: '2026-08-14T09:14:21.810Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:21.814Z'
updated_at: '2026-08-14T09:14:21.814Z'
- id: '495429972265010522'
administration_id: 123
contact_id: '495429972116112692'
contact:
id: '495429972116112692'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:21.705Z'
updated_at: '2026-08-14T09:14:21.705Z'
version: 1786698861
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-08-14'
due_date: '2026-08-28'
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: null
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-08-14T09:14:21.848Z'
updated_at: '2026-08-14T09:14:21.851Z'
version: 1786698861
details:
- id: '495429972267107675'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:21.850Z'
updated_at: '2026-08-14T09:14:21.850Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:21.854Z'
updated_at: '2026-08-14T09:14:21.854Z'
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.
### Required scope(s)
`documents`
tags:
- 'Documents: Purchase invoices'
security:
- bearerAuth:
- 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_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.
### Required scope(s)
`documents`
tags:
- 'Documents: Purchase invoices'
security:
- bearerAuth:
- 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_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.
### Required scope(s)
`documents`
tags:
- 'Documents: Purchase invoices'
security:
- bearerAuth:
- 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_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.
### Required scope(s)
`documents`
tags:
- 'Documents: Purchase invoices'
security:
- bearerAuth:
- documents
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.
### Required scope(s)
`documents`
tags:
- 'Documents: Purchase invoices'
security:
- bearerAuth:
- 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:
payment:
type: object
unevaluatedProperties: false
properties:
payment_date:
type: string
description: The date on which the payment was made.
price:
$ref: '#/components/schemas/number'
description: The amount paid in the document's currency. 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 of the administration. Required when the document uses a different currency than the administration's base currency. Should be a number -1,000,000,000 <= *n* <= 1,000,000,000.
financial_account_id:
$ref: '#/components/schemas/identifier'
description: The ID of the financial account (bank account or cash register) associated with this payment. Required for `private_payment` and `cash_payment` actions. Should be a valid financial account id.
financial_mutation_id:
$ref: '#/components/schemas/identifier'
description: The ID of the bank transaction to link this payment to. Required for `bank_transfer` actions. Should be a valid financial mutation id.
transaction_identifier:
type: string
description: An external transaction reference, e.g. a bank transaction ID or PSP reference. Used to match the payment with financial mutations.
manual_payment_action:
type: string
description: Can be `private_payment` (needs financial_account_id), `payment_without_proof`, `cash_payment` (needs financial_account_id), `rounding_error`, `bank_transfer` (needs financial_mutation_id), `balance_settlement` (needs ledger_account_id) or `invoices_settlement` (needs invoice_id).
ledger_account_id:
$ref: '#/components/schemas/identifier'
description: The ID of the ledger account to book this payment to. Required for `balance_settlement` actions. Should be a valid ledger account id.
invoice_id:
$ref: '#/components/schemas/identifier'
description: The ID of the document to settle this payment against. Required for `invoices_settlement` actions. Should be a valid document id (sales invoice, purchase invoice, receipt, etc.).
required:
- payment_date
- price
required: []
examples:
CreateAPayment:
summary: Create a payment
value:
payment:
payment_date: '2026-08-14T09:14:27.769Z'
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: '495429978487260787'
administration_id: 123
invoice_type: Document
invoice_id: '495429978422249051'
financial_account_id: null
user_id: '495429852315255909'
payment_transaction_id: null
transaction_identifier: null
price: '363.0'
price_base: '363.0'
payment_date: '2026-08-14'
credit_invoice_id: null
financial_mutation_id: null
ledger_account_id: '495429852926575746'
linked_payment_id: null
manual_payment_action: null
created_at: '2026-08-14T09:14:27.781Z'
updated_at: '2026-08-14T09:14:27.781Z'
'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`.
### Required scope(s)
`documents`
deprecated: true
x-sunset: '2026-12-31'
tags:
- 'Documents: Purchase invoices'
security:
- bearerAuth:
- 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:
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-08-14T09:14:26.062Z'
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.
### Required scope(s)
`documents`
tags:
- 'Documents: Purchase invoices'
security:
- bearerAuth:
- 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 purchase invoice
content:
application/json:
schema:
$ref: '#/components/schemas/purchase_invoice_response'
examples:
IncludesFiscalAllocations:
summary: Includes fiscal allocations
value:
id: '495429979033569011'
administration_id: 123
contact_id: '495429978930808537'
contact:
id: '495429978930808537'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:28.204Z'
updated_at: '2026-08-14T09:14:28.204Z'
version: 1786698868
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-08-14'
due_date: '2026-08-28'
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: null
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-08-14T09:14:28.302Z'
updated_at: '2026-08-14T09:14:28.305Z'
version: 1786698868
details:
- id: '495429979035666164'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:28.304Z'
updated_at: '2026-08-14T09:14:28.304Z'
fiscal_allocations:
- id: '495429979056637696'
administration_id: 123
ledger_account_id: '495429852896167033'
private_ledger_account_id: '495429979052443391'
percentage: '25.0'
price: '90.75'
price_base: '90.75'
created_at: '2026-08-14T09:14:28.324Z'
updated_at: '2026-08-14T09:14:28.324Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:28.308Z'
updated_at: '2026-08-14T09:14:28.308Z'
ReturnsTheWantedPurchaseInvoice:
summary: Returns the wanted purchase invoice
value:
id: '495429979636500351'
administration_id: 123
contact_id: '495429979601897341'
contact:
id: '495429979601897341'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:28.844Z'
updated_at: '2026-08-14T09:14:28.844Z'
version: 1786698868
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-08-14'
due_date: '2026-08-28'
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: null
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-08-14T09:14:28.877Z'
updated_at: '2026-08-14T09:14:28.881Z'
version: 1786698868
details:
- id: '495429979638597504'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:28.879Z'
updated_at: '2026-08-14T09:14:28.879Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:28.884Z'
updated_at: '2026-08-14T09:14:28.884Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: Purchase invoices'
security:
- bearerAuth:
- 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:
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.
### Required scope(s)
`documents`
tags:
- 'Documents: Purchase invoices'
security:
- bearerAuth:
- 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:
purchase_invoice:
type: object
unevaluatedProperties: false
properties:
contact_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid contact id.
reference:
type: string
description: The supplier's invoice number or reference.
date:
type: string
description: The date on the supplier's invoice.
format: date
due_date:
type: string
description: The date by which the invoice should be paid.
format: date
currency:
type: string
description: ISO three-character currency code, e.g. EUR or USD.
prices_are_incl_tax:
type:
- boolean
- string
description: Whether the prices on the purchase invoice are inclusive of tax.
revenue_invoice:
type:
- boolean
- string
description: When `true`, this purchase invoice is treated as a revenue invoice (e.g. a credit note from a supplier).
details_attributes:
$ref: '#/components/schemas/details_attributes'
fiscal_allocations_attributes:
$ref: '#/components/schemas/fiscal_allocations_attributes'
required: []
required: []
examples:
UpdatesThePurchaseInvoice:
summary: Updates the purchase invoice
value:
purchase_invoice:
reference: updated reference
UpdatesInvoiceDetails:
summary: Updates invoice details
value:
purchase_invoice:
details_attributes:
'0':
description: New detail
price: 99
amount: 1
tax_rate_id: 495429853091202200
ledger_account_id: 495429852896167040
'1':
id: 495429977064342800
_destroy: true
RemovesAFiscalAllocationWithDestroy:
summary: Removes a fiscal allocation with destroy
value:
purchase_invoice:
fiscal_allocations_attributes:
'0':
id: 495429979277887300
_destroy: true
AddsFiscalAllocationsToAnExistingDocument:
summary: Adds fiscal allocations to an existing document
value:
purchase_invoice:
fiscal_allocations_attributes:
- ledger_account_id: 495429852896167040
private_ledger_account_id: 495429979504379800
percentage: '40'
responses:
'200':
description: Purchase invoice updated
content:
application/json:
schema:
$ref: '#/components/schemas/purchase_invoice_response'
examples:
UpdatesThePurchaseInvoice:
summary: Updates the purchase invoice
value:
id: '495429976882939104'
administration_id: 123
contact_id: '495429976850433246'
contact:
id: '495429976850433246'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:26.220Z'
updated_at: '2026-08-14T09:14:26.220Z'
version: 1786698866
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: updated reference
date: '2026-08-14'
due_date: '2026-08-28'
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: null
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-08-14T09:14:26.251Z'
updated_at: '2026-08-14T09:14:26.332Z'
version: 1786698866
details:
- id: '495429976885036257'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:26.253Z'
updated_at: '2026-08-14T09:14:26.253Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:26.258Z'
updated_at: '2026-08-14T09:14:26.258Z'
- administration_id: 123
user_id: '495429852315255909'
action: document_updated
link_entity_id: null
link_entity_type: null
data:
changes:
reference:
- 2013-01234
- updated reference
updated_at:
- '2026-08-14T11:14:26.255+02:00'
- '2026-08-14T11:14:26.332+02:00'
created_at: '2026-08-14T09:14:26.336Z'
updated_at: '2026-08-14T09:14:26.336Z'
UpdatesInvoiceDetails:
summary: Updates invoice details
value:
id: '495429977062245646'
administration_id: 123
contact_id: '495429977031836940'
contact:
id: '495429977031836940'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:26.393Z'
updated_at: '2026-08-14T09:14:26.393Z'
version: 1786698866
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-08-14'
due_date: '2026-08-28'
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: null
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-08-14T09:14:26.422Z'
updated_at: '2026-08-14T09:14:26.515Z'
version: 1786698866
details:
- id: '495429977157666086'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:26.514Z'
updated_at: '2026-08-14T09:14:26.514Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:26.428Z'
updated_at: '2026-08-14T09:14:26.428Z'
- administration_id: 123
user_id: '495429852315255909'
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: '495429853091202189'
report_reference: NL/5b
payable: false
debit: '63.0'
credit: 0
- - tax_rate_id: '495429853091202189'
report_reference: NL/5b
payable: false
debit: '20.79'
credit: 0
updated_at:
- '2026-08-14T11:14:26.426+02:00'
- '2026-08-14T11:14:26.509+02:00'
detail_changes:
- id: '495429977064342799'
change: removed
ledger_account_id:
- '495429852896167033'
- null
tax_rate_id:
- '495429853091202189'
- null
description:
- Delivery Apple iPad
- null
price:
- '300.0'
- null
amount:
- ''
- null
- id: '495429977157666086'
change: added
ledger_account_id:
- null
- '495429852896167033'
tax_rate_id:
- null
- '495429853091202189'
description:
- null
- New detail
price:
- '0.0'
- '99.0'
amount:
- ''
- '1'
created_at: '2026-08-14T09:14:26.518Z'
updated_at: '2026-08-14T09:14:26.518Z'
RemovesAFiscalAllocationWithDestroy:
summary: Removes a fiscal allocation with destroy
value:
id: '495429979252721436'
administration_id: 123
contact_id: '495429979095435010'
contact:
id: '495429979095435010'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:28.361Z'
updated_at: '2026-08-14T09:14:28.361Z'
version: 1786698868
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-08-14'
due_date: '2026-08-28'
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: null
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-08-14T09:14:28.511Z'
updated_at: '2026-08-14T09:14:28.515Z'
version: 1786698868
details:
- id: '495429979254818589'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:28.513Z'
updated_at: '2026-08-14T09:14:28.513Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:28.518Z'
updated_at: '2026-08-14T09:14:28.518Z'
- administration_id: 123
user_id: '495429852315255909'
action: document_updated
link_entity_id: null
link_entity_type: null
data:
changes: {}
created_at: '2026-08-14T09:14:28.569Z'
updated_at: '2026-08-14T09:14:28.569Z'
AddsFiscalAllocationsToAnExistingDocument:
summary: Adds fiscal allocations to an existing document
value:
id: '495429979483408216'
administration_id: 123
contact_id: '495429979364919102'
contact:
id: '495429979364919102'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:28.618Z'
updated_at: '2026-08-14T09:14:28.618Z'
version: 1786698868
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-08-14'
due_date: '2026-08-28'
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: null
total_price_excl_tax: '325.2'
total_price_excl_tax_base: '325.2'
total_price_incl_tax: '363.0'
total_price_incl_tax_base: '363.0'
created_at: '2026-08-14T09:14:28.731Z'
updated_at: '2026-08-14T09:14:28.789Z'
version: 1786698868
details:
- id: '495429979486553945'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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: '180.0'
total_price_excl_tax_with_discount_base: '180.0'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-08-14T09:14:28.733Z'
updated_at: '2026-08-14T09:14:28.788Z'
fiscal_allocations:
- id: '495429979541079909'
administration_id: 123
ledger_account_id: '495429852896167033'
private_ledger_account_id: '495429979504379748'
percentage: '40.0'
price: '145.2'
price_base: '145.2'
created_at: '2026-08-14T09:14:28.786Z'
updated_at: '2026-08-14T09:14:28.786Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:28.738Z'
updated_at: '2026-08-14T09:14:28.738Z'
- administration_id: 123
user_id: '495429852315255909'
action: document_updated
link_entity_id: null
link_entity_type: null
data:
changes:
total_price_excl_tax:
- '300.0'
- '325.2'
total_price_excl_tax_base:
- '300.0'
- '325.2'
cached_taxes:
- - tax_rate_id: '495429853091202189'
report_reference: NL/5b
payable: false
debit: '63.0'
credit: 0
- - tax_rate_id: '495429853091202189'
report_reference: NL/5b
payable: false
debit: '37.8'
credit: 0
updated_at:
- '2026-08-14T11:14:28.735+02:00'
- '2026-08-14T11:14:28.784+02:00'
created_at: '2026-08-14T09:14:28.792Z'
updated_at: '2026-08-14T09:14:28.792Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: Purchase invoices'
security:
- bearerAuth:
- documents
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.
### Required scope(s)
`documents`
tags:
- 'Documents: Purchase invoices'
security:
- bearerAuth:
- documents
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: 495429975344678800
todo: true
responses:
'201':
description: Note created
content:
application/json:
schema:
$ref: '#/components/schemas/note_response'
examples:
CreateANote:
summary: Create a note
value:
id: '495429975362504588'
administration_id: 123
entity_id: '495429975283861362'
entity_type: Document
user_id: '495429852315255909'
assignee_id: '495429975344678794'
todo: true
note: Text of the note
completed_at: null
completed_by_id: null
todo_type: null
data: {}
created_at: '2026-08-14T09:14:24.801Z'
updated_at: '2026-08-14T09:14:24.801Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: Purchase invoices'
security:
- bearerAuth:
- documents
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
description: |-
Filters are `key:value` terms separated by commas (e.g. `period:this_year,state:open`). Any filter you pass replaces the defaults below entirely, so include every key you need — in particular pass an explicit `period` (a named period or a `YYYYMMDD..YYYYMMDD` range) to look beyond the default financial year. Available filters:
| **Filter** | **Type** | **Default** | **Description** |
| - | - | - | - |
| period | `String` | `this_year` | A named period (`this_week`, `prev_week`, `next_week`, `this_month`, `prev_month`, `next_month`, `this_quarter`, `prev_quarter`, `next_quarter`, `this_year`, `prev_year`, `next_year`) or a custom range (`201301..201302`, `20130101..20130131`) |
| state | `String` | `all` | `all`, `new`, `saved`, `open`, `paid`, `late` or `pending_payment`. `paid`, `late` and `pending_payment` only apply to documents with a payment lifecycle (purchase invoices and receipts) |
| recurring | `String` | `all` | `all`, `enabled` or `disabled` |
| attachment | `String` | `all` | `all`, `with` or `without` |
| reference | `String` | | Documents with the given reference value |
| contact_id | `Integer` | | Documents belonging to the given contact |
| ledger_account_id | `Integer` | | Documents booking against the given ledger account |
| updated_after | `String` | | ISO 8601 timestamp in UTC; documents updated strictly after this time |
Multiple values for `state`, `recurring` and `attachment` can be combined with a pipe, e.g. `state:open|paid`.
schema:
type: string
default: period:this_year
- 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'
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: '495429975600531393'
administration_id: 123
contact_id: '495429975390816143'
contact:
id: '495429975390816143'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:24.828Z'
updated_at: '2026-08-14T09:14:24.828Z'
version: 1786698864
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-08-14'
due_date: '2026-08-28'
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: null
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-08-14T09:14:25.028Z'
updated_at: '2026-08-14T09:14:25.031Z'
version: 1786698865
details:
- id: '495429975601579970'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:25.030Z'
updated_at: '2026-08-14T09:14:25.030Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:25.034Z'
updated_at: '2026-08-14T09:14:25.034Z'
ReturnsAListOfPurchaseInvoices:
summary: Returns a list of purchase invoices
value:
- id: '495429975871063040'
administration_id: 123
contact_id: '495429975678126030'
contact:
id: '495429975678126030'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:25.102Z'
updated_at: '2026-08-14T09:14:25.102Z'
version: 1786698865
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-08-14'
due_date: '2026-08-28'
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: null
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-08-14T09:14:25.286Z'
updated_at: '2026-08-14T09:14:25.289Z'
version: 1786698865
details:
- id: '495429975873160193'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:25.288Z'
updated_at: '2026-08-14T09:14:25.288Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:25.292Z'
updated_at: '2026-08-14T09:14:25.292Z'
- id: '495429975830169588'
administration_id: 123
contact_id: '495429975678126030'
contact:
id: '495429975678126030'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:25.102Z'
updated_at: '2026-08-14T09:14:25.102Z'
version: 1786698865
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-08-14'
due_date: '2026-08-28'
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: null
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-08-14T09:14:25.248Z'
updated_at: '2026-08-14T09:14:25.251Z'
version: 1786698865
details:
- id: '495429975832266741'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:25.249Z'
updated_at: '2026-08-14T09:14:25.249Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:25.254Z'
updated_at: '2026-08-14T09:14:25.254Z'
- id: '495429975789275112'
administration_id: 123
contact_id: '495429975678126030'
contact:
id: '495429975678126030'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:25.102Z'
updated_at: '2026-08-14T09:14:25.102Z'
version: 1786698865
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-08-14'
due_date: '2026-08-28'
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: null
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-08-14T09:14:25.208Z'
updated_at: '2026-08-14T09:14:25.211Z'
version: 1786698865
details:
- id: '495429975790323689'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:25.210Z'
updated_at: '2026-08-14T09:14:25.210Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:25.214Z'
updated_at: '2026-08-14T09:14:25.214Z'
- id: '495429975709583312'
administration_id: 123
contact_id: '495429975678126030'
contact:
id: '495429975678126030'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:25.102Z'
updated_at: '2026-08-14T09:14:25.102Z'
version: 1786698865
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-08-14'
due_date: '2026-08-28'
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: null
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-08-14T09:14:25.132Z'
updated_at: '2026-08-14T09:14:25.135Z'
version: 1786698865
details:
- id: '495429975710631889'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:25.134Z'
updated_at: '2026-08-14T09:14:25.134Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:25.138Z'
updated_at: '2026-08-14T09:14:25.138Z'
ReturnsPaginatedPurchaseInvoicesOnPage2:
summary: Returns paginated purchase invoices on page 2
value:
- id: '495429976316707954'
administration_id: 123
contact_id: '495429976172004428'
contact:
id: '495429976172004428'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:25.574Z'
updated_at: '2026-08-14T09:14:25.574Z'
version: 1786698865
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: 2013-01234
date: '2026-08-14'
due_date: '2026-08-28'
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: null
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-08-14T09:14:25.711Z'
updated_at: '2026-08-14T09:14:25.715Z'
version: 1786698865
details:
- id: '495429976318805107'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:25.713Z'
updated_at: '2026-08-14T09:14:25.713Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:25.717Z'
updated_at: '2026-08-14T09:14:25.717Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: Purchase invoices'
security:
- bearerAuth:
- documents
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: Should be a valid contact id.
reference:
type: string
description: The supplier's invoice number or reference.
date:
type: string
description: The date on the supplier's invoice.
format: date
due_date:
type: string
description: The date by which the invoice should be paid.
format: date
currency:
type: string
description: ISO three-character currency code, e.g. EUR or USD.
prices_are_incl_tax:
type:
- boolean
- string
description: Whether the prices on the purchase invoice are inclusive of tax. Defaults to the administration setting.
revenue_invoice:
type:
- boolean
- string
description: When `true`, this purchase invoice is treated as a revenue invoice (e.g. a credit note from a supplier). Revenue invoices are booked as income instead of expenses.
details_attributes:
$ref: '#/components/schemas/details_attributes'
fiscal_allocations_attributes:
$ref: '#/components/schemas/fiscal_allocations_attributes'
required: []
required: []
examples:
CreatesThePurchaseInvoice:
summary: Creates the purchase invoice
value:
purchase_invoice:
reference: foobar
contact_id: 495429972662420900
details_attributes:
'0':
description: Lunch
price: 20
tax_rate_id: 495429853091202200
ledger_account_id: 495429852896167040
CreatesADocumentWithFiscalAllocations:
summary: Creates a document with fiscal allocations
value:
purchase_invoice:
reference: with fiscal allocations
contact_id: 495429978630915700
details_attributes:
- description: Test detail
price: 100
tax_rate_id: 495429853091202200
ledger_account_id: 495429852896167040
fiscal_allocations_attributes:
- ledger_account_id: 495429852896167040
private_ledger_account_id: 495429978716899000
percentage: '30'
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: '495429972775667164'
administration_id: 123
contact_id: '495429972662420930'
contact:
id: '495429972662420930'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:22.226Z'
updated_at: '2026-08-14T09:14:22.226Z'
version: 1786698862
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: foobar
date: '2026-08-14'
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: null
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-08-14T09:14:22.334Z'
updated_at: '2026-08-14T09:14:22.337Z'
version: 1786698862
details:
- id: '495429972776715741'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:22.336Z'
updated_at: '2026-08-14T09:14:22.336Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:22.340Z'
updated_at: '2026-08-14T09:14:22.340Z'
CreatesADocumentWithFiscalAllocations:
summary: Creates a document with fiscal allocations
value:
id: '495429978756744876'
administration_id: 123
contact_id: '495429978630915729'
contact:
id: '495429978630915729'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:27.918Z'
updated_at: '2026-08-14T09:14:27.918Z'
version: 1786698867
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: with fiscal allocations
date: '2026-08-14'
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: null
total_price_excl_tax: '106.3'
total_price_excl_tax_base: '106.3'
total_price_incl_tax: '121.0'
total_price_incl_tax_base: '121.0'
created_at: '2026-08-14T09:14:28.038Z'
updated_at: '2026-08-14T09:14:28.044Z'
version: 1786698868
details:
- id: '495429978760939182'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Test detail
price: '100.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '70.0'
total_price_excl_tax_with_discount_base: '70.0'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-08-14T09:14:28.042Z'
updated_at: '2026-08-14T09:14:28.042Z'
fiscal_allocations:
- id: '495429978758842029'
administration_id: 123
ledger_account_id: '495429852896167033'
private_ledger_account_id: '495429978716898987'
percentage: '30.0'
price: '36.3'
price_base: '36.3'
created_at: '2026-08-14T09:14:28.040Z'
updated_at: '2026-08-14T09:14:28.040Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:28.046Z'
updated_at: '2026-08-14T09:14:28.046Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: Receipts'
security:
- bearerAuth:
- documents
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
description: Comma-separated `key:value` filter terms. Same syntax as `GET /documents/receipts` — see that operation's description for the available keys.
schema:
type: string
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: '495429987402253835'
version: 1786698876
- id: '495429987478799907'
version: 1786698876
- id: '495429987515500079'
version: 1786698876
RetrievesAllIdsForSynchronizationUsingAFilter:
summary: Retrieves all ids for synchronization using a filter
value:
- id: '495429987578414654'
version: 1786698876
- id: '495429987656009302'
version: 1786698876
- id: '495429987690612322'
version: 1786698876
operationId: get_administration_id_documents_receipts_synchronization
post:
summary: Fetch receipts with given ids
x-query: true
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.
### Required scope(s)
`documents`
tags:
- 'Documents: Receipts'
security:
- bearerAuth:
- 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:
- 495429987831121540
- 495429987866773100
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: '495429987831121545'
administration_id: 123
contact_id: '495429987731506799'
contact:
id: '495429987731506799'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:36.597Z'
updated_at: '2026-08-14T09:14:36.597Z'
version: 1786698876
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-08-14'
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: null
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-08-14T09:14:36.693Z'
updated_at: '2026-08-14T09:14:36.696Z'
version: 1786698876
details:
- id: '495429987833218698'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:36.694Z'
updated_at: '2026-08-14T09:14:36.694Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:36.698Z'
updated_at: '2026-08-14T09:14:36.698Z'
- id: '495429987866773141'
administration_id: 123
contact_id: '495429987731506799'
contact:
id: '495429987731506799'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:36.597Z'
updated_at: '2026-08-14T09:14:36.597Z'
version: 1786698876
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-08-14'
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: null
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-08-14T09:14:36.726Z'
updated_at: '2026-08-14T09:14:36.729Z'
version: 1786698876
details:
- id: '495429987867821718'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:36.728Z'
updated_at: '2026-08-14T09:14:36.728Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:36.732Z'
updated_at: '2026-08-14T09:14:36.732Z'
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.
### Required scope(s)
`documents`
tags:
- 'Documents: Receipts'
security:
- bearerAuth:
- 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_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.
### Required scope(s)
`documents`
tags:
- 'Documents: Receipts'
security:
- bearerAuth:
- 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_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.
### Required scope(s)
`documents`
tags:
- 'Documents: Receipts'
security:
- bearerAuth:
- 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_receipts_id_attachments
/{administration_id}/documents/receipts/{id}/payments/{payment_id}{format}:
delete:
summary: Delete a payment
description: |-
Deletes a payment from a receipt.
### Required scope(s)
`documents`
tags:
- 'Documents: Receipts'
security:
- bearerAuth:
- documents
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.
### Required scope(s)
`documents`
tags:
- 'Documents: Receipts'
security:
- bearerAuth:
- 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:
payment:
type: object
unevaluatedProperties: false
properties:
payment_date:
type: string
description: The date on which the payment was made.
price:
$ref: '#/components/schemas/number'
description: The amount paid in the document's currency. 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 of the administration. Required when the document uses a different currency than the administration's base currency. Should be a number -1,000,000,000 <= *n* <= 1,000,000,000.
financial_account_id:
$ref: '#/components/schemas/identifier'
description: The ID of the financial account (bank account or cash register) associated with this payment. Required for `private_payment` and `cash_payment` actions. Should be a valid financial account id.
financial_mutation_id:
$ref: '#/components/schemas/identifier'
description: The ID of the bank transaction to link this payment to. Required for `bank_transfer` actions. Should be a valid financial mutation id.
transaction_identifier:
type: string
description: An external transaction reference, e.g. a bank transaction ID or PSP reference. Used to match the payment with financial mutations.
manual_payment_action:
type: string
description: Can be `private_payment` (needs financial_account_id), `payment_without_proof`, `cash_payment` (needs financial_account_id), `rounding_error`, `bank_transfer` (needs financial_mutation_id), `balance_settlement` (needs ledger_account_id) or `invoices_settlement` (needs invoice_id).
ledger_account_id:
$ref: '#/components/schemas/identifier'
description: The ID of the ledger account to book this payment to. Required for `balance_settlement` actions. Should be a valid ledger account id.
invoice_id:
$ref: '#/components/schemas/identifier'
description: The ID of the document to settle this payment against. Required for `invoices_settlement` actions. Should be a valid document id (sales invoice, purchase invoice, receipt, etc.).
required:
- payment_date
- price
required: []
examples:
CreateAPayment:
summary: Create a payment
value:
payment:
payment_date: '2026-08-14T09:14:29.945Z'
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: '495429980768961642'
administration_id: 123
invoice_type: Document
invoice_id: '495429980696609874'
financial_account_id: null
user_id: '495429852315255909'
payment_transaction_id: null
transaction_identifier: null
price: '300.0'
price_base: '300.0'
payment_date: '2026-08-14'
credit_invoice_id: null
financial_mutation_id: null
ledger_account_id: '495429852926575746'
linked_payment_id: null
manual_payment_action: null
created_at: '2026-08-14T09:14:29.957Z'
updated_at: '2026-08-14T09:14:29.957Z'
'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`.
### Required scope(s)
`documents`
deprecated: true
x-sunset: '2026-12-31'
tags:
- 'Documents: Receipts'
security:
- bearerAuth:
- 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:
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-08-14T09:14:31.775Z'
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.
### Required scope(s)
`documents`
tags:
- 'Documents: Receipts'
security:
- bearerAuth:
- 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 receipt
content:
application/json:
schema:
$ref: '#/components/schemas/receipt_response'
examples:
ReturnsTheWantedReceipt:
summary: Returns the wanted receipt
value:
id: '495429982131062184'
administration_id: 123
contact_id: '495429982104847782'
contact:
id: '495429982104847782'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:31.231Z'
updated_at: '2026-08-14T09:14:31.231Z'
version: 1786698871
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-08-14'
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: null
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-08-14T09:14:31.256Z'
updated_at: '2026-08-14T09:14:31.260Z'
version: 1786698871
details:
- id: '495429982133159337'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:31.258Z'
updated_at: '2026-08-14T09:14:31.258Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:31.262Z'
updated_at: '2026-08-14T09:14:31.262Z'
IncludesFiscalAllocations:
summary: Includes fiscal allocations
value:
id: '495429983676663592'
administration_id: 123
contact_id: '495429983574951694'
contact:
id: '495429983574951694'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:32.633Z'
updated_at: '2026-08-14T09:14:32.633Z'
version: 1786698872
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-08-14'
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: null
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-08-14T09:14:32.730Z'
updated_at: '2026-08-14T09:14:32.734Z'
version: 1786698872
details:
- id: '495429983678760745'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:32.732Z'
updated_at: '2026-08-14T09:14:32.732Z'
fiscal_allocations:
- id: '495429983710218037'
administration_id: 123
ledger_account_id: '495429852896167033'
private_ledger_account_id: '495429983706023732'
percentage: '25.0'
price: '75.0'
price_base: '75.0'
created_at: '2026-08-14T09:14:32.762Z'
updated_at: '2026-08-14T09:14:32.762Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:32.736Z'
updated_at: '2026-08-14T09:14:32.736Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: Receipts'
security:
- bearerAuth:
- 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:
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.
### Required scope(s)
`documents`
tags:
- 'Documents: Receipts'
security:
- bearerAuth:
- 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:
receipt:
type: object
unevaluatedProperties: false
properties:
contact_id:
$ref: '#/components/schemas/identifier'
description: Should be a valid contact id.
reference:
type: string
description: A reference for this receipt, e.g. a receipt number or supplier name.
date:
type: string
description: The date of the receipt.
format: date
currency:
type: string
description: ISO three-character currency code, e.g. EUR or USD.
prices_are_incl_tax:
type:
- boolean
- string
description: Whether the prices on the receipt are inclusive of tax.
details_attributes:
$ref: '#/components/schemas/details_attributes'
fiscal_allocations_attributes:
$ref: '#/components/schemas/fiscal_allocations_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:
UpdatesTheReceiptDetails:
summary: Updates the receipt details
value:
receipt:
details_attributes:
'0':
id: 495429981257598140
description: updated description
price: 20
UpdatesTheReceipt:
summary: Updates the receipt
value:
receipt:
reference: updated reference
RemovesAFiscalAllocationWithDestroy:
summary: Removes a fiscal allocation with destroy
value:
receipt:
fiscal_allocations_attributes:
'0':
id: 495429983500502800
_destroy: true
AddsFiscalAllocationsToAnExistingDocument:
summary: Adds fiscal allocations to an existing document
value:
receipt:
fiscal_allocations_attributes:
- ledger_account_id: 495429852896167040
private_ledger_account_id: 495429983868553000
percentage: '40'
responses:
'200':
description: Receipt updated
content:
application/json:
schema:
$ref: '#/components/schemas/receipt_response'
examples:
UpdatesTheReceiptDetails:
summary: Updates the receipt details
value:
id: '495429981255501019'
administration_id: 123
contact_id: '495429981232432345'
contact:
id: '495429981232432345'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:30.399Z'
updated_at: '2026-08-14T09:14:30.399Z'
version: 1786698870
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-08-14'
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: null
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-08-14T09:14:30.421Z'
updated_at: '2026-08-14T09:14:30.508Z'
version: 1786698870
details:
- id: '495429981257598172'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:30.423Z'
updated_at: '2026-08-14T09:14:30.506Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:30.427Z'
updated_at: '2026-08-14T09:14:30.427Z'
- administration_id: 123
user_id: '495429852315255909'
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: '495429853091202189'
report_reference: NL/5b
payable: false
debit: '52.07'
credit: 0
- - tax_rate_id: '495429853091202189'
report_reference: NL/5b
payable: false
debit: '3.47'
credit: 0
updated_at:
- '2026-08-14T11:14:30.424+02:00'
- '2026-08-14T11:14:30.505+02:00'
detail_changes:
- id: '495429981257598172'
change: updated
description:
- Delivery Apple iPad
- updated description
price:
- '300.0'
- '20.0'
created_at: '2026-08-14T09:14:30.510Z'
updated_at: '2026-08-14T09:14:30.510Z'
UpdatesTheReceipt:
summary: Updates the receipt
value:
id: '495429981416981769'
administration_id: 123
contact_id: '495429981394961671'
contact:
id: '495429981394961671'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:30.554Z'
updated_at: '2026-08-14T09:14:30.554Z'
version: 1786698870
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: updated reference
date: '2026-08-14'
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: null
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-08-14T09:14:30.576Z'
updated_at: '2026-08-14T09:14:30.657Z'
version: 1786698870
details:
- id: '495429981419078922'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:30.578Z'
updated_at: '2026-08-14T09:14:30.578Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:30.582Z'
updated_at: '2026-08-14T09:14:30.582Z'
- administration_id: 123
user_id: '495429852315255909'
action: document_updated
link_entity_id: null
link_entity_type: null
data:
changes:
reference:
- Lunch supermarket
- updated reference
updated_at:
- '2026-08-14T11:14:30.579+02:00'
- '2026-08-14T11:14:30.657+02:00'
created_at: '2026-08-14T09:14:30.661Z'
updated_at: '2026-08-14T09:14:30.661Z'
RemovesAFiscalAllocationWithDestroy:
summary: Removes a fiscal allocation with destroy
value:
id: '495429983476385516'
administration_id: 123
contact_id: '495429983374673618'
contact:
id: '495429983374673618'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:32.442Z'
updated_at: '2026-08-14T09:14:32.442Z'
version: 1786698872
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-08-14'
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: null
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-08-14T09:14:32.539Z'
updated_at: '2026-08-14T09:14:32.543Z'
version: 1786698872
details:
- id: '495429983478482669'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:32.541Z'
updated_at: '2026-08-14T09:14:32.541Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:32.545Z'
updated_at: '2026-08-14T09:14:32.545Z'
- administration_id: 123
user_id: '495429852315255909'
action: document_updated
link_entity_id: null
link_entity_type: null
data:
changes: {}
created_at: '2026-08-14T09:14:32.591Z'
updated_at: '2026-08-14T09:14:32.591Z'
AddsFiscalAllocationsToAnExistingDocument:
summary: Adds fiscal allocations to an existing document
value:
id: '495429983849678673'
administration_id: 123
contact_id: '495429983750063927'
contact:
id: '495429983750063927'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:32.800Z'
updated_at: '2026-08-14T09:14:32.800Z'
version: 1786698872
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-08-14'
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: null
total_price_excl_tax: '268.76'
total_price_excl_tax_base: '268.76'
total_price_incl_tax: '300.0'
total_price_incl_tax_base: '300.0'
created_at: '2026-08-14T09:14:32.895Z'
updated_at: '2026-08-14T09:14:32.946Z'
version: 1786698872
details:
- id: '495429983850727250'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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: '148.76'
total_price_excl_tax_with_discount_base: '148.76'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-08-14T09:14:32.897Z'
updated_at: '2026-08-14T09:14:32.944Z'
fiscal_allocations:
- id: '495429983900010334'
administration_id: 123
ledger_account_id: '495429852896167033'
private_ledger_account_id: '495429983868553053'
percentage: '40.0'
price: '120.0'
price_base: '120.0'
created_at: '2026-08-14T09:14:32.943Z'
updated_at: '2026-08-14T09:14:32.943Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:32.901Z'
updated_at: '2026-08-14T09:14:32.901Z'
- administration_id: 123
user_id: '495429852315255909'
action: document_updated
link_entity_id: null
link_entity_type: null
data:
changes:
total_price_excl_tax:
- '247.93'
- '268.76'
total_price_excl_tax_base:
- '247.93'
- '268.76'
cached_taxes:
- - tax_rate_id: '495429853091202189'
report_reference: NL/5b
payable: false
debit: '52.07'
credit: 0
- - tax_rate_id: '495429853091202189'
report_reference: NL/5b
payable: false
debit: '31.24'
credit: 0
updated_at:
- '2026-08-14T11:14:32.898+02:00'
- '2026-08-14T11:14:32.942+02:00'
created_at: '2026-08-14T09:14:32.948Z'
updated_at: '2026-08-14T09:14:32.948Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: Receipts'
security:
- bearerAuth:
- documents
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.
### Required scope(s)
`documents`
tags:
- 'Documents: Receipts'
security:
- bearerAuth:
- documents
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: 495429980419785700
todo: true
responses:
'201':
description: Note created
content:
application/json:
schema:
$ref: '#/components/schemas/note_response'
examples:
CreateANote:
summary: Create a note
value:
id: '495429980436562967'
administration_id: 123
entity_id: '495429980357920765'
entity_type: Document
user_id: '495429852315255909'
assignee_id: '495429980419785749'
todo: true
note: Text of the note
completed_at: null
completed_by_id: null
todo_type: null
data: {}
created_at: '2026-08-14T09:14:29.640Z'
updated_at: '2026-08-14T09:14:29.640Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: Receipts'
security:
- bearerAuth:
- documents
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
description: |-
Filters are `key:value` terms separated by commas (e.g. `period:this_year,state:open`). Any filter you pass replaces the defaults below entirely, so include every key you need — in particular pass an explicit `period` (a named period or a `YYYYMMDD..YYYYMMDD` range) to look beyond the default financial year. Available filters:
| **Filter** | **Type** | **Default** | **Description** |
| - | - | - | - |
| period | `String` | `this_year` | A named period (`this_week`, `prev_week`, `next_week`, `this_month`, `prev_month`, `next_month`, `this_quarter`, `prev_quarter`, `next_quarter`, `this_year`, `prev_year`, `next_year`) or a custom range (`201301..201302`, `20130101..20130131`) |
| state | `String` | `all` | `all`, `new`, `saved`, `open`, `paid`, `late` or `pending_payment`. `paid`, `late` and `pending_payment` only apply to documents with a payment lifecycle (purchase invoices and receipts) |
| recurring | `String` | `all` | `all`, `enabled` or `disabled` |
| attachment | `String` | `all` | `all`, `with` or `without` |
| reference | `String` | | Documents with the given reference value |
| contact_id | `Integer` | | Documents belonging to the given contact |
| ledger_account_id | `Integer` | | Documents booking against the given ledger account |
| updated_after | `String` | | ISO 8601 timestamp in UTC; documents updated strictly after this time |
Multiple values for `state`, `recurring` and `attachment` can be combined with a pipe, e.g. `state:open|paid`.
schema:
type: string
default: period:this_year
- 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'
responses:
'200':
description: A list of receipts
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/receipt_response'
examples:
ReturnsAListOfReceipts:
summary: Returns a list of receipts
value:
- id: '495429985924809896'
administration_id: 123
contact_id: '495429985733969014'
contact:
id: '495429985733969014'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:34.692Z'
updated_at: '2026-08-14T09:14:34.692Z'
version: 1786698874
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-08-14'
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: null
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-08-14T09:14:34.875Z'
updated_at: '2026-08-14T09:14:34.879Z'
version: 1786698874
details:
- id: '495429985927955625'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:34.877Z'
updated_at: '2026-08-14T09:14:34.877Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:34.881Z'
updated_at: '2026-08-14T09:14:34.881Z'
- id: '495429985884963996'
administration_id: 123
contact_id: '495429985733969014'
contact:
id: '495429985733969014'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:34.692Z'
updated_at: '2026-08-14T09:14:34.692Z'
version: 1786698874
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-08-14'
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: null
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-08-14T09:14:34.836Z'
updated_at: '2026-08-14T09:14:34.840Z'
version: 1786698874
details:
- id: '495429985887061149'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:34.838Z'
updated_at: '2026-08-14T09:14:34.838Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:34.843Z'
updated_at: '2026-08-14T09:14:34.843Z'
- id: '495429985845118096'
administration_id: 123
contact_id: '495429985733969014'
contact:
id: '495429985733969014'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:34.692Z'
updated_at: '2026-08-14T09:14:34.692Z'
version: 1786698874
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-08-14'
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: null
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-08-14T09:14:34.798Z'
updated_at: '2026-08-14T09:14:34.802Z'
version: 1786698874
details:
- id: '495429985847215249'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:34.800Z'
updated_at: '2026-08-14T09:14:34.800Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:34.804Z'
updated_at: '2026-08-14T09:14:34.804Z'
- id: '495429985759134840'
administration_id: 123
contact_id: '495429985733969014'
contact:
id: '495429985733969014'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:34.692Z'
updated_at: '2026-08-14T09:14:34.692Z'
version: 1786698874
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-08-14'
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: null
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-08-14T09:14:34.716Z'
updated_at: '2026-08-14T09:14:34.719Z'
version: 1786698874
details:
- id: '495429985761231993'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:34.718Z'
updated_at: '2026-08-14T09:14:34.718Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:34.722Z'
updated_at: '2026-08-14T09:14:34.722Z'
ReturnsPaginatedReceiptsOnPage2:
summary: Returns paginated receipts on page 2
value:
- id: '495429986365211930'
administration_id: 123
contact_id: '495429986224702708'
contact:
id: '495429986224702708'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:35.160Z'
updated_at: '2026-08-14T09:14:35.160Z'
version: 1786698875
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-08-14'
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: null
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-08-14T09:14:35.294Z'
updated_at: '2026-08-14T09:14:35.298Z'
version: 1786698875
details:
- id: '495429986367309083'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:35.296Z'
updated_at: '2026-08-14T09:14:35.296Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:35.300Z'
updated_at: '2026-08-14T09:14:35.300Z'
ReturnsPaginatedReceiptsOnPage1:
summary: Returns paginated receipts on page 1
value:
- id: '495429986665104741'
administration_id: 123
contact_id: '495429986485798195'
contact:
id: '495429986485798195'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:35.409Z'
updated_at: '2026-08-14T09:14:35.409Z'
version: 1786698875
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: Lunch supermarket
date: '2026-08-14'
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: null
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-08-14T09:14:35.581Z'
updated_at: '2026-08-14T09:14:35.584Z'
version: 1786698875
details:
- id: '495429986667201894'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:35.582Z'
updated_at: '2026-08-14T09:14:35.582Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:35.586Z'
updated_at: '2026-08-14T09:14:35.586Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: Receipts'
security:
- bearerAuth:
- documents
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: Should be a valid contact id.
reference:
type: string
description: A reference for this receipt, e.g. a receipt number or supplier name.
date:
type: string
description: The date of the receipt.
format: date
currency:
type: string
description: ISO three-character currency code, e.g. EUR or USD.
prices_are_incl_tax:
type:
- boolean
- string
description: Whether the prices on the receipt are inclusive of tax. Defaults to the administration setting.
details_attributes:
$ref: '#/components/schemas/details_attributes'
fiscal_allocations_attributes:
$ref: '#/components/schemas/fiscal_allocations_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:
CreatesADocumentWithFiscalAllocations:
summary: Creates a document with fiscal allocations
value:
receipt:
reference: with fiscal allocations
contact_id: 495429983069537900
details_attributes:
- description: Test detail
price: 100
tax_rate_id: 495429853091202200
ledger_account_id: 495429852896167040
fiscal_allocations_attributes:
- ledger_account_id: 495429852896167040
private_ledger_account_id: 495429983160764100
percentage: '30'
CreatesTheReceipt:
summary: Creates the receipt
value:
receipt:
reference: foobar
contact_id: 495429988026156740
details_attributes:
'0':
description: Lunch
price: 20
tax_rate_id: 495429853091202200
ledger_account_id: 495429852896167040
responses:
'201':
description: Receipt created
content:
application/json:
schema:
$ref: '#/components/schemas/receipt_response'
examples:
CreatesADocumentWithFiscalAllocations:
summary: Creates a document with fiscal allocations
value:
id: '495429983193269925'
administration_id: 123
contact_id: '495429983069537930'
contact:
id: '495429983069537930'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:32.151Z'
updated_at: '2026-08-14T09:14:32.151Z'
version: 1786698872
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: with fiscal allocations
date: '2026-08-14'
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: null
total_price_excl_tax: '87.85'
total_price_excl_tax_base: '87.85'
total_price_incl_tax: '100.0'
total_price_incl_tax_base: '100.0'
created_at: '2026-08-14T09:14:32.269Z'
updated_at: '2026-08-14T09:14:32.274Z'
version: 1786698872
details:
- id: '495429983196415655'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
project_id: null
product_id: null
amount: null
amount_decimal: '1.0'
description: Test detail
price: '100.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '57.85'
total_price_excl_tax_with_discount_base: '57.85'
tax_report_reference:
- NL/5b
mandatory_tax_text: null
created_at: '2026-08-14T09:14:32.272Z'
updated_at: '2026-08-14T09:14:32.272Z'
fiscal_allocations:
- id: '495429983194318502'
administration_id: 123
ledger_account_id: '495429852896167033'
private_ledger_account_id: '495429983160764068'
percentage: '30.0'
price: '30.0'
price_base: '30.0'
created_at: '2026-08-14T09:14:32.271Z'
updated_at: '2026-08-14T09:14:32.271Z'
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:32.276Z'
updated_at: '2026-08-14T09:14:32.276Z'
CreatesTheReceipt:
summary: Creates the receipt
value:
id: '495429988179248855'
administration_id: 123
contact_id: '495429988026156733'
contact:
id: '495429988026156733'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:14:36.878Z'
updated_at: '2026-08-14T09:14:36.878Z'
version: 1786698876
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: foobar
date: '2026-08-14'
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: null
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-08-14T09:14:37.024Z'
updated_at: '2026-08-14T09:14:37.028Z'
version: 1786698877
details:
- id: '495429988181346008'
administration_id: 123
tax_rate_id: '495429853091202189'
ledger_account_id: '495429852896167033'
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-08-14T09:14:37.026Z'
updated_at: '2026-08-14T09:14:37.026Z'
fiscal_allocations: []
payments: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:14:37.030Z'
updated_at: '2026-08-14T09:14:37.030Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: Typeless documents'
security:
- bearerAuth:
- documents
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
description: Comma-separated `key:value` filter terms. Same syntax as `GET /documents/typeless_documents` — see that operation's description for the available keys.
schema:
type: 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:
RetrievesAllIdsForSynchronization:
summary: Retrieves all ids for synchronization
value:
- id: '495429873165141262'
version: 1786698767
- id: '495429873176675600'
version: 1786698767
- id: '495429873187161362'
version: 1786698767
operationId: get_administration_id_documents_typeless_documents_synchronization
post:
summary: Fetch typeless documents with given ids
x-query: true
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.
### Required scope(s)
`documents`
tags:
- 'Documents: Typeless documents'
security:
- bearerAuth:
- 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:
- 495429873330816300
- 495429873342350660
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: '495429873342350631'
administration_id: 123
contact_id: null
contact: null
reference: '20130456'
date: '2026-08-14'
state: new
origin: null
created_at: '2026-08-14T09:12:47.507Z'
updated_at: '2026-08-14T09:12:47.507Z'
version: 1786698767
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:47.510Z'
updated_at: '2026-08-14T09:12:47.510Z'
- id: '495429873330816293'
administration_id: 123
contact_id: null
contact: null
reference: '20130456'
date: '2026-08-14'
state: new
origin: null
created_at: '2026-08-14T09:12:47.496Z'
updated_at: '2026-08-14T09:12:47.496Z'
version: 1786698767
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:47.499Z'
updated_at: '2026-08-14T09:12:47.499Z'
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.
### Required scope(s)
`documents`
tags:
- 'Documents: Typeless documents'
security:
- bearerAuth:
- 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.
### Required scope(s)
`documents`
tags:
- 'Documents: Typeless documents'
security:
- bearerAuth:
- 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.
### Required scope(s)
`documents`
tags:
- 'Documents: Typeless documents'
security:
- bearerAuth:
- 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.
### Required scope(s)
`documents`
tags:
- 'Documents: Typeless documents'
security:
- bearerAuth:
- 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: '495429873596106057'
administration_id: 123
contact_id: null
contact: null
reference: '20130456'
date: '2026-08-14'
state: new
origin: null
created_at: '2026-08-14T09:12:47.749Z'
updated_at: '2026-08-14T09:12:47.749Z'
version: 1786698767
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:47.753Z'
updated_at: '2026-08-14T09:12:47.753Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: Typeless documents'
security:
- bearerAuth:
- 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.
### Required scope(s)
`documents`
tags:
- 'Documents: Typeless documents'
security:
- bearerAuth:
- documents
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
description: |-
Filters are `key:value` terms separated by commas (e.g. `period:this_year,state:open`). Any filter you pass replaces the defaults below entirely, so include every key you need — in particular pass an explicit `period` (a named period or a `YYYYMMDD..YYYYMMDD` range) to look beyond the default financial year. Available filters:
| **Filter** | **Type** | **Default** | **Description** |
| - | - | - | - |
| period | `String` | `this_year` | A named period (`this_week`, `prev_week`, `next_week`, `this_month`, `prev_month`, `next_month`, `this_quarter`, `prev_quarter`, `next_quarter`, `this_year`, `prev_year`, `next_year`) or a custom range (`201301..201302`, `20130101..20130131`) |
| state | `String` | `all` | `all`, `new`, `saved`, `open`, `paid`, `late` or `pending_payment`. `paid`, `late` and `pending_payment` only apply to documents with a payment lifecycle (purchase invoices and receipts) |
| recurring | `String` | `all` | `all`, `enabled` or `disabled` |
| attachment | `String` | `all` | `all`, `with` or `without` |
| reference | `String` | | Documents with the given reference value |
| contact_id | `Integer` | | Documents belonging to the given contact |
| ledger_account_id | `Integer` | | Documents booking against the given ledger account |
| updated_after | `String` | | ISO 8601 timestamp in UTC; documents updated strictly after this time |
Multiple values for `state`, `recurring` and `attachment` can be combined with a pipe, e.g. `state:open|paid`.
schema:
type: string
default: period:this_year
- 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'
responses:
'200':
description: A list of typeless documents
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/typeless_document_response'
examples:
ReturnsPaginatedTypelessDocumentsOnPage2:
summary: Returns paginated typeless documents on page 2
value:
- id: '495429874381489595'
administration_id: 123
contact_id: null
contact: null
reference: '20130456'
date: '2026-08-14'
state: new
origin: null
created_at: '2026-08-14T09:12:48.498Z'
updated_at: '2026-08-14T09:12:48.498Z'
version: 1786698768
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:48.500Z'
updated_at: '2026-08-14T09:12:48.500Z'
ReturnsPaginatedTypelessDocumentsOnPage1:
summary: Returns paginated typeless documents on page 1
value:
- id: '495429874554504660'
administration_id: 123
contact_id: null
contact: null
reference: '20130456'
date: '2026-08-14'
state: new
origin: null
created_at: '2026-08-14T09:12:48.663Z'
updated_at: '2026-08-14T09:12:48.663Z'
version: 1786698768
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:48.666Z'
updated_at: '2026-08-14T09:12:48.666Z'
ReturnsAListOfTypelessDocuments:
summary: Returns a list of typeless documents
value:
- id: '495429874729616875'
administration_id: 123
contact_id: null
contact: null
reference: '20130456'
date: '2026-08-14'
state: new
origin: null
created_at: '2026-08-14T09:12:48.830Z'
updated_at: '2026-08-14T09:12:48.830Z'
version: 1786698768
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:48.833Z'
updated_at: '2026-08-14T09:12:48.833Z'
- id: '495429874719131113'
administration_id: 123
contact_id: null
contact: null
reference: '20130456'
date: '2026-08-14'
state: new
origin: null
created_at: '2026-08-14T09:12:48.820Z'
updated_at: '2026-08-14T09:12:48.820Z'
version: 1786698768
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:48.823Z'
updated_at: '2026-08-14T09:12:48.823Z'
- id: '495429874707596775'
administration_id: 123
contact_id: null
contact: null
reference: '20130456'
date: '2026-08-14'
state: new
origin: null
created_at: '2026-08-14T09:12:48.810Z'
updated_at: '2026-08-14T09:12:48.810Z'
version: 1786698768
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:48.813Z'
updated_at: '2026-08-14T09:12:48.813Z'
- id: '495429874697111013'
administration_id: 123
contact_id: null
contact: null
reference: '20130456'
date: '2026-08-14'
state: new
origin: null
created_at: '2026-08-14T09:12:48.799Z'
updated_at: '2026-08-14T09:12:48.799Z'
version: 1786698768
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:48.802Z'
updated_at: '2026-08-14T09:12:48.802Z'
'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.
### Required scope(s)
`documents`
tags:
- 'Documents: Typeless documents'
security:
- bearerAuth:
- 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
format: date
description: Date of the document. Defaults to today.
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: 495429873894950300
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: '495429873971496318'
administration_id: 123
contact_id: '495429873894950254'
contact:
id: '495429873894950254'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:12:48.033Z'
updated_at: '2026-08-14T09:12:48.033Z'
version: 1786698768
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
reference: foobar
date: '2026-08-14'
state: new
origin: api
created_at: '2026-08-14T09:12:48.107Z'
updated_at: '2026-08-14T09:12:48.107Z'
version: 1786698768
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: document_saved
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:12:48.110Z'
updated_at: '2026-08-14T09:12:48.110Z'
'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 required permission scope depends on the download's type (for example `export_documents` requires `documents`, `export_sales_invoices` requires `sales_invoices`, `export_contacts` requires `contacts`, and report exports require the same permissions as the corresponding report). The token must have the permission matching the download 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
security:
- bearerAuth: []
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
security:
- bearerAuth: []
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:
ReturnsDownloadsByFailedStatus:
summary: Returns downloads by failed status
value:
- id: '495429945448727577'
user_id: null
download_type: export_documents
filename: Unknown
content_type: application/octet-stream
failed: true
downloaded: false
created_at: '2026-08-14T09:13:56.274Z'
updated_at: '2026-08-14T09:13:56.274Z'
ReturnsPaginatedDownloads:
summary: Returns paginated downloads
value:
- id: '495429945517933598'
user_id: null
download_type: export_sales_invoices
filename: Unknown
content_type: application/octet-stream
failed: false
downloaded: true
created_at: '2026-08-14T09:13:56.339Z'
updated_at: '2026-08-14T09:13:56.339Z'
ReturnsDownloadsByDownloadedStatus:
summary: Returns downloads by downloaded status
value:
- id: '495429945560925217'
user_id: null
download_type: export_sales_invoices
filename: Unknown
content_type: application/octet-stream
failed: false
downloaded: true
created_at: '2026-08-14T09:13:56.380Z'
updated_at: '2026-08-14T09:13:56.380Z'
ReturnsAllDownloadsOfAnAdministration:
summary: Returns all downloads of an administration
value:
- id: '495429945607062565'
user_id: null
download_type: export_documents
filename: Unknown
content_type: application/octet-stream
failed: true
downloaded: false
created_at: '2026-08-14T09:13:56.425Z'
updated_at: '2026-08-14T09:13:56.425Z'
- id: '495429945604965412'
user_id: null
download_type: export_sales_invoices
filename: Unknown
content_type: application/octet-stream
failed: false
downloaded: true
created_at: '2026-08-14T09:13:56.423Z'
updated_at: '2026-08-14T09:13:56.423Z'
- id: '495429945602868259'
user_id: null
download_type: export_contacts
filename: Unknown
content_type: application/octet-stream
failed: false
downloaded: false
created_at: '2026-08-14T09:13:56.420Z'
updated_at: '2026-08-14T09:13:56.420Z'
ReturnsDownloadsByDownloadType:
summary: Returns downloads by download type
value:
- id: '495429945664734246'
user_id: null
download_type: export_contacts
filename: Unknown
content_type: application/octet-stream
failed: false
downloaded: false
created_at: '2026-08-14T09:13:56.479Z'
updated_at: '2026-08-14T09:13:56.479Z'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/symbolic_error'
examples:
ReturnsAnErrorWhenPerPageExceedsLimit:
summary: Returns an error when per page exceeds limit
value:
error: per_page does not have a valid value
ReturnsAnErrorWhenDownloadTypeIsInvalid:
summary: Returns an error when download type is invalid
value:
error: download_type 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
### Required scope(s)
`estimates`
tags:
- Estimates
security:
- bearerAuth:
- 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: '495430041617827325'
administration_id: 123
contact_id: '495430041579030008'
contact:
id: '495430041579030008'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:27.950Z'
updated_at: '2026-08-14T09:15:27.950Z'
version: 1786698927
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: '495430041583224314'
contact_person:
id: null
contact_id: '495430041579030008'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-08-14T09:15:27.954Z'
updated_at: '2026-08-14T09:15:27.954Z'
version: 1786698927
estimate_id: 2026-0001
estimate_sequence_id: '0001'
workflow_id: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:27.988Z'
updated_at: '2026-08-14T09:15:28.045Z'
public_view_code: '417488'
public_view_code_expires_at: '2026-11-14T09:15:28.016Z'
version: 1786698928
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430041620973054'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:27.990Z'
updated_at: '2026-08-14T09:15:28.043Z'
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/0000000000000000000000000000000000000000000000000000000000000001/8fdc39ff14ed7a81b37dc3b63533a3218460e612cae4f2ce6fd799981f63a638/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:27.995Z'
updated_at: '2026-08-14T09:15:27.995Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:28.052Z'
updated_at: '2026-08-14T09:15:28.052Z'
tax_totals:
- tax_rate_id: '495429853078619274'
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.
### Required scope(s)
`estimates`
tags:
- Estimates
security:
- bearerAuth:
- estimates
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
description: Comma-separated `key:value` filter terms. Same syntax as `GET /estimates` — see that operation's description for the available keys.
schema:
type: string
examples:
ReturnsUniqueIdsEvenWhenEstimatesHaveMultipleAttachments:
summary: Returns unique ids even when estimates have multiple attachments
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: '495430039008970133'
version: 1786698925
- id: '495430038904112528'
version: 1786698925
ReturnsUniqueIdsEvenWhenEstimatesHaveMultipleAttachments:
summary: Returns unique ids even when estimates have multiple attachments
value:
- id: '495430039081321886'
version: 1786698925
RetrievesTheIdsForSynchronizationFilteredOnState:
summary: Retrieves the ids for synchronization filtered on state
value:
- id: '495430039263774126'
version: 1786698925
operationId: get_administration_id_estimates_synchronization
post:
summary: Fetch estimates with given ids
x-query: true
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.
### Required scope(s)
`estimates`
tags:
- Estimates
security:
- bearerAuth:
- 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:
- 495430032162818000
- 495430032061106100
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: '495430032162817983'
administration_id: 123
contact_id: '495430032011823029'
contact:
id: '495430032011823029'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:18.826Z'
updated_at: '2026-08-14T09:15:18.826Z'
version: 1786698918
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people:
- id: '495430032016017335'
contact_id: '495430032011823029'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-08-14T09:15:18.830Z'
updated_at: '2026-08-14T09:15:18.830Z'
version: 1786698918
archived: false
contact_person_id: null
contact_person: null
estimate_id: null
estimate_sequence_id: null
workflow_id: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: 2
state: draft
estimate_date: null
due_date: '2026-08-28'
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-08-14T09:15:18.970Z'
updated_at: '2026-08-14T09:15:18.973Z'
public_view_code: null
public_view_code_expires_at: null
version: 1786698918
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430032164915136'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:18.972Z'
updated_at: '2026-08-14T09:15:18.972Z'
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/0000000000000000000000000000000000000000000000000000000000000001/3a90971714d29f819633b6a484c34297d3f321576bcc1c06cf44c1234df5140a/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:18.977Z'
updated_at: '2026-08-14T09:15:18.977Z'
tax_totals:
- tax_rate_id: '495429853078619274'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '495430032061106106'
administration_id: 123
contact_id: '495430032011823029'
contact:
id: '495430032011823029'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:18.826Z'
updated_at: '2026-08-14T09:15:18.826Z'
version: 1786698918
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: '495430032016017335'
contact_person:
id: null
contact_id: '495430032011823029'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-08-14T09:15:18.830Z'
updated_at: '2026-08-14T09:15:18.830Z'
version: 1786698918
estimate_id: 2026-0001
estimate_sequence_id: '0001'
workflow_id: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:18.873Z'
updated_at: '2026-08-14T09:15:18.929Z'
public_view_code: '812517'
public_view_code_expires_at: '2026-11-14T09:15:18.901Z'
version: 1786698918
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430032063203259'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:18.875Z'
updated_at: '2026-08-14T09:15:18.928Z'
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/0000000000000000000000000000000000000000000000000000000000000001/ca7ea7e90765cb5719fb914e78de1cc08c72b08b943897ec98c89b7021fb2295/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:18.880Z'
updated_at: '2026-08-14T09:15:18.880Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:18.936Z'
updated_at: '2026-08-14T09:15:18.936Z'
tax_totals:
- tax_rate_id: '495429853078619274'
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.
### Required scope(s)
`estimates`
tags:
- Estimates
security:
- bearerAuth:
- 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.
### Required scope(s)
`estimates`
tags:
- Estimates
security:
- bearerAuth:
- 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.
### Required scope(s)
`estimates`
tags:
- Estimates
security:
- bearerAuth:
- 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.
### Required scope(s)
`estimates`
tags:
- Estimates
security:
- bearerAuth:
- 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: 495430038665037200
todo: true
responses:
'201':
description: Note created
content:
application/json:
schema:
$ref: '#/components/schemas/note_response'
examples:
CreatesANote:
summary: Creates a note
value:
id: '495430038682862973'
administration_id: 123
entity_id: '495430038580102518'
entity_type: Estimate
user_id: '495429852315255909'
assignee_id: '495430038665037179'
todo: true
note: A pending TODO
completed_at: null
completed_by_id: null
todo_type: null
data: {}
created_at: '2026-08-14T09:15:25.188Z'
updated_at: '2026-08-14T09:15:25.188Z'
'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.
### Required scope(s)
`estimates`
tags:
- Estimates
security:
- bearerAuth:
- 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.
### Required scope(s)
`estimates`
tags:
- Estimates
security:
- bearerAuth:
- 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: '495430042327713321'
administration_id: 123
contact_id: '495430042003703321'
contact:
id: '495430042003703321'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:28.355Z'
updated_at: '2026-08-14T09:15:28.355Z'
version: 1786698928
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people:
- id: '495430042007897627'
contact_id: '495430042003703321'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-08-14T09:15:28.359Z'
updated_at: '2026-08-14T09:15:28.359Z'
version: 1786698928
archived: false
contact_person_id: null
contact_person: null
invoice_id: null
recurring_sales_invoice_id: null
subscription_id: null
workflow_id: '495429853366977679'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: 1
state: draft
invoice_date: null
due_date: '2026-08-28'
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-08-14T09:15:28.664Z'
updated_at: '2026-08-14T09:15:28.669Z'
public_view_code: null
public_view_code_expires_at: null
version: 1786698928
details:
- id: '495430042330859050'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:28.667Z'
updated_at: '2026-08-14T09:15:28.667Z'
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: '495430042175669795'
url: http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/18113e0797f0c6031f009d68ae15d995483ce7f4368b88f6e90eabbddc37a4be/sales_invoice
payment_url: http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/18113e0797f0c6031f009d68ae15d995483ce7f4368b88f6e90eabbddc37a4be/sales_invoice
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: sales_invoice_created_based_on_estimate
link_entity_id: null
link_entity_type: null
data:
original_estimate: 2026-0002
created_at: '2026-08-14T09:15:28.673Z'
updated_at: '2026-08-14T09:15:28.673Z'
tax_totals:
- tax_rate_id: '495429853078619274'
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: '495430042715686462'
administration_id: 123
contact_id: '495430042418939438'
contact:
id: '495430042418939438'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:28.751Z'
updated_at: '2026-08-14T09:15:28.751Z'
version: 1786698928
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people:
- id: '495430042423133744'
contact_id: '495430042418939438'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-08-14T09:15:28.756Z'
updated_at: '2026-08-14T09:15:28.756Z'
version: 1786698928
archived: false
contact_person_id: null
contact_person: null
invoice_id: null
recurring_sales_invoice_id: null
subscription_id: null
workflow_id: '495429853366977679'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: 1
state: draft
invoice_date: null
due_date: '2026-08-28'
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-08-14T09:15:29.034Z'
updated_at: '2026-08-14T09:15:29.039Z'
public_view_code: null
public_view_code_expires_at: null
version: 1786698929
details:
- id: '495430042718832191'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:29.037Z'
updated_at: '2026-08-14T09:15:29.037Z'
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: '495430042570982968'
url: http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/fa2761a331bbac1d81d0947736a0fec312b575f49b4d07bf0818a16950b19b1e/sales_invoice
payment_url: http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/fa2761a331bbac1d81d0947736a0fec312b575f49b4d07bf0818a16950b19b1e/sales_invoice
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: sales_invoice_created_based_on_estimate
link_entity_id: null
link_entity_type: null
data:
original_estimate: 2026-0002
created_at: '2026-08-14T09:15:29.041Z'
updated_at: '2026-08-14T09:15:29.041Z'
tax_totals:
- tax_rate_id: '495429853078619274'
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.
### Required scope(s)
`estimates`
tags:
- Estimates
security:
- bearerAuth:
- 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: '495430034496947299'
administration_id: 123
contact_id: '495430034339660889'
contact:
id: '495430034339660889'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:21.046Z'
updated_at: '2026-08-14T09:15:21.046Z'
version: 1786698921
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/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: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: accepted
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: '2026-08-14'
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:21.196Z'
updated_at: '2026-08-14T09:15:21.281Z'
public_view_code: '815483'
public_view_code_expires_at: '2026-11-14T09:15:21.225Z'
version: 1786698921
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430034499044452'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:21.198Z'
updated_at: '2026-08-14T09:15:21.250Z'
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/0000000000000000000000000000000000000000000000000000000000000001/a84d2c392b39e654137271bead1d23a077f12c5a572c9bef19251322e866cdde/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:21.203Z'
updated_at: '2026-08-14T09:15:21.203Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:21.259Z'
updated_at: '2026-08-14T09:15:21.259Z'
- administration_id: 123
user_id: '495429852315255909'
action: estimate_mark_accepted
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:21.284Z'
updated_at: '2026-08-14T09:15:21.284Z'
tax_totals:
- tax_rate_id: '495429853078619274'
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:
Returns400IfTheStateChangeIsInvalid:
summary: Returns 400 if the state change is invalid
value:
error: State isn't an option
symbolic:
state: in
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
'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.
### Required scope(s)
`estimates`
tags:
- Estimates
security:
- bearerAuth:
- 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/798b35bb855ccd559acc376c9111e23c220c306f1a11f2941a770b88f2be3a67/3458ea03ffa89a0b9904cc7b75394f3664c5a1cf461a8c28e2196a627a84dd02/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. If you have sent the estimate before, then the settings from
the previous sending are used instead of the defaults.
### Required scope(s)
`estimates`
tags:
- Estimates
security:
- bearerAuth:
- 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
enum:
- Email
- Manual
email_address:
type: string
description: Recipient email address. Only used when `delivery_method` is `Email`; defaults to the contact's email address.
email_message:
type: string
description: Message included in the email. Only used when `delivery_method` is `Email`; defaults to the workflow's estimate email text.
sign_online:
type:
- boolean
- string
required: []
sender:
type:
- boolean
- string
signature_output:
type: string
audit_trail:
type: string
ip_address:
type: string
required: []
examples:
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: {}
SendsViaEmailIfContactHasDeliveryMethodSimplerinvoicing:
summary: Sends via email if contact has delivery method simplerinvoicing
value: {}
responses:
'200':
description: Estimate updated
content:
application/json:
schema:
$ref: '#/components/schemas/estimate_response'
examples:
SendsAnEstimateWithAlternativeInformation:
summary: Sends an estimate with alternative information
value:
id: '495430037248410905'
administration_id: 123
contact_id: '495430037215905047'
contact:
id: '495430037215905047'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:23.789Z'
updated_at: '2026-08-14T09:15:23.789Z'
version: 1786698923
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/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: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:23.820Z'
updated_at: '2026-08-14T09:15:23.881Z'
public_view_code: '287283'
public_view_code_expires_at: '2026-11-14T10:15:23.854Z'
version: 1786698923
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430037250508058'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:23.822Z'
updated_at: '2026-08-14T09:15:23.880Z'
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/0000000000000000000000000000000000000000000000000000000000000001/f95db096d7e2ce8cec6434d0f0096bd3b2aea07dd119374f5e901fd0e37d37b2/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:23.827Z'
updated_at: '2026-08-14T09:15:23.827Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:23.888Z'
updated_at: '2026-08-14T09:15:23.888Z'
tax_totals:
- tax_rate_id: '495429853078619274'
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: '495430037407794465'
administration_id: 123
contact_id: '495430037375288607'
contact:
id: '495430037375288607'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:23.941Z'
updated_at: '2026-08-14T09:15:23.941Z'
version: 1786698923
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/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: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:23.972Z'
updated_at: '2026-08-14T09:15:24.036Z'
public_view_code: '621451'
public_view_code_expires_at: '2026-11-14T10:15:24.008Z'
version: 1786698924
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430037408843042'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:23.974Z'
updated_at: '2026-08-14T09:15:24.035Z'
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/0000000000000000000000000000000000000000000000000000000000000001/44c58c0ddace52deca6f099ff16930e23aeff388bc56054149adbf16211eae4b/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:23.979Z'
updated_at: '2026-08-14T09:15:23.979Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:24.044Z'
updated_at: '2026-08-14T09:15:24.044Z'
tax_totals:
- tax_rate_id: '495429853078619274'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
SendsViaEmailIfContactHasDeliveryMethodSimplerinvoicing:
summary: Sends via email if contact has delivery method simplerinvoicing
value:
id: '495430037862876482'
administration_id: 123
contact_id: '495430037832467776'
contact:
id: '495430037832467776'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
country: NL
phone: null
delivery_method: Simplerinvoicing
customer_id: customer-1
tax_number: null
chamber_of_commerce: null
bank_account: null
is_trusted: false
max_transfer_amount: null
attention: null
email: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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: '12345678'
si_identifier_type: NL:KVK
moneybird_payments_mandate: false
created_at: '2026-08-14T09:15:24.377Z'
updated_at: '2026-08-14T09:15:24.422Z'
version: 1786698924
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/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: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:24.406Z'
updated_at: '2026-08-14T09:15:24.471Z'
public_view_code: '774232'
public_view_code_expires_at: '2026-11-14T10:15:24.445Z'
version: 1786698924
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430037864973635'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:24.408Z'
updated_at: '2026-08-14T09:15:24.470Z'
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/0000000000000000000000000000000000000000000000000000000000000001/7a6e468d9388ab4e6a785c543cc1784eb4d9d94e24a0231fa725abfa43acaccb/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:24.413Z'
updated_at: '2026-08-14T09:15:24.413Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:24.478Z'
updated_at: '2026-08-14T09:15:24.478Z'
tax_totals:
- tax_rate_id: '495429853078619274'
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:
ReturnsErrorWhenSendingInvalidEstimateWithoutDetails:
summary: Returns error when sending invalid estimate without details
value:
error: details cannot be empty
symbolic:
estimate: details_cannot_be_empty
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
'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:
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
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
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.
### Required scope(s)
`estimates`
tags:
- Estimates
security:
- bearerAuth:
- 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: '495430038243509600'
administration_id: 123
contact_id: '495430038205760859'
contact:
id: '495430038205760859'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:24.733Z'
updated_at: '2026-08-14T09:15:24.733Z'
version: 1786698924
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: '495430038209955165'
contact_person:
id: null
contact_id: '495430038205760859'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-08-14T09:15:24.737Z'
updated_at: '2026-08-14T09:15:24.737Z'
version: 1786698924
estimate_id: 2026-0001
estimate_sequence_id: '0001'
workflow_id: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:24.769Z'
updated_at: '2026-08-14T09:15:24.824Z'
public_view_code: '451151'
public_view_code_expires_at: '2026-11-14T09:15:24.797Z'
version: 1786698924
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430038245606753'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:24.771Z'
updated_at: '2026-08-14T09:15:24.822Z'
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/0000000000000000000000000000000000000000000000000000000000000001/fe490a9b9f18e22ee8bbcb08b03b2e4cfa4a77e4921c1dd6c346e340a69d187a/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:24.776Z'
updated_at: '2026-08-14T09:15:24.776Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:24.831Z'
updated_at: '2026-08-14T09:15:24.831Z'
tax_totals:
- tax_rate_id: '495429853078619274'
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.
### Required scope(s)
`estimates`
tags:
- Estimates
security:
- bearerAuth:
- 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
description: When `true`, the contact's address and other details are updated on the estimate from the current contact record.
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
description: Your own reference for this estimate, e.g. a project code or PO number. Visible to the recipient.
estimate_date:
type: string
description: The date of the estimate.
format: date
estimate_sequence_id:
type: string
description: The ID of the numbering sequence to use for the estimate number.
remove_estimate_sequence_id:
type:
- boolean
- string
description: Set to `true` to remove the assigned numbering sequence, reverting to the administration default.
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
description: Whether the prices on the estimate are inclusive of tax.
show_tax:
type:
- boolean
- string
description: Whether to show tax amounts on the estimate.
first_due_interval:
type: integer
description: The number of days after the estimate date before the estimate expires.
pre_text:
type: string
description: Introductory text displayed above the details on the estimate document.
post_text:
type: string
description: Closing text displayed below the details on the estimate document.
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'
description: The ID of the sales invoice this estimate was created from.
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: 495429853078619260
ledger_account_id: 495429852896167040
'1':
id: 495430032768895000
_destroy: true
responses:
'200':
description: Estimate updated
content:
application/json:
schema:
$ref: '#/components/schemas/estimate_response'
examples:
UpdatesTheDiscount:
summary: Updates the discount
value:
id: '495430032439642070'
administration_id: 123
contact_id: '495430032400844753'
contact:
id: '495430032400844753'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:19.197Z'
updated_at: '2026-08-14T09:15:19.197Z'
version: 1786698919
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: '495430032403990483'
contact_person:
id: null
contact_id: '495430032400844753'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-08-14T09:15:19.201Z'
updated_at: '2026-08-14T09:15:19.201Z'
version: 1786698919
estimate_id: 2026-0001
estimate_sequence_id: '0001'
workflow_id: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:19.234Z'
updated_at: '2026-08-14T09:15:19.327Z'
public_view_code: '297349'
public_view_code_expires_at: '2026-11-14T09:15:19.261Z'
version: 1786698919
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430032441739223'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:19.236Z'
updated_at: '2026-08-14T09:15:19.287Z'
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/0000000000000000000000000000000000000000000000000000000000000001/4dcd668909d1e307fcd43a6865bda03e1bfbe4015f82af8ba24e08990c9caacc/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:19.241Z'
updated_at: '2026-08-14T09:15:19.241Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:19.295Z'
updated_at: '2026-08-14T09:15:19.295Z'
- administration_id: 123
user_id: '495429852315255909'
action: estimate_updated
link_entity_id: null
link_entity_type: null
data:
reference:
- Project X
- Updated Reference
updated_at:
- '2026-08-14T11:15:19.288+02:00'
- '2026-08-14T11:15:19.327+02:00'
created_at: '2026-08-14T09:15:19.330Z'
updated_at: '2026-08-14T09:15:19.330Z'
tax_totals:
- tax_rate_id: '495429853078619274'
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: '495430032766797805'
administration_id: 123
contact_id: '495430032728000488'
contact:
id: '495430032728000488'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:19.509Z'
updated_at: '2026-08-14T09:15:19.509Z'
version: 1786698919
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: '495430032732194794'
contact_person:
id: null
contact_id: '495430032728000488'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-08-14T09:15:19.513Z'
updated_at: '2026-08-14T09:15:19.513Z'
version: 1786698919
estimate_id: 2026-0001
estimate_sequence_id: '0001'
workflow_id: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:19.546Z'
updated_at: '2026-08-14T09:15:19.699Z'
public_view_code: '633395'
public_view_code_expires_at: '2026-11-14T09:15:19.574Z'
version: 1786698919
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430032925132786'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:19.697Z'
updated_at: '2026-08-14T09:15:19.697Z'
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/0000000000000000000000000000000000000000000000000000000000000001/69e40a12e33f289c60809c85a8bc19f342c5421ef1e9bf05a50859be2c496c3e/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:19.553Z'
updated_at: '2026-08-14T09:15:19.553Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:19.610Z'
updated_at: '2026-08-14T09:15:19.610Z'
- administration_id: 123
user_id: '495429852315255909'
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: '495429853078619274'
report_reference: NL/1a
payable: true
debit: 0
credit: '63.0'
- - tax_rate_id: '495429853078619274'
report_reference: NL/1a
payable: true
debit: 0
credit: '20.79'
updated_at:
- '2026-08-14T11:15:19.603+02:00'
- '2026-08-14T11:15:19.691+02:00'
created_at: '2026-08-14T09:15:19.700Z'
updated_at: '2026-08-14T09:15:19.700Z'
tax_totals:
- tax_rate_id: '495429853078619274'
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.
### Required scope(s)
`estimates`
tags:
- Estimates
security:
- bearerAuth:
- 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 estimates in the administration.
### Required scope(s)
`estimates`
tags:
- Estimates
security:
- bearerAuth:
- estimates
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
description: |-
Filters are `key:value` terms separated by commas (e.g. `period:this_year,state:all`). Any filter you pass replaces the defaults below entirely, so include every key you need — in particular pass an explicit `period` (a named period or a `YYYYMMDD..YYYYMMDD` range) to look beyond the default financial year. Available filters:
| **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_week`, `prev_week`, `next_week`, `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`.
schema:
type: string
default: period:this_year
examples:
ReturnsAllEstimatesFilteredOnPeriod:
summary: Returns all estimates filtered on period
value: period:this_month
ReturnsAllEstimatesFilteredOnState:
summary: Returns all estimates filtered on state
value: state:open
- $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:
ReturnsPaginatedEstimatesOnPage2:
summary: Returns paginated estimates on page 2
value:
- id: '495430029029672730'
administration_id: 123
contact_id: '495430028784305932'
contact:
id: '495430028784305932'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:15.748Z'
updated_at: '2026-08-14T09:15:15.748Z'
version: 1786698915
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/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: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:15.982Z'
updated_at: '2026-08-14T09:15:16.035Z'
public_view_code: '602980'
public_view_code_expires_at: '2026-11-14T09:15:16.009Z'
version: 1786698916
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430029031769883'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:15.984Z'
updated_at: '2026-08-14T09:15:16.033Z'
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/0000000000000000000000000000000000000000000000000000000000000001/16271a49ae97f49c1e4e0b294b43bae9d3995caa55a7ab383560dd181c59354d/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:15.989Z'
updated_at: '2026-08-14T09:15:15.989Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:16.042Z'
updated_at: '2026-08-14T09:15:16.042Z'
tax_totals:
- tax_rate_id: '495429853078619274'
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: '495430029600098104'
administration_id: 123
contact_id: '495430029275039526'
contact:
id: '495430029275039526'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:16.216Z'
updated_at: '2026-08-14T09:15:16.216Z'
version: 1786698916
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/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: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:16.527Z'
updated_at: '2026-08-14T09:15:16.578Z'
public_view_code: '396857'
public_view_code_expires_at: '2026-11-14T09:15:16.553Z'
version: 1786698916
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430029602195257'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:16.529Z'
updated_at: '2026-08-14T09:15:16.576Z'
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/0000000000000000000000000000000000000000000000000000000000000001/6ed37f5a509a94f843ad15931d0a8353955ce8917128cd50c9500e3d0be7a750/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:16.533Z'
updated_at: '2026-08-14T09:15:16.533Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:16.584Z'
updated_at: '2026-08-14T09:15:16.584Z'
tax_totals:
- tax_rate_id: '495429853078619274'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '495430029505726260'
administration_id: 123
contact_id: '495430029275039526'
contact:
id: '495430029275039526'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:16.216Z'
updated_at: '2026-08-14T09:15:16.216Z'
version: 1786698916
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/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: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:16.436Z'
updated_at: '2026-08-14T09:15:16.488Z'
public_view_code: '710554'
public_view_code_expires_at: '2026-11-14T09:15:16.463Z'
version: 1786698916
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430029507823413'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:16.438Z'
updated_at: '2026-08-14T09:15:16.487Z'
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/0000000000000000000000000000000000000000000000000000000000000001/542e4f49a33349e8fbe0264409e0649de3e5778a8d0e842077a8652da0a8e0d9/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:16.443Z'
updated_at: '2026-08-14T09:15:16.443Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:16.495Z'
updated_at: '2026-08-14T09:15:16.495Z'
tax_totals:
- tax_rate_id: '495429853078619274'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '495430029410305840'
administration_id: 123
contact_id: '495430029275039526'
contact:
id: '495430029275039526'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:16.216Z'
updated_at: '2026-08-14T09:15:16.216Z'
version: 1786698916
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/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: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:16.345Z'
updated_at: '2026-08-14T09:15:16.397Z'
public_view_code: '893437'
public_view_code_expires_at: '2026-11-14T09:15:16.371Z'
version: 1786698916
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430029412402993'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:16.347Z'
updated_at: '2026-08-14T09:15:16.396Z'
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/0000000000000000000000000000000000000000000000000000000000000001/d6b01bccdd447699b347dae10256ffa561c4cf696d963c6fc0783d4150d649c5/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:16.351Z'
updated_at: '2026-08-14T09:15:16.351Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:16.404Z'
updated_at: '2026-08-14T09:15:16.404Z'
tax_totals:
- tax_rate_id: '495429853078619274'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '495430029313836843'
administration_id: 123
contact_id: '495430029275039526'
contact:
id: '495430029275039526'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:16.216Z'
updated_at: '2026-08-14T09:15:16.216Z'
version: 1786698916
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: '495430029279233832'
contact_person:
id: null
contact_id: '495430029275039526'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-08-14T09:15:16.220Z'
updated_at: '2026-08-14T09:15:16.220Z'
version: 1786698916
estimate_id: 2026-0001
estimate_sequence_id: '0001'
workflow_id: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:16.253Z'
updated_at: '2026-08-14T09:15:16.307Z'
public_view_code: '883229'
public_view_code_expires_at: '2026-11-14T09:15:16.280Z'
version: 1786698916
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430029315933996'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:16.255Z'
updated_at: '2026-08-14T09:15:16.306Z'
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/0000000000000000000000000000000000000000000000000000000000000001/0f8816282792555006c969f83bbfd8d2d65deb1d9a9bbedfe8bd43f0b23d2ea3/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:16.259Z'
updated_at: '2026-08-14T09:15:16.259Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:16.314Z'
updated_at: '2026-08-14T09:15:16.314Z'
tax_totals:
- tax_rate_id: '495429853078619274'
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: '495430030120191826'
administration_id: 123
contact_id: '495430029776258880'
contact:
id: '495430029776258880'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:16.694Z'
updated_at: '2026-08-14T09:15:16.694Z'
version: 1786698916
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/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: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:17.022Z'
updated_at: '2026-08-14T09:15:17.075Z'
public_view_code: '906150'
public_view_code_expires_at: '2026-11-14T09:15:17.049Z'
version: 1786698917
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430030122288979'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:17.024Z'
updated_at: '2026-08-14T09:15:17.073Z'
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/0000000000000000000000000000000000000000000000000000000000000001/bb5f7e3bd5829013b913e4f969742c6bc2eb57e4df36582f7158837ecb05772e/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:17.028Z'
updated_at: '2026-08-14T09:15:17.028Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:17.081Z'
updated_at: '2026-08-14T09:15:17.081Z'
tax_totals:
- tax_rate_id: '495429853078619274'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '495430030022674254'
administration_id: 123
contact_id: '495430029776258880'
contact:
id: '495430029776258880'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:16.694Z'
updated_at: '2026-08-14T09:15:16.694Z'
version: 1786698916
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/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: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:16.929Z'
updated_at: '2026-08-14T09:15:16.983Z'
public_view_code: '661279'
public_view_code_expires_at: '2026-11-14T09:15:16.957Z'
version: 1786698916
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430030024771407'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:16.931Z'
updated_at: '2026-08-14T09:15:16.982Z'
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/0000000000000000000000000000000000000000000000000000000000000001/e3f66e3ffa0aaec54fcd4953d3df7f0bca32aaf94b0e8f6340754905eaaed7b0/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:16.936Z'
updated_at: '2026-08-14T09:15:16.936Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:16.990Z'
updated_at: '2026-08-14T09:15:16.990Z'
tax_totals:
- tax_rate_id: '495429853078619274'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '495430029924108106'
administration_id: 123
contact_id: '495430029776258880'
contact:
id: '495430029776258880'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:16.694Z'
updated_at: '2026-08-14T09:15:16.694Z'
version: 1786698916
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/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: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:16.835Z'
updated_at: '2026-08-14T09:15:16.890Z'
public_view_code: '685708'
public_view_code_expires_at: '2026-11-14T09:15:16.864Z'
version: 1786698916
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430029926205259'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:16.837Z'
updated_at: '2026-08-14T09:15:16.888Z'
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/0000000000000000000000000000000000000000000000000000000000000001/221fe4b2cff22dc718a6b010e2b1e6a02925dd4d499b142b94aa9aa4074883cf/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:16.842Z'
updated_at: '2026-08-14T09:15:16.842Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:16.897Z'
updated_at: '2026-08-14T09:15:16.897Z'
tax_totals:
- tax_rate_id: '495429853078619274'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '495430029816104773'
administration_id: 123
contact_id: '495430029776258880'
contact:
id: '495430029776258880'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:16.694Z'
updated_at: '2026-08-14T09:15:16.694Z'
version: 1786698916
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: '495430029779404610'
contact_person:
id: null
contact_id: '495430029776258880'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-08-14T09:15:16.698Z'
updated_at: '2026-08-14T09:15:16.698Z'
version: 1786698916
estimate_id: 2026-0001
estimate_sequence_id: '0001'
workflow_id: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:16.732Z'
updated_at: '2026-08-14T09:15:16.795Z'
public_view_code: '189883'
public_view_code_expires_at: '2026-11-14T09:15:16.765Z'
version: 1786698916
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430029819250502'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:16.735Z'
updated_at: '2026-08-14T09:15:16.793Z'
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/0000000000000000000000000000000000000000000000000000000000000001/4c5e3c0d43d813b676e843b5dad855ef176450812498075bce9e2af82c54a128/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:16.741Z'
updated_at: '2026-08-14T09:15:16.741Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:16.802Z'
updated_at: '2026-08-14T09:15:16.802Z'
tax_totals:
- tax_rate_id: '495429853078619274'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
ReturnsAllEstimatesFilteredOnState:
summary: Returns all estimates filtered on state
value:
- id: '495430030663354220'
administration_id: 123
contact_id: '495430030295304026'
contact:
id: '495430030295304026'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:17.189Z'
updated_at: '2026-08-14T09:15:17.189Z'
version: 1786698917
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/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: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:17.540Z'
updated_at: '2026-08-14T09:15:17.596Z'
public_view_code: '034169'
public_view_code_expires_at: '2026-11-14T09:15:17.568Z'
version: 1786698917
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430030665451373'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:17.542Z'
updated_at: '2026-08-14T09:15:17.595Z'
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/0000000000000000000000000000000000000000000000000000000000000001/e8fb722606d63226bb4d7f0bd7578d8fee8ba5e96d8d9a125fb0283d262d949a/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:17.547Z'
updated_at: '2026-08-14T09:15:17.547Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:17.603Z'
updated_at: '2026-08-14T09:15:17.603Z'
tax_totals:
- tax_rate_id: '495429853078619274'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '495430030562690920'
administration_id: 123
contact_id: '495430030295304026'
contact:
id: '495430030295304026'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:17.189Z'
updated_at: '2026-08-14T09:15:17.189Z'
version: 1786698917
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/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: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:17.444Z'
updated_at: '2026-08-14T09:15:17.500Z'
public_view_code: '447554'
public_view_code_expires_at: '2026-11-14T09:15:17.473Z'
version: 1786698917
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430030564788073'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:17.446Z'
updated_at: '2026-08-14T09:15:17.499Z'
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/0000000000000000000000000000000000000000000000000000000000000001/ce920db723707e90bfe001721882647e21546d5c18dcbcb1ee1d755953f61a34/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:17.450Z'
updated_at: '2026-08-14T09:15:17.450Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:17.507Z'
updated_at: '2026-08-14T09:15:17.507Z'
tax_totals:
- tax_rate_id: '495429853078619274'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '495430030431618916'
administration_id: 123
contact_id: '495430030295304026'
contact:
id: '495430030295304026'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:17.189Z'
updated_at: '2026-08-14T09:15:17.189Z'
version: 1786698917
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/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: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:17.319Z'
updated_at: '2026-08-14T09:15:17.399Z'
public_view_code: '607348'
public_view_code_expires_at: '2026-11-14T09:15:17.345Z'
version: 1786698917
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430030432667493'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:17.321Z'
updated_at: '2026-08-14T09:15:17.369Z'
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/0000000000000000000000000000000000000000000000000000000000000001/4f3e4361ac48d3dc05a5ad30b289f6f3078a090fec87647534e1fe27ef937a1d/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:17.325Z'
updated_at: '2026-08-14T09:15:17.325Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:17.407Z'
updated_at: '2026-08-14T09:15:17.407Z'
tax_totals:
- tax_rate_id: '495429853078619274'
taxable_amount: '300.0'
taxable_amount_base: '300.0'
tax_amount: '63.0'
tax_amount_base: '63.0'
- id: '495430030333052767'
administration_id: 123
contact_id: '495430030295304026'
contact:
id: '495430030295304026'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:17.189Z'
updated_at: '2026-08-14T09:15:17.189Z'
version: 1786698917
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people: []
archived: false
contact_person_id: '495430030298449756'
contact_person:
id: null
contact_id: '495430030295304026'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-08-14T09:15:17.193Z'
updated_at: '2026-08-14T09:15:17.193Z'
version: 1786698917
estimate_id: 2026-0001
estimate_sequence_id: '0001'
workflow_id: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:17.225Z'
updated_at: '2026-08-14T09:15:17.280Z'
public_view_code: '386904'
public_view_code_expires_at: '2026-11-14T09:15:17.253Z'
version: 1786698917
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430030335149920'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:17.227Z'
updated_at: '2026-08-14T09:15:17.279Z'
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/0000000000000000000000000000000000000000000000000000000000000001/d6179eba10bbc87d78cd347b114d3f1270c23c6ba35ac19d5ac23d505254445e/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:17.232Z'
updated_at: '2026-08-14T09:15:17.232Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:17.287Z'
updated_at: '2026-08-14T09:15:17.287Z'
tax_totals:
- tax_rate_id: '495429853078619274'
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: '495430031681521568'
administration_id: 123
contact_id: '495430031343880078'
contact:
id: '495430031343880078'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:18.189Z'
updated_at: '2026-08-14T09:15:18.189Z'
version: 1786698918
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/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: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: null
state: open
estimate_date: '2026-08-14'
due_date: '2026-08-28'
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-08-14'
accepted_at: null
rejected_at: null
archived_at: null
created_at: '2026-08-14T09:15:18.511Z'
updated_at: '2026-08-14T09:15:18.564Z'
public_view_code: '988847'
public_view_code_expires_at: '2026-11-14T09:15:18.538Z'
version: 1786698918
pre_text: Hello, here is your quote
post_text: Please sign it
details:
- id: '495430031683618721'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
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-08-14T09:15:18.513Z'
updated_at: '2026-08-14T09:15:18.563Z'
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/0000000000000000000000000000000000000000000000000000000000000001/fa29780da46fd4ea0785ed96bf9f04d7ec28388ab59ba0b265c03084b060d8cd/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:18.517Z'
updated_at: '2026-08-14T09:15:18.517Z'
- administration_id: 123
user_id: '495429852315255909'
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-08-14T09:15:18.571Z'
updated_at: '2026-08-14T09:15:18.571Z'
tax_totals:
- tax_rate_id: '495429853078619274'
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.
### Required scope(s)
`estimates`
tags:
- Estimates
security:
- bearerAuth:
- 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
description: Your own reference for this estimate, e.g. a project code or PO number. Visible to the recipient.
estimate_date:
type: string
description: The date of the estimate. Defaults to the current date.
format: date
estimate_sequence_id:
type: string
description: The ID of the numbering sequence to use for the estimate number. If not provided, the administration default is used.
remove_estimate_sequence_id:
type:
- boolean
- string
description: Set to `true` to remove the assigned numbering sequence, reverting to the administration default.
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. Defaults to the workflow's currency.
prices_are_incl_tax:
type:
- boolean
- string
description: Whether the prices on the estimate are inclusive of tax. Defaults to the workflow's setting.
show_tax:
type:
- boolean
- string
description: Whether to show tax amounts on the estimate. Useful for non-VAT registered businesses or tax-exempt clients. Defaults to the workflow's setting.
first_due_interval:
type:
- integer
- string
description: The number of days after the estimate date before the estimate expires. Defaults to the first workflow step's due interval.
pre_text:
type: string
description: Introductory text displayed above the details on the estimate document. Defaults to the workflow's pre-text.
post_text:
type: string
description: Closing text displayed below the details on the estimate document. Defaults to the workflow's post-text.
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'
description: The ID of the sales invoice this estimate was created from (e.g. for credit notes or revised estimates).
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: 495430041391334900
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: '495430041529746933'
administration_id: 123
contact_id: '495430041391334891'
contact:
id: '495430041391334891'
administration_id: 123
company_name: Foobar Holding B.V.
firstname: null
lastname: null
address1: Hoofdstraat 12
address2: null
zipcode: 1234AB
city: Amsterdam
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: info@example.com
email_ubl: true
send_invoices_to_attention: null
send_invoices_to_email: info@example.com
send_estimates_to_attention: null
send_estimates_to_email: info@example.com
direct_debit: false
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-08-14T09:15:27.771Z'
updated_at: '2026-08-14T09:15:27.771Z'
version: 1786698927
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all
notes: []
custom_fields: []
contact_people:
- id: '495430041395529197'
contact_id: '495430041391334891'
administration_id: 123
firstname: Jan
lastname: Janssen
phone: 123-456-2346
email: janjanssen@dev.null.moneybird.net
department: Sales
created_at: '2026-08-14T09:15:27.775Z'
updated_at: '2026-08-14T09:15:27.775Z'
version: 1786698927
archived: false
contact_person_id: null
contact_person: null
estimate_id: null
estimate_sequence_id: null
workflow_id: '495429853572498581'
document_style_id: '495429853658481817'
identity_id: '495429852692743275'
draft_id: 2
state: draft
estimate_date: null
due_date: '2026-08-28'
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-08-14T09:15:27.903Z'
updated_at: '2026-08-14T09:15:27.903Z'
public_view_code: null
public_view_code_expires_at: null
version: 1786698927
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/0000000000000000000000000000000000000000000000000000000000000001/43196e762fbb5eefed771e9f03d392af5bb703a6acc517e5160ef47835aff68b/estimate
custom_fields: []
notes: []
attachments: []
events:
- administration_id: 123
user_id: '495429852315255909'
action: estimate_created
link_entity_id: null
link_entity_type: null
data: {}
created_at: '2026-08-14T09:15:27.907Z'
updated_at: '2026-08-14T09:15:27.907Z'
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.
### Required scope(s)
`sales_invoices`
tags:
- External sales invoices
security:
- bearerAuth:
- 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/synchronization{format}:
get:
summary: List all ids and versions
description: |-
Returns all external sales invoices in the administration. The list contains the id and the version of the external sales invoice.
Check if the version of an external sales invoice is newer than the version you have stored locally, use the `POST`
variant for fetching external sales invoices with the given ids.
### Required scope(s)
`sales_invoices`
tags:
- External sales invoices
security:
- bearerAuth:
- sales_invoices
parameters:
- $ref: '#/components/parameters/administration_id'
- $ref: '#/components/parameters/format'
- name: filter
in: query
required: false
description: |-
Filters are `key:value` terms separated by commas (e.g. `period:this_year,state:all`). Any filter you pass replaces the defaults below entirely, so include every key you need — in particular pass an explicit `period` (a named period or a `YYYYMMDD..YYYYMMDD` range) to look beyond the default financial year. Available filters:
| **Filter** | **Type** | **Default** | **Description** |
| --- | --- | --- | --- |
| state | `String` | `all` | `all`, `new`, `open`, `late`, or `paid` |
| period | `String` | `this_year` | This can either be the description of a period (`this_week`, `prev_week`, `next_week`, `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` | | Select invoices belonging to a certain contact |
You can filter by multiple states at the same time as well. To do this, separate the state values by a pipe: `state:new|open`.
schema:
type: string
default: period:this_year
examples:
RetrievesTheIdsForSynchronizationWithAFilter:
summary: Retrieves the ids for synchronization with a filter
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: '495429960490550827'
version: 1786698850
- id: '495429960507328047'
version: 1786698850
- id: '495429960524105267'
version: 1786698850
- id: '495429960531445301'
version: 1786698850
RetrievesTheIdsForSynchronizationWithAFilter:
summary: Retrieves the ids for synchronization with a filter
value:
- id: '495429960566048312'
version: 1786698850
- id: '495429960583874108'
version: 1786698850
- id: '495429960599602752'
version: 1786698850
ReturnsUniqueIdsEvenWhenSalesInvoicesHaveMultipleAttachments:
summary: Returns unique ids even when sales invoices have multiple attachments
value:
- id: '495429960642594373'
version: 1786698850
- id: '495429960659371593'
version: 1786698850
- id: '495429960675100237'
version: 1786698850
operationId: get_administration_id_external_sales_invoices_synchronization
post:
summary: Fetch external sales invoices with given ids
x-query: true
description: |-
Given a list of external sales invoice ids, returns the external sales invoice information belonging to the external sales invoice.
Returns a maximum of 100 external sales invoices, even if more ids are provided.
### Required scope(s)
`sales_invoices`
tags:
- External sales invoices
security:
- bearerAuth:
- sales_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:
RetrievesSalesInvoicesGivenByIds:
summary: Retrieves sales invoices given by ids
value:
ids:
- 495429956870866300
- 495429956887643500
responses:
'200':
description: A list of external sales invoices
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/external_sales_invoice_response'
examples:
RetrievesSalesInvoicesGivenByIds:
summary: Retrieves sales invoices given by ids
value:
- id: '495429956887643500'
administration_id: 123
contact_id: '495429956880303467'
contact:
id: '495429956880303467'
administration_id: 123
company_name: Relation 3
firstname: null
lastname: null
address1: null
address2: null
zipcode: null
city: null
country: NL
phone: null
delivery_method: Email
customer_id: customer-3
tax_number: null
chamber_of_commerce: null
bank_account: null
is_trusted: false
max_transfer_amount: null
attention: null
email: invoices@example.com
email_ubl: false
send_invoices_to_attention: null
send_invoices_to_email: invoices@example.com
send_estimates_to_attention: null
send_estimates_to_email: estimates@example.com
direct_debit: false
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-08-14T09:14:07.175Z'
updated_at: '2026-08-14T09:14:07.175Z'
version: 1786698847
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000003/all
notes: []
custom_fields: []
contact_people: []
archived: false
date: '2026-08-14'
state: open
due_date: null
reference: Invoice 3
entry_number: 103
origin: null
source: null
source_url: null
currency: EUR
paid_at: null
created_at: '2026-08-14T09:14:07.182Z'
updated_at: '2026-08-14T09:14:07.186Z'
version: 1786698847
details:
- id: '495429956889740653'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Invoice detail description
price: '100.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '100.0'
total_price_excl_tax_with_discount_base: '100.0'
tax_report_reference: []
mandatory_tax_text: null
created_at: '2026-08-14T09:14:07.184Z'
updated_at: '2026-08-14T09:14:07.184Z'
payments: []
total_paid: '0.0'
total_unpaid: '121.0'
total_unpaid_base: '121.0'
prices_are_incl_tax: false
total_price_excl_tax: '100.0'
total_price_excl_tax_base: '100.0'
total_price_incl_tax: '121.0'
total_price_incl_tax_base: '121.0'
marked_dubious_on: null
marked_uncollectible_on: null
notes: []
attachments: []
events: []
tax_totals:
- tax_rate_id: '495429853078619274'
taxable_amount: '100.0'
taxable_amount_base: '100.0'
tax_amount: '21.0'
tax_amount_base: '21.0'
- id: '495429956870866280'
administration_id: 123
contact_id: '495429956862477671'
contact:
id: '495429956862477671'
administration_id: 123
company_name: Relation 2
firstname: null
lastname: null
address1: null
address2: null
zipcode: null
city: null
country: NL
phone: null
delivery_method: Email
customer_id: customer-2
tax_number: null
chamber_of_commerce: null
bank_account: null
is_trusted: false
max_transfer_amount: null
attention: null
email: invoices@example.com
email_ubl: false
send_invoices_to_attention: null
send_invoices_to_email: invoices@example.com
send_estimates_to_attention: null
send_estimates_to_email: estimates@example.com
direct_debit: false
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-08-14T09:14:07.158Z'
updated_at: '2026-08-14T09:14:07.158Z'
version: 1786698847
sales_invoices_url: https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000002/all
notes: []
custom_fields: []
contact_people: []
archived: false
date: '2026-08-14'
state: open
due_date: null
reference: Invoice 2
entry_number: 102
origin: null
source: null
source_url: null
currency: EUR
paid_at: null
created_at: '2026-08-14T09:14:07.166Z'
updated_at: '2026-08-14T09:14:07.169Z'
version: 1786698847
details:
- id: '495429956871914857'
administration_id: 123
tax_rate_id: '495429853078619274'
ledger_account_id: '495429852896167034'
project_id: null
product_id: null
amount: 1 x
amount_decimal: '1.0'
description: Invoice detail description
price: '100.0'
period: null
row_order: 0
total_price_excl_tax_with_discount: '100.0'
total_price_excl_tax_with_discount_base: '100.0'
tax_report_reference: []
mandatory_tax_text: null
created_at: '2026-08-14T09:14:07.168Z'
updated_at: '2026-08-14T09:14:07.168Z'
payments: []
total_paid: '0.0'
total_unpaid: '121.0'
total_unpaid_base: '121.0'
prices_are_incl_tax: false
total_price_excl_tax: '100.0'
total_price_excl_tax_base: '100.0'
total_price_incl_tax: '121.0'
total_price_incl_tax_base: '121.0'
marked_dubious_on: null
marked_uncollectible_on: null
notes: []
attachments: []
events: []
tax_totals:
- tax_rate_id: '495429853078619274'
taxable_amount: '100.0'
taxable_amount_base: '100.0'
tax_amount: '21.0'
tax_amount_base: '21.0'
'400':
$ref: '#/components/responses/400_bad_request'
operationId: post_administration_id_external_sales_invoices_synchronization
/{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.
### Required scope(s)
`sales_invoices`
tags:
- External sales invoices
security:
- bearerAuth:
- 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.