`, e.g. `1:month` or `3:month`. `custom` is ignored, `nil` (e.g. `0:nil`) removes the billing interval."
}
},
"required": [
"price",
"ledger_account_id"
]
}
},
"required": []
},
"examples": {
"CreatesANewProduct": {
"summary": "Creates a new product",
"value": {
"product": {
"description": "Geldvogel",
"price": "50,50",
"tax_rate_id": 502689206652372300,
"ledger_account_id": 502689206660760900
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Product created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/product_response"
},
"examples": {
"CreatesANewProduct": {
"summary": "Creates a new product",
"value": {
"id": "502689206672295211",
"administration_id": 123,
"description": "Geldvogel",
"title": null,
"identifier": null,
"price": "50.5",
"currency": "EUR",
"frequency": null,
"frequency_type": null,
"tax_rate_id": "502689206652372263",
"ledger_account_id": "502689206660760873",
"created_at": "2026-11-02T12:16:47.259Z",
"updated_at": "2026-11-02T12:16:47.259Z"
}
}
}
}
}
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"ReturnsAnErrorWhenInformationIsMissing": {
"summary": "Returns an error when information is missing",
"value": {
"error": {
"title": [
"can't be blank"
],
"description": [
"can't be blank"
],
"base": [
"must contain a title or description"
]
},
"details": {
"title": [
{
"error": "blank"
}
],
"description": [
{
"error": "blank"
}
],
"base": [
{
"error": "must_have_a_title_or_description"
}
]
}
}
}
}
}
}
}
},
"operationId": "post_administration_id_products"
}
},
"/{administration_id}/projects/{id}{format}": {
"get": {
"summary": "Returns information about a project",
"description": "Returns information about a project.\n\n### Required scope(s)\n `settings`",
"tags": [
"Projects"
],
"security": [
{
"bearerAuth": [
"settings"
]
}
],
"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 project",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/project_response"
},
"examples": {
"ReturnsASingleProject": {
"summary": "Returns a single project",
"value": {
"id": "502689292784502133",
"name": "Project 1",
"state": "active",
"budget": 10
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenProjectDoesNotExist": {
"summary": "Returns 404 when project does not exist",
"value": {
"error": "Record not found for model name: Project"
}
}
}
}
}
}
},
"operationId": "get_administration_id_projects_id"
},
"patch": {
"summary": "Updates a project",
"description": "Updates a project. Requires permission to settings. Requires a unique name within the administration (if name is provided).\n\n### Required scope(s)\n `settings`",
"tags": [
"Projects"
],
"security": [
{
"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": {
"project": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"name": {
"type": "string",
"description": "Should be unique for the administration."
},
"budget": {
"$ref": "#/components/schemas/number",
"description": "The budget for this project in hours."
}
},
"required": [
"name"
]
}
},
"required": []
},
"examples": {
"UpdatesAProject": {
"summary": "Updates a project",
"value": {
"project": {
"name": "Eagle",
"budget": 1000
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "Project updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/project_response"
},
"examples": {
"UpdatesAProject": {
"summary": "Updates a project",
"value": {
"id": "502689292851611003",
"name": "Eagle",
"state": "active",
"budget": 1000
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsA404WhenTheProjectDoesNotExist": {
"summary": "Returns a 404 when the project 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": {
"ReturnsA422WhenTheProjectIsInvalid": {
"summary": "Returns a 422 when the project is invalid",
"value": {
"error": {
"name": [
"can't be blank"
]
},
"details": {
"name": [
{
"error": "blank"
}
]
}
}
}
}
}
}
}
},
"operationId": "patch_administration_id_projects_id"
},
"delete": {
"summary": "Deletes a project",
"description": "Deletes a project. When there are no linked entities (sales invoices, estimates, etc.) the project is deleted. When there are linked entities, the project gets the state `archived`.\n\n### Required scope(s)\n `settings`",
"tags": [
"Projects"
],
"security": [
{
"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": "Project deleted"
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsA404WhenTheProjectDoesNotExist": {
"summary": "Returns a 404 when the project does not exist",
"value": {
"error": "record not found",
"symbolic": {
"id": "not_found"
}
}
}
}
}
}
}
},
"operationId": "delete_administration_id_projects_id"
}
},
"/{administration_id}/projects{format}": {
"get": {
"summary": "List all projects of an administration",
"description": "Returns a paginated list of projects in the administration. Each page contains 25 projects. You can use the `page` parameter to fetch the next page of projects. It returns the active projects when no filter is applied.\n\n### Required scope(s)\n `settings`",
"tags": [
"Projects"
],
"security": [
{
"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. `state:active`). Any filter you pass replaces the defaults below entirely, so include every key you need. Available filters:\n\n| **Filter** | **Type** | **Default** | **Description** |\n| - | - | - | - |\n| state | `String` | `active` | `all`, `active` or `archived`. Combine values with a pipe, e.g. `state:active|archived` |",
"schema": {
"type": "string",
"default": "state:active"
},
"examples": {
"ReturnsTheListOfFilteredArchivedProjects": {
"summary": "Returns the list of filtered archived projects",
"value": "state:archived"
}
}
},
{
"$ref": "#/components/parameters/per_page",
"description": "Amount of projects per page, default: 25"
},
{
"$ref": "#/components/parameters/page",
"description": "The page to fetch, starting at 1."
}
],
"responses": {
"200": {
"description": "A list of projects",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/project_response"
}
},
"examples": {
"ReturnsTheListOfFilteredArchivedProjects": {
"summary": "Returns the list of filtered archived projects",
"value": [
{
"id": "502689293063423382",
"name": "Project Blackbird",
"state": "archived",
"budget": 10
}
]
},
"ReturnsTheListOfProjects": {
"summary": "Returns the list of projects",
"value": [
{
"id": "502689293104317850",
"name": "Project 1",
"state": "active",
"budget": 10
}
]
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsA400IfPageParamIsInvalid": {
"summary": "Returns a 400 if page param is invalid",
"value": {
"error": "Page is too small",
"symbolic": {
"page": "min"
}
}
}
}
}
}
}
},
"operationId": "get_administration_id_projects"
},
"post": {
"summary": "Creates a new project",
"description": "Creates a new project. Requires a unique name within the administration.\n\n### Required scope(s)\n `settings`",
"tags": [
"Projects"
],
"security": [
{
"bearerAuth": [
"settings"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
}
],
"requestBody": {
"required": true,
"content": {
"application/*": {
"schema": {
"unevaluatedProperties": false,
"type": "object",
"properties": {
"project": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"name": {
"type": "string",
"description": "Should be unique for the administration."
},
"budget": {
"$ref": "#/components/schemas/number",
"description": "The budget for this project in hours. Both a decimal and a string are accepted."
}
},
"required": [
"name"
]
}
},
"required": []
},
"examples": {
"CreatesANewProject": {
"summary": "Creates a new project",
"value": {
"project": {
"name": "Falcon"
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Project created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/project_response"
},
"examples": {
"CreatesANewProject": {
"summary": "Creates a new project",
"value": {
"id": "502689292913476994",
"name": "Falcon",
"state": "active",
"budget": null
}
}
}
}
}
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"ReturnsAnErrorWhenInformationIsMissing": {
"summary": "Returns an error when information is missing",
"value": {
"error": {
"name": [
"can't be blank"
]
},
"details": {
"name": [
{
"error": "blank"
}
]
}
}
}
}
}
}
}
},
"operationId": "post_administration_id_projects"
}
},
"/{administration_id}/purchase_transactions/{id}/delete{format}": {
"delete": {
"summary": "Delete a purchase transaction",
"description": "This endpoint is deprecated. Use the DELETE /purchase_transactions/{id} endpoint instead. Delete a purchase transaction. Requires that the purchase transaction is pending and doesn't belong to a purchase transaction batch.\n\n### Required scope(s)\n `bank`",
"deprecated": true,
"x-sunset": "2026-12-31",
"tags": [
"Purchase transactions"
],
"security": [
{
"bearerAuth": [
"bank"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"204": {
"description": "Purchase transaction deleted"
}
},
"operationId": "delete_administration_id_purchase_transactions_id_delete"
}
},
"/{administration_id}/purchase_transactions/{id}{format}": {
"get": {
"summary": "Get a purchase transaction by id",
"description": "Get a purchase transaction by id.\n\n### Required scope(s)\n `bank`",
"tags": [
"Purchase transactions"
],
"security": [
{
"bearerAuth": [
"bank"
]
}
],
"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 transaction",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/purchase_transaction_response"
},
"examples": {
"ReturnsPurchaseTransactionWhenSuccessful": {
"summary": "Returns purchase transaction when successful",
"value": {
"id": "502689217260816156",
"administration_id": 123,
"financial_account_id": "502689217256621850",
"payment_instrument_id": null,
"state": "open",
"sepa_iban": "NL47TEST9876543210",
"sepa_iban_account_name": "Test Inc.",
"sepa_bic": "TESTNL22",
"source_sepa_iban": "NL28INGB0000000001",
"source_sepa_iban_account_name": "ING NL28INGB0000000001",
"date": "2026-11-02",
"description": "FOOBAR-1",
"end_to_end_id": "FOOBAR-1",
"contact": {
"id": "502689217234601749",
"administration_id": 123,
"company_name": "Relation 1",
"firstname": null,
"lastname": null,
"address1": null,
"address2": null,
"zipcode": null,
"city": null,
"country": "NL",
"phone": null,
"delivery_method": "Email",
"customer_id": "customer-1",
"tax_number": null,
"chamber_of_commerce": null,
"bank_account": "NL47TEST9876543210",
"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": "NL47TEST9876543210",
"sepa_iban_account_name": "Test Inc.",
"sepa_bic": "TESTNL22",
"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-11-02T12:16:57.331Z",
"updated_at": "2026-11-02T12:16:57.331Z",
"version": 1793621817,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"amount": "121.0",
"created_at": "2026-11-02T12:16:57.357Z",
"updated_at": "2026-11-02T12:16:57.357Z",
"payable_type": "Document",
"payable_id": "502689217246136088",
"payment_method": null
}
},
"ReturnsPurchaseTransactionWhenFinancialaccountIsNotABankaccount": {
"summary": "Returns purchase transaction when financialaccount is not a bankaccount",
"value": {
"id": "502689217384548151",
"administration_id": 123,
"financial_account_id": "502689217361479471",
"payment_instrument_id": null,
"state": "open",
"sepa_iban": "NL47TEST9876543210",
"sepa_iban_account_name": "Test Inc.",
"sepa_bic": "TESTNL22",
"source_sepa_iban": null,
"source_sepa_iban_account_name": null,
"date": "2026-11-02",
"description": "FOOBAR-2",
"end_to_end_id": "FOOBAR-2",
"contact": {
"id": "502689217366722354",
"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": "NL47TEST9876543210",
"is_trusted": false,
"max_transfer_amount": null,
"attention": null,
"email": "contact2@example.com",
"email_ubl": false,
"send_invoices_to_attention": null,
"send_invoices_to_email": "contact2@example.com",
"send_estimates_to_attention": null,
"send_estimates_to_email": null,
"direct_debit": false,
"sepa_active": false,
"sepa_iban": "NL47TEST9876543210",
"sepa_iban_account_name": "Test Inc.",
"sepa_bic": "TESTNL22",
"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-11-02T12:16:57.457Z",
"updated_at": "2026-11-02T12:16:57.457Z",
"version": 1793621817,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000002/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"amount": "121.0",
"created_at": "2026-11-02T12:16:57.474Z",
"updated_at": "2026-11-02T12:16:57.474Z",
"payable_type": "Document",
"payable_id": "502689217377208117",
"payment_method": null
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsErrorsWhenAnErrorOccurred": {
"summary": "Returns errors when an error occurred",
"value": {
"error": "Record not found for model name: Purchase transaction"
}
}
}
}
}
}
},
"operationId": "get_administration_id_purchase_transactions_id"
},
"delete": {
"summary": "Delete a purchase transaction",
"description": "Delete a purchase transaction. Requires that the purchase transaction is pending and doesn't belong to a purchase transaction batch.\n\n### Required scope(s)\n `bank`",
"tags": [
"Purchase transactions"
],
"security": [
{
"bearerAuth": [
"bank"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"204": {
"description": "Purchase transaction deleted"
}
},
"operationId": "delete_administration_id_purchase_transactions_id"
}
},
"/{administration_id}/purchase_transactions{format}": {
"get": {
"summary": "List all purchase transactions",
"description": "Returns a list of purchase transactions in the administration.\n\n### Required scope(s)\n `bank`",
"tags": [
"Purchase transactions"
],
"security": [
{
"bearerAuth": [
"bank"
]
}
],
"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. Available filters:\n\n| **Filter** | **Type** | **Default** | **Description** |\n| --- | --- | --- | --- |\n| state | `String` | `all` | `all`, `open`, `pending_payment`, `paid` or `cancelled` |\n| period | `String` | `nil` | 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`). A custom period must have a start and an end date. It must not be longer than 10 years and must be between `20000101` and `21000101`. For one month, use `202401..202401`, not `202401`. Without `period`, the filter does not limit the dates. |\n| unbatched | `Boolean` | `true` | `true` or `false` |\n\nYou can filter by multiple states at the same time as well. To do this, separate the state values by a pipe: `state:open|pending_payment`.",
"schema": {
"type": "string",
"default": "unbatched:true"
},
"examples": {
"ReturnsAllPurchaseTransactionsFilteredOnPeriod": {
"summary": "Returns all purchase transactions filtered on period",
"value": "period:this_month"
},
"DoesNotListTransactions": {
"summary": "Does not list transactions",
"value": "state:pending_payment,unbatched:true,signable_by_user:true"
},
"ReturnsOnlyPurchaseTransactionsReadyToBeSigned": {
"summary": "Returns only purchase transactions ready to be signed",
"value": "state:awaiting_authorization,unbatched:true,signable_by_user:true"
}
}
},
{
"$ref": "#/components/parameters/page"
},
{
"$ref": "#/components/parameters/per_page"
}
],
"responses": {
"200": {
"description": "A list of purchase transactions",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/purchase_transaction_response"
}
},
"examples": {
"ReturnsAllPurchaseTransactionsFilteredOnPeriod": {
"summary": "Returns all purchase transactions filtered on period",
"value": [
{
"id": "502689217431734080",
"administration_id": 123,
"financial_account_id": "502689217428588350",
"payment_instrument_id": null,
"state": "open",
"sepa_iban": "NL47TEST9876543210",
"sepa_iban_account_name": "Test Inc.",
"sepa_bic": "TESTNL22",
"source_sepa_iban": "NL28INGB0000000001",
"source_sepa_iban_account_name": "ING NL28INGB0000000001",
"date": "2026-11-02",
"description": "FOOBAR-1",
"end_to_end_id": "FOOBAR-1",
"contact": {
"id": "502689217408665401",
"administration_id": 123,
"company_name": "Relation 1",
"firstname": null,
"lastname": null,
"address1": null,
"address2": null,
"zipcode": null,
"city": null,
"country": "NL",
"phone": null,
"delivery_method": "Email",
"customer_id": "customer-1",
"tax_number": null,
"chamber_of_commerce": null,
"bank_account": "NL47TEST9876543210",
"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": "NL47TEST9876543210",
"sepa_iban_account_name": "Test Inc.",
"sepa_bic": "TESTNL22",
"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-11-02T12:16:57.498Z",
"updated_at": "2026-11-02T12:16:57.498Z",
"version": 1793621817,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"amount": "121.0",
"created_at": "2026-11-02T12:16:57.520Z",
"updated_at": "2026-11-02T12:16:57.520Z",
"payable_type": "Document",
"payable_id": "502689217420199740",
"payment_method": null
}
]
},
"ReturnsAllPurchaseTransactionsOfAnAdministration": {
"summary": "Returns all purchase transactions of an administration",
"value": [
{
"id": "502689217508280146",
"administration_id": 123,
"financial_account_id": "502689217504085840",
"payment_instrument_id": null,
"state": "open",
"sepa_iban": "NL47TEST9876543210",
"sepa_iban_account_name": "Test Inc.",
"sepa_bic": "TESTNL22",
"source_sepa_iban": "NL28INGB0000000001",
"source_sepa_iban_account_name": "ING NL28INGB0000000001",
"date": "2026-11-02",
"description": "FOOBAR-1",
"end_to_end_id": "FOOBAR-1",
"contact": {
"id": "502689217485211467",
"administration_id": 123,
"company_name": "Relation 1",
"firstname": null,
"lastname": null,
"address1": null,
"address2": null,
"zipcode": null,
"city": null,
"country": "NL",
"phone": null,
"delivery_method": "Email",
"customer_id": "customer-1",
"tax_number": null,
"chamber_of_commerce": null,
"bank_account": "NL47TEST9876543210",
"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": "NL47TEST9876543210",
"sepa_iban_account_name": "Test Inc.",
"sepa_bic": "TESTNL22",
"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-11-02T12:16:57.570Z",
"updated_at": "2026-11-02T12:16:57.570Z",
"version": 1793621817,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"amount": "121.0",
"created_at": "2026-11-02T12:16:57.592Z",
"updated_at": "2026-11-02T12:16:57.592Z",
"payable_type": "Document",
"payable_id": "502689217496745806",
"payment_method": null
}
]
},
"DoesNotListTransactions": {
"summary": "Does not list transactions",
"value": []
},
"ReturnsOnlyPurchaseTransactionsReadyToBeSigned": {
"summary": "Returns only purchase transactions ready to be signed",
"value": [
{
"id": "502689217724286841",
"administration_id": 123,
"financial_account_id": "502689217709606774",
"payment_instrument_id": null,
"state": "awaiting_authorization",
"sepa_iban": "NL47TEST9876543210",
"sepa_iban_account_name": "Test Inc.",
"sepa_bic": "TESTNL22",
"source_sepa_iban": "NL35ADYB0000000001",
"source_sepa_iban_account_name": "Moneybird NL35ADYB0000000001",
"date": "2026-11-02",
"description": "2026-0003",
"end_to_end_id": "2026-0003",
"contact": {
"id": "502689217687586673",
"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": "NL47TEST9876543210",
"is_trusted": false,
"max_transfer_amount": null,
"attention": null,
"email": "contact2@example.com",
"email_ubl": false,
"send_invoices_to_attention": null,
"send_invoices_to_email": "contact2@example.com",
"send_estimates_to_attention": null,
"send_estimates_to_email": null,
"direct_debit": false,
"sepa_active": false,
"sepa_iban": "NL47TEST9876543210",
"sepa_iban_account_name": "Test Inc.",
"sepa_bic": "TESTNL22",
"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-11-02T12:16:57.763Z",
"updated_at": "2026-11-02T12:16:57.763Z",
"version": 1793621817,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000002/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"amount": "121.0",
"created_at": "2026-11-02T12:16:57.799Z",
"updated_at": "2026-11-02T12:16:57.799Z",
"payable_type": "Document",
"payable_id": "502689217700169588",
"payment_method": null
}
]
},
"DoesNotListPaidTransactions": {
"summary": "Does not list paid transactions",
"value": []
}
}
}
}
}
},
"operationId": "get_administration_id_purchase_transactions"
}
},
"/{administration_id}/recurring_sales_invoices/synchronization{format}": {
"get": {
"summary": "List all IDs and versions",
"description": "Returns all recurring sales invoices in the administration. The list contains the invoice id and the version of the\nrecurring invoice. Check if the version of the recurring invoice is newer than the version you have stored locally,\nuse the `POST` variant for fetching recurring invoices with the given IDs.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Recurring sales invoices"
],
"security": [
{
"bearerAuth": [
"sales_invoices"
]
}
],
"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 /recurring_sales_invoices` — see that operation's description for the available keys.",
"schema": {
"type": "string"
},
"examples": {
"RetrievesTheIdsForSynchronizationWithAFilter": {
"summary": "Retrieves the ids for synchronization with a filter",
"value": "frequency: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": {
"RetrievesTheIdsForSynchronizationWithAFilter": {
"summary": "Retrieves the ids for synchronization with a filter",
"value": [
{
"id": "502689212642886819",
"version": 1793621812
}
]
},
"RetrievesTheIdsForSynchronization": {
"summary": "Retrieves the ids for synchronization",
"value": [
{
"id": "502689212764521654",
"version": 1793621813
},
{
"id": "502689212729918640",
"version": 1793621813
}
]
}
}
}
}
}
},
"operationId": "get_administration_id_recurring_sales_invoices_synchronization"
},
"post": {
"summary": "Fetch recurring sales invoices with given IDs",
"x-query": true,
"description": "Given a list of recurring sales invoice IDs, returns the details of the recurring invoices.\nReturns a maximum of 100 recurring invoices, even if more IDs are provided.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Recurring 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": {
"RetrievesRecurringSalesInvoicesGivenByIds": {
"summary": "Retrieves recurring sales invoices given by ids",
"value": {
"ids": [
502689209542248200,
502689209568462600
]
}
}
}
}
}
},
"responses": {
"200": {
"description": "A list of recurring sales invoices",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/recurring_sales_invoice_response"
}
},
"examples": {
"RetrievesRecurringSalesInvoicesGivenByIds": {
"summary": "Retrieves recurring sales invoices given by ids",
"value": [
{
"id": "502689209568462592",
"administration_id": 123,
"contact_id": "502689209519179515",
"contact": {
"id": "502689209519179515",
"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-2",
"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-11-02T12:16:49.973Z",
"updated_at": "2026-11-02T12:16:49.973Z",
"version": 1793621809,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000002/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": null,
"contact_person": null,
"workflow_id": "502689109097055375",
"start_date": "2026-11-03",
"invoice_date": "2026-11-03",
"last_date": "2026-11-03",
"active": true,
"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.",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"first_due_interval": 14,
"auto_send": false,
"sending_scheduled_at": null,
"sending_scheduled_user_id": null,
"frequency_type": "month",
"frequency": 1,
"created_at": "2026-11-02T12:16:50.021Z",
"updated_at": "2026-11-02T12:16:50.024Z",
"version": 1793621810,
"prices_are_incl_tax": false,
"total_price_excl_tax": "2.91",
"total_price_excl_tax_base": "2.91",
"total_price_incl_tax": "3.52",
"total_price_incl_tax_base": "3.52",
"details": [
{
"id": "502689209570559745",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "5 stuks",
"amount_decimal": "5.0",
"description": "Appels",
"price": "0.45",
"period": null,
"row_order": 1,
"total_price_excl_tax_with_discount": "2.25",
"total_price_excl_tax_with_discount_base": "2.25",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:50.022Z",
"updated_at": "2026-11-02T12:16:50.022Z"
},
{
"id": "502689209571608322",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "2 stuks",
"amount_decimal": "2.0",
"description": "Peren",
"price": "0.33",
"period": null,
"row_order": 2,
"total_price_excl_tax_with_discount": "0.66",
"total_price_excl_tax_with_discount_base": "0.66",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:50.023Z",
"updated_at": "2026-11-02T12:16:50.023Z"
}
],
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "recurring_sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:50.027Z",
"updated_at": "2026-11-02T12:16:50.027Z"
}
],
"subscription": null
},
{
"id": "502689209542248188",
"administration_id": 123,
"contact_id": "502689209519179515",
"contact": {
"id": "502689209519179515",
"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-2",
"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-11-02T12:16:49.973Z",
"updated_at": "2026-11-02T12:16:49.973Z",
"version": 1793621809,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000002/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": null,
"contact_person": null,
"workflow_id": "502689109097055375",
"start_date": "2026-11-03",
"invoice_date": "2026-11-03",
"last_date": "2026-11-03",
"active": true,
"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.",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"first_due_interval": 14,
"auto_send": false,
"sending_scheduled_at": null,
"sending_scheduled_user_id": null,
"frequency_type": "year",
"frequency": 1,
"created_at": "2026-11-02T12:16:49.995Z",
"updated_at": "2026-11-02T12:16:49.998Z",
"version": 1793621809,
"prices_are_incl_tax": false,
"total_price_excl_tax": "2.91",
"total_price_excl_tax_base": "2.91",
"total_price_incl_tax": "3.52",
"total_price_incl_tax_base": "3.52",
"details": [
{
"id": "502689209543296765",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "5 stuks",
"amount_decimal": "5.0",
"description": "Appels",
"price": "0.45",
"period": null,
"row_order": 1,
"total_price_excl_tax_with_discount": "2.25",
"total_price_excl_tax_with_discount_base": "2.25",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:49.996Z",
"updated_at": "2026-11-02T12:16:49.996Z"
},
{
"id": "502689209544345342",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "2 stuks",
"amount_decimal": "2.0",
"description": "Peren",
"price": "0.33",
"period": null,
"row_order": 2,
"total_price_excl_tax_with_discount": "0.66",
"total_price_excl_tax_with_discount_base": "0.66",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:49.998Z",
"updated_at": "2026-11-02T12:16:49.998Z"
}
],
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "recurring_sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:49.999Z",
"updated_at": "2026-11-02T12:16:49.999Z"
}
],
"subscription": null
}
]
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns400WhenInvalidParametersAreProvided": {
"summary": "Returns 400 when invalid parameters are provided",
"value": {
"error": "Ids isn't an array",
"symbolic": {
"ids": "array"
}
}
}
}
}
}
}
},
"operationId": "post_administration_id_recurring_sales_invoices_synchronization"
}
},
"/{administration_id}/recurring_sales_invoices/{id}{format}": {
"get": {
"summary": "Get a recurring sales invoice by id",
"description": "Get a recurring sales invoice by id.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Recurring sales invoices"
],
"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"
}
],
"responses": {
"200": {
"description": "A recurring sales invoice",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/recurring_sales_invoice_response"
},
"examples": {
"ReturnsInvoiceByGivenId": {
"summary": "Returns invoice by given id",
"value": {
"id": "502689211366769670",
"administration_id": 123,
"contact_id": "502689211348943876",
"contact": {
"id": "502689211348943876",
"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-11-02T12:16:51.718Z",
"updated_at": "2026-11-02T12:16:51.718Z",
"version": 1793621811,
"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,
"workflow_id": "502689109097055375",
"start_date": "2026-11-03",
"invoice_date": "2026-11-03",
"last_date": "2026-11-03",
"active": true,
"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.",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"first_due_interval": 14,
"auto_send": false,
"sending_scheduled_at": null,
"sending_scheduled_user_id": null,
"frequency_type": "month",
"frequency": 1,
"created_at": "2026-11-02T12:16:51.736Z",
"updated_at": "2026-11-02T12:16:51.738Z",
"version": 1793621811,
"prices_are_incl_tax": false,
"total_price_excl_tax": "2.91",
"total_price_excl_tax_base": "2.91",
"total_price_incl_tax": "3.52",
"total_price_incl_tax_base": "3.52",
"details": [
{
"id": "502689211367818247",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "5 stuks",
"amount_decimal": "5.0",
"description": "Appels",
"price": "0.45",
"period": null,
"row_order": 1,
"total_price_excl_tax_with_discount": "2.25",
"total_price_excl_tax_with_discount_base": "2.25",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:51.737Z",
"updated_at": "2026-11-02T12:16:51.737Z"
},
{
"id": "502689211368866824",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "2 stuks",
"amount_decimal": "2.0",
"description": "Peren",
"price": "0.33",
"period": null,
"row_order": 2,
"total_price_excl_tax_with_discount": "0.66",
"total_price_excl_tax_with_discount_base": "0.66",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:51.738Z",
"updated_at": "2026-11-02T12:16:51.738Z"
}
],
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "recurring_sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:51.739Z",
"updated_at": "2026-11-02T12:16:51.739Z"
}
],
"subscription": null
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenInvoiceDoesNotExist": {
"summary": "Returns 404 when invoice does not exist",
"value": {
"error": "record not found",
"symbolic": {
"id": "not_found"
}
}
}
}
}
}
}
},
"operationId": "get_administration_id_recurring_sales_invoices_id"
},
"patch": {
"summary": "Updates a recurring sales invoice",
"description": "Updates a recurring sales invoice. Only possible if the recurring sales invoice has no active subscription.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Recurring sales invoices"
],
"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": {
"unevaluatedProperties": false,
"type": "object",
"properties": {
"recurring_sales_invoice": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"document_style_id": {
"$ref": "#/components/schemas/identifier",
"description": "Should be a valid document style id."
},
"contact_id": {
"$ref": "#/components/schemas/identifier",
"description": "Should be a valid contact id."
},
"contact_person_id": {
"$ref": "#/components/schemas/identifier_nullable",
"description": "Should be a valid contact person id."
},
"update_contact": {
"type": [
"boolean",
"string"
],
"description": "When `true`, the contact's address and other details are refreshed from the current contact record each time a new invoice is generated."
},
"reference": {
"type": "string",
"description": "A reference to include on each generated invoice, e.g. a contract or project code."
},
"invoice_date": {
"type": "string",
"description": "Should be in the future."
},
"workflow_id": {
"$ref": "#/components/schemas/identifier",
"description": "Should be a valid workflow id."
},
"currency": {
"type": "string",
"description": "ISO three-character currency code, e.g. EUR or USD."
},
"first_due_interval": {
"type": "integer",
"description": "The number of days after the invoice date before each generated invoice is due."
},
"prices_are_incl_tax": {
"type": [
"boolean",
"string"
],
"description": "Whether the prices on generated invoices are inclusive of tax."
},
"discount": {
"$ref": "#/components/schemas/number",
"description": "Discount percentage, e.g. 10,0%."
},
"frequency_type": {
"type": "string",
"description": "Can be `day`, `week`, `month`, `quarter` or `year`."
},
"frequency": {
"type": "string",
"description": "The interval multiplier. Combined with `frequency_type` to determine the billing cycle."
},
"has_desired_count": {
"type": [
"boolean",
"string"
],
"description": "When `true`, the recurring invoice stops after `desired_count` invoices have been created."
},
"desired_count": {
"type": "string",
"description": "The maximum number of invoices to generate. Only applied when `has_desired_count` is `true`."
},
"auto_send": {
"type": [
"boolean",
"string"
],
"description": "When `true`, each generated invoice is automatically sent to the contact."
},
"mergeable": {
"type": [
"boolean",
"string"
],
"description": "When `true`, generated invoices may be merged with other mergeable invoices for the same contact, if they share the same workflow, layout, currency, language and other invoice settings."
},
"details_attributes": {
"$ref": "#/components/schemas/details_attributes"
},
"custom_fields_attributes": {
"$ref": "#/components/schemas/custom_fields_attributes"
}
},
"required": []
}
},
"required": []
},
"examples": {
"UpdatesARecurringSalesInvoiceDetail": {
"summary": "Updates a recurring sales invoice detail",
"value": {
"recurring_sales_invoice": {
"details_attributes": {
"0": {
"id": 502689212012692540,
"price": 10
}
}
}
}
},
"UpdatesTheRecurringSalesInvoice": {
"summary": "Updates the recurring sales invoice",
"value": {
"recurring_sales_invoice": {
"reference": "Reference changed"
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "Recurring sales invoice updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/recurring_sales_invoice_response"
},
"examples": {
"UpdatesARecurringSalesInvoiceDetail": {
"summary": "Updates a recurring sales invoice detail",
"value": {
"id": "502689212011643985",
"administration_id": 123,
"contact_id": "502689211985429583",
"contact": {
"id": "502689211985429583",
"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-11-02T12:16:52.324Z",
"updated_at": "2026-11-02T12:16:52.324Z",
"version": 1793621812,
"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,
"workflow_id": "502689109097055375",
"start_date": "2026-11-03",
"invoice_date": "2026-11-03",
"last_date": "2026-11-03",
"active": true,
"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.",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"first_due_interval": 14,
"auto_send": false,
"sending_scheduled_at": null,
"sending_scheduled_user_id": null,
"frequency_type": "month",
"frequency": 1,
"created_at": "2026-11-02T12:16:52.350Z",
"updated_at": "2026-11-02T12:16:52.372Z",
"version": 1793621812,
"prices_are_incl_tax": false,
"total_price_excl_tax": "50.66",
"total_price_excl_tax_base": "50.66",
"total_price_incl_tax": "61.3",
"total_price_incl_tax_base": "61.3",
"details": [
{
"id": "502689212012692562",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "5 stuks",
"amount_decimal": "5.0",
"description": "Appels",
"price": "10.0",
"period": null,
"row_order": 1,
"total_price_excl_tax_with_discount": "50.0",
"total_price_excl_tax_with_discount_base": "50.0",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:52.352Z",
"updated_at": "2026-11-02T12:16:52.371Z"
},
{
"id": "502689212013741139",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "2 stuks",
"amount_decimal": "2.0",
"description": "Peren",
"price": "0.33",
"period": null,
"row_order": 2,
"total_price_excl_tax_with_discount": "0.66",
"total_price_excl_tax_with_discount_base": "0.66",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:52.353Z",
"updated_at": "2026-11-02T12:16:52.353Z"
}
],
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "recurring_sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:52.355Z",
"updated_at": "2026-11-02T12:16:52.355Z"
}
],
"subscription": null
}
},
"UpdatesTheRecurringSalesInvoice": {
"summary": "Updates the recurring sales invoice",
"value": {
"id": "502689212086092888",
"administration_id": 123,
"contact_id": "502689212061975638",
"contact": {
"id": "502689212061975638",
"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-11-02T12:16:52.398Z",
"updated_at": "2026-11-02T12:16:52.398Z",
"version": 1793621812,
"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,
"workflow_id": "502689109097055375",
"start_date": "2026-11-03",
"invoice_date": "2026-11-03",
"last_date": "2026-11-03",
"active": true,
"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.",
"reference": "Reference changed",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"first_due_interval": 14,
"auto_send": false,
"sending_scheduled_at": null,
"sending_scheduled_user_id": null,
"frequency_type": "month",
"frequency": 1,
"created_at": "2026-11-02T12:16:52.421Z",
"updated_at": "2026-11-02T12:16:52.446Z",
"version": 1793621812,
"prices_are_incl_tax": false,
"total_price_excl_tax": "2.91",
"total_price_excl_tax_base": "2.91",
"total_price_incl_tax": "3.52",
"total_price_incl_tax_base": "3.52",
"details": [
{
"id": "502689212087141465",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "5 stuks",
"amount_decimal": "5.0",
"description": "Appels",
"price": "0.45",
"period": null,
"row_order": 1,
"total_price_excl_tax_with_discount": "2.25",
"total_price_excl_tax_with_discount_base": "2.25",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:52.423Z",
"updated_at": "2026-11-02T12:16:52.423Z"
},
{
"id": "502689212089238618",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "2 stuks",
"amount_decimal": "2.0",
"description": "Peren",
"price": "0.33",
"period": null,
"row_order": 2,
"total_price_excl_tax_with_discount": "0.66",
"total_price_excl_tax_with_discount_base": "0.66",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:52.424Z",
"updated_at": "2026-11-02T12:16:52.424Z"
}
],
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "recurring_sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:52.428Z",
"updated_at": "2026-11-02T12:16:52.428Z"
}
],
"subscription": null
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns400WhenRecurringSalesInvoiceCannotBeEditedDueToActiveSubscription": {
"summary": "Returns 400 when recurring sales invoice cannot be edited due to active subscription",
"value": {
"error": "cannot be updated",
"symbolic": {
"id": "cannot_be_updated"
}
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenRecurringSalesInvoiceDoesNotExist": {
"summary": "Returns 404 when recurring sales invoice 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": {
"Returns422WhenValidationFails": {
"summary": "Returns 422 when validation fails",
"value": {
"error": {
"invoice_date": [
"must be further in the future"
]
},
"details": {
"invoice_date": [
{
"error": "too_early"
}
]
}
}
}
}
}
}
}
},
"operationId": "patch_administration_id_recurring_sales_invoices_id"
},
"delete": {
"summary": "Destroy or deactivate a recurring sales invoice",
"description": "A recurring sales invoice will be destroyed if it has not created any sales invoices. If it has created sales\ninvoices, it will be deactivated. Returns a 422 when the recurring sales invoice belongs to an active\nsubscription, or has created sales invoices and is already deactivated.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Recurring sales invoices"
],
"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"
}
],
"responses": {
"204": {
"description": "Recurring sales invoice deleted"
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenRecurringSalesInvoiceDoesNotExist": {
"summary": "Returns 404 when recurring sales invoice 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": {
"Returns422WhenTheRecurringSalesInvoiceBelongsToAnActiveSubscription": {
"summary": "Returns 422 when the recurring sales invoice belongs to an active subscription",
"value": {
"error": "Recurring sales invoice cannot be destroyed or deactivated",
"symbolic": {
"id": "cannot_destroy_or_deactivate"
}
}
}
}
}
}
}
},
"operationId": "delete_administration_id_recurring_sales_invoices_id"
}
},
"/{administration_id}/recurring_sales_invoices/{recurring_sales_invoice_id}/notes/{id}{format}": {
"delete": {
"summary": "Destroys note from entity",
"description": "Deletes a note from the recurring sales invoice.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Recurring sales invoices"
],
"security": [
{
"bearerAuth": [
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "recurring_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": {
"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_recurring_sales_invoices_recurring_sales_invoice_id_notes_id"
}
},
"/{administration_id}/recurring_sales_invoices/{recurring_sales_invoice_id}/notes{format}": {
"post": {
"summary": "Adds note to entity",
"description": "Adds a note to the recurring sales invoice.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Recurring sales invoices"
],
"security": [
{
"bearerAuth": [
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "recurring_sales_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": 502689211131889600,
"todo": true
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Note created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/note_response"
},
"examples": {
"CreateANote": {
"summary": "Create a note",
"value": {
"id": "502689211142375393",
"administration_id": 123,
"entity_id": "502689211121403867",
"entity_type": "RecurringSalesInvoice",
"user_id": "502689108256097381",
"assignee_id": "502689211131889631",
"todo": true,
"note": "Text of the note",
"completed_at": null,
"completed_by_id": null,
"todo_type": null,
"data": {},
"created_at": "2026-11-02T12:16:51.522Z",
"updated_at": "2026-11-02T12:16:51.522Z"
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns400WhenRecurringSalesInvoiceDoesNotExist": {
"summary": "Returns 400 when recurring sales invoice does not exist",
"value": {
"error": "Entity is invalid; User has no permissions to notes for RecurringSalesInvoice",
"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": {
"Returns422WhenValidationFails": {
"summary": "Returns 422 when validation fails",
"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_recurring_sales_invoices_recurring_sales_invoice_id_notes"
}
},
"/{administration_id}/recurring_sales_invoices{format}": {
"get": {
"summary": "List all recurring sales invoices",
"description": "Returns a paginated list of recurring sales invoices in the administration.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Recurring 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. `state:active,contact_id:123`). A filter key you leave out keeps its default below. Available filters:\n\n| **Filter** | **Type** | **Default** | **Description** |\n| --- | --- | --- | --- |\n| state | `String` | `active` | `active` or `inactive` |\n| frequency | `String` | `all` | `all`, `day`, `week`, `month`, `quarter` or `year` |\n| auto_send | `Boolean` | `null` | `null`, `true` or `false` |\n| contact_id | `Integer` | | Filters recurring invoices by a single contact |\n| workflow_id | `Integer` | | Filters recurring invoices by a single workflow |\n| include_subscriptions | `Boolean` | `false` | Use `true` to include the recurring sales invoices that belong to a subscription |",
"schema": {
"type": "string",
"default": "state:active"
},
"examples": {
"ReturnsRecurringInvoicesFilteredOnContact": {
"summary": "Returns recurring invoices filtered on contact",
"value": "contact_id:502689210764887973"
},
"ReturnsRecurringInvoicesFilteredOnFrequency": {
"summary": "Returns recurring invoices filtered on frequency",
"value": "frequency:month"
}
}
},
{
"$ref": "#/components/parameters/page"
},
{
"$ref": "#/components/parameters/per_page"
}
],
"responses": {
"200": {
"description": "A list of recurring sales invoices",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/recurring_sales_invoice_response"
}
},
"examples": {
"ReturnsAllRecurringSalesInvoicesOfAnAdministration": {
"summary": "Returns all recurring sales invoices of an administration",
"value": [
{
"id": "502689210248988513",
"administration_id": 123,
"contact_id": "502689210185025368",
"contact": {
"id": "502689210185025368",
"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-2",
"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-11-02T12:16:50.609Z",
"updated_at": "2026-11-02T12:16:50.609Z",
"version": 1793621810,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000002/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": null,
"contact_person": null,
"workflow_id": "502689109097055375",
"start_date": "2026-11-03",
"invoice_date": "2026-11-03",
"last_date": "2026-11-03",
"active": true,
"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.",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"first_due_interval": 14,
"auto_send": false,
"sending_scheduled_at": null,
"sending_scheduled_user_id": null,
"frequency_type": "year",
"frequency": 1,
"created_at": "2026-11-02T12:16:50.669Z",
"updated_at": "2026-11-02T12:16:50.673Z",
"version": 1793621810,
"prices_are_incl_tax": false,
"total_price_excl_tax": "2.91",
"total_price_excl_tax_base": "2.91",
"total_price_incl_tax": "3.52",
"total_price_incl_tax_base": "3.52",
"details": [
{
"id": "502689210250037090",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "5 stuks",
"amount_decimal": "5.0",
"description": "Appels",
"price": "0.45",
"period": null,
"row_order": 1,
"total_price_excl_tax_with_discount": "2.25",
"total_price_excl_tax_with_discount_base": "2.25",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:50.671Z",
"updated_at": "2026-11-02T12:16:50.671Z"
},
{
"id": "502689210252134243",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "2 stuks",
"amount_decimal": "2.0",
"description": "Peren",
"price": "0.33",
"period": null,
"row_order": 2,
"total_price_excl_tax_with_discount": "0.66",
"total_price_excl_tax_with_discount_base": "0.66",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:50.672Z",
"updated_at": "2026-11-02T12:16:50.672Z"
}
],
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "recurring_sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:50.675Z",
"updated_at": "2026-11-02T12:16:50.675Z"
}
],
"subscription": null
},
{
"id": "502689210223822685",
"administration_id": 123,
"contact_id": "502689210185025368",
"contact": {
"id": "502689210185025368",
"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-2",
"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-11-02T12:16:50.609Z",
"updated_at": "2026-11-02T12:16:50.609Z",
"version": 1793621810,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000002/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": null,
"contact_person": null,
"workflow_id": "502689109097055375",
"start_date": "2026-11-03",
"invoice_date": "2026-11-03",
"last_date": "2026-11-03",
"active": true,
"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.",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"first_due_interval": 14,
"auto_send": false,
"sending_scheduled_at": null,
"sending_scheduled_user_id": null,
"frequency_type": "year",
"frequency": 1,
"created_at": "2026-11-02T12:16:50.646Z",
"updated_at": "2026-11-02T12:16:50.649Z",
"version": 1793621810,
"prices_are_incl_tax": false,
"total_price_excl_tax": "2.91",
"total_price_excl_tax_base": "2.91",
"total_price_incl_tax": "3.52",
"total_price_incl_tax_base": "3.52",
"details": [
{
"id": "502689210224871262",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "5 stuks",
"amount_decimal": "5.0",
"description": "Appels",
"price": "0.45",
"period": null,
"row_order": 1,
"total_price_excl_tax_with_discount": "2.25",
"total_price_excl_tax_with_discount_base": "2.25",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:50.647Z",
"updated_at": "2026-11-02T12:16:50.647Z"
},
{
"id": "502689210225919839",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "2 stuks",
"amount_decimal": "2.0",
"description": "Peren",
"price": "0.33",
"period": null,
"row_order": 2,
"total_price_excl_tax_with_discount": "0.66",
"total_price_excl_tax_with_discount_base": "0.66",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:50.648Z",
"updated_at": "2026-11-02T12:16:50.648Z"
}
],
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "recurring_sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:50.650Z",
"updated_at": "2026-11-02T12:16:50.650Z"
}
],
"subscription": null
},
{
"id": "502689210201802585",
"administration_id": 123,
"contact_id": "502689210185025368",
"contact": {
"id": "502689210185025368",
"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-2",
"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-11-02T12:16:50.609Z",
"updated_at": "2026-11-02T12:16:50.609Z",
"version": 1793621810,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000002/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": null,
"contact_person": null,
"workflow_id": "502689109097055375",
"start_date": "2026-11-03",
"invoice_date": "2026-11-03",
"last_date": "2026-11-03",
"active": true,
"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.",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"first_due_interval": 14,
"auto_send": false,
"sending_scheduled_at": null,
"sending_scheduled_user_id": null,
"frequency_type": "year",
"frequency": 1,
"created_at": "2026-11-02T12:16:50.624Z",
"updated_at": "2026-11-02T12:16:50.628Z",
"version": 1793621810,
"prices_are_incl_tax": false,
"total_price_excl_tax": "2.91",
"total_price_excl_tax_base": "2.91",
"total_price_incl_tax": "3.52",
"total_price_incl_tax_base": "3.52",
"details": [
{
"id": "502689210202851162",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "5 stuks",
"amount_decimal": "5.0",
"description": "Appels",
"price": "0.45",
"period": null,
"row_order": 1,
"total_price_excl_tax_with_discount": "2.25",
"total_price_excl_tax_with_discount_base": "2.25",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:50.626Z",
"updated_at": "2026-11-02T12:16:50.626Z"
},
{
"id": "502689210204948315",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "2 stuks",
"amount_decimal": "2.0",
"description": "Peren",
"price": "0.33",
"period": null,
"row_order": 2,
"total_price_excl_tax_with_discount": "0.66",
"total_price_excl_tax_with_discount_base": "0.66",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:50.627Z",
"updated_at": "2026-11-02T12:16:50.627Z"
}
],
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "recurring_sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:50.630Z",
"updated_at": "2026-11-02T12:16:50.630Z"
}
],
"subscription": null
},
{
"id": "502689210175588179",
"administration_id": 123,
"contact_id": "502689210153568081",
"contact": {
"id": "502689210153568081",
"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-11-02T12:16:50.578Z",
"updated_at": "2026-11-02T12:16:50.578Z",
"version": 1793621810,
"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,
"workflow_id": "502689109097055375",
"start_date": "2026-11-03",
"invoice_date": "2026-11-03",
"last_date": "2026-11-03",
"active": true,
"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.",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"first_due_interval": 14,
"auto_send": false,
"sending_scheduled_at": null,
"sending_scheduled_user_id": null,
"frequency_type": "month",
"frequency": 1,
"created_at": "2026-11-02T12:16:50.599Z",
"updated_at": "2026-11-02T12:16:50.602Z",
"version": 1793621810,
"prices_are_incl_tax": false,
"total_price_excl_tax": "2.91",
"total_price_excl_tax_base": "2.91",
"total_price_incl_tax": "3.52",
"total_price_incl_tax_base": "3.52",
"details": [
{
"id": "502689210176636756",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "5 stuks",
"amount_decimal": "5.0",
"description": "Appels",
"price": "0.45",
"period": null,
"row_order": 1,
"total_price_excl_tax_with_discount": "2.25",
"total_price_excl_tax_with_discount_base": "2.25",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:50.600Z",
"updated_at": "2026-11-02T12:16:50.600Z"
},
{
"id": "502689210177685333",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "2 stuks",
"amount_decimal": "2.0",
"description": "Peren",
"price": "0.33",
"period": null,
"row_order": 2,
"total_price_excl_tax_with_discount": "0.66",
"total_price_excl_tax_with_discount_base": "0.66",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:50.601Z",
"updated_at": "2026-11-02T12:16:50.601Z"
}
],
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "recurring_sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:50.603Z",
"updated_at": "2026-11-02T12:16:50.603Z"
}
],
"subscription": null
}
]
},
"ReturnsPaginatedRecurringSalesInvoicesOnPage1": {
"summary": "Returns paginated recurring sales invoices on page 1",
"value": [
{
"id": "502689210544686987",
"administration_id": 123,
"contact_id": "502689210484918146",
"contact": {
"id": "502689210484918146",
"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-2",
"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-11-02T12:16:50.894Z",
"updated_at": "2026-11-02T12:16:50.894Z",
"version": 1793621810,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000002/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": null,
"contact_person": null,
"workflow_id": "502689109097055375",
"start_date": "2026-11-03",
"invoice_date": "2026-11-03",
"last_date": "2026-11-03",
"active": true,
"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.",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"first_due_interval": 14,
"auto_send": false,
"sending_scheduled_at": null,
"sending_scheduled_user_id": null,
"frequency_type": "year",
"frequency": 1,
"created_at": "2026-11-02T12:16:50.952Z",
"updated_at": "2026-11-02T12:16:50.955Z",
"version": 1793621810,
"prices_are_incl_tax": false,
"total_price_excl_tax": "2.91",
"total_price_excl_tax_base": "2.91",
"total_price_incl_tax": "3.52",
"total_price_incl_tax_base": "3.52",
"details": [
{
"id": "502689210545735564",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "5 stuks",
"amount_decimal": "5.0",
"description": "Appels",
"price": "0.45",
"period": null,
"row_order": 1,
"total_price_excl_tax_with_discount": "2.25",
"total_price_excl_tax_with_discount_base": "2.25",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:50.953Z",
"updated_at": "2026-11-02T12:16:50.953Z"
},
{
"id": "502689210546784141",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "2 stuks",
"amount_decimal": "2.0",
"description": "Peren",
"price": "0.33",
"period": null,
"row_order": 2,
"total_price_excl_tax_with_discount": "0.66",
"total_price_excl_tax_with_discount_base": "0.66",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:50.954Z",
"updated_at": "2026-11-02T12:16:50.954Z"
}
],
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "recurring_sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:50.956Z",
"updated_at": "2026-11-02T12:16:50.956Z"
}
],
"subscription": null
}
]
},
"ReturnsPaginatedRecurringSalesInvoicesOnPage2": {
"summary": "Returns paginated recurring sales invoices on page 2",
"value": [
{
"id": "502689210672613276",
"administration_id": 123,
"contact_id": "502689210632767383",
"contact": {
"id": "502689210632767383",
"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-2",
"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-11-02T12:16:51.035Z",
"updated_at": "2026-11-02T12:16:51.035Z",
"version": 1793621811,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000002/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": null,
"contact_person": null,
"workflow_id": "502689109097055375",
"start_date": "2026-11-03",
"invoice_date": "2026-11-03",
"last_date": "2026-11-03",
"active": true,
"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.",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"first_due_interval": 14,
"auto_send": false,
"sending_scheduled_at": null,
"sending_scheduled_user_id": null,
"frequency_type": "year",
"frequency": 1,
"created_at": "2026-11-02T12:16:51.074Z",
"updated_at": "2026-11-02T12:16:51.077Z",
"version": 1793621811,
"prices_are_incl_tax": false,
"total_price_excl_tax": "2.91",
"total_price_excl_tax_base": "2.91",
"total_price_incl_tax": "3.52",
"total_price_incl_tax_base": "3.52",
"details": [
{
"id": "502689210673661853",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "5 stuks",
"amount_decimal": "5.0",
"description": "Appels",
"price": "0.45",
"period": null,
"row_order": 1,
"total_price_excl_tax_with_discount": "2.25",
"total_price_excl_tax_with_discount_base": "2.25",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:51.075Z",
"updated_at": "2026-11-02T12:16:51.075Z"
},
{
"id": "502689210675759006",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "2 stuks",
"amount_decimal": "2.0",
"description": "Peren",
"price": "0.33",
"period": null,
"row_order": 2,
"total_price_excl_tax_with_discount": "0.66",
"total_price_excl_tax_with_discount_base": "0.66",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:51.076Z",
"updated_at": "2026-11-02T12:16:51.076Z"
}
],
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "recurring_sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:51.079Z",
"updated_at": "2026-11-02T12:16:51.079Z"
}
],
"subscription": null
}
]
},
"ReturnsRecurringInvoicesFilteredOnContact": {
"summary": "Returns recurring invoices filtered on contact",
"value": [
{
"id": "502689210786908071",
"administration_id": 123,
"contact_id": "502689210764887973",
"contact": {
"id": "502689210764887973",
"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-11-02T12:16:51.161Z",
"updated_at": "2026-11-02T12:16:51.161Z",
"version": 1793621811,
"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,
"workflow_id": "502689109097055375",
"start_date": "2026-11-03",
"invoice_date": "2026-11-03",
"last_date": "2026-11-03",
"active": true,
"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.",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"first_due_interval": 14,
"auto_send": false,
"sending_scheduled_at": null,
"sending_scheduled_user_id": null,
"frequency_type": "month",
"frequency": 1,
"created_at": "2026-11-02T12:16:51.182Z",
"updated_at": "2026-11-02T12:16:51.185Z",
"version": 1793621811,
"prices_are_incl_tax": false,
"total_price_excl_tax": "2.91",
"total_price_excl_tax_base": "2.91",
"total_price_incl_tax": "3.52",
"total_price_incl_tax_base": "3.52",
"details": [
{
"id": "502689210787956648",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "5 stuks",
"amount_decimal": "5.0",
"description": "Appels",
"price": "0.45",
"period": null,
"row_order": 1,
"total_price_excl_tax_with_discount": "2.25",
"total_price_excl_tax_with_discount_base": "2.25",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:51.183Z",
"updated_at": "2026-11-02T12:16:51.183Z"
},
{
"id": "502689210789005225",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "2 stuks",
"amount_decimal": "2.0",
"description": "Peren",
"price": "0.33",
"period": null,
"row_order": 2,
"total_price_excl_tax_with_discount": "0.66",
"total_price_excl_tax_with_discount_base": "0.66",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:51.185Z",
"updated_at": "2026-11-02T12:16:51.185Z"
}
],
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "recurring_sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:51.186Z",
"updated_at": "2026-11-02T12:16:51.186Z"
}
],
"subscription": null
}
]
},
"ReturnsRecurringInvoicesFilteredOnFrequency": {
"summary": "Returns recurring invoices filtered on frequency",
"value": [
{
"id": "502689210963068866",
"administration_id": 123,
"contact_id": "502689210943145920",
"contact": {
"id": "502689210943145920",
"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-11-02T12:16:51.332Z",
"updated_at": "2026-11-02T12:16:51.332Z",
"version": 1793621811,
"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,
"workflow_id": "502689109097055375",
"start_date": "2026-11-03",
"invoice_date": "2026-11-03",
"last_date": "2026-11-03",
"active": true,
"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.",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"first_due_interval": 14,
"auto_send": false,
"sending_scheduled_at": null,
"sending_scheduled_user_id": null,
"frequency_type": "month",
"frequency": 1,
"created_at": "2026-11-02T12:16:51.350Z",
"updated_at": "2026-11-02T12:16:51.353Z",
"version": 1793621811,
"prices_are_incl_tax": false,
"total_price_excl_tax": "2.91",
"total_price_excl_tax_base": "2.91",
"total_price_incl_tax": "3.52",
"total_price_incl_tax_base": "3.52",
"details": [
{
"id": "502689210964117443",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "5 stuks",
"amount_decimal": "5.0",
"description": "Appels",
"price": "0.45",
"period": null,
"row_order": 1,
"total_price_excl_tax_with_discount": "2.25",
"total_price_excl_tax_with_discount_base": "2.25",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:51.352Z",
"updated_at": "2026-11-02T12:16:51.352Z"
},
{
"id": "502689210965166020",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "2 stuks",
"amount_decimal": "2.0",
"description": "Peren",
"price": "0.33",
"period": null,
"row_order": 2,
"total_price_excl_tax_with_discount": "0.66",
"total_price_excl_tax_with_discount_base": "0.66",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:51.353Z",
"updated_at": "2026-11-02T12:16:51.353Z"
}
],
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "recurring_sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:51.355Z",
"updated_at": "2026-11-02T12:16:51.355Z"
}
],
"subscription": null
}
]
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsAnErrorWhenTooManyRecurringSalesInvoicesAreRequested": {
"summary": "Returns an error when too many recurring sales invoices are requested",
"value": {
"error": "per_page does not have a valid value"
}
}
}
}
}
}
},
"operationId": "get_administration_id_recurring_sales_invoices"
},
"post": {
"summary": "Creates a new recurring sales invoice",
"description": "A recurring sales invoice will create new sales invoices on set intervals. To create a new recurring sales invoice,\nyou need to provide at least a contact and details for the invoice. Furthermore you need to determine the planning.\nThe following fields will influence the planning:\n\n1. `invoice_date`: the date in which the first invoice should be created\n2. `frequency_type`: the type of frequency you want to use, for example `month`\n3. `frequency`: defines the actual frequency, e.g. `frequency=2` and `frequency_type=month` will create an invoice every 2 months\n4. `has_desired_count`: whether or not the desired count should take effect\n5. `desired_count`: maximum number of sales invoices to create\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Recurring 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": {
"recurring_sales_invoice": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"document_style_id": {
"$ref": "#/components/schemas/identifier",
"description": "Should be a valid document style id."
},
"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 refreshed from the current contact record each time a new invoice is generated."
},
"reference": {
"type": "string",
"description": "A reference to include on each generated invoice, e.g. a contract or project code."
},
"invoice_date": {
"type": "string",
"description": "Should be in the future."
},
"workflow_id": {
"$ref": "#/components/schemas/identifier",
"description": "Should be a valid workflow id. If not provided, the contact's invoice workflow is used."
},
"currency": {
"type": "string",
"description": "ISO three-character currency code, e.g. EUR or USD. Defaults to the workflow's currency."
},
"first_due_interval": {
"type": "integer",
"description": "The number of days after the invoice date before each generated invoice is due. Defaults to the first workflow step's due interval."
},
"prices_are_incl_tax": {
"type": [
"boolean",
"string"
],
"description": "Whether the prices on generated invoices are inclusive of tax. Defaults to the workflow's setting."
},
"discount": {
"$ref": "#/components/schemas/number",
"description": "Discount percentage, e.g. 10,0%."
},
"frequency_type": {
"type": "string",
"description": "Can be `day`, `week`, `month`, `quarter` or `year`."
},
"frequency": {
"type": "string",
"description": "The interval multiplier. Combined with `frequency_type` to determine the billing cycle, e.g. `frequency=2` with `frequency_type=month` creates an invoice every 2 months."
},
"has_desired_count": {
"type": [
"boolean",
"string"
],
"description": "When `true`, the recurring invoice will stop generating new invoices after `desired_count` invoices have been created."
},
"desired_count": {
"type": "string",
"description": "The maximum number of invoices to generate. Only applied when `has_desired_count` is `true`."
},
"auto_send": {
"type": [
"boolean",
"string"
],
"description": "When `true`, each generated invoice is automatically sent to the contact via the configured delivery method."
},
"mergeable": {
"type": [
"boolean",
"string"
],
"description": "When `true`, generated invoices may be merged with other mergeable invoices for the same contact, if they share the same workflow, layout, currency, language and other invoice settings."
},
"details_attributes": {
"$ref": "#/components/schemas/details_attributes"
},
"custom_fields_attributes": {
"$ref": "#/components/schemas/custom_fields_attributes"
}
},
"required": []
}
},
"required": []
},
"examples": {
"CreatesANewRecurringSalesInvoice": {
"summary": "Creates a new recurring sales invoice",
"value": {
"recurring_sales_invoice": {
"reference": "My recurring invoice",
"contact_id": 502689209809635100,
"invoice_date": "2030-01-01",
"details_attributes": {
"0": {
"description": "Table",
"price": "10.5",
"tax_rate_id": 502689209814877950,
"ledger_account_id": 502689209822218050
}
}
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Recurring sales invoice created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/recurring_sales_invoice_response"
},
"examples": {
"CreatesANewRecurringSalesInvoice": {
"summary": "Creates a new recurring sales invoice",
"value": {
"id": "502689209843189539",
"administration_id": 123,
"contact_id": "502689209809635101",
"contact": {
"id": "502689209809635101",
"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-2",
"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-11-02T12:16:50.251Z",
"updated_at": "2026-11-02T12:16:50.251Z",
"version": 1793621810,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000002/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": null,
"contact_person": null,
"workflow_id": "502689109097055375",
"start_date": "2030-01-01",
"invoice_date": "2030-01-01",
"last_date": null,
"active": true,
"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.",
"reference": "My recurring invoice",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"first_due_interval": 14,
"auto_send": false,
"sending_scheduled_at": null,
"sending_scheduled_user_id": null,
"frequency_type": "year",
"frequency": 1,
"created_at": "2026-11-02T12:16:50.283Z",
"updated_at": "2026-11-02T12:16:50.285Z",
"version": 1793621810,
"prices_are_incl_tax": false,
"total_price_excl_tax": "10.5",
"total_price_excl_tax_base": "10.5",
"total_price_incl_tax": "12.71",
"total_price_incl_tax_base": "12.71",
"details": [
{
"id": "502689209845286692",
"administration_id": 123,
"tax_rate_id": "502689209814877983",
"ledger_account_id": "502689209822218017",
"project_id": null,
"product_id": null,
"amount": null,
"amount_decimal": "1.0",
"description": "Table",
"price": "10.5",
"period": null,
"row_order": 0,
"total_price_excl_tax_with_discount": "10.5",
"total_price_excl_tax_with_discount_base": "10.5",
"tax_report_reference": [],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:50.284Z",
"updated_at": "2026-11-02T12:16:50.284Z"
}
],
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "recurring_sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:50.286Z",
"updated_at": "2026-11-02T12:16:50.286Z"
}
],
"subscription": null
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns400WhenMergeableIsTrueButAutoSendIsFalse": {
"summary": "Returns 400 when mergeable is true but auto send is false",
"value": {
"error": "if mergeable is true, auto_send must be true",
"symbolic": {
"mergeable": "invalid"
}
}
}
}
}
}
},
"402": {
"description": "Payment required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns402WhenPaymentIsRequired": {
"summary": "Returns 402 when payment is required",
"value": {
"error": "creating recurring sales invoices is limited",
"symbolic": {
"administration": "limit_reached"
}
}
}
}
}
}
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"Returns422WhenValidationFails": {
"summary": "Returns 422 when validation fails",
"value": {
"error": {
"invoice_date": [
"must be further in the future"
]
},
"details": {
"invoice_date": [
{
"error": "too_early"
}
]
}
}
}
}
}
}
}
},
"operationId": "post_administration_id_recurring_sales_invoices"
}
},
"/{administration_id}/reports/assets{format}": {
"get": {
"summary": "Assets report",
"description": "Get the assets report for the administration.\n\n### Required scope(s)\n `documents`",
"tags": [
"Reports"
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/period"
}
],
"security": [
{
"bearerAuth": [
"documents"
]
}
],
"responses": {
"200": {
"description": "An assets report",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"asset_id": {
"$ref": "#/components/schemas/identifier"
},
"ledger_account_id": {
"$ref": "#/components/schemas/identifier"
},
"name": {
"type": "string"
},
"purchase_date": {
"type": "string",
"format": "date"
},
"lifespan": {
"type": [
"string",
"null"
],
"description": "In seconds"
},
"purchase_value": {
"type": "string"
},
"calculated_purchase_value": {
"type": "string"
},
"residual_value": {
"type": "string"
},
"total_value_changes_since_purchase": {
"type": "string"
},
"value_at_begin": {
"type": "string"
},
"investment": {
"type": "string"
},
"depreciation": {
"type": "string"
},
"divestment": {
"type": "string"
},
"value_changes": {
"type": "string"
},
"value_at_end": {
"type": "string"
},
"value_not_in_use": {
"type": "string",
"description": "Amount booked on an asset whose purchase date is after the end of the period"
}
}
}
},
"examples": {
"ReturnsAssetsReport": {
"summary": "Returns assets report",
"value": [
{
"asset_id": "502689275104462184",
"ledger_account_id": "502689275097122151",
"name": "Test Asset",
"purchase_date": "2025-01-01",
"lifespan": "157784760",
"purchase_value": "12345.67",
"calculated_purchase_value": "12345.67",
"residual_value": "10.0",
"total_value_changes_since_purchase": "-200.0",
"value_at_begin": "12145.67",
"investment": "0",
"depreciation": "0.0",
"divestment": "0.0",
"value_changes": "0.0",
"value_at_end": "12145.67",
"value_not_in_use": "0"
}
]
},
"ReturnsSuccessForFullPeriod": {
"summary": "Returns success for full period",
"value": [
{
"asset_id": "502689276234827244",
"ledger_account_id": "502689276229584363",
"name": "Test Asset",
"purchase_date": "2025-01-01",
"lifespan": "157784760",
"purchase_value": "12345.67",
"calculated_purchase_value": "12345.67",
"residual_value": "10.0",
"total_value_changes_since_purchase": "-200.0",
"value_at_begin": "0",
"investment": "12345.67",
"depreciation": "-200.0",
"divestment": "0.0",
"value_changes": "-200.0",
"value_at_end": "12145.67",
"value_not_in_use": "0"
}
]
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsErrorWhenPeriodExceedsLimit": {
"summary": "Returns error when period exceeds limit",
"value": {
"error": "Period cannot exceed 12 months"
}
},
"ReturnsErrorForInvalidPeriodFormat": {
"summary": "Returns error for invalid period format",
"value": {
"error": "Period is invalid"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to documents"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_reports_assets"
}
},
"/{administration_id}/reports/balance_sheet{format}": {
"get": {
"summary": "Balance sheet report",
"description": "Get the balance sheet report for the administration showing the financial position at the end of the specified period.\n\nWith `granularity`, `periods` also gives the balance sheet at the end of every month, quarter or year in the period.\n\n### Required scope(s)\n `bank`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"bank"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/period"
},
{
"$ref": "#/components/parameters/granularity"
}
],
"responses": {
"200": {
"description": "A balance sheet report",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"debit": {
"$ref": "#/components/schemas/balance_sheet_debit"
},
"credit": {
"$ref": "#/components/schemas/balance_sheet_credit"
},
"periods": {
"type": "array",
"description": "Only present when `granularity` is given. One item for each month, quarter or year in `period`, oldest first.",
"items": {
"type": "object",
"required": [
"period",
"debit",
"credit"
],
"properties": {
"period": {
"type": "string",
"description": "The period of this item, in the same format as the `period` parameter (e.g. `202501..202503`)."
},
"debit": {
"$ref": "#/components/schemas/balance_sheet_debit"
},
"credit": {
"$ref": "#/components/schemas/balance_sheet_credit"
}
}
}
}
}
},
"examples": {
"ReturnsABalanceSheetReport": {
"summary": "Returns a balance sheet report",
"value": {
"debit": {
"total": "1100.0",
"current_assets": [
{
"ledger_account_id": "502689223602603667",
"value": "800.0",
"children": [
{
"ledger_account_id": "502689223613089432",
"value": "100.0"
}
]
}
],
"non_current_assets": [
{
"ledger_account_id": "502689223621478045",
"value": "200.0",
"children": []
}
]
},
"credit": {
"total": "1100.0",
"equity": [
{
"ledger_account_id": "502689223646643884",
"value": "550.0",
"children": []
}
],
"provisions": [
{
"ledger_account_id": "502689223639303847",
"value": "150.0",
"children": []
}
],
"non_current_liabilities": [],
"current_liabilities": [
{
"ledger_account_id": "502689223630915234",
"value": "300.0",
"children": []
}
],
"open_years": [
{
"year": "2024",
"value": "100.0"
}
]
}
}
},
"ReturnsTheBalanceAtTheEndOfEachPeriodByGranularity": {
"summary": "Returns the balance at the end of each period by granularity",
"value": {
"debit": {
"total": "1150.0",
"current_assets": [
{
"ledger_account_id": "502689223693829814",
"value": "850.0",
"children": [
{
"ledger_account_id": "502689223704315579",
"value": "100.0"
}
]
}
],
"non_current_assets": [
{
"ledger_account_id": "502689223711655616",
"value": "200.0",
"children": []
}
]
},
"credit": {
"total": "1150.0",
"equity": [
{
"ledger_account_id": "502689223735772879",
"value": "600.0",
"children": []
}
],
"provisions": [
{
"ledger_account_id": "502689223727384266",
"value": "150.0",
"children": []
}
],
"non_current_liabilities": [],
"current_liabilities": [
{
"ledger_account_id": "502689223720044229",
"value": "300.0",
"children": []
}
],
"open_years": [
{
"year": "2024",
"value": "100.0"
}
]
},
"periods": [
{
"period": "202505..202505",
"debit": {
"total": "50.0",
"current_assets": [
{
"ledger_account_id": "502689223693829814",
"value": "50.0",
"children": []
}
],
"non_current_assets": []
},
"credit": {
"total": "150.0",
"equity": [
{
"ledger_account_id": "502689223735772879",
"value": "50.0",
"children": []
}
],
"provisions": [],
"non_current_liabilities": [],
"current_liabilities": [],
"open_years": [
{
"year": "2024",
"value": "100.0"
}
]
}
},
{
"period": "202506..202506",
"debit": {
"total": "1150.0",
"current_assets": [
{
"ledger_account_id": "502689223693829814",
"value": "850.0",
"children": [
{
"ledger_account_id": "502689223704315579",
"value": "100.0"
}
]
}
],
"non_current_assets": [
{
"ledger_account_id": "502689223711655616",
"value": "200.0",
"children": []
}
]
},
"credit": {
"total": "1150.0",
"equity": [
{
"ledger_account_id": "502689223735772879",
"value": "600.0",
"children": []
}
],
"provisions": [
{
"ledger_account_id": "502689223727384266",
"value": "150.0",
"children": []
}
],
"non_current_liabilities": [],
"current_liabilities": [
{
"ledger_account_id": "502689223720044229",
"value": "300.0",
"children": []
}
],
"open_years": [
{
"year": "2024",
"value": "100.0"
}
]
}
}
]
}
},
"PutsAnAccountThatChangesSignOnTheSideOfItsBalanceAtTheEndOfEachPeriod": {
"summary": "Puts an account that changes sign on the side of its balance at the end of each period",
"value": {
"debit": {
"total": "1100.0",
"current_assets": [
{
"ledger_account_id": "502689223804978913",
"value": "800.0",
"children": [
{
"ledger_account_id": "502689223814416102",
"value": "100.0"
}
]
}
],
"non_current_assets": [
{
"ledger_account_id": "502689223823853291",
"value": "200.0",
"children": []
}
]
},
"credit": {
"total": "1400.0",
"equity": [
{
"ledger_account_id": "502689223851116282",
"value": "550.0",
"children": []
}
],
"provisions": [
{
"ledger_account_id": "502689223841679093",
"value": "150.0",
"children": []
}
],
"non_current_liabilities": [],
"current_liabilities": [
{
"ledger_account_id": "502689223832241904",
"value": "300.0",
"children": []
},
{
"ledger_account_id": "502689223866844932",
"value": "300.0",
"children": []
}
],
"open_years": [
{
"year": "2024",
"value": "100.0"
}
]
},
"periods": [
{
"period": "202506..202506",
"debit": {
"total": "1100.0",
"current_assets": [
{
"ledger_account_id": "502689223804978913",
"value": "800.0",
"children": [
{
"ledger_account_id": "502689223814416102",
"value": "100.0"
}
]
}
],
"non_current_assets": [
{
"ledger_account_id": "502689223823853291",
"value": "200.0",
"children": []
}
]
},
"credit": {
"total": "1400.0",
"equity": [
{
"ledger_account_id": "502689223851116282",
"value": "550.0",
"children": []
}
],
"provisions": [
{
"ledger_account_id": "502689223841679093",
"value": "150.0",
"children": []
}
],
"non_current_liabilities": [],
"current_liabilities": [
{
"ledger_account_id": "502689223832241904",
"value": "300.0",
"children": []
},
{
"ledger_account_id": "502689223866844932",
"value": "300.0",
"children": []
}
],
"open_years": [
{
"year": "2024",
"value": "100.0"
}
]
}
}
]
}
},
"ReturnsSuccessForFullPeriod": {
"summary": "Returns success for full period",
"value": {
"debit": {
"total": "1100.0",
"current_assets": [
{
"ledger_account_id": "502689223990576944",
"value": "800.0",
"children": [
{
"ledger_account_id": "502689223998965557",
"value": "100.0"
}
]
}
],
"non_current_assets": [
{
"ledger_account_id": "502689224005257018",
"value": "200.0",
"children": []
}
]
},
"credit": {
"total": "1100.0",
"equity": [
{
"ledger_account_id": "502689224031471433",
"value": "550.0",
"children": []
}
],
"provisions": [
{
"ledger_account_id": "502689224019937092",
"value": "150.0",
"children": []
}
],
"non_current_liabilities": [],
"current_liabilities": [
{
"ledger_account_id": "502689224012597055",
"value": "300.0",
"children": []
}
],
"open_years": [
{
"year": "2024",
"value": "100.0"
}
]
}
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsErrorForInvalidPeriodFormat": {
"summary": "Returns error for invalid period format",
"value": {
"error": "Period is invalid"
}
},
"ReturnsErrorWhenPeriodExceedsLimit": {
"summary": "Returns error when period exceeds limit",
"value": {
"error": "Period cannot exceed 12 months"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to bank"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_reports_balance_sheet"
}
},
"/{administration_id}/reports/bank_balance{format}": {
"get": {
"summary": "Bank balance report",
"description": "Get the booked balance of each financial account at the end of the specified period. These are the balances in the bookkeeping, not the balances the bank reports.\n\nWith `granularity`, `periods` also gives the balances at the end of every month, quarter or year in the period.\n\n### Required scope(s)\n `bank`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"bank"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/period"
},
{
"$ref": "#/components/parameters/granularity"
}
],
"responses": {
"200": {
"description": "A bank balance report",
"content": {
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/bank_balance_amounts"
},
{
"type": "object",
"properties": {
"periods": {
"type": "array",
"description": "Only present when `granularity` is given. One item for each month, quarter or year in `period`, oldest first.",
"items": {
"allOf": [
{
"type": "object",
"required": [
"period"
],
"properties": {
"period": {
"type": "string",
"description": "The period of this item, in the same format as the `period` parameter (e.g. `202501..202503`)."
}
}
},
{
"$ref": "#/components/schemas/bank_balance_amounts"
}
]
}
}
}
}
]
},
"examples": {
"ReturnsTheBalancesAtTheEndOfEachPeriodByGranularity": {
"summary": "Returns the balances at the end of each period by granularity",
"value": {
"total": "70.0",
"financial_accounts": [
{
"financial_account_id": "502689287699957170",
"name": "ING NL28INGB0000000001",
"type": "BankAccount",
"balance": "70.0"
}
],
"periods": [
{
"period": "202505..202505",
"total": "100.0",
"financial_accounts": [
{
"financial_account_id": "502689287699957170",
"name": "ING NL28INGB0000000001",
"type": "BankAccount",
"balance": "100.0"
}
]
},
{
"period": "202506..202506",
"total": "70.0",
"financial_accounts": [
{
"financial_account_id": "502689287699957170",
"name": "ING NL28INGB0000000001",
"type": "BankAccount",
"balance": "70.0"
}
]
}
]
}
},
"ReturnsTheBalanceOfEachFinancialAccountAtTheEndOfThePeriod": {
"summary": "Returns the balance of each financial account at the end of the period",
"value": {
"total": "70.0",
"financial_accounts": [
{
"financial_account_id": "502689287737705916",
"name": "ING NL28INGB0000000001",
"type": "BankAccount",
"balance": "70.0"
}
]
}
},
"LeavesOutFinancialAccountsWithoutABalanceInThePeriod": {
"summary": "Leaves out financial accounts without a balance in the period",
"value": {
"total": "70.0",
"financial_accounts": [
{
"financial_account_id": "502689287774406086",
"name": "ING NL28INGB0000000001",
"type": "BankAccount",
"balance": "70.0"
}
]
}
},
"ReturnsSuccessForFullPeriod": {
"summary": "Returns success for full period",
"value": {
"total": "70.0",
"financial_accounts": [
{
"financial_account_id": "502689287825786322",
"name": "ING NL28INGB0000000001",
"type": "BankAccount",
"balance": "70.0"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsErrorWhenPeriodExceedsLimit": {
"summary": "Returns error when period exceeds limit",
"value": {
"error": "Period cannot exceed 12 months"
}
},
"ReturnsErrorForInvalidPeriodFormat": {
"summary": "Returns error for invalid period format",
"value": {
"error": "Period is invalid"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to bank"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_reports_bank_balance"
}
},
"/{administration_id}/reports/cash_flow{format}": {
"get": {
"summary": "Cash flow report",
"description": "Get the cash flow report for the administration showing cash received and cash paid during the specified period.\n\nThe fields at the top level always cover the whole `period`: `opening_balance` is the balance at its start and `closing_balance` the balance at its end. With `granularity`, `periods` gives the same fields per month, quarter or year. Within a period, a section only lists the ledger accounts with cash received or paid in that period.\n\n### Required scope(s)\n `bank`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"bank"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/period"
},
{
"$ref": "#/components/parameters/granularity"
},
{
"name": "financial_account_id",
"in": "query",
"required": false,
"description": "Filter the cash flow report by a specific financial account",
"schema": {
"$ref": "#/components/schemas/identifier"
}
}
],
"responses": {
"200": {
"description": "A cash flow report",
"content": {
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/cash_flow_amounts"
},
{
"type": "object",
"properties": {
"periods": {
"type": "array",
"description": "Only present when `granularity` is given. One item for each month, quarter or year in `period`, oldest first.",
"items": {
"allOf": [
{
"type": "object",
"required": [
"period"
],
"properties": {
"period": {
"type": "string",
"description": "The period of this item, in the same format as the `period` parameter (e.g. `202501..202503`)."
}
}
},
{
"$ref": "#/components/schemas/cash_flow_amounts"
}
]
}
}
}
}
]
},
"examples": {
"ReturnsACashFlowReport": {
"summary": "Returns a cash flow report",
"value": {
"cash_received_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689207958898180",
"value": "100.0"
}
]
},
"cash_paid_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689207979869709",
"value": "-50.0"
}
]
},
"opening_balance": "0",
"closing_balance": "50.0"
}
},
"SplitsTheCashFlowReportIntoPeriodsByGranularity": {
"summary": "Splits the cash flow report into periods by granularity",
"value": {
"cash_received_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689208053270043",
"value": "130.0"
}
]
},
"cash_paid_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689208071095844",
"value": "-50.0"
}
]
},
"opening_balance": "0",
"closing_balance": "80.0",
"periods": [
{
"period": "202505..202505",
"cash_received_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689208053270043",
"value": "30.0"
}
]
},
"cash_paid_by_ledger_account": {
"ledger_accounts": []
},
"opening_balance": "0.0",
"closing_balance": "30.0"
},
{
"period": "202506..202506",
"cash_received_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689208053270043",
"value": "100.0"
}
]
},
"cash_paid_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689208071095844",
"value": "-50.0"
}
]
},
"opening_balance": "30.0",
"closing_balance": "80.0"
}
]
}
},
"ReturnsSuccessForFullPeriod": {
"summary": "Returns success for full period",
"value": {
"cash_received_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689208282908264",
"value": "100.0"
}
]
},
"cash_paid_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689208296539761",
"value": "-50.0"
}
]
},
"opening_balance": "0",
"closing_balance": "50.0"
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsErrorForInvalidPeriodFormat": {
"summary": "Returns error for invalid period format",
"value": {
"error": "Period is invalid"
}
},
"ReturnsErrorWhenPeriodExceedsLimit": {
"summary": "Returns error when period exceeds limit",
"value": {
"error": "Period cannot exceed 12 months"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to bank"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_reports_cash_flow"
}
},
"/{administration_id}/reports/creditors{format}": {
"get": {
"summary": "Creditors report",
"description": "Returns the balance of each creditor at the end of the specified period. The start of the period does not change the result.\n\nWith `granularity`, `periods` also gives the balance of each creditor at the end of every month, quarter or year in the period.\n\n### Required scope(s)\n `documents`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"documents"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/period"
},
{
"$ref": "#/components/parameters/granularity"
},
{
"$ref": "#/components/parameters/page"
},
{
"$ref": "#/components/parameters/per_page"
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"creditors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/creditors_report_item"
}
},
"periods": {
"type": "array",
"description": "Only present when `granularity` is given. One item for each month, quarter or year in `period`, oldest first.",
"items": {
"type": "object",
"required": [
"period",
"creditors"
],
"properties": {
"period": {
"type": "string",
"description": "The period of this item, in the same format as the `period` parameter (e.g. `202501..202503`)."
},
"creditors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/creditors_report_item"
}
}
}
}
}
}
},
"examples": {
"ReturnsACreditorsReport": {
"summary": "Returns a creditors report",
"value": {
"creditors": [
{
"contact_id": "502689203109233670",
"amount": "200.0"
}
]
}
},
"FiltersTheRepordOnASpecificPeriod": {
"summary": "Filters the repord on a specific period",
"value": {
"creditors": [
{
"contact_id": "502689203146982418",
"amount": "100.0"
}
]
}
},
"ReturnsACreditorsReportIncludingBookingsWithoutAContact": {
"summary": "Returns a creditors report including bookings without a contact",
"value": {
"creditors": [
{
"contact_id": "502689203180536856",
"amount": "200.0"
},
{
"contact_id": null,
"amount": "50.0"
}
]
}
},
"ReturnsACreditorsReportWithMultipleContacts": {
"summary": "Returns a creditors report with multiple contacts",
"value": {
"creditors": [
{
"contact_id": "502689203217237026",
"amount": "200.0"
},
{
"contact_id": "502689203225625640",
"amount": "100.0"
}
]
}
},
"ReturnsTheSecondPageOfTheReport": {
"summary": "Returns the second page of the report",
"value": {
"creditors": [
{
"contact_id": "502689203262325812",
"amount": "100.0"
}
]
}
},
"ReturnsTheBalanceAtTheEndOfEachPeriodByGranularity": {
"summary": "Returns the balance at the end of each period by granularity",
"value": {
"creditors": [
{
"contact_id": "502689203291685946",
"amount": "250.0"
}
],
"periods": [
{
"period": "202410..202412",
"creditors": [
{
"contact_id": "502689203291685946",
"amount": "0.0"
}
]
},
{
"period": "202501..202503",
"creditors": [
{
"contact_id": "502689203291685946",
"amount": "250.0"
}
]
}
]
}
},
"ReturnsAnEmptyReportIfNoCreditorsInThePeriodAreFound": {
"summary": "Returns an empty report if no creditors in the period are found",
"value": {
"creditors": []
}
},
"ReturnsSuccessForFullPeriod": {
"summary": "Returns success for full period",
"value": {
"creditors": [
{
"contact_id": "502689203457360988",
"amount": "200.0"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsErrorWhenPeriodExceedsLimit": {
"summary": "Returns error when period exceeds limit",
"value": {
"error": "Period cannot exceed 12 months"
}
},
"ReturnsErrorForInvalidPeriodFormat": {
"summary": "Returns error for invalid period format",
"value": {
"error": "Period is invalid"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to documents"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_reports_creditors"
}
},
"/{administration_id}/reports/creditors_aging{format}": {
"get": {
"summary": "Creditors aging report",
"description": "Returns a creditors aging report for the specified administration.\n\n### Required scope(s)\n `documents`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"documents"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/period_until"
},
{
"$ref": "#/components/parameters/page"
},
{
"$ref": "#/components/parameters/per_page"
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"creditors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/aging_report_item"
}
}
}
},
"examples": {
"ReturnsACreditorsAgingReportWithMultipleContacts": {
"summary": "Returns a creditors aging report with multiple contacts",
"value": {
"creditors": [
{
"contact_id": "502689183890933112",
"amount": "600.0",
"aging_buckets": [
{
"name": "0 - 30 dagen",
"amount": "100.0"
},
{
"name": "30 - 60 dagen",
"amount": "200.0"
},
{
"name": "Ouder",
"amount": "300.0"
},
{
"name": "Totaal",
"amount": "600.0"
}
]
},
{
"contact_id": "502689183908758918",
"amount": "150.0",
"aging_buckets": [
{
"name": "0 - 30 dagen",
"amount": "150.0"
},
{
"name": "30 - 60 dagen",
"amount": "0"
},
{
"name": "Ouder",
"amount": "0.0"
},
{
"name": "Totaal",
"amount": "150.0"
}
]
}
]
}
},
"ReturnsTheSecondPageOfTheReport": {
"summary": "Returns the second page of the report",
"value": {
"creditors": [
{
"contact_id": "502689183959090586",
"amount": "150.0",
"aging_buckets": [
{
"name": "0 - 30 dagen",
"amount": "150.0"
},
{
"name": "30 - 60 dagen",
"amount": "0"
},
{
"name": "Ouder",
"amount": "0.0"
},
{
"name": "Totaal",
"amount": "150.0"
}
]
}
]
}
},
"ReturnsACreditorsAgingReport": {
"summary": "Returns a creditors aging report",
"value": {
"creditors": [
{
"contact_id": "502689183995790752",
"amount": "600.0",
"aging_buckets": [
{
"name": "0 - 30 dagen",
"amount": "100.0"
},
{
"name": "30 - 60 dagen",
"amount": "200.0"
},
{
"name": "Ouder",
"amount": "300.0"
},
{
"name": "Totaal",
"amount": "600.0"
}
]
}
]
}
},
"ReturnsAnEmptyReportIfNoCreditorsAreFound": {
"summary": "Returns an empty report if no creditors are found",
"value": {
"creditors": []
}
},
"ExcludesContactsWithZeroBalance": {
"summary": "Excludes contacts with zero balance",
"value": {
"creditors": [
{
"contact_id": "502689184081774021",
"amount": "600.0",
"aging_buckets": [
{
"name": "0 - 30 dagen",
"amount": "100.0"
},
{
"name": "30 - 60 dagen",
"amount": "200.0"
},
{
"name": "Ouder",
"amount": "300.0"
},
{
"name": "Totaal",
"amount": "600.0"
}
]
}
]
}
},
"ReturnsACreditorsAgingReportWithAPeriod": {
"summary": "Returns a creditors aging report with a period",
"value": {
"creditors": [
{
"contact_id": "502689184149931485",
"amount": "500.0",
"aging_buckets": [
{
"name": "0 - 30 dagen",
"amount": "200.0"
},
{
"name": "30 - 60 dagen",
"amount": "0"
},
{
"name": "Ouder",
"amount": "300.0"
},
{
"name": "Totaal",
"amount": "500.0"
}
]
}
]
}
},
"RequestsWithADifferentPage": {
"summary": "Requests with a different page",
"value": {
"creditors": []
}
},
"RequestsWithAPageSizeLargerThanDefault": {
"summary": "Requests with a page size larger than default",
"value": {
"creditors": [
{
"contact_id": "502689184507495985",
"amount": "600.0",
"aging_buckets": [
{
"name": "0 - 30 dagen",
"amount": "100.0"
},
{
"name": "30 - 60 dagen",
"amount": "200.0"
},
{
"name": "Ouder",
"amount": "300.0"
},
{
"name": "Totaal",
"amount": "600.0"
}
]
}
]
}
},
"RequestsWithAPageSizeSmallerThanDefault": {
"summary": "Requests with a page size smaller than default",
"value": {
"creditors": [
{
"contact_id": "502689184594527821",
"amount": "600.0",
"aging_buckets": [
{
"name": "0 - 30 dagen",
"amount": "100.0"
},
{
"name": "30 - 60 dagen",
"amount": "200.0"
},
{
"name": "Ouder",
"amount": "300.0"
},
{
"name": "Totaal",
"amount": "600.0"
}
]
}
]
}
},
"FetchesWithoutPageAndPerPageAttributesUsingDefaultValues": {
"summary": "Fetches without page and per page attributes, using default values",
"value": {
"creditors": [
{
"contact_id": "502689184637519451",
"amount": "600.0",
"aging_buckets": [
{
"name": "0 - 30 dagen",
"amount": "100.0"
},
{
"name": "30 - 60 dagen",
"amount": "200.0"
},
{
"name": "Ouder",
"amount": "300.0"
},
{
"name": "Totaal",
"amount": "600.0"
}
]
}
]
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns400WhenPerPageIsInvalid": {
"summary": "Returns 400 when per page is invalid",
"value": {
"error": "per_page is invalid, per_page does not have a valid value"
}
},
"Returns400WhenPerPageExceedsMaximum": {
"summary": "Returns 400 when per page exceeds maximum",
"value": {
"error": "per_page does not have a valid value"
}
},
"Returns400WhenPageIsInvalid": {
"summary": "Returns 400 when page is invalid",
"value": {
"error": "page is invalid"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to documents"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_reports_creditors_aging"
}
},
"/{administration_id}/reports/debtors{format}": {
"get": {
"summary": "Debtors report",
"description": "Returns the balance of each debtor at the end of the specified period. The start of the period does not change the result.\n\nWith `granularity`, `periods` also gives the balance of each debtor at the end of every month, quarter or year in the period.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/period"
},
{
"$ref": "#/components/parameters/granularity"
},
{
"$ref": "#/components/parameters/page"
},
{
"$ref": "#/components/parameters/per_page"
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"debtors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/debtors_report_item"
}
},
"periods": {
"type": "array",
"description": "Only present when `granularity` is given. One item for each month, quarter or year in `period`, oldest first.",
"items": {
"type": "object",
"required": [
"period",
"debtors"
],
"properties": {
"period": {
"type": "string",
"description": "The period of this item, in the same format as the `period` parameter (e.g. `202501..202503`)."
},
"debtors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/debtors_report_item"
}
}
}
}
}
}
},
"examples": {
"ReturnsTheSecondPageOfTheReport": {
"summary": "Returns the second page of the report",
"value": {
"debtors": [
{
"contact_id": "502689267721438840",
"amount": "100.0"
}
]
}
},
"ReturnsTheBalanceAtTheEndOfEachPeriodByGranularity": {
"summary": "Returns the balance at the end of each period by granularity",
"value": {
"debtors": [
{
"contact_id": "502689267758139006",
"amount": "250.0"
}
],
"periods": [
{
"period": "202410..202412",
"debtors": [
{
"contact_id": "502689267758139006",
"amount": "0.0"
}
]
},
{
"period": "202501..202503",
"debtors": [
{
"contact_id": "502689267758139006",
"amount": "250.0"
}
]
}
]
}
},
"ReturnsAnEmptyReportIfNoDebtorsInThePeriodAreFound": {
"summary": "Returns an empty report if no debtors in the period are found",
"value": {
"debtors": []
}
},
"ReturnsADebtorsReportIncludingBookingsWithoutAContact": {
"summary": "Returns a debtors report including bookings without a contact",
"value": {
"debtors": [
{
"contact_id": "502689267846219406",
"amount": "200.0"
},
{
"contact_id": null,
"amount": "50.0"
}
]
}
},
"ReturnsADebtorsReportWithMultipleContacts": {
"summary": "Returns a debtors report with multiple contacts",
"value": {
"debtors": [
{
"contact_id": "502689267881871000",
"amount": "200.0"
},
{
"contact_id": "502689267899696798",
"amount": "100.0"
}
]
}
},
"ReturnsADebtorsReport": {
"summary": "Returns a debtors report",
"value": {
"debtors": [
{
"contact_id": "502689267938494116",
"amount": "200.0"
}
]
}
},
"FiltersTheRepordOnASpecificPeriod": {
"summary": "Filters the repord on a specific period",
"value": {
"debtors": [
{
"contact_id": "502689267982534320",
"amount": "100.0"
}
]
}
},
"ReturnsSuccessForFullPeriod": {
"summary": "Returns success for full period",
"value": {
"debtors": [
{
"contact_id": "502689268010845878",
"amount": "200.0"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsErrorWhenPeriodExceedsLimit": {
"summary": "Returns error when period exceeds limit",
"value": {
"error": "Period cannot exceed 12 months"
}
},
"ReturnsErrorForInvalidPeriodFormat": {
"summary": "Returns error for invalid period format",
"value": {
"error": "Period is invalid"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to sales_invoices"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_reports_debtors"
}
},
"/{administration_id}/reports/debtors_aging{format}": {
"get": {
"summary": "Debtors aging report",
"description": "Returns a debtors aging report for the specified administration.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/period_until"
},
{
"$ref": "#/components/parameters/page"
},
{
"$ref": "#/components/parameters/per_page"
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"debtors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/aging_report_item"
}
}
}
},
"examples": {
"ReturnsADebtorsAgingReportWithAPeriod": {
"summary": "Returns a debtors aging report with a period",
"value": {
"debtors": [
{
"contact_id": "502689282537817441",
"amount": "500.0",
"aging_buckets": [
{
"name": "0 - 30 dagen",
"amount": "200.0"
},
{
"name": "30 - 60 dagen",
"amount": "0"
},
{
"name": "Ouder",
"amount": "300.0"
},
{
"name": "Totaal",
"amount": "500.0"
}
]
}
]
}
},
"ReturnsADebtorsAgingReport": {
"summary": "Returns a debtors aging report",
"value": {
"debtors": [
{
"contact_id": "502689282647917935",
"amount": "600.0",
"aging_buckets": [
{
"name": "0 - 30 dagen",
"amount": "100.0"
},
{
"name": "30 - 60 dagen",
"amount": "200.0"
},
{
"name": "Ouder",
"amount": "300.0"
},
{
"name": "Totaal",
"amount": "600.0"
}
]
}
]
}
},
"ReturnsAnEmptyReportIfNoDebtorsAreFound": {
"summary": "Returns an empty report if no debtors are found",
"value": {
"debtors": []
}
},
"ReturnsADebtorsAgingReportWithMultipleContacts": {
"summary": "Returns a debtors aging report with multiple contacts",
"value": {
"debtors": [
{
"contact_id": "502689282877556130",
"amount": "600.0",
"aging_buckets": [
{
"name": "0 - 30 dagen",
"amount": "100.0"
},
{
"name": "30 - 60 dagen",
"amount": "200.0"
},
{
"name": "Ouder",
"amount": "300.0"
},
{
"name": "Totaal",
"amount": "600.0"
}
]
},
{
"contact_id": "502689282897479088",
"amount": "150.0",
"aging_buckets": [
{
"name": "0 - 30 dagen",
"amount": "150.0"
},
{
"name": "30 - 60 dagen",
"amount": "0"
},
{
"name": "Ouder",
"amount": "0.0"
},
{
"name": "Totaal",
"amount": "150.0"
}
]
}
]
}
},
"ExcludesContactsWithZeroBalance": {
"summary": "Excludes contacts with zero balance",
"value": {
"debtors": [
{
"contact_id": "502689282961442230",
"amount": "600.0",
"aging_buckets": [
{
"name": "0 - 30 dagen",
"amount": "100.0"
},
{
"name": "30 - 60 dagen",
"amount": "200.0"
},
{
"name": "Ouder",
"amount": "300.0"
},
{
"name": "Totaal",
"amount": "600.0"
}
]
}
]
}
},
"ReturnsTheSecondPageOfTheReport": {
"summary": "Returns the second page of the report",
"value": {
"debtors": [
{
"contact_id": "502689283054765532",
"amount": "150.0",
"aging_buckets": [
{
"name": "0 - 30 dagen",
"amount": "150.0"
},
{
"name": "30 - 60 dagen",
"amount": "0"
},
{
"name": "Ouder",
"amount": "0.0"
},
{
"name": "Totaal",
"amount": "150.0"
}
]
}
]
}
},
"RequestsWithADifferentPage": {
"summary": "Requests with a different page",
"value": {
"debtors": []
}
},
"FetchesWithoutPageAndPerPageAttributesUsingDefaultValues": {
"summary": "Fetches without page and per page attributes, using default values",
"value": {
"debtors": [
{
"contact_id": "502689283249800716",
"amount": "600.0",
"aging_buckets": [
{
"name": "0 - 30 dagen",
"amount": "100.0"
},
{
"name": "30 - 60 dagen",
"amount": "200.0"
},
{
"name": "Ouder",
"amount": "300.0"
},
{
"name": "Totaal",
"amount": "600.0"
}
]
}
]
}
},
"RequestsWithAPageSizeSmallerThanDefault": {
"summary": "Requests with a page size smaller than default",
"value": {
"debtors": [
{
"contact_id": "502689283295938074",
"amount": "600.0",
"aging_buckets": [
{
"name": "0 - 30 dagen",
"amount": "100.0"
},
{
"name": "30 - 60 dagen",
"amount": "200.0"
},
{
"name": "Ouder",
"amount": "300.0"
},
{
"name": "Totaal",
"amount": "600.0"
}
]
}
]
}
},
"RequestsWithAPageSizeLargerThanDefault": {
"summary": "Requests with a page size larger than default",
"value": {
"debtors": [
{
"contact_id": "502689283505653316",
"amount": "600.0",
"aging_buckets": [
{
"name": "0 - 30 dagen",
"amount": "100.0"
},
{
"name": "30 - 60 dagen",
"amount": "200.0"
},
{
"name": "Ouder",
"amount": "300.0"
},
{
"name": "Totaal",
"amount": "600.0"
}
]
}
]
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns400WhenPageIsInvalid": {
"summary": "Returns 400 when page is invalid",
"value": {
"error": "page is invalid"
}
},
"Returns400WhenPerPageIsInvalid": {
"summary": "Returns 400 when per page is invalid",
"value": {
"error": "per_page is invalid, per_page does not have a valid value"
}
},
"Returns400WhenPerPageExceedsMaximum": {
"summary": "Returns 400 when per page exceeds maximum",
"value": {
"error": "per_page does not have a valid value"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to sales_invoices"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_reports_debtors_aging"
}
},
"/{administration_id}/reports/expenses_by_contact{format}": {
"get": {
"summary": "Expenses by contact report",
"description": "Returns a expenses by contact report for the specified administration.\n\nWith `granularity`, `periods` splits the amounts per month, quarter or year. Within a period, only the contacts on this page with bookings in that period are listed.\n\n### Required scope(s)\n `documents`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"documents"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/period"
},
{
"$ref": "#/components/parameters/granularity"
},
{
"$ref": "#/components/parameters/page"
},
{
"$ref": "#/components/parameters/per_page"
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"expenses_by_contact": {
"type": "array",
"items": {
"$ref": "#/components/schemas/contact_report_item"
}
},
"periods": {
"type": "array",
"description": "Only present when `granularity` is given. One item for each month, quarter or year in `period`, oldest first.",
"items": {
"type": "object",
"required": [
"period",
"expenses_by_contact"
],
"properties": {
"period": {
"type": "string",
"description": "The period of this item, in the same format as the `period` parameter (e.g. `202501..202503`)."
},
"expenses_by_contact": {
"type": "array",
"items": {
"$ref": "#/components/schemas/contact_report_item"
}
}
}
}
}
}
},
"examples": {
"SplitsTheExpensesByContactReportIntoPeriodsByGranularity": {
"summary": "Splits the expenses by contact report into periods by granularity",
"value": {
"expenses_by_contact": [
{
"contact_id": "502689218718336041",
"amount": "30.0"
}
],
"periods": [
{
"period": "202501..202501",
"expenses_by_contact": [
{
"contact_id": "502689218718336041",
"amount": "80.0"
}
]
},
{
"period": "202502..202502",
"expenses_by_contact": [
{
"contact_id": "502689218718336041",
"amount": "-50.0"
}
]
}
]
}
},
"ReturnsAExpensesByContactReport": {
"summary": "Returns a expenses by contact report",
"value": {
"expenses_by_contact": [
{
"contact_id": "502689218786493492",
"amount": "30.0"
}
]
}
},
"ReturnsSuccessForFullPeriod": {
"summary": "Returns success for full period",
"value": {
"expenses_by_contact": [
{
"contact_id": "502689218978382933",
"amount": "30.0"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsErrorForInvalidPeriodFormat": {
"summary": "Returns error for invalid period format",
"value": {
"error": "Period is invalid"
}
},
"ReturnsErrorWhenPeriodExceedsLimit": {
"summary": "Returns error when period exceeds limit",
"value": {
"error": "Period cannot exceed 12 months"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to documents"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_reports_expenses_by_contact"
}
},
"/{administration_id}/reports/expenses_by_project{format}": {
"get": {
"summary": "Expenses by project report",
"description": "Returns a expenses by project report for the specified administration.\n\nWith `granularity`, `periods` splits the amounts per month, quarter or year. Within a period, only the projects on this page with bookings in that period are listed.\n\n### Required scope(s)\n `documents`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"documents"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/period"
},
{
"$ref": "#/components/parameters/granularity"
},
{
"$ref": "#/components/parameters/page"
},
{
"$ref": "#/components/parameters/per_page"
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"expenses_by_project": {
"type": "array",
"items": {
"$ref": "#/components/schemas/project_report_item"
}
},
"periods": {
"type": "array",
"description": "Only present when `granularity` is given. One item for each month, quarter or year in `period`, oldest first.",
"items": {
"type": "object",
"required": [
"period",
"expenses_by_project"
],
"properties": {
"period": {
"type": "string",
"description": "The period of this item, in the same format as the `period` parameter (e.g. `202501..202503`)."
},
"expenses_by_project": {
"type": "array",
"items": {
"$ref": "#/components/schemas/project_report_item"
}
}
}
}
}
}
},
"examples": {
"ReturnsAExpensesByProjectReport": {
"summary": "Returns a expenses by project report",
"value": {
"expenses_by_project": [
{
"project_id": null,
"amount": "100.0"
},
{
"project_id": "502689241837340425",
"amount": "30.0"
}
]
}
},
"SplitsTheExpensesByProjectReportIntoPeriodsByGranularity": {
"summary": "Splits the expenses by project report into periods by granularity",
"value": {
"expenses_by_project": [
{
"project_id": null,
"amount": "100.0"
},
{
"project_id": "502689241885574936",
"amount": "30.0"
}
],
"periods": [
{
"period": "202501..202501",
"expenses_by_project": [
{
"project_id": "502689241885574936",
"amount": "80.0"
}
]
},
{
"period": "202502..202502",
"expenses_by_project": [
{
"project_id": null,
"amount": "100.0"
},
{
"project_id": "502689241885574936",
"amount": "-50.0"
}
]
}
]
}
},
"ReturnsSuccessForFullPeriod": {
"summary": "Returns success for full period",
"value": {
"expenses_by_project": [
{
"project_id": null,
"amount": "100.0"
},
{
"project_id": "502689242007209797",
"amount": "30.0"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsErrorForInvalidPeriodFormat": {
"summary": "Returns error for invalid period format",
"value": {
"error": "Period is invalid"
}
},
"ReturnsErrorWhenPeriodExceedsLimit": {
"summary": "Returns error when period exceeds limit",
"value": {
"error": "Period cannot exceed 12 months"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to documents"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_reports_expenses_by_project"
}
},
"/{administration_id}/reports/export/auditfile{format}": {
"post": {
"summary": "Export auditfile",
"description": "Queue the export of an auditfile (XAF XML format) for the specified year.\nThe auditfile will be added to your [downloads](../downloads) when ready.\n\nThe administration must not have any ledger accounts with missing or duplicate account IDs,\nand the specified year must contain journal entries.\n\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices` and `settings`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
}
],
"requestBody": {
"required": true,
"content": {
"application/*": {
"schema": {
"type": "object",
"required": [
"year"
],
"properties": {
"year": {
"type": "string",
"description": "The year for which to generate the auditfile",
"example": "2024"
},
"version": {
"type": "string",
"description": "The XAF version of the auditfile",
"enum": [
"3.2",
"4.0"
],
"default": "3.2"
}
}
},
"examples": {
"AcceptsVersion40Parameter": {
"summary": "Accepts version 4.0 parameter",
"value": {
"year": "2024",
"version": "4.0"
}
},
"Answers204WhenTheSameExportIsAlreadyBeingPrepared": {
"summary": "Answers 204 when the same export is already being prepared",
"value": {
"year": "2024"
}
},
"PreparesAnAuditfileExportAndReturns204": {
"summary": "Prepares an auditfile export and returns 204",
"value": {
"year": "2024"
}
},
"AcceptsVersion32Parameter": {
"summary": "Accepts version 3.2 parameter",
"value": {
"year": "2024",
"version": "3.2"
}
},
"UsesDefaultVersion32WhenVersionIsNotSpecified": {
"summary": "Uses default version 3.2 when version is not specified",
"value": {
"year": "2024"
}
}
}
}
}
},
"responses": {
"204": {
"$ref": "#/components/responses/204_no_content"
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns400WhenPeriodContainsNoJournalEntries": {
"summary": "Returns 400 when period contains no journal entries",
"value": {
"error": "Period contains no journal entries",
"symbolic": {
"period": "contains_no_journal_entries"
}
}
},
"Returns400ForInvalidVersion": {
"summary": "Returns 400 for invalid version",
"value": {
"error": "version does not have a valid value"
}
},
"Returns400WhenLedgerAccountsHaveDuplicateAccountIds": {
"summary": "Returns 400 when ledger accounts have duplicate account ids",
"value": {
"error": "Missing or duplicate account IDs",
"symbolic": {
"base": "missing_or_duplicate_account_ids"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to contacts, documents, estimates, sales_invoices, bank and settings"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "post_administration_id_reports_export_auditfile"
}
},
"/{administration_id}/reports/export/brugstaat{format}": {
"post": {
"summary": "Export brugstaat",
"description": "Queue the export of a brugstaat XML file for the specified year. The file will be added to your [downloads](../downloads) when ready.\n\nAll ledger accounts must have valid RGS taxonomy codes assigned.\n\n\n### Required scope(s)\n All of: `bank`, `documents` and `sales_invoices`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
}
],
"requestBody": {
"required": true,
"content": {
"application/*": {
"schema": {
"type": "object",
"required": [
"year"
],
"properties": {
"year": {
"type": "string",
"description": "The year for which to generate the brugstaat",
"example": "2024"
}
}
},
"examples": {
"GeneratesABrugstaatAndReturns204": {
"summary": "Generates a brugstaat and returns 204",
"value": {
"year": "2024"
}
}
}
}
}
},
"responses": {
"204": {
"$ref": "#/components/responses/204_no_content"
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns400WhenLedgerAccountsHaveInvalidTaxonomyCodes": {
"summary": "Returns 400 when ledger accounts have invalid taxonomy codes",
"value": {
"error": "Not all categories are linked to a RGS code. This is mandatory before downloading a RGS Brugstaat"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to documents, sales_invoices and bank"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "post_administration_id_reports_export_brugstaat"
}
},
"/{administration_id}/reports/export/ledger_accounts{format}": {
"post": {
"summary": "Export ledger accounts",
"description": "Queue the export of ledger accounts (grootboekkaarten) to an Excel file for the specified year. This file contains\nall bookings and can be used for manual audits. The file will be added to your [downloads](../downloads) when ready.\n\nThe specified year must contain journal entries.\n\n\n### Required scope(s)\n `documents` and `sales_invoices`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"documents",
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
}
],
"requestBody": {
"required": true,
"content": {
"application/*": {
"schema": {
"type": "object",
"required": [
"year"
],
"properties": {
"year": {
"type": "string",
"description": "The year for which to generate the ledger accounts",
"example": "2024"
}
}
},
"examples": {
"Answers204WhenTheSameExportIsAlreadyBeingPrepared": {
"summary": "Answers 204 when the same export is already being prepared",
"value": {
"year": "2024"
}
},
"PreparesALedgerAccountsExportAndReturns204": {
"summary": "Prepares a ledger accounts export and returns 204",
"value": {
"year": "2024"
}
}
}
}
}
},
"responses": {
"204": {
"$ref": "#/components/responses/204_no_content"
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns400WhenPeriodContainsNoJournalEntries": {
"summary": "Returns 400 when period contains no journal entries",
"value": {
"error": "Period contains no journal entries",
"symbolic": {
"period": "contains_no_journal_entries"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to sales_invoices and documents"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "post_administration_id_reports_export_ledger_accounts"
}
},
"/{administration_id}/reports/general_ledger{format}": {
"get": {
"summary": "General ledger report",
"description": "Get the general ledger report for the administration showing all ledger accounts with their balances and movements during the specified period.\n\nWith `granularity`, `periods` gives the same report for every month, quarter or year in the period: the debit and credit sums of that period, and the balance at its start and end. Within a period, only the ledger accounts with a balance or bookings are listed. Profit and loss accounts start at zero in every period, so their `final_balance` in a period is the result of that period alone; balance sheet accounts carry their balance over. The debit and credit sums leave out the bookings of a fiscal year ending, but the start balance of the next period includes them, so a period does not always start at the `final_balance` of the period before it.\n\n### Required scope(s)\n `bank`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"bank"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/period"
},
{
"$ref": "#/components/parameters/granularity"
}
],
"responses": {
"200": {
"description": "A general ledger report",
"content": {
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/general_ledger_amounts"
},
{
"type": "object",
"properties": {
"periods": {
"type": "array",
"description": "Only present when `granularity` is given. One item for each month, quarter or year in `period`, oldest first.",
"items": {
"allOf": [
{
"type": "object",
"required": [
"period"
],
"properties": {
"period": {
"type": "string",
"description": "The period of this item, in the same format as the `period` parameter (e.g. `202501..202503`)."
}
}
},
{
"$ref": "#/components/schemas/general_ledger_amounts"
}
]
}
}
}
}
]
},
"examples": {
"CutsTheFirstQuarterOffAtTheStartOfAPeriodThatDoesNotBeginOnAQuarter": {
"summary": "Cuts the first quarter off at the start of a period that does not begin on a quarter",
"value": {
"debit_sums": {
"ledger_accounts": [
{
"ledger_account_id": "502689313872414124",
"value": "150.0"
}
]
},
"credit_sums": {
"ledger_accounts": []
},
"start_balance": {
"ledger_accounts": [
{
"ledger_account_id": "502689313872414124",
"value": "300.0"
}
]
},
"final_balance": {
"ledger_accounts": [
{
"ledger_account_id": "502689313872414124",
"value": "450.0"
}
]
},
"periods": [
{
"period": "202502..202503",
"debit_sums": {
"ledger_accounts": [
{
"ledger_account_id": "502689313872414124",
"value": "100.0"
}
]
},
"credit_sums": {
"ledger_accounts": []
},
"start_balance": {
"ledger_accounts": [
{
"ledger_account_id": "502689313872414124",
"value": "300.0"
}
]
},
"final_balance": {
"ledger_accounts": [
{
"ledger_account_id": "502689313872414124",
"value": "400.0"
}
]
}
},
{
"period": "202504..202504",
"debit_sums": {
"ledger_accounts": [
{
"ledger_account_id": "502689313872414124",
"value": "50.0"
}
]
},
"credit_sums": {
"ledger_accounts": []
},
"start_balance": {
"ledger_accounts": [
{
"ledger_account_id": "502689313872414124",
"value": "400.0"
}
]
},
"final_balance": {
"ledger_accounts": [
{
"ledger_account_id": "502689313872414124",
"value": "450.0"
}
]
}
}
]
}
},
"ReturnsGeneralLedgerData": {
"summary": "Returns general ledger data",
"value": {
"debit_sums": {
"ledger_accounts": [
{
"ledger_account_id": "502689313956300225",
"value": "1000.0"
}
]
},
"credit_sums": {
"ledger_accounts": [
{
"ledger_account_id": "502689313956300225",
"value": "500.0"
}
]
},
"start_balance": {
"ledger_accounts": [
{
"ledger_account_id": "502689313956300225",
"value": "300.0"
}
]
},
"final_balance": {
"ledger_accounts": [
{
"ledger_account_id": "502689313956300225",
"value": "800.0"
}
]
}
}
},
"SplitsTheGeneralLedgerIntoPeriodsByGranularity": {
"summary": "Splits the general ledger into periods by granularity",
"value": {
"debit_sums": {
"ledger_accounts": [
{
"ledger_account_id": "502689313995097550",
"value": "1200.0"
}
]
},
"credit_sums": {
"ledger_accounts": [
{
"ledger_account_id": "502689313995097550",
"value": "500.0"
}
]
},
"start_balance": {
"ledger_accounts": [
{
"ledger_account_id": "502689313995097550",
"value": "300.0"
}
]
},
"final_balance": {
"ledger_accounts": [
{
"ledger_account_id": "502689313995097550",
"value": "1000.0"
}
]
},
"periods": [
{
"period": "202505..202505",
"debit_sums": {
"ledger_accounts": [
{
"ledger_account_id": "502689313995097550",
"value": "200.0"
}
]
},
"credit_sums": {
"ledger_accounts": []
},
"start_balance": {
"ledger_accounts": [
{
"ledger_account_id": "502689313995097550",
"value": "300.0"
}
]
},
"final_balance": {
"ledger_accounts": [
{
"ledger_account_id": "502689313995097550",
"value": "500.0"
}
]
}
},
{
"period": "202506..202506",
"debit_sums": {
"ledger_accounts": [
{
"ledger_account_id": "502689313995097550",
"value": "1000.0"
}
]
},
"credit_sums": {
"ledger_accounts": [
{
"ledger_account_id": "502689313995097550",
"value": "500.0"
}
]
},
"start_balance": {
"ledger_accounts": [
{
"ledger_account_id": "502689313995097550",
"value": "500.0"
}
]
},
"final_balance": {
"ledger_accounts": [
{
"ledger_account_id": "502689313995097550",
"value": "1000.0"
}
]
}
}
]
}
},
"ReturnsSuccessForFullPeriod": {
"summary": "Returns success for full period",
"value": {
"debit_sums": {
"ledger_accounts": [
{
"ledger_account_id": "502689314094712300",
"value": "1000.0"
}
]
},
"credit_sums": {
"ledger_accounts": [
{
"ledger_account_id": "502689314094712300",
"value": "500.0"
}
]
},
"start_balance": {
"ledger_accounts": [
{
"ledger_account_id": "502689314094712300",
"value": "300.0"
}
]
},
"final_balance": {
"ledger_accounts": [
{
"ledger_account_id": "502689314094712300",
"value": "800.0"
}
]
}
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsErrorForInvalidPeriodFormat": {
"summary": "Returns error for invalid period format",
"value": {
"error": "Period is invalid"
}
},
"ReturnsErrorWhenPeriodExceedsLimit": {
"summary": "Returns error when period exceeds limit",
"value": {
"error": "Period cannot exceed 12 months"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to bank"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_reports_general_ledger"
}
},
"/{administration_id}/reports/journal_entries{format}": {
"get": {
"summary": "Journal entries report",
"description": "Get the journal entries report showing all bookings within the specified period.\nThis endpoint allows filtering by various criteria including project, contact, ledger account, and account types.\n\n**Requirements:**\n- At least one of project_id, contact_id, or ledger_account_id is required\n- When account_type is provided, either contact_id or project_id must also be specified\n\n**Example Use Cases:**\n- To get a report for revenue by project detail, use account_type parameter with value \"revenue\" and the required project_id\n- To get a report for revenue by contact detail, use account_type parameter with value \"revenue\" and the required contact_id\n- To get a report for expenses by project detail, make one request for account_type \"expenses\" and one for \"direct_costs\", both with the required project_id\n- To get a report for expenses by contact detail, make one request for account_type \"expenses\" and one for \"direct_costs\", both with the required contact_id\n\n\n### Required scope(s)\n `documents` and `sales_invoices`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"documents",
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/period"
},
{
"$ref": "#/components/parameters/page"
},
{
"$ref": "#/components/parameters/per_page"
},
{
"name": "project_id",
"in": "query",
"required": false,
"description": "Filter by project ID, use \"null\" to filter entries without project",
"schema": {
"type": "string"
}
},
{
"name": "contact_id",
"in": "query",
"required": false,
"description": "Filter by contact ID, use \"null\" to filter entries without contact",
"schema": {
"type": "string"
},
"examples": {
"ReturnsA200IfTheAccountTypesArePresentAndAContactIdIsPresent": {
"summary": "Returns a 200 if the account types are present and a contact id is present",
"value": "123"
}
}
},
{
"name": "ledger_account_id",
"in": "query",
"required": false,
"description": "Filter by ledger account ID",
"schema": {
"$ref": "#/components/schemas/identifier"
},
"examples": {
"ReturnsAJournalEntriesReportWithSpecificPeriod": {
"summary": "Returns a journal entries report with specific period",
"value": "123"
}
}
},
{
"name": "account_type",
"in": "query",
"required": false,
"description": "Filter by ledger account type\n",
"schema": {
"type": "string",
"enum": [
"non_current_assets",
"current_assets",
"equity",
"non_current_liabilities",
"current_liabilities",
"revenue",
"direct_costs",
"expenses",
"other_income_expenses",
"other",
"temporary",
"provisions"
]
},
"examples": {
"ReturnsA200IfTheAccountTypesArePresentAndAContactIdIsPresent": {
"summary": "Returns a 200 if the account types are present and a contact id is present",
"value": "revenue"
}
}
}
],
"responses": {
"200": {
"description": "A paginated list of journal entries (bookings)",
"headers": {
"X-Total-Count": {
"$ref": "#/components/headers/x-total-count"
},
"Link": {
"$ref": "#/components/headers/link"
}
},
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the journal entry"
},
"date": {
"type": "string",
"format": "date",
"description": "Date of the journal entry"
},
"document_type": {
"type": "string",
"description": "Type of document this entry relates to"
},
"document_id": {
"$ref": "#/components/schemas/identifier",
"description": "ID of the related document"
},
"ledger_account_id": {
"$ref": "#/components/schemas/identifier",
"description": "ID of the ledger account"
},
"project_id": {
"$ref": "#/components/schemas/identifier_nullable",
"description": "ID of the related project, if any"
},
"contact_id": {
"$ref": "#/components/schemas/identifier_nullable",
"description": "ID of the related contact, if any"
},
"tax_rate_id": {
"$ref": "#/components/schemas/identifier_nullable",
"description": "ID of the applied tax rate, if any"
},
"financial_account_id": {
"$ref": "#/components/schemas/identifier_nullable",
"description": "ID of the financial account, if any"
},
"amount": {
"type": "string",
"description": "Amount of the journal entry in the administration's currency"
},
"description": {
"type": "string",
"description": "Description of the journal entry"
}
}
}
},
"examples": {
"ReturnsAJournalEntriesReportWithSpecificPeriod": {
"summary": "Returns a journal entries report with specific period",
"value": [
{
"id": "je_6",
"date": "2025-06-14",
"document_type": "Document",
"document_id": "502689201557341750",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "500.0",
"description": "Large customer payment"
},
{
"id": "je_5",
"date": "2025-06-12",
"document_type": "Document",
"document_id": "502689201552098866",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "-75.0",
"description": "Credit note"
},
{
"id": "je_3",
"date": "2025-06-10",
"document_type": "Document",
"document_id": "502689201543710250",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "250.0",
"description": "Product sales"
},
{
"id": "je_4",
"date": "2025-06-08",
"document_type": "Document",
"document_id": "502689201547904558",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "-25.0",
"description": "Sales return"
},
{
"id": "je_2",
"date": "2025-06-05",
"document_type": "Document",
"document_id": "502689201538467366",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "50.0",
"description": "Service income"
},
{
"id": "je_7",
"date": "2025-06-03",
"document_type": "Document",
"document_id": "502689201560487482",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "15.5",
"description": "Small miscellaneous income"
},
{
"id": "je_1",
"date": "2025-06-01",
"document_type": "Document",
"document_id": "502689201532175906",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "100.0",
"description": "Revenue from sales"
}
]
},
"ReturnsA200IfTheAccountTypesArePresentAndAContactIdIsPresent": {
"summary": "Returns a 200 if the account types are present and a contact id is present",
"value": []
},
"ReturnsAJournalEntriesReportWithPagination": {
"summary": "Returns a journal entries report with pagination",
"value": [
{
"id": "je_6",
"date": "2025-06-14",
"document_type": "Document",
"document_id": "502689201810048694",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "500.0",
"description": "Large customer payment"
},
{
"id": "je_5",
"date": "2025-06-12",
"document_type": "Document",
"document_id": "502689201805854386",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "-75.0",
"description": "Credit note"
},
{
"id": "je_3",
"date": "2025-06-10",
"document_type": "Document",
"document_id": "502689201798514346",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "250.0",
"description": "Product sales"
},
{
"id": "je_4",
"date": "2025-06-08",
"document_type": "Document",
"document_id": "502689201802708654",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "-25.0",
"description": "Sales return"
},
{
"id": "je_2",
"date": "2025-06-05",
"document_type": "Document",
"document_id": "502689201793271462",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "50.0",
"description": "Service income"
}
]
},
"ReturnsSuccessForFullPeriod": {
"summary": "Returns success for full period",
"value": [
{
"id": "je_6",
"date": "2025-06-14",
"document_type": "Document",
"document_id": "502689202207459126",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "500.0",
"description": "Large customer payment"
},
{
"id": "je_5",
"date": "2025-06-12",
"document_type": "Document",
"document_id": "502689202200119090",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "-75.0",
"description": "Credit note"
},
{
"id": "je_3",
"date": "2025-06-10",
"document_type": "Document",
"document_id": "502689202186487594",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "250.0",
"description": "Product sales"
},
{
"id": "je_4",
"date": "2025-06-08",
"document_type": "Document",
"document_id": "502689202192779054",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "-25.0",
"description": "Sales return"
},
{
"id": "je_2",
"date": "2025-06-05",
"document_type": "Document",
"document_id": "502689202181244710",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "50.0",
"description": "Service income"
},
{
"id": "je_7",
"date": "2025-06-03",
"document_type": "Document",
"document_id": "502689202212702010",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "15.5",
"description": "Small miscellaneous income"
},
{
"id": "je_1",
"date": "2025-06-01",
"document_type": "Document",
"document_id": "502689202173904674",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "100.0",
"description": "Revenue from sales"
},
{
"id": "je_8",
"date": "2025-05-25",
"document_type": "Document",
"document_id": "502689202220042046",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "300.0",
"description": "Previous month revenue"
}
]
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsA400IfTheAccountTypeIsPresentButNoContactIdOrProjectIdIsPresent": {
"summary": "Returns a 400 if the account type is present but no contact id or project id is present",
"value": {
"error": "when account_type is present, a contact_id or project_id is required"
}
},
"ReturnsA400IfNoProjectContactOrLedgerAccountIsPresent": {
"summary": "Returns a 400 if no project, contact or ledger account is present",
"value": {
"error": "at least a contact_id, project_id or ledger_account_id is required"
}
},
"ReturnsErrorForInvalidPeriodFormat": {
"summary": "Returns error for invalid period format",
"value": {
"error": "Period is invalid"
}
},
"ReturnsErrorWhenPeriodExceedsLimit": {
"summary": "Returns error when period exceeds limit",
"value": {
"error": "Period cannot exceed 12 months"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to sales_invoices and documents"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_reports_journal_entries"
}
},
"/{administration_id}/reports/ledger_accounts/{ledger_account_id}{format}": {
"get": {
"summary": "Ledger account report",
"description": "This endpoint is deprecated and should no longer be used. It has been replaced by the `Journal entries report`.\n\n### Required scope(s)\n `documents` and `sales_invoices`",
"deprecated": true,
"x-sunset": "2025-12-31",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"documents",
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"name": "ledger_account_id",
"in": "path",
"required": true,
"description": "The ID of the ledger account to get the report for",
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"$ref": "#/components/parameters/period"
},
{
"$ref": "#/components/parameters/page"
},
{
"$ref": "#/components/parameters/per_page"
}
],
"responses": {
"200": {
"description": "A paginated list of ledger account bookings (journal entries)",
"headers": {
"X-Total-Count": {
"$ref": "#/components/headers/x-total-count"
},
"Link": {
"$ref": "#/components/headers/link"
}
},
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"date": {
"type": "string",
"format": "date"
},
"document_type": {
"type": "string"
},
"document_id": {
"$ref": "#/components/schemas/identifier"
},
"ledger_account_id": {
"$ref": "#/components/schemas/identifier"
},
"project_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"contact_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"tax_rate_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"financial_account_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"amount": {
"type": "string"
},
"description": {
"type": "string"
}
}
}
},
"examples": {
"ReturnsALedgerAccountReportWithPagination": {
"summary": "Returns a ledger account report with pagination",
"value": [
{
"id": "je_6",
"date": "2025-06-14",
"document_type": "Document",
"document_id": "502689293208126928",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "500.0",
"description": "Large customer payment"
},
{
"id": "je_5",
"date": "2025-06-12",
"document_type": "Document",
"document_id": "502689293203932620",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "-75.0",
"description": "Credit note"
},
{
"id": "je_3",
"date": "2025-06-10",
"document_type": "Document",
"document_id": "502689293195544004",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "250.0",
"description": "Product sales"
},
{
"id": "je_4",
"date": "2025-06-08",
"document_type": "Document",
"document_id": "502689293199738312",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "-25.0",
"description": "Sales return"
},
{
"id": "je_2",
"date": "2025-06-05",
"document_type": "Document",
"document_id": "502689293191349696",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "50.0",
"description": "Service income"
}
]
},
"ReturnsALedgerAccountReport": {
"summary": "Returns a ledger account report",
"value": [
{
"id": "je_6",
"date": "2025-06-14",
"document_type": "Document",
"document_id": "502689293261604336",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "500.0",
"description": "Large customer payment"
},
{
"id": "je_5",
"date": "2025-06-12",
"document_type": "Document",
"document_id": "502689293258458604",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "-75.0",
"description": "Credit note"
},
{
"id": "je_3",
"date": "2025-06-10",
"document_type": "Document",
"document_id": "502689293251118564",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "250.0",
"description": "Product sales"
},
{
"id": "je_4",
"date": "2025-06-08",
"document_type": "Document",
"document_id": "502689293255312872",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "-25.0",
"description": "Sales return"
},
{
"id": "je_2",
"date": "2025-06-05",
"document_type": "Document",
"document_id": "502689293247972832",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "50.0",
"description": "Service income"
},
{
"id": "je_7",
"date": "2025-06-03",
"document_type": "Document",
"document_id": "502689293265798644",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "15.5",
"description": "Small miscellaneous income"
},
{
"id": "je_1",
"date": "2025-06-01",
"document_type": "Document",
"document_id": "502689293243778524",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "100.0",
"description": "Revenue from sales"
}
]
},
"ReturnsSuccessForFullPeriod": {
"summary": "Returns success for full period",
"value": [
{
"id": "je_6",
"date": "2025-06-14",
"document_type": "Document",
"document_id": "502689293364364848",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "500.0",
"description": "Large customer payment"
},
{
"id": "je_5",
"date": "2025-06-12",
"document_type": "Document",
"document_id": "502689293360170540",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "-75.0",
"description": "Credit note"
},
{
"id": "je_3",
"date": "2025-06-10",
"document_type": "Document",
"document_id": "502689293351781924",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "250.0",
"description": "Product sales"
},
{
"id": "je_4",
"date": "2025-06-08",
"document_type": "Document",
"document_id": "502689293355976232",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "-25.0",
"description": "Sales return"
},
{
"id": "je_2",
"date": "2025-06-05",
"document_type": "Document",
"document_id": "502689293347587616",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "50.0",
"description": "Service income"
},
{
"id": "je_7",
"date": "2025-06-03",
"document_type": "Document",
"document_id": "502689293367510580",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "15.5",
"description": "Small miscellaneous income"
},
{
"id": "je_1",
"date": "2025-06-01",
"document_type": "Document",
"document_id": "502689293343393308",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "100.0",
"description": "Revenue from sales"
},
{
"id": "je_8",
"date": "2025-05-25",
"document_type": "Document",
"document_id": "502689293370656312",
"ledger_account_id": "123",
"project_id": null,
"contact_id": null,
"tax_rate_id": null,
"financial_account_id": null,
"amount": "300.0",
"description": "Previous month revenue"
}
]
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsErrorForInvalidPeriodFormat": {
"summary": "Returns error for invalid period format",
"value": {
"error": "Period is invalid"
}
},
"ReturnsErrorWhenPeriodExceedsLimit": {
"summary": "Returns error when period exceeds limit",
"value": {
"error": "Period cannot exceed 12 months"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to sales_invoices and documents"
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsA404IfTheLedgerAccountDoesNotExist": {
"summary": "Returns a 404 if the ledger account does not exist",
"value": {
"error": "Record not found for model name: Category"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_reports_ledger_accounts_ledger_account_id"
}
},
"/{administration_id}/reports/profit_loss{format}": {
"get": {
"summary": "Profit loss report",
"description": "Get the profit loss report for the administration.\n\nEvery `*_by_ledger_account` section contains one item per ledger account with bookings in the period. Nested accounts are flat here: a parent's amount does not include its child accounts, which are listed as items of their own. Adding up all items in a section therefore gives that section's total without double counting.\n\nThe sections are not all signed the same way:\n\n| **Section** | **Sign** |\n| - | - |\n| revenue_by_ledger_account | credit minus debit, so revenue is positive |\n| direct_costs_by_ledger_account | debit minus credit, so costs are positive |\n| expenses_by_ledger_account | debit minus credit, so costs are positive |\n| other_income_expenses_by_ledger_account | credit minus debit, so income is positive and expenses are negative |\n\nSections can therefore not be added together as they are, and adding the three cost sections does not produce `total_expenses`. The description of each total says how that total is composed.\n\nThe fields at the top level always cover the whole `period`. With `granularity`, `periods` splits the same fields per month, quarter or year. Within a period, a section only lists the ledger accounts with bookings in that period.\n\n### Required scope(s)\n `documents` and `sales_invoices`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"documents",
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/period"
},
{
"$ref": "#/components/parameters/granularity"
},
{
"name": "project_id",
"in": "query",
"required": false,
"schema": {
"$ref": "#/components/schemas/identifier"
}
}
],
"responses": {
"200": {
"description": "A profit loss report",
"content": {
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/profit_loss_amounts"
},
{
"type": "object",
"properties": {
"periods": {
"type": "array",
"description": "Only present when `granularity` is given. One item for each month, quarter or year in `period`, oldest first.",
"items": {
"allOf": [
{
"type": "object",
"required": [
"period"
],
"properties": {
"period": {
"type": "string",
"description": "The period of this item, in the same format as the `period` parameter (e.g. `202501..202503`)."
}
}
},
{
"$ref": "#/components/schemas/profit_loss_amounts"
}
]
}
}
}
}
]
},
"examples": {
"SplitsTheProfitLossReportIntoPeriodsByGranularity": {
"summary": "Splits the profit loss report into periods by granularity",
"value": {
"revenue_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689242549323694",
"value": "150.0"
}
]
},
"direct_costs_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689242561906611",
"value": "20.0"
}
]
},
"expenses_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689242574489528",
"value": "15.0"
}
]
},
"other_income_expenses_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689242588121021",
"value": "1.0"
}
]
},
"gross_profit": "130.0",
"operating_profit": "115.0",
"net_profit": "116.0",
"total_expenses": "34.0",
"total_revenue": "150.0",
"periods": [
{
"period": "202505..202505",
"revenue_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689242549323694",
"value": "50.0"
}
]
},
"direct_costs_by_ledger_account": {
"ledger_accounts": []
},
"expenses_by_ledger_account": {
"ledger_accounts": []
},
"other_income_expenses_by_ledger_account": {
"ledger_accounts": []
},
"gross_profit": "50.0",
"operating_profit": "50.0",
"net_profit": "50.0",
"total_expenses": "0.0",
"total_revenue": "50.0"
},
{
"period": "202506..202506",
"revenue_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689242549323694",
"value": "100.0"
}
]
},
"direct_costs_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689242561906611",
"value": "20.0"
}
]
},
"expenses_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689242574489528",
"value": "15.0"
}
]
},
"other_income_expenses_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689242588121021",
"value": "1.0"
}
]
},
"gross_profit": "80.0",
"operating_profit": "65.0",
"net_profit": "66.0",
"total_expenses": "34.0",
"total_revenue": "100.0"
}
]
}
},
"ReturnsAProfitLossReport": {
"summary": "Returns a profit loss report",
"value": {
"revenue_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689242657327046",
"value": "100.0"
}
]
},
"direct_costs_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689242668861387",
"value": "20.0"
}
]
},
"expenses_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689242679347152",
"value": "15.0"
}
]
},
"other_income_expenses_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689242690881493",
"value": "1.0"
}
]
},
"gross_profit": "80.0",
"operating_profit": "65.0",
"net_profit": "66.0",
"total_expenses": "34.0",
"total_revenue": "100.0"
}
},
"ReturnsSuccessForFullPeriod": {
"summary": "Returns success for full period",
"value": {
"revenue_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689242870187030",
"value": "100.0"
}
]
},
"direct_costs_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689242877527067",
"value": "20.0"
}
]
},
"expenses_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689242884867104",
"value": "15.0"
}
]
},
"other_income_expenses_by_ledger_account": {
"ledger_accounts": [
{
"ledger_account_id": "502689242892207141",
"value": "1.0"
}
]
},
"gross_profit": "80.0",
"operating_profit": "65.0",
"net_profit": "66.0",
"total_expenses": "34.0",
"total_revenue": "100.0"
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsErrorForInvalidPeriodFormat": {
"summary": "Returns error for invalid period format",
"value": {
"error": "Period is invalid"
}
},
"ReturnsErrorWhenPeriodExceedsLimit": {
"summary": "Returns error when period exceeds limit",
"value": {
"error": "Period cannot exceed 12 months"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to sales_invoices and documents"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_reports_profit_loss"
}
},
"/{administration_id}/reports/revenue_by_contact{format}": {
"get": {
"summary": "Revenue by contact report",
"description": "Returns a revenue by contact report for the specified administration.\n\nWith `granularity`, `periods` splits the amounts per month, quarter or year. Within a period, only the contacts on this page with bookings in that period are listed.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/period"
},
{
"$ref": "#/components/parameters/granularity"
},
{
"$ref": "#/components/parameters/page"
},
{
"$ref": "#/components/parameters/per_page"
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"revenue_by_contact": {
"type": "array",
"items": {
"$ref": "#/components/schemas/contact_report_item"
}
},
"periods": {
"type": "array",
"description": "Only present when `granularity` is given. One item for each month, quarter or year in `period`, oldest first.",
"items": {
"type": "object",
"required": [
"period",
"revenue_by_contact"
],
"properties": {
"period": {
"type": "string",
"description": "The period of this item, in the same format as the `period` parameter (e.g. `202501..202503`)."
},
"revenue_by_contact": {
"type": "array",
"items": {
"$ref": "#/components/schemas/contact_report_item"
}
}
}
}
}
}
},
"examples": {
"ReturnsARevenueByContactReport": {
"summary": "Returns a revenue by contact report",
"value": {
"revenue_by_contact": [
{
"contact_id": "502689118887610235",
"amount": "30.0"
}
]
}
},
"SplitsTheRevenueByContactReportIntoPeriodsByGranularity": {
"summary": "Splits the revenue by contact report into periods by granularity",
"value": {
"revenue_by_contact": [
{
"contact_id": "502689119192745862",
"amount": "30.0"
}
],
"periods": [
{
"period": "202501..202501",
"revenue_by_contact": [
{
"contact_id": "502689119192745862",
"amount": "-50.0"
}
]
},
{
"period": "202502..202502",
"revenue_by_contact": [
{
"contact_id": "502689119192745862",
"amount": "80.0"
}
]
}
]
}
},
"ReturnsSuccessForFullPeriod": {
"summary": "Returns success for full period",
"value": {
"revenue_by_contact": [
{
"contact_id": "502689119358420892",
"amount": "30.0"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsErrorWhenPeriodExceedsLimit": {
"summary": "Returns error when period exceeds limit",
"value": {
"error": "Period cannot exceed 12 months"
}
},
"ReturnsErrorForInvalidPeriodFormat": {
"summary": "Returns error for invalid period format",
"value": {
"error": "Period is invalid"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to sales_invoices"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_reports_revenue_by_contact"
}
},
"/{administration_id}/reports/revenue_by_project{format}": {
"get": {
"summary": "Revenue by project report",
"description": "Returns a revenue by project report for the specified administration.\n\nWith `granularity`, `periods` splits the amounts per month, quarter or year. Within a period, only the projects on this page with bookings in that period are listed.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/period"
},
{
"$ref": "#/components/parameters/granularity"
},
{
"$ref": "#/components/parameters/page"
},
{
"$ref": "#/components/parameters/per_page"
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"revenue_by_project": {
"type": "array",
"items": {
"$ref": "#/components/schemas/project_report_item"
}
},
"periods": {
"type": "array",
"description": "Only present when `granularity` is given. One item for each month, quarter or year in `period`, oldest first.",
"items": {
"type": "object",
"required": [
"period",
"revenue_by_project"
],
"properties": {
"period": {
"type": "string",
"description": "The period of this item, in the same format as the `period` parameter (e.g. `202501..202503`)."
},
"revenue_by_project": {
"type": "array",
"items": {
"$ref": "#/components/schemas/project_report_item"
}
}
}
}
}
}
},
"examples": {
"SplitsTheRevenueByProjectReportIntoPeriodsByGranularity": {
"summary": "Splits the revenue by project report into periods by granularity",
"value": {
"revenue_by_project": [
{
"project_id": null,
"amount": "1000.0"
},
{
"project_id": "502689289290647218",
"amount": "7000.0"
}
],
"periods": [
{
"period": "202501..202501",
"revenue_by_project": [
{
"project_id": "502689289290647218",
"amount": "12000.0"
}
]
},
{
"period": "202502..202502",
"revenue_by_project": [
{
"project_id": null,
"amount": "1000.0"
},
{
"project_id": "502689289290647218",
"amount": "-5000.0"
}
]
}
]
}
},
"ReturnsARevenueByProjectReport": {
"summary": "Returns a revenue by project report",
"value": {
"revenue_by_project": [
{
"project_id": null,
"amount": "1000.0"
},
{
"project_id": "502689289348318913",
"amount": "7000.0"
}
]
}
},
"ReturnsSuccessForFullPeriod": {
"summary": "Returns success for full period",
"value": {
"revenue_by_project": [
{
"project_id": null,
"amount": "1000.0"
},
{
"project_id": "502689289450030815",
"amount": "7000.0"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsErrorForInvalidPeriodFormat": {
"summary": "Returns error for invalid period format",
"value": {
"error": "Period is invalid"
}
},
"ReturnsErrorWhenPeriodExceedsLimit": {
"summary": "Returns error when period exceeds limit",
"value": {
"error": "Period cannot exceed 12 months"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to sales_invoices"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_reports_revenue_by_project"
}
},
"/{administration_id}/reports/subscriptions{format}": {
"get": {
"summary": "Subscriptions report",
"description": "Get the subscriptions report for the administration. All values are for the last month of the specified period. For example, `this_year` returns the values for December.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/period"
}
],
"responses": {
"200": {
"description": "A subscriptions report",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"monthly_recurring_revenue": {
"type": "string"
},
"annual_run_rate": {
"type": "string"
},
"churn_rate": {
"type": "string"
},
"lifetime_value": {
"type": "string"
}
}
},
"examples": {
"ReturnsASubscriptionsReportJson": {
"summary": "Returns a subscriptions report json",
"value": {
"monthly_recurring_revenue": "75.0",
"annual_run_rate": "900.0",
"churn_rate": "0",
"lifetime_value": "0"
}
},
"ReturnsSuccessForFullPeriod": {
"summary": "Returns success for full period",
"value": {
"monthly_recurring_revenue": "75.0",
"annual_run_rate": "900.0",
"churn_rate": "0",
"lifetime_value": "0"
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsErrorWhenPeriodExceedsLimit": {
"summary": "Returns error when period exceeds limit",
"value": {
"error": "Period cannot exceed 12 months"
}
},
"ReturnsErrorForInvalidPeriodFormat": {
"summary": "Returns error for invalid period format",
"value": {
"error": "Period is invalid"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to sales_invoices"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_reports_subscriptions"
}
},
"/{administration_id}/reports/tax{format}": {
"get": {
"summary": "Tax report",
"description": "Get the tax report for the administration.\n\n`tax_rates` at the top level always covers the whole `period`. With `granularity`, `periods` gives the same list per month, quarter or year. Within a period, only the tax rates with a non-zero amount in that period are listed.\n\n### Required scope(s)\n `documents` and `sales_invoices`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"documents",
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/period"
},
{
"$ref": "#/components/parameters/granularity"
}
],
"responses": {
"200": {
"description": "A tax report",
"content": {
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/tax_report_amounts"
},
{
"type": "object",
"properties": {
"periods": {
"type": "array",
"description": "Only present when `granularity` is given. One item for each month, quarter or year in `period`, oldest first.",
"items": {
"allOf": [
{
"type": "object",
"required": [
"period"
],
"properties": {
"period": {
"type": "string",
"description": "The period of this item, in the same format as the `period` parameter (e.g. `202501..202503`)."
}
}
},
{
"$ref": "#/components/schemas/tax_report_amounts"
}
]
}
}
}
}
]
},
"examples": {
"SplitsTheTaxReportIntoPeriodsByGranularity": {
"summary": "Splits the tax report into periods by granularity",
"value": {
"tax_rates": [
{
"tax_rate_id": "502689108899923082",
"name": "21% btw",
"percentage": "21.0",
"report_reference": "NL/1a",
"amount": "1200.0",
"type": "sales_invoice",
"tax": "252.0"
},
{
"tax_rate_id": "502689108908311693",
"name": "21% btw",
"percentage": "21.0",
"report_reference": "NL/5b",
"amount": "900.0",
"type": "purchase_invoice",
"tax": "189.0"
}
],
"periods": [
{
"period": "202508..202508",
"tax_rates": [
{
"tax_rate_id": "502689108899923082",
"name": "21% btw",
"percentage": "21.0",
"report_reference": "NL/1a",
"amount": "300.0",
"type": "sales_invoice",
"tax": "63.0"
}
]
},
{
"period": "202509..202509",
"tax_rates": [
{
"tax_rate_id": "502689108899923082",
"name": "21% btw",
"percentage": "21.0",
"report_reference": "NL/1a",
"amount": "900.0",
"type": "sales_invoice",
"tax": "189.0"
},
{
"tax_rate_id": "502689108908311693",
"name": "21% btw",
"percentage": "21.0",
"report_reference": "NL/5b",
"amount": "900.0",
"type": "purchase_invoice",
"tax": "189.0"
}
]
}
]
}
},
"ReturnsATaxReport": {
"summary": "Returns a tax report",
"value": {
"tax_rates": [
{
"tax_rate_id": "502689108899923082",
"name": "21% btw",
"percentage": "21.0",
"report_reference": "NL/1a",
"amount": "900.0",
"type": "sales_invoice",
"tax": "189.0"
},
{
"tax_rate_id": "502689108908311693",
"name": "21% btw",
"percentage": "21.0",
"report_reference": "NL/5b",
"amount": "900.0",
"type": "purchase_invoice",
"tax": "189.0"
}
]
}
},
"ReturnsSuccessForFullPeriod": {
"summary": "Returns success for full period",
"value": {
"tax_rates": [
{
"tax_rate_id": "502689108899923082",
"name": "21% btw",
"percentage": "21.0",
"report_reference": "NL/1a",
"amount": "900.0",
"type": "sales_invoice",
"tax": "189.0"
},
{
"tax_rate_id": "502689108908311693",
"name": "21% btw",
"percentage": "21.0",
"report_reference": "NL/5b",
"amount": "900.0",
"type": "purchase_invoice",
"tax": "189.0"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsErrorWhenPeriodExceedsLimit": {
"summary": "Returns error when period exceeds limit",
"value": {
"error": "Period cannot exceed 12 months"
}
},
"ReturnsErrorForInvalidPeriodFormat": {
"summary": "Returns error for invalid period format",
"value": {
"error": "Period is invalid"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to sales_invoices and documents"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_reports_tax"
}
},
"/{administration_id}/reports/working_capital{format}": {
"get": {
"summary": "Working capital report",
"description": "Get the working capital of the administration at the end of the specified period, with the same figures as the balance card on the reports page.\n\nWith `granularity`, `periods` also gives the working capital at the end of every month, quarter or year in the period.\n\n### Required scope(s)\n `bank`",
"tags": [
"Reports"
],
"security": [
{
"bearerAuth": [
"bank"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/period"
},
{
"$ref": "#/components/parameters/granularity"
}
],
"responses": {
"200": {
"description": "A working capital report",
"content": {
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/working_capital_amounts"
},
{
"type": "object",
"properties": {
"periods": {
"type": "array",
"description": "Only present when `granularity` is given. One item for each month, quarter or year in `period`, oldest first.",
"items": {
"allOf": [
{
"type": "object",
"required": [
"period"
],
"properties": {
"period": {
"type": "string",
"description": "The period of this item, in the same format as the `period` parameter (e.g. `202501..202503`)."
}
}
},
{
"$ref": "#/components/schemas/working_capital_amounts"
}
]
}
}
}
}
]
},
"examples": {
"ReturnsTheWorkingCapitalWithAPositiveBankBalanceAtTheEndOfThePeriod": {
"summary": "Returns the working capital with a positive bank balance at the end of the period",
"value": {
"working_capital": "800.0",
"bank": "200.0",
"to_receive": "900.0",
"to_pay": "300.0"
}
},
"CountsANegativeBankBalanceAsToPay": {
"summary": "Counts a negative bank balance as to pay",
"value": {
"working_capital": "400.0",
"bank": "0.0",
"to_receive": "900.0",
"to_pay": "500.0"
}
},
"ReturnsTheWorkingCapitalAtTheEndOfEachPeriodByGranularity": {
"summary": "Returns the working capital at the end of each period by granularity",
"value": {
"working_capital": "600.0",
"bank": "0.0",
"to_receive": "900.0",
"to_pay": "300.0",
"periods": [
{
"period": "202505..202505",
"working_capital": "100.0",
"bank": "0.0",
"to_receive": "100.0",
"to_pay": "0.0"
},
{
"period": "202506..202506",
"working_capital": "600.0",
"bank": "0.0",
"to_receive": "900.0",
"to_pay": "300.0"
}
]
}
},
"ReturnsSuccessForFullPeriod": {
"summary": "Returns success for full period",
"value": {
"working_capital": "600.0",
"bank": "0.0",
"to_receive": "900.0",
"to_pay": "300.0"
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsErrorForInvalidPeriodFormat": {
"summary": "Returns error for invalid period format",
"value": {
"error": "Period is invalid"
}
},
"ReturnsErrorWhenPeriodExceedsLimit": {
"summary": "Returns error when period exceeds limit",
"value": {
"error": "Period cannot exceed 12 months"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserLacksRequiredPermissions": {
"summary": "Returns 401 when user lacks required permissions",
"value": {
"error": "No access to bank"
}
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_reports_working_capital"
}
},
"/{administration_id}/sales_invoices/find_by_invoice_id/{invoice_id}{format}": {
"get": {
"summary": "Get an invoice by invoice_id",
"description": "Get a sales invoice by the invoice_id field of the sales invoice.\n\nAn invoice does not have an `invoice_id` when its a draft, so a draft is never found here. List drafts through `GET /sales_invoices` with `state:draft` and fetch one with `GET /sales_invoices/{id}`.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"security": [
{
"bearerAuth": [
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "invoice_id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Unique invoice identifier",
"example": "2025-0001"
}
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"200": {
"description": "A sales invoice",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/sales_invoice_response"
},
"examples": {
"ReturnsInvoiceByGivenId": {
"summary": "Returns invoice by given id",
"value": {
"id": "502689145432311243",
"administration_id": 123,
"contact_id": "502689145389319622",
"contact": {
"id": "502689145389319622",
"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-11-02T12:15:48.814Z",
"updated_at": "2026-11-02T12:15:48.814Z",
"version": 1793621748,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": "502689145394562504",
"contact_person": {
"id": null,
"contact_id": "502689145389319622",
"administration_id": 123,
"firstname": "Jan",
"lastname": "Janssen",
"phone": "123-456-2346",
"email": "janjanssen@dev.null.moneybird.net",
"department": "Sales",
"created_at": "2026-11-02T12:15:48.819Z",
"updated_at": "2026-11-02T12:15:48.819Z",
"version": 1793621748
},
"invoice_id": "2026-0001",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF030000000000000PDSZVHZG",
"short_payment_reference": "RF03PDSZVHZG",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:15:48.856Z",
"updated_at": "2026-11-02T12:15:48.920Z",
"public_view_code": "923768",
"public_view_code_expires_at": "2027-02-02T12:15:48.891Z",
"version": 1793621748,
"details": [
{
"id": "502689145435456972",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:15:48.858Z",
"updated_at": "2026-11-02T12:15:48.919Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/21b6305b2c4fd1a91d60736aec3b7a2fec530bc3400c561194c14bddb76317ee/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/21b6305b2c4fd1a91d60736aec3b7a2fec530bc3400c561194c14bddb76317ee/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:48.860Z",
"updated_at": "2026-11-02T12:15:48.860Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:48.901Z",
"updated_at": "2026-11-02T12:15:48.901Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_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,\n\nIn de bijlage kunt u factuur 2026-0001 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:15:48.932Z",
"updated_at": "2026-11-02T12:15:48.932Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTheGivenInvoiceIdDoesNotExist": {
"summary": "Returns 404 when the given invoice id does not exist",
"value": {
"error": "Sales invoice with invoice_id: 1337 was not found",
"symbolic": {
"invoice_id": "not_found"
}
}
}
}
}
}
}
},
"operationId": "get_administration_id_sales_invoices_find_by_invoice_id_invoice_id"
}
},
"/{administration_id}/sales_invoices/find_by_reference/{reference}{format}": {
"get": {
"summary": "Get an invoice by reference",
"description": "Get a sales invoice by the reference field of the sales invoice.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"security": [
{
"bearerAuth": [
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "reference",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"200": {
"description": "A sales invoice",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/sales_invoice_response"
},
"examples": {
"ReturnsInvoiceByGivenReference": {
"summary": "Returns invoice by given reference",
"value": {
"id": "502689171686557484",
"administration_id": 123,
"contact_id": "502689171638322983",
"contact": {
"id": "502689171638322983",
"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-11-02T12:16:13.847Z",
"updated_at": "2026-11-02T12:16:13.847Z",
"version": 1793621773,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": "502689171641468713",
"contact_person": {
"id": null,
"contact_id": "502689171638322983",
"administration_id": 123,
"firstname": "Jan",
"lastname": "Janssen",
"phone": "123-456-2346",
"email": "janjanssen@dev.null.moneybird.net",
"department": "Sales",
"created_at": "2026-11-02T12:16:13.850Z",
"updated_at": "2026-11-02T12:16:13.850Z",
"version": 1793621773
},
"invoice_id": "2026-0001",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF12000000000000064GG4PGE",
"short_payment_reference": "RF1264GG4PGE",
"reference": "invoice-123",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:13.893Z",
"updated_at": "2026-11-02T12:16:13.974Z",
"public_view_code": "127222",
"public_view_code_expires_at": "2027-02-02T12:16:13.942Z",
"version": 1793621773,
"details": [
{
"id": "502689171690751789",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:16:13.897Z",
"updated_at": "2026-11-02T12:16:13.973Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/bdf112766af330601aab6cd6dee2859d28aee52821a2e084f4c5e73fa5d6cb6a/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/bdf112766af330601aab6cd6dee2859d28aee52821a2e084f4c5e73fa5d6cb6a/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:13.902Z",
"updated_at": "2026-11-02T12:16:13.902Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:13.952Z",
"updated_at": "2026-11-02T12:16:13.952Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_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,\n\nIn de bijlage kunt u factuur 2026-0001 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:13.989Z",
"updated_at": "2026-11-02T12:16:13.989Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTheGivenReferenceDoesNotExist": {
"summary": "Returns 404 when the given reference does not exist",
"value": {
"error": "Sales invoice with reference: 1337 was not found",
"symbolic": {
"reference": "not_found"
}
}
}
}
}
}
}
},
"operationId": "get_administration_id_sales_invoices_find_by_reference_reference"
}
},
"/{administration_id}/sales_invoices/send_reminders{format}": {
"post": {
"summary": "Sends a reminder",
"description": "This endpoint sends a reminder to a contact. A reminder can contain multiple sales invoices.\nReminders are grouped by workflow, identity and document style, so a contact with sales invoices\nwith different workflows, will receive multiple reminders. Only by grouping reminders like this, we\ncan assure the right content and layout of a reminder.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"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": {
"sales_invoice_reminders": {
"type": "array",
"items": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"contact_id": {
"$ref": "#/components/schemas/identifier"
},
"workflow_id": {
"$ref": "#/components/schemas/identifier"
},
"document_style_id": {
"$ref": "#/components/schemas/identifier"
},
"identity_id": {
"$ref": "#/components/schemas/identifier"
},
"sales_invoice_ids": {
"type": "array",
"items": {
"$ref": "#/components/schemas/identifier"
},
"description": "Sales invoices of this contact to include in the reminder."
},
"reminder_text": {
"type": "string",
"description": "Message shown in the reminder. Defaults to the text of the next step in the workflow."
},
"delivery_method": {
"type": "string",
"enum": [
"Email",
"Manual"
],
"description": "How the reminder is delivered. Defaults to the contact's delivery method."
},
"email_address": {
"type": "string",
"description": "Recipient email address. Only used when `delivery_method` is `Email`; defaults to the contact's email address."
}
},
"required": [
"contact_id",
"workflow_id",
"document_style_id",
"identity_id",
"sales_invoice_ids"
]
}
}
},
"required": [
"sales_invoice_reminders"
]
}
}
}
},
"responses": {
"200": {
"$ref": "#/components/responses/status_code"
},
"400": {
"$ref": "#/components/responses/400_bad_request"
},
"422": {
"$ref": "#/components/responses/422_unprocessable_entity"
}
},
"operationId": "post_administration_id_sales_invoices_send_reminders"
}
},
"/{administration_id}/sales_invoices/synchronization{format}": {
"get": {
"summary": "List all ids and versions",
"description": "Returns all sales invoices in the administration. The list contains the invoice id and the version of the invoice.\nCheck if the version of the invoice is newer than the version you have stored locally, use the `POST`\nvariant for fetching invoices with the given ids.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"security": [
{
"bearerAuth": [
"sales_invoices"
]
}
],
"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 /sales_invoices` — 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": "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 id's for synchronization",
"value": [
{
"id": "502689159133005037",
"version": 1793621761
},
{
"id": "502689159025001694",
"version": 1793621761
},
{
"id": "502689158906512591",
"version": 1793621761
},
{
"id": "502689158800606399",
"version": 1793621761
}
]
},
"RetrievesTheIdSForSynchronizationWithAFilter": {
"summary": "Retrieves the id's for synchronization with a filter",
"value": [
{
"id": "502689159670924591",
"version": 1793621762
},
{
"id": "502689159777879359",
"version": 1793621762
},
{
"id": "502689159900562766",
"version": 1793621762
}
]
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsA400WhenTheFilterHasAnInvalidValue": {
"summary": "Returns a 400 when the filter has an invalid value",
"value": {
"error": "Status is not included in the list",
"symbolic": {
"filter": "invalid"
}
}
}
}
}
}
}
},
"operationId": "get_administration_id_sales_invoices_synchronization"
},
"post": {
"summary": "Fetch sales invoices with given ids",
"x-query": true,
"description": "Given a list of sales invoice ids, returns the sales invoice information belonging to the invoices.\nReturns a maximum of 100 invoice, even if more ids are provided.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"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": [
502689158146294900,
502689158263735400
]
}
}
}
}
}
},
"responses": {
"200": {
"description": "A list of sales invoices",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/sales_invoice_response"
}
},
"examples": {
"RetrievesSalesInvoicesGivenByIds": {
"summary": "Retrieves sales invoices given by ids",
"value": [
{
"id": "502689158263735414",
"administration_id": 123,
"contact_id": "502689157977474130",
"contact": {
"id": "502689157977474130",
"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-11-02T12:16:00.819Z",
"updated_at": "2026-11-02T12:16:00.819Z",
"version": 1793621760,
"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,
"invoice_id": "2026-0003",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF0200000000000007U29PYYM",
"short_payment_reference": "RF027U29PYYM",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:01.092Z",
"updated_at": "2026-11-02T12:16:01.165Z",
"public_view_code": "531223",
"public_view_code_expires_at": "2027-02-02T12:16:01.128Z",
"version": 1793621761,
"details": [
{
"id": "502689158266881143",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:16:01.095Z",
"updated_at": "2026-11-02T12:16:01.165Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/8ba2cb07c849fdd65160c85cfd8126c3fba771d27a4e493e27d6d180c1d7abb6/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/8ba2cb07c849fdd65160c85cfd8126c3fba771d27a4e493e27d6d180c1d7abb6/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:01.098Z",
"updated_at": "2026-11-02T12:16:01.098Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:01.146Z",
"updated_at": "2026-11-02T12:16:01.146Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "info@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0003 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:01.178Z",
"updated_at": "2026-11-02T12:16:01.178Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
},
{
"id": "502689158146294887",
"administration_id": 123,
"contact_id": "502689157977474130",
"contact": {
"id": "502689157977474130",
"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-11-02T12:16:00.819Z",
"updated_at": "2026-11-02T12:16:00.819Z",
"version": 1793621760,
"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,
"invoice_id": "2026-0002",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF1300000000000002JK7F5QW",
"short_payment_reference": "RF132JK7F5QW",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:00.980Z",
"updated_at": "2026-11-02T12:16:01.050Z",
"public_view_code": "420684",
"public_view_code_expires_at": "2027-02-02T12:16:01.018Z",
"version": 1793621761,
"details": [
{
"id": "502689158148392040",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:16:00.982Z",
"updated_at": "2026-11-02T12:16:01.048Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/65049ee7f67b1db67787486b15d54e2f20ddce0435e4617bdc42dea61704f657/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/65049ee7f67b1db67787486b15d54e2f20ddce0435e4617bdc42dea61704f657/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:00.985Z",
"updated_at": "2026-11-02T12:16:00.985Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:01.029Z",
"updated_at": "2026-11-02T12:16:01.029Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "info@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0002 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:01.064Z",
"updated_at": "2026-11-02T12:16:01.064Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
]
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400_bad_request"
}
},
"operationId": "post_administration_id_sales_invoices_synchronization"
}
},
"/{administration_id}/sales_invoices/{id}/attachments{format}": {
"post": {
"summary": "Add attachment to sales invoice",
"description": "Add an attachment to a sales invoice.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"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": {
"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_sales_invoices_id_attachments"
}
},
"/{administration_id}/sales_invoices/{id}/download_packing_slip_pdf{format}": {
"get": {
"summary": "Download sales invoice packing slip PDF by id",
"description": "Redirects to the download URL of the sales invoice as packing slip PDF. The link is valid for 30 seconds.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"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": "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": {
"ReturnsInvoiceByGivenIdAsPackingSlipPdf": {
"summary": "Returns invoice by given id as packing slip pdf",
"value": "\"This resource has been moved temporarily to http://moneybird-storage-develop-moneybird-storage-sandbox-de-175c5207.ci.svc.cluster.local:80/c4b189d2d6e8e9c9a3d73fbc058fa7a2190a2658dab50047023d0d47f22923f1/35c8c3d46aecccb58db8f684afcc6954eb77fdcd4599e4c4c7195ab7c110440b/download.\""
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenInvoiceDoesNotExist": {
"summary": "Returns 404 when invoice does not exist",
"value": {
"error": "record not found",
"symbolic": {
"id": "not_found"
}
}
}
}
}
}
}
},
"operationId": "get_administration_id_sales_invoices_id_download_packing_slip_pdf"
}
},
"/{administration_id}/sales_invoices/{id}/download_pdf{format}": {
"get": {
"summary": "Download sales invoice PDF by id",
"description": "Redirects to the download URL of the sales invoice as PDF. The link is valid for 30 seconds.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"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": "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": {
"ReturnsInvoiceByGivenIdAsPdf": {
"summary": "Returns invoice by given id as pdf",
"value": "\"This resource has been moved temporarily to http://moneybird-storage-develop-moneybird-storage-sandbox-de-175c5207.ci.svc.cluster.local:80/4adf497f3ec19c21b5d05508e7a0951e5c29ac479d63ba9149542d816b66c510/ee860b7b5ca97065b0357d24f18e891ba34db720123eb3ffb052b1183c9c4e88/download.\""
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenInvoiceDoesNotExist": {
"summary": "Returns 404 when invoice does not exist",
"value": {
"error": "record not found",
"symbolic": {
"id": "not_found"
}
}
}
}
}
}
}
},
"operationId": "get_administration_id_sales_invoices_id_download_pdf"
}
},
"/{administration_id}/sales_invoices/{id}/download_ubl{format}": {
"get": {
"summary": "Download sales invoice UBL by id",
"description": "Download the sales invoice as UBL.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"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"
}
],
"responses": {
"200": {
"description": "A sales invoice",
"content": {
"text/xml": {
"schema": {
"type": "string"
},
"examples": {
"ReturnsInvoiceByGivenIdAsUbl": {
"summary": "Returns invoice by given id as ubl",
"value": "\n\n 2.1\n \n \n 2019-0001\n 2019-10-01\n 2019-10-15\n 380\n EUR\n \n Project X\n \n \n 2019-0001.pdf\n PrimaryImage\n \n JVBERi0xLjMK/////woxIDAgb2JqCjw8IC9DcmVhdG9yIChQcmF3bikKL1By\nb2R1Y2VyIChQcmF3bikKPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0tpZHMgWzUg\nMCBSXQovVHlwZSAvUGFnZXMKL0NvdW50IDEKPj4KZW5kb2JqCjMgMCBvYmoK\nPDwgL1BhZ2VzIDIgMCBSCi9UeXBlIC9DYXRhbG9nCj4+CmVuZG9iago0IDAg\nb2JqCjw8IC9MZW5ndGggMzg4Nwo+PgpzdHJlYW0KMC4wMDAgMC4wMDAgMC4w\nMDAgcmcKMC4wMDAgMC4wMDAgMC4wMDAgUkcKcQpCVAoxLjAwMCAwLjAwMCAt\nMC4wMDAgMS4wMDAgNDA5LjI4MCA4MTUuODkwIFRtCjAgLTUuNzQ0IFRkCjAu\nMDAwIDAuMDAwIDAuMDAwIHJnCjAgVHMKL0YxLjAgOCBUZgpbPDU1NzcyMDQy\nNjU2NDcyPiAtMTUgPDY5NmE2NjczMmQ0ZTYxNjE2ZDIwNDI+IDIwIDwyZTU2\nPiAxMjUgPDJlPl0gVEoKMCAtOS4yNDggVGQKWzw0NzcyNmY3NDY1MjA0ZDYx\nNzI+IC0xNSA8NmI3NDIwMzEzMDMwPl0gVEoKMCAtOS4yNDggVGQKWzwzMTMx\nMzIzMjIwNDE0MTIwNDU2ZTczNjM2ODY1NjQ2NT5dIFRKCjAgLTkuMjQ4IFRk\nCjAgLTkuMjQ4IFRkCls8NmI3NjZiMmU+IDYwIDwyMDMxMzIzMzM0MzUzOTM4\nMzczNj5dIFRKCjAgLTkuMjQ4IFRkCls8NjI3NDc3PiA2MCA8MmU+IDYwIDwy\nMDM4MzIzMzM5MzMzNjM1MzMzOD5dIFRKCjAgLTkuMjQ4IFRkCjAgLTkuMjQ4\nIFRkCi9GMi4wIDggVGYKWzw0NTJkNmQ2MTY5NmMzYT5dIFRKCi9GMS4wIDgg\nVGYKWzwyMDY5NmU2Nj4gMzAgPDZmNDA3NTc3NjI2NTY0NzI+IC0xNSA8Njk2\nYTY2NzMyZDJkNmU2MTYxNmQyZTZlNmM+XSBUSgpFVAoKcQoyMDAuMDAwIDAg\nMCA4MC4wMDAgMzYuMDAwIDczNS44OTAgY20KL0kxIERvClEKCkJUCjY2IDY5\nOS40MjggVGQKL0YxLjAgOSBUZgpbPDQyNmY2ZjZiNzM2ODZmNzAwYT5dIFRK\nCkVUCgoKQlQKNjYgNjg5LjAyNCBUZAovRjEuMCA5IFRmCls8NTQ+IDEyMCA8\nMmU2MTJlNzY+IDgwIDwyZT4gNjAgPDIwNGE2ZjczMjA3Nj4gMjUgPDYxNmUy\nMDY0NjU3MjIwNGQ2ZjZjNjU2ZTBhPl0gVEoKRVQKCgpCVAo2NiA2NzguNjIg\nVGQKL0YxLjAgOSBUZgpbPDRmNzg2Nj4gMzAgPDZmNzI2NDBhPl0gVEoKRVQK\nCgpCVAo2NiA2NjguMjE2IFRkCi9GMS4wIDkgVGYKWzwwYT5dIFRKCkVUCgoK\nQlQKNjYgNjU3LjgxMiBUZAovRjEuMCA5IFRmCls8MGE+XSBUSgpFVAoKCkJU\nCjM2IDU4MC45NDYgVGQKL0YxLjAgMTggVGYKWzw0Nj4gNTAgPDYxNjM3NDc1\nNzU3MjIwMzIzMDMxMzAyZDMwMzEzMTMyPl0gVEoKRVQKCgpCVAo0MDguNjQg\nNTkxLjk3MiBUZAovRjEuMCA5IFRmCls8NDY+IDUwIDw2MTYzNzQ3NTc1NzI2\nNDYxNzQ3NTZkM2E+IDUwIDwyMD5dIFRKCkVUCgowLjAwMCAwLjAwMCAwLjAw\nMCByZwoKQlQKNTA1LjYxNCA1OTEuOTcyIFRkCi9GMS4wIDkgVGYKWzwzMTM4\nMmQzMDM5MmQzMjMwMzEzMD5dIFRKCkVUCgowLjAwMCAwLjAwMCAwLjAwMCBy\nZwoKQlQKNDA4LjY0IDU3OC4xIFRkCi9GMS4wIDkgVGYKWzw1Nj4gODAgPDY1\nNzI+IC0zMCA8NzY+IDI1IDw2MTZjNjQ2MTc0NzU2ZDNhPiA1MCA8MjA+XSBU\nSgpFVAoKMC4wMDAgMC4wMDAgMC4wMDAgcmcKCkJUCjUwNS42MTQgNTc4LjEg\nVGQKL0YxLjAgOSBUZgpbPDMwMzIyZDMxMzAyZDMyMzAzMTMwPl0gVEoKRVQK\nCjAuMDAwIDAuMDAwIDAuMDAwIHJnCjAuNSB3CjAuMDAwIDAuMDAwIDAuMDAw\nIFJHCjEgdwowLjAwMCAwLjAwMCAwLjAwMCBSRwowLjUgdwowLjAwMCAwLjAw\nMCAwLjAwMCByZwoxIHcKMC4wMDAgMC4wMDAgMC4wMDAgUkcKMC41IHcKCkJU\nCjk2IDUzMC4wMjQgVGQKL0YyLjAgOSBUZgpbPDRmNmQ3MzYzPiAxMCA8Njg3\nMjY5NmE3NjY5NmU2Nz5dIFRKCkVUCgowLjAwMCAwLjAwMCAwLjAwMCByZwox\nIHcKMC4wMDAgMC4wMDAgMC4wMDAgUkcKMC41IHcKCkJUCjM4NC41NjUgNTMw\nLjAyNCBUZAovRjIuMCA5IFRmCls8NDI2NTY0NzI2MT4gMTAgPDY3Pl0gVEoK\nRVQKCjAuMDAwIDAuMDAwIDAuMDAwIHJnCjEgdwowLjAwMCAwLjAwMCAwLjAw\nMCBSRwowLjUgdwoKQlQKNDg5LjY5NSA1MzAuMDI0IFRkCi9GMi4wIDkgVGYK\nWzw1ND4gODAgPDZmNzQ2MTYxNmM+XSBUSgpFVAoKMC4wMDAgMC4wMDAgMC4w\nMDAgcmcKMSB3CjAuMDAwIDAuMDAwIDAuMDAwIFJHCjAuNSB3CgpCVAo1MzQu\nOTg3IDUzMC4wMjQgVGQKL0YyLjAgOSBUZgpbPDQyNTQ1Nz5dIFRKCkVUCgow\nLjAwMCAwLjAwMCAwLjAwMCByZwozNi4wMDAgNTI2LjAzOCBtCjU1OS4yODAg\nNTI2LjAzOCBsClMKMSB3CjAuMDAwIDAuMDAwIDAuMDAwIFJHCjAuNSB3CgpC\nVAo0MCA1MTIuOTQ4IFRkCi9GMS4wIDkgVGYKWzwzMTIwNzg+XSBUSgpFVAoK\nMC4wMDAgMC4wMDAgMC4wMDAgcmcKMSB3CjAuMDAwIDAuMDAwIDAuMDAwIFJH\nCjAuNSB3CgpCVAo5NiA1MTIuOTQ4IFRkCi9GMS4wIDkgVGYKWzw3NDY1NzM3\nND5dIFRKCkVUCgowLjAwMCAwLjAwMCAwLjAwMCByZwoxIHcKMC4wMDAgMC4w\nMDAgMC4wMDAgUkcKMC41IHcKCkJUCjM3Mi45NDYgNTEyLjk0OCBUZAovRjEu\nMCA5IFRmCls8ODAyMDMxMmUzMjMzMzQyYzMwMzA+XSBUSgpFVAoKMC4wMDAg\nMC4wMDAgMC4wMDAgcmcKMSB3CjAuMDAwIDAuMDAwIDAuMDAwIFJHCjAuNSB3\nCgpCVAo0NzIuOTQ2IDUxMi45NDggVGQKL0YxLjAgOSBUZgpbPDgwMjAzMTJl\nMzIzMzM0MmMzMDMwPl0gVEoKRVQKCjAuMDAwIDAuMDAwIDAuMDAwIHJnCjEg\ndwowLjAwMCAwLjAwMCAwLjAwMCBSRwowLjUgdwoKQlQKNTM3LjQ3MSA1MTIu\nOTQ4IFRkCi9GMS4wIDkgVGYKWzwzMTM5MjU+XSBUSgpFVAoKMC4wMDAgMC4w\nMDAgMC4wMDAgcmcKMzYuMDAwIDUwNS42MzQgbQo1NTkuMjgwIDUwNS42MzQg\nbApTCjAuMDAwIDAuMDAwIDAuMDAwIFJHCjEgdwowLjAwMCAwLjAwMCAwLjAw\nMCBSRwowLjUgdwoKQlQKMzcxLjQ3OSA0OTIuMzQgVGQKL0YyLjAgOSBUZgpb\nPDUzNzU2Mjc0NmY3NDYxNjE2YzNhPl0gVEoKRVQKCjAuMDAwIDAuMDAwIDAu\nMDAwIHJnCjEgdwowLjAwMCAwLjAwMCAwLjAwMCBSRwowLjUgdwoKQlQKNDcy\nLjk0NiA0OTIuNTQ0IFRkCi9GMS4wIDkgVGYKWzw4MDIwMzEyZTMyMzMzNDJj\nMzAzMD5dIFRKCkVUCgowLjAwMCAwLjAwMCAwLjAwMCByZwoxIHcKMC4wMDAg\nMC4wMDAgMC4wMDAgUkcKMC41IHcKCkJUCjM3MS40NzkgNDcwLjQ2OCBUZAov\nRjIuMCA5IFRmCls8NDI1NDU3MjAzMTM5MjUzYT5dIFRKCkVUCgowLjAwMCAw\nLjAwMCAwLjAwMCByZwoxIHcKMC4wMDAgMC4wMDAgMC4wMDAgUkcKMC41IHcK\nCkJUCjQ4MC40NTIgNDcwLjY3MiBUZAovRjEuMCA5IFRmCls8ODAyMDMyMzMz\nNDJjMzQzNj5dIFRKCkVUCgowLjAwMCAwLjAwMCAwLjAwMCByZwozMTkuNDgw\nIDQ2MS44OTAgbQo1MTkuNDgwIDQ2MS44OTAgbApTCjEgdwowLjAwMCAwLjAw\nMCAwLjAwMCBSRwowLjUgdwoKQlQKMzg2LjY5OCA0NDguNTk2IFRkCi9GMi4w\nIDkgVGYKWzw1ND4gODAgPDZmNzQ2MTYxNmMzYT5dIFRKCkVUCgowLjAwMCAw\nLjAwMCAwLjAwMCByZwoxIHcKMC4wMDAgMC4wMDAgMC4wMDAgUkcKMC41IHcK\nCkJUCjQ3Mi45NDYgNDQ4LjggVGQKL0YxLjAgOSBUZgpbPDgwMjAzMTJlMzQz\nNjM4MmMzNDM2Pl0gVEoKRVQKCjAuMDAwIDAuMDAwIDAuMDAwIHJnCjM2LjAw\nMCA2My43NDQgbQo1NTkuMjgwIDYzLjc0NCBsClMKCkJUCjM2IDUyLjI4MiBU\nZAovRjEuMCA5IFRmCls8NTc+IDMwIDw2NTIwNzY+IDI1IDw2NTcyN2E+IDE1\nIDw2ZjY1NmI+IDIwIDw2NTZlMjA3NTIwNzY3Mj4gLTE1IDw2OTY1NmU2NDY1\nNmM2OTZhNmIyMDY4NjU3NDIwNjI2Zj4gMTUgPDc2PiAyNSA8NjU2ZTczNzQ2\nMTYxNmU2NDY1MjA2MjY1NjQ3Mj4gMTAgPDYxNjcyMDYyNjk2ZTZlNjU2ZTIw\nNjQ2NTIwNjc2NTczNzQ2NTZjNjQ2NTIwNjI2NTc0NjE2YzY5NmU2NzczNzQ2\nNTcyPiAtMjUgPDZkNjk2YTZlMjA3NDY1MjA3Nj4gMjUgPDZmNmM2NDZmNjU2\nZTIwNmY3MDIwNmY2ZTdhPiAxNSA8NjUyMDYyNjE2ZTZiNzI2NTZiPiAyMCA8\nNjU2ZTY5NmU2NzJlPiA2MCA8MjA+IDUwIDw1Nj4gODAgPDZmNmY3MjBhPl0g\nVEoKRVQKCgpCVAozNiA0MS44NzggVGQKL0YxLjAgOSBUZgpbPDc2NzI+IDEw\nIDw2MTY3NjU2ZTIwNmI3NTZlNzQyMDc1MjA2MzZmNmU3NDYxNjM3NDIwNmY3\nMDZlNjU2ZDY1NmUyMDcwNjU3MjIwNjUyZDZkNjE2OTZjMmU+XSBUSgpFVAoK\nUQoKZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjw8IC9Db250ZW50cyA0IDAg\nUgovUHJvY1NldCA2IDAgUgovTWVkaWFCb3ggWzAgMCA1OTUuMjggODQxLjg5\nXQovUGFyZW50IDIgMCBSCi9SZXNvdXJjZXMgPDwgL0ZvbnQgPDwgL0YxLjAg\nNyAwIFIKL0YyLjAgOCAwIFIKPj4KL1hPYmplY3QgPDwgL0kxIDkgMCBSCj4+\nCj4+Ci9UeXBlIC9QYWdlCj4+CmVuZG9iago2IDAgb2JqClsvUERGIC9UZXh0\nIC9JbWFnZUNdCmVuZG9iago3IDAgb2JqCjw8IC9CYXNlRm9udCAvSGVsdmV0\naWNhCi9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nCi9UeXBlIC9Gb250Ci9T\ndWJ0eXBlIC9UeXBlMQo+PgplbmRvYmoKOCAwIG9iago8PCAvQmFzZUZvbnQg\nL0hlbHZldGljYS1Cb2xkCi9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nCi9U\neXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQo+PgplbmRvYmoKOSAwIG9iago8\nPCAvTGVuZ3RoIDM3MjkKL1dpZHRoIDIwMAovQ29sb3JTcGFjZSAvRGV2aWNl\nR3JheQovRmlsdGVyIC9EQ1REZWNvZGUKL0hlaWdodCA4MAovVHlwZSAvWE9i\namVjdAovQml0c1BlckNvbXBvbmVudCA4Ci9TdWJ0eXBlIC9JbWFnZQo+Pgpz\ndHJlYW0K/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAEBAQEBAQEBAQEBAQEB\nAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB\nAQEBAQH/wAALCABQAMgBAREA/8QAHAABAAIDAQEBAAAAAAAAAAAAAAgJBgcK\nAgUD/8QALBAAAQQDAQABBAIBAwUAAAAABAMFBgcAAggBCRITFBURFhcKGSIh\nQ1mX2P/aAAgBAQAAPwDv4xjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGM\nYxjGMhd0p2/WvP8AIWepo8xya+unZkFuXX3MtQpCPVkPQ+30ppSOXrrrpMNU\n1wOqpqo7WLYR7KwCBJGrNv7kwJRv2rptu8/lblFm8yc5SWEe8avdv288qvPU\nHO7XA+nafErhCo7GmA1ZytK4oOsvCrSZpS1RVjLPLYAo7O9x3t2hD/qCOoyK\n2LfHVa9hXnw9zJbtryH2W2PP6sY5DMpL60sbD69PZW5WhR/rPGm1nYW71b7W\nnvorU1ghp/8AaQ1/6/zNHGMYxjGMYxjGMYxjGMoX7s707GQniVK88cr9XV/V\nJBZjbPOsI/TcSk1hmgi+e6mA89Vnac7ruPJEmebJCJ2RYbirsz6krHNdcuKi\nDY5k/B5q6yojlKPvDXVnxpfJWtJped49WXa02gtETS4rak2317ESazbHeunV\npBKHRZdQhdEZVcdjZ9iSB4+ztASn4vkl/wDdpG/8efyO/wDq7n7/AOm8rJiP\nTN7crT5p34G4q76cqGkUg9UmHF9+Q6sla+imjoSsW6PnNFmR+97DnNTlblqK\nGbVgdF5jW7iWe4rtokUU2H3R6Wagsr226+YJ0rArHrAx3G+pxgVsRZeIzmMO\nCfnnhLY8tuyxreRuhtt54m5sTo8MZunv1guZH0q6p7MxjGMYxjGMYxjGMYxn\nPt84DVCSZHQknnFbQG2BKv5m+Rq2mCGWcyryGFGzCvapqmQxkl7aBXBqJMFF\nchdN1Eh3IJbdPZTVMlLbbzfWt/4IIJyt8kwvUa3QXCPGrZvTZFLpRP8AxrVT\nzHNV9bATtXd8/c+PUzk/5nqfsLaP1/o3oP4/ihv3vCfvJfYlp8yPK3EvBPGh\nd+0lwxyg4TdCzoLD9B59W576wetUk/cfsN9gGmSx4v0zX8BD8Zbxx8TT/lT6\n0Vfq8+mJnBcWo+4ub+C+wg+YeeaavAv5Sa4q5aQUlBnCHj7Q5uFfiPwPEXSR\nSQz+TlvsqH7en+pL7Cje6Ipfb9+rskVU+0kor9Cin2091Ptpa/Wqp9Gvu30J\n6fz59Sm38fTpr/Pn1be+efz5/P8AOQOrj5LuP7So2/Oh4zYziNXPMTjJGe7f\nZNDpXFJVCnaLtiTme2FQ5/aQJEWcX939WzIAAE7PL+iUwt/q7sIUIjJihbvg\nnSNRQe8awUfSa9sdp9f4efI467xRzdWPcskUN3/QvwwTuIA6eDbGtK5giHjm\n1LBuofireaIQtt3GMre6v+WTh/jWfC1LbloOLjbpIqB6tXVrDpLY8yawCRP2\nCBT+JGm8puj+6zd7o5jtr05gvJbUqm6htpDbt+V5MKg70rnpen4LelSObi8V\n1YrWu7xhxdmF6jDiQKK5GtBXhTJIAm91D3QcW40fz1cXxAvRLQ0BYtvIFLX2\n/jGMYxjGMYxlb/Sjc3u/yEfHi1uoIbm2OFdd0huDa4CoGgHCEQqlklxTAyU1\nRyRl09tk1kFk90ldNttN9NtfffM+r289yTnWkY2XzH5BKWntpdH8vUrvMW+t\nIw9BtTbb12xKtHB5Mi3ujSDIiGVrlriW3CGmDfwtsomiWJ6vut5inLjld0k6\nC675n6qsuFdMs1Nx3mSYQ57KpKI14MkvbDdbxb2MdGAXKTgmqh7w5p1BOXN3\nVR8/I9RTQ++p5t+/dsajkUG4SaYswMkbavPka51I8bGBqBZ2/wAIWb7A+8v4\nG3IDDeLK/Rr91X7X17/Tr9e3v0+ZZfnHp8iXHKCXy013zBCJodB+efljdINY\nvU8BZ/CkP30goCTSKcSQgAlInX8Aqb/gquKTgl9SoMskD66KIqDbIDbbAlEo\nvHq/pn5Q4I2dkXLw5VXxg1s1NnOdTUFMW+qYgSDEopNfty6ywhRdFZhXoG0D\nbVnBoXXDEb2SXx1tbjmoUFJJwwGn/kX6uuScfApL7HtSVwcDoCQ3zCrrEa3V\neFQe7y67sYSv4i9yBnHWDZnU978SbNCBEUkwSpQ6HItLeKG4BN2vm7ezul2+\nQ/6g/wAifRVlpNvPWlHpUdszzpzVEqg10tIZhlSEFUHMUTjy5HmhjO7It+yO\nyfqS4C2ifqWyWt4fxP1/e4/OMV6K6A6dsPoOX9aVlS10jx2U7EDw2mm2Rwna\nRNsNrtpUczkgxvWWUM4cmcvERzZG9MX7pzVNLJ2X8ri+DN4hCXV3yot9uFNI\nfabt1tNlXwCVbhjzsyrRnmQkNyMPTcPfHMmKhvX7ZZwHj2yrQO0awlZfXVt8\nj2+bH7gta4uivlQ5z+OGJdK2nytREsoORXfJpxz5Lm6B2xbEpFcbBQTjEQsP\nwFxJaxmXyDFKEitqZaZO6Ev3eWw9QFt3bqsJ/wDID2fFfjg7zjQvSM9lEx4t\n71i1F1R1K2Om4U4sWv8Aaay5rUGkcmb1thpd9wWPCuay5yRShbRJW0RxIcR0\nQt093s8A7ddPkr04HX+UDrbSE9E8oMPSE7nqLm1pzGOyhQR6KXYKe88U/Epe\nNqyEfUn8WuvWNTaNbeRgncpZAR+Gis5/If22N8ONdzz3p6es1xVV8sSPMat4\nEPqqkkk9aNFGSWxEhrFcnFRTeWs6L89oKugsrKdNHNsj7Ug9Fl6De7eWR+2X\ncnxwfKpz9T0h7evzq2g+iudbPte8GK9ZSLYLlXXtdQmyJsXZ0BbWQMUCDQ4n\neBEGtDBHGkcXyPiSdqJLkpA7Qc217RbubqmGXLwZ0vTdh9tuXMnTHTYdOqvP\nXnT1Z2ey32wp2MPCp2jH+a4fExkaP1jqh722t8iFfnfdE1Bl0S3LWaRnh93L\nM5J2h0bYnzsnNXfXS9Nwz4932dWpVkFreXEMyDqW1Nt0yNriRskEXFk7RAwW\nmnl2jSKMjmI1EmSFJ1NHI/Vfhm5qy959O1NHvhz+RS57usBy5vu+JySg+too\no8K6V6rOmkqfxaIWy6xwdMRiCkT+AgrLnQlvGbBtDK3W2U2TRcS91rYPg9kX\nRVs8gunTfSljTibSbpe157YsDj0rkTk8Ndb1UI9Ex6LxeLtzh79DQ2EOjdI3\nkP0PRFA6Onxn6UE0xEvdrk8YxjIIdc8p3Pedlc+XBQvSTNzjYVCCW82iur9R\noF5N8ja7ebIY1ugu7M5WJABWpVuRiGuyRXu7ruRsf/w0D9F+omPcm4V7ttV2\nqwW9PkXglh1zXt5UpdrpCGLh6OQBxlBlKWZGrLaWNKYN1+OpTDo5uEbQCVcd\nGp01FTX2W3bTtU/RVdg2pxp1WZ0tbPQvNXasV5/RuaIVLF5jC5LyqzXbsqrU\nIcuDYXIOSO1wwv0TwjSaO+y4SDEn5576j4qUV9pP3TD1+He3J9P6Mf8AoL5B\noTa0Cpa7oReGkCj/ABbHqxPkT7BtXRNuA9mbZer8S0jrIPBqaiv6V0T823TU\n3CW9T18y2LI6WByZz9aN7U/0vO4B+9u2hBXsKppr/apq2f1QWRjGCPKX9bZ5\nI3xJ9/MHPLT+uSsLwoP936xN0N009tI7dNfFFwX19ZY9v3tRYsisX0FuaXuS\nR+YzyBEzJlatk9gWmbjwWTR4OVIIajiDpnOw5D0mAA3tiTom2giiJZX0P8a3\nFHUVSVlR9uUZHza4pbVJGpGaKHvkBXrwLUMJuKaoy5QtzYzxGZ1b28IV4Z1l\nyGxz3Cb3EsVR3a2twCwyL/Ej8eEJhFzVvEOb2mNQfoSKwCFW/HGSe2y3AS+P\nVisIVDh/fRZ4muwnhnBJObu/RlZlfpY7qnO8uc3xzcnEsqdNcV9EKkryB1VX\nzR/X4DWUMi9fQhh/PdHX9JEIYxgxyNNH7R7Ncnpy/WsraEF+e7uJ7oZ9n8g8\n0otRVdSDfV3xPcEdpy3/ACFflCtT5Yu6Agpc/i8ilkBlTsKAgmIGhIToY9sq\nMm/FCRQBDIkQroWACOgIAQMOlonr4s74muBbbqGoqRmFEIKQqg24pnpoprnV\njtc2gDSabu4mNTZYg8t/vDm1kmKKEKNcjfntu8X+2SmKmSMKshlBfxj8Lmcv\nIcZ70CyC84JSICXr18zymfx1d1lraogoNJ3+aR6WNc+kD/t6KIkW6PUoOLOF\nDCBMUXCCEHR2yJx3zkD0Qw9XC119q/oxWI9Nsc9/t063/BrcXwnxCOf1ZST7\nwsn7fhZHn7guOEP233P+bpt9On01CfIx8ODDMeOYNzPwVVkYibWt3LGep7Rj\nMrsqYFgPXilWziATZ5GerBfpY4aODiOVDm9GOt5rez6ojEliCiL7Gqk2Hc6/\nFlwlyvMJhPqcohqbJfNmRyijo+SuSzKxSwYW7DJBnwqPeT+QyRGPxokJL8Ak\nJqSGXNbNv1J5RTWkOGjqKF/B78YsBkbHLI9zbsk/RSxmm0oaaRbN1LaQ6UsL\nim7s+kdD1sRIIRiEdUkz1o8uMU0Oy6AWr4K5otjUkFKRj4L5Pja/WpLNVP4a\n/dALk3dT7/3mySP8pBu7bNmhxR+guYr6Qj8hvsaZD/crrWIqo/ufuoKJLt7U\nqDWR8gXxtW9cVJ82fG1yHX1ZVTwwG86yO17MlMnepjN6nFisv9kjfH4G3TCS\nPEufnaTqyKQHiOKi7n4oqMTHniRRJgM/h0u/rSu4nUVdQSqoG16MsJraHxuC\nxFpT2+vVujkUaBGNmD9U9812W3QbwR9FV9/PuLq+brKe+777e5m+MYxjGMYx\njGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjP//Z\nCmVuZHN0cmVhbQplbmRvYmoKeHJlZgowIDEwCjAwMDAwMDAwMDAgNjU1MzUg\nZiAKMDAwMDAwMDAxNCAwMDAwMCBuIAowMDAwMDAwMDcwIDAwMDAwIG4gCjAw\nMDAwMDAxMjcgMDAwMDAgbiAKMDAwMDAwMDE3NiAwMDAwMCBuIAowMDAwMDA0\nMTE1IDAwMDAwIG4gCjAwMDAwMDQzMDEgMDAwMDAgbiAKMDAwMDAwNDMzNyAw\nMDAwMCBuIAowMDAwMDA0NDM0IDAwMDAwIG4gCjAwMDAwMDQ1MzYgMDAwMDAg\nbiAKdHJhaWxlcgo8PCAvUm9vdCAzIDAgUgovU2l6ZSAxMAovSW5mbyAxIDAg\nUgo+PgpzdGFydHhyZWYKODQzMwolJUVPRgo=\n\n \n \n \n \n 08155914\n \n Parkietje B.V.\n \n \n Brouwerijstraat 26\n Enschede\n 7523XD\n \n NL\n \n \n \n NL817575546B01\n \n VAT\n \n \n \n Parkietje B.V.\n 08155914\n \n \n info@dev.null.moneybird.net\n \n \n \n \n \n \n Foobar Holding B.V.\n \n \n Hoofdstraat 12\n Amsterdam\n 1234AB\n \n NL\n \n \n \n Foobar Holding B.V.\n \n \n info@example.com\n \n \n \n \n 30\n 2019-10-15\n RF320000000000000QMXJFKFM\n \n NL50TEST0166567191\n \n \n TESTNL2A\n \n \n \n \n \n We verzoeken u vriendelijk het bovenstaande bedrag van € 363,00 voor 15-10-2019 te voldoen op onze bankrekening onder vermelding van de omschrijving RF32QMXJFKFM. Voor vragen kunt u contact opnemen per e-mail.\n \n \n 63.0\n \n 300.0\n 63.0\n \n S\n 21.0\n \n VAT\n \n \n \n \n \n 300.0\n 300.0\n 363.0\n 0\n 363.0\n \n \n 1\n 1.0\n 300.0\n \n Project X\n Project X\n \n S\n 21.0\n \n VAT\n \n \n \n \n 300.0\n \n \n\n"
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenInvoiceDoesNotExist": {
"summary": "Returns 404 when invoice does not exist",
"value": {
"error": "record not found",
"symbolic": {
"id": "not_found"
}
}
}
}
}
}
}
},
"operationId": "get_administration_id_sales_invoices_id_download_ubl"
}
},
"/{administration_id}/sales_invoices/{id}/duplicate_creditinvoice{format}": {
"patch": {
"summary": "Duplicate to credit invoice",
"description": "Duplicate a sales invoice to a new credit invoice.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"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": {
"unevaluatedProperties": false,
"type": "object",
"properties": {
"detail_ids": {
"type": "array",
"items": {
"$ref": "#/components/schemas/identifier"
},
"description": "The invoice lines to credit. When left out, all lines of the invoice are credited."
}
}
},
"examples": {
"CreditsOnlyTheGivenLinesWhenDetailIdsAreSentAsStrings": {
"summary": "Credits only the given lines when detail ids are sent as strings",
"value": {
"detail_ids": [
"502689153534657973"
]
}
},
"CreatesACreditInvoiceForASalesInvoice": {
"summary": "Creates a credit invoice for a sales invoice",
"value": {}
}
}
}
}
},
"responses": {
"200": {
"description": "Sales invoice updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/sales_invoice_response"
},
"examples": {
"CreditsOnlyTheGivenLinesWhenDetailIdsAreSentAsStrings": {
"summary": "Credits only the given lines when detail ids are sent as strings",
"value": {
"id": "502689153655244229",
"administration_id": 123,
"contact_id": "502689153504249266",
"contact": {
"id": "502689153504249266",
"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-11-02T12:15:56.553Z",
"updated_at": "2026-11-02T12:15:56.553Z",
"version": 1793621756,
"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,
"invoice_id": null,
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": 2,
"state": "draft",
"invoice_date": null,
"due_date": "2026-11-16",
"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": "502689153532560820",
"paused": false,
"paid_at": null,
"sent_at": null,
"created_at": "2026-11-02T12:15:56.697Z",
"updated_at": "2026-11-02T12:15:56.702Z",
"public_view_code": null,
"public_view_code_expires_at": null,
"version": 1793621756,
"details": [
{
"id": "502689153657341382",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": null,
"amount_decimal": "1.0",
"description": "**Creditfactuur voor factuur 2026-0001**",
"price": "0.0",
"period": null,
"row_order": 1,
"total_price_excl_tax_with_discount": "0.0",
"total_price_excl_tax_with_discount_base": "0.0",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": "",
"created_at": "2026-11-02T12:15:56.699Z",
"updated_at": "2026-11-02T12:15:56.699Z"
},
{
"id": "502689153659438535",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "-1 x",
"amount_decimal": "-1.0",
"description": "Project X",
"price": "300.0",
"period": null,
"row_order": 2,
"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-11-02T12:15:56.701Z",
"updated_at": "2026-11-02T12:15:56.701Z"
}
],
"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": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/7892c37b1976d91ff852c1464a00d3da613b63d6c981de81cda7973fb90f13df/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/7892c37b1976d91ff852c1464a00d3da613b63d6c981de81cda7973fb90f13df/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "credit_invoice_created_from_original",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"original_invoice": "2026-0001"
},
"created_at": "2026-11-02T12:15:56.704Z",
"updated_at": "2026-11-02T12:15:56.704Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "-300.0",
"taxable_amount_base": "-300.0",
"tax_amount": "-63.0",
"tax_amount_base": "-63.0"
}
],
"time_entries": []
}
},
"CreatesACreditInvoiceForASalesInvoice": {
"summary": "Creates a credit invoice for a sales invoice",
"value": {
"id": "502689153858667996",
"administration_id": 123,
"contact_id": "502689153699284426",
"contact": {
"id": "502689153699284426",
"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-11-02T12:15:56.739Z",
"updated_at": "2026-11-02T12:15:56.739Z",
"version": 1793621756,
"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,
"invoice_id": null,
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": 2,
"state": "draft",
"invoice_date": null,
"due_date": "2026-11-16",
"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": "502689153729693132",
"paused": false,
"paid_at": null,
"sent_at": null,
"created_at": "2026-11-02T12:15:56.891Z",
"updated_at": "2026-11-02T12:15:56.895Z",
"public_view_code": null,
"public_view_code_expires_at": null,
"version": 1793621756,
"details": [
{
"id": "502689153860765149",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": null,
"amount_decimal": "1.0",
"description": "**Creditfactuur voor factuur 2026-0001**",
"price": "0.0",
"period": null,
"row_order": 1,
"total_price_excl_tax_with_discount": "0.0",
"total_price_excl_tax_with_discount_base": "0.0",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": "",
"created_at": "2026-11-02T12:15:56.893Z",
"updated_at": "2026-11-02T12:15:56.893Z"
},
{
"id": "502689153861813726",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "-1 x",
"amount_decimal": "-1.0",
"description": "Project X",
"price": "300.0",
"period": null,
"row_order": 2,
"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-11-02T12:15:56.895Z",
"updated_at": "2026-11-02T12:15:56.895Z"
}
],
"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": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/a21654f7d7a424028ca00efec01c6fe27ef1f9682288b03dff258438e31a564e/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/a21654f7d7a424028ca00efec01c6fe27ef1f9682288b03dff258438e31a564e/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "credit_invoice_created_from_original",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"original_invoice": "2026-0001"
},
"created_at": "2026-11-02T12:15:56.897Z",
"updated_at": "2026-11-02T12:15:56.897Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "-300.0",
"taxable_amount_base": "-300.0",
"tax_amount": "-63.0",
"tax_amount_base": "-63.0"
}
],
"time_entries": []
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400_bad_request"
},
"402": {
"$ref": "#/components/responses/402_payment_required"
},
"404": {
"$ref": "#/components/responses/404_not_found"
}
},
"operationId": "patch_administration_id_sales_invoices_id_duplicate_creditinvoice"
}
},
"/{administration_id}/sales_invoices/{id}/mark_as_dubious{format}": {
"patch": {
"summary": "Mark as dubious",
"description": "This endpoint marks a sales invoice as dubious.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"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": {
"unevaluatedProperties": false,
"type": "object",
"properties": {
"dubious_date": {
"type": "string",
"format": "date"
}
},
"required": []
},
"examples": {
"MarksTheSalesInvoiceAsDubious": {
"summary": "Marks the sales invoice as dubious",
"value": {}
}
}
}
}
},
"responses": {
"200": {
"description": "Sales invoice updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/sales_invoice_response"
},
"examples": {
"MarksTheSalesInvoiceAsDubious": {
"summary": "Marks the sales invoice as dubious",
"value": {
"id": "502689152317261031",
"administration_id": 123,
"contact_id": "502689152293143781",
"contact": {
"id": "502689152293143781",
"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-11-02T12:15:55.398Z",
"updated_at": "2026-11-02T12:15:55.398Z",
"version": 1793621755,
"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,
"invoice_id": "2026-0001",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF4900000000000002UK9MZE3",
"short_payment_reference": "RF492UK9MZE3",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:15:55.422Z",
"updated_at": "2026-11-02T12:15:55.524Z",
"public_view_code": "916990",
"public_view_code_expires_at": "2027-02-02T12:15:55.458Z",
"version": 1793621755,
"details": [
{
"id": "502689152320406760",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:15:55.425Z",
"updated_at": "2026-11-02T12:15:55.482Z"
}
],
"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": "2026-11-02",
"marked_uncollectible_on": null,
"reminder_count": 0,
"next_reminder": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/e856f12474d1b4227e8f3fda8c323029d0fb1b643b44c44535a3f218ca727cd6/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/e856f12474d1b4227e8f3fda8c323029d0fb1b643b44c44535a3f218ca727cd6/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:55.428Z",
"updated_at": "2026-11-02T12:15:55.428Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:55.465Z",
"updated_at": "2026-11-02T12:15:55.465Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "info@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0001 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:15:55.498Z",
"updated_at": "2026-11-02T12:15:55.498Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_marked_as_dubious",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:55.527Z",
"updated_at": "2026-11-02T12:15:55.527Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400_bad_request"
},
"404": {
"$ref": "#/components/responses/404_not_found"
}
},
"operationId": "patch_administration_id_sales_invoices_id_mark_as_dubious"
}
},
"/{administration_id}/sales_invoices/{id}/mark_as_uncollectible{format}": {
"patch": {
"summary": "Mark as uncollectible",
"description": "This endpoint marks a sales invoice as uncollectible.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"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": {
"unevaluatedProperties": false,
"type": "object",
"properties": {
"uncollectible_date": {
"type": "string",
"format": "date"
},
"book_method": {
"type": "string",
"description": "Can be `revenue`."
}
},
"required": []
},
"examples": {
"MarksTheSalesInvoiceAsUncollectibleUsingTheUncollectibleRevenue": {
"summary": "Marks the sales invoice as uncollectible using the uncollectible revenue",
"value": {}
}
}
}
}
},
"responses": {
"200": {
"description": "Sales invoice updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/sales_invoice_response"
},
"examples": {
"MarksTheSalesInvoiceAsUncollectibleUsingTheUncollectibleRevenue": {
"summary": "Marks the sales invoice as uncollectible using the uncollectible revenue",
"value": {
"id": "502689155165193879",
"administration_id": 123,
"contact_id": "502689155135833749",
"contact": {
"id": "502689155135833749",
"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-11-02T12:15:58.110Z",
"updated_at": "2026-11-02T12:15:58.110Z",
"version": 1793621758,
"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,
"invoice_id": "2026-0001",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "uncollectible",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF770000000000000TXVCPMPE",
"short_payment_reference": "RF77TXVCPMPE",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:15:58.137Z",
"updated_at": "2026-11-02T12:15:58.268Z",
"public_view_code": "924499",
"public_view_code_expires_at": "2027-02-02T12:15:58.170Z",
"version": 1793621758,
"details": [
{
"id": "502689155167291032",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:15:58.139Z",
"updated_at": "2026-11-02T12:15:58.267Z"
}
],
"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": "2026-11-02",
"reminder_count": 0,
"next_reminder": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/9706c42ea91acfbc401fede7922fe6ca67c834e8594266b1e3b4e4bac0e2df1d/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/9706c42ea91acfbc401fede7922fe6ca67c834e8594266b1e3b4e4bac0e2df1d/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:58.142Z",
"updated_at": "2026-11-02T12:15:58.142Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:58.176Z",
"updated_at": "2026-11-02T12:15:58.176Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "info@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0001 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:15:58.205Z",
"updated_at": "2026-11-02T12:15:58.205Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_uncollectible",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:58.257Z",
"updated_at": "2026-11-02T12:15:58.257Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_marked_as_uncollectible",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:58.271Z",
"updated_at": "2026-11-02T12:15:58.271Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400_bad_request"
},
"404": {
"$ref": "#/components/responses/404_not_found"
}
},
"operationId": "patch_administration_id_sales_invoices_id_mark_as_uncollectible"
}
},
"/{administration_id}/sales_invoices/{id}/pause{format}": {
"post": {
"summary": "Pause sales invoice",
"description": "This endpoint pauses a sales invoice. The automatic workflow steps will not be executed while the sales invoice is paused.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"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": {
"unevaluatedProperties": false,
"type": "object"
},
"examples": {
"PausesTheSalesInvoice": {
"summary": "Pauses the sales invoice",
"value": {}
}
}
}
}
},
"responses": {
"201": {
"description": "Sales invoice paused",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/sales_invoice_response"
},
"examples": {
"PausesTheSalesInvoice": {
"summary": "Pauses the sales invoice",
"value": {
"id": "502689147718207138",
"administration_id": 123,
"contact_id": "502689147684652701",
"contact": {
"id": "502689147684652701",
"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-11-02T12:15:51.003Z",
"updated_at": "2026-11-02T12:15:51.003Z",
"version": 1793621751,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": "502689147687798431",
"contact_person": {
"id": null,
"contact_id": "502689147684652701",
"administration_id": 123,
"firstname": "Jan",
"lastname": "Janssen",
"phone": "123-456-2346",
"email": "janjanssen@dev.null.moneybird.net",
"department": "Sales",
"created_at": "2026-11-02T12:15:51.006Z",
"updated_at": "2026-11-02T12:15:51.006Z",
"version": 1793621751
},
"invoice_id": "2026-0001",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF830000000000000CW4VAGAY",
"short_payment_reference": "RF83CW4VAGAY",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": true,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:15:51.035Z",
"updated_at": "2026-11-02T12:15:51.125Z",
"public_view_code": "500724",
"public_view_code_expires_at": "2027-02-02T12:15:51.068Z",
"version": 1793621751,
"details": [
{
"id": "502689147720304291",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "1 x",
"amount_decimal": "1.0",
"description": "Project X",
"price": "300.0",
"period": "20261101..20261130",
"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-11-02T12:15:51.038Z",
"updated_at": "2026-11-02T12:15:51.088Z"
}
],
"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": "2099-01-01",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/9805196ded617c06adc44a5e19d26868a42581fb7d45ab0baf2bcc67d5487df9/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/9805196ded617c06adc44a5e19d26868a42581fb7d45ab0baf2bcc67d5487df9/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:51.040Z",
"updated_at": "2026-11-02T12:15:51.040Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:51.075Z",
"updated_at": "2026-11-02T12:15:51.075Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_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,\n\nIn de bijlage kunt u factuur 2026-0001 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:15:51.102Z",
"updated_at": "2026-11-02T12:15:51.102Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_paused",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:51.127Z",
"updated_at": "2026-11-02T12:15:51.127Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
}
}
}
}
},
"404": {
"$ref": "#/components/responses/404_not_found"
}
},
"operationId": "post_administration_id_sales_invoices_id_pause"
}
},
"/{administration_id}/sales_invoices/{id}/register_payment{format}": {
"patch": {
"summary": "Register a payment",
"description": "This endpoint is deprecated and should no longer be used. It has been replaced by [Create a payment](#post_sales_invoices_sales_invoice_id_payments).\n\n### Required scope(s)\n `sales_invoices`",
"deprecated": true,
"x-sunset": "2026-12-31",
"tags": [
"Sales invoices"
],
"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": {
"unevaluatedProperties": false,
"type": "object",
"properties": {
"payment": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"payment_date": {
"type": "string"
},
"price": {
"$ref": "#/components/schemas/money"
},
"price_base": {
"$ref": "#/components/schemas/money",
"description": "Amount paid expressed in the base currency. Required for foreign currencies."
},
"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-11-02T12:15:48.590Z",
"price": "363.0"
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "Sales invoice updated",
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": true
},
"examples": {
"RegistersPayments": {
"summary": "Registers payments",
"value": {
"id": "502689145164924332",
"administration_id": 123,
"invoice_type": "SalesInvoice",
"invoice_id": "502689145072649628",
"financial_account_id": null,
"user_id": "502689108256097381",
"payment_transaction_id": null,
"transaction_identifier": null,
"price": "363.0",
"price_base": "363.0",
"payment_date": "2026-11-02",
"credit_invoice_id": null,
"financial_mutation_id": null,
"ledger_account_id": "502689108803454083",
"linked_payment_id": null,
"manual_payment_action": null,
"created_at": "2026-11-02T12:15:48.600Z",
"updated_at": "2026-11-02T12:15:48.600Z"
}
}
}
}
}
},
"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_sales_invoices_id_register_payment"
}
},
"/{administration_id}/sales_invoices/{id}/register_payment_creditinvoice{format}": {
"patch": {
"summary": "Register a payment for a creditinvoice",
"description": "Settles a credit invoice against the sales invoice it credits. On the\nsettlements ledger account, one payment is booked on each invoice, so they\nsettle against each other. Both use today as the payment date and the total\namount of the credit invoice, so no request body values are needed.\nThe invoice must be a credit invoice, it must have an original invoice, and\nboth invoices must be in a state that accepts a payment.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"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": {
"unevaluatedProperties": false,
"type": "object"
},
"examples": {
"RegistersPaymentsForACreditInvoice": {
"summary": "Registers payments for a credit invoice",
"value": {}
}
}
}
}
},
"responses": {
"200": {
"description": "Sales invoice updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/sales_invoice_response"
},
"examples": {
"RegistersPaymentsForACreditInvoice": {
"summary": "Registers payments for a credit invoice",
"value": {
"id": "502689147314505331",
"administration_id": 123,
"contact_id": "502689147150927457",
"contact": {
"id": "502689147150927457",
"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-11-02T12:15:50.494Z",
"updated_at": "2026-11-02T12:15:50.494Z",
"version": 1793621750,
"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,
"invoice_id": "2026-0002",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "paid",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF080000000000000GPHGKG5X",
"short_payment_reference": "RF08GPHGKG5X",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": "502689147189724771",
"paused": false,
"paid_at": "2026-11-02",
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:15:50.650Z",
"updated_at": "2026-11-02T12:15:50.780Z",
"public_view_code": "119126",
"public_view_code_expires_at": "2027-02-02T12:15:50.699Z",
"version": 1793621750,
"details": [
{
"id": "502689147317651060",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": null,
"amount_decimal": "1.0",
"description": "**Creditfactuur voor factuur 2026-0001**",
"price": "0.0",
"period": null,
"row_order": 1,
"total_price_excl_tax_with_discount": "0.0",
"total_price_excl_tax_with_discount_base": "0.0",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": "",
"created_at": "2026-11-02T12:15:50.653Z",
"updated_at": "2026-11-02T12:15:50.730Z"
},
{
"id": "502689147318699637",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "-1 x",
"amount_decimal": "-1.0",
"description": "Project X",
"price": "300.0",
"period": null,
"row_order": 2,
"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-11-02T12:15:50.655Z",
"updated_at": "2026-11-02T12:15:50.732Z"
}
],
"payments": [
{
"id": "502689147440334467",
"administration_id": 123,
"invoice_type": "SalesInvoice",
"invoice_id": "502689147314505331",
"financial_account_id": null,
"user_id": "502689108256097381",
"payment_transaction_id": null,
"transaction_identifier": null,
"price": "-363.0",
"price_base": "-363.0",
"payment_date": "2026-11-02",
"credit_invoice_id": null,
"financial_mutation_id": null,
"ledger_account_id": "502689108803454086",
"linked_payment_id": null,
"manual_payment_action": null,
"created_at": "2026-11-02T12:15:50.771Z",
"updated_at": "2026-11-02T12:15:50.771Z"
}
],
"total_paid": "-363.0",
"total_unpaid": "0.0",
"total_unpaid_base": "0.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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/d17b583cf539c849b34f25ac0327094d29f443e5e7c1e762f7b9a6a89f15498f/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/d17b583cf539c849b34f25ac0327094d29f443e5e7c1e762f7b9a6a89f15498f/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "credit_invoice_created_from_original",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"original_invoice": "2026-0001"
},
"created_at": "2026-11-02T12:15:50.657Z",
"updated_at": "2026-11-02T12:15:50.657Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:50.708Z",
"updated_at": "2026-11-02T12:15:50.708Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "info@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0002 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:15:50.749Z",
"updated_at": "2026-11-02T12:15:50.749Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_paid",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:50.773Z",
"updated_at": "2026-11-02T12:15:50.773Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "-300.0",
"taxable_amount_base": "-300.0",
"tax_amount": "-63.0",
"tax_amount_base": "-63.0"
}
],
"time_entries": []
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400_bad_request"
},
"404": {
"$ref": "#/components/responses/404_not_found"
}
},
"operationId": "patch_administration_id_sales_invoices_id_register_payment_creditinvoice"
}
},
"/{administration_id}/sales_invoices/{id}/resume{format}": {
"post": {
"summary": "Resume sales invoice",
"description": "This endpoint resumes the sales invoice. The automatic workflow steps will execute again after resuming.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"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": {
"unevaluatedProperties": false,
"type": "object"
},
"examples": {
"ResumesTheSalesInvoice": {
"summary": "Resumes the sales invoice",
"value": {}
}
}
}
}
},
"responses": {
"201": {
"description": "Sales invoice resumed",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/sales_invoice_response"
},
"examples": {
"ResumesTheSalesInvoice": {
"summary": "Resumes the sales invoice",
"value": {
"id": "502689152857277788",
"administration_id": 123,
"contact_id": "502689152825820503",
"contact": {
"id": "502689152825820503",
"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-11-02T12:15:55.906Z",
"updated_at": "2026-11-02T12:15:55.906Z",
"version": 1793621755,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": "502689152827917657",
"contact_person": {
"id": null,
"contact_id": "502689152825820503",
"administration_id": 123,
"firstname": "Jan",
"lastname": "Janssen",
"phone": "123-456-2346",
"email": "janjanssen@dev.null.moneybird.net",
"department": "Sales",
"created_at": "2026-11-02T12:15:55.909Z",
"updated_at": "2026-11-02T12:15:55.909Z",
"version": 1793621755
},
"invoice_id": "2026-0001",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF690000000000000Z9P9RWGH",
"short_payment_reference": "RF69Z9P9RWGH",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:15:55.936Z",
"updated_at": "2026-11-02T12:15:56.024Z",
"public_view_code": "343978",
"public_view_code_expires_at": "2027-02-02T12:15:55.969Z",
"version": 1793621756,
"details": [
{
"id": "502689152859374941",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "1 x",
"amount_decimal": "1.0",
"description": "Project X",
"price": "300.0",
"period": "20261101..20261130",
"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-11-02T12:15:55.939Z",
"updated_at": "2026-11-02T12:15:55.989Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/6847914eb71bd3066fd75b1430c84f11db734140152979631b48a15a385bc546/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/6847914eb71bd3066fd75b1430c84f11db734140152979631b48a15a385bc546/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:55.941Z",
"updated_at": "2026-11-02T12:15:55.941Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:55.976Z",
"updated_at": "2026-11-02T12:15:55.976Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_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,\n\nIn de bijlage kunt u factuur 2026-0001 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:15:56.000Z",
"updated_at": "2026-11-02T12:15:56.000Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_unpaused",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:56.026Z",
"updated_at": "2026-11-02T12:15:56.026Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
}
}
}
}
},
"404": {
"$ref": "#/components/responses/404_not_found"
}
},
"operationId": "post_administration_id_sales_invoices_id_resume"
}
},
"/{administration_id}/sales_invoices/{id}/send_invoice{format}": {
"patch": {
"summary": "Sends an invoice",
"description": "This endpoint provides two options: sending the invoice and scheduling sending in the future. When sending\nnow, you can provide a send method, email address and message. If you don't provide any arguments, the defaults\nfrom the contact and workflow will be used. If you have sent the invoice before, then the settings from\nthe previous sending are used instead of the defaults.\n\nWhen scheduling sending, set the boolean `sending_scheduled` to true and provide an `invoice_date`.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"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": {
"unevaluatedProperties": false,
"type": "object",
"properties": {
"sales_invoice_sending": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"delivery_method": {
"type": "string",
"enum": [
"Email",
"Peppol",
"Manual"
]
},
"sending_scheduled": {
"type": [
"boolean",
"string"
],
"default": false,
"description": "Schedule the invoice to be sent in the future instead of immediately. Combine with `invoice_date` to set the date on which it is sent."
},
"deliver_ubl": {
"type": [
"boolean",
"string"
],
"description": "Attach a UBL (e-invoicing) file to the email. Only used when `delivery_method` is `Email`; defaults to the contact's UBL preference."
},
"mergeable": {
"type": [
"boolean",
"string"
],
"default": false,
"description": "When multiple scheduled invoices share the same contact, identity, workflow, document style, currency, language and invoice date, merge them into a single invoice before sending."
},
"email_address": {
"type": "string",
"description": "Recipient email address. Only used when `delivery_method` is `Email`; overrides the contact's default email address."
},
"email_message": {
"type": "string",
"description": "Message included in the email. Only used when `delivery_method` is `Email`; defaults to the workflow's invoice email text."
},
"invoice_date": {
"type": "string",
"format": "date",
"description": "When scheduling, the date on which the invoice is sent."
}
},
"required": []
}
},
"required": []
},
"examples": {
"SendsAnInvoiceViaMailWithAnUblAttachment": {
"summary": "Sends an invoice via mail with an ubl attachment",
"value": {
"sales_invoice_sending": {
"delivery_method": "Email",
"deliver_ubl": true,
"email_address": "alternative@example.com"
}
}
},
"SendsAnInvoice": {
"summary": "Sends an invoice",
"value": {}
},
"SendsAnInvoiceWithAlternativeInformation": {
"summary": "Sends an invoice with alternative information",
"value": {
"sales_invoice_sending": {
"delivery_method": "Email",
"email_address": "alternative@example.com",
"email_message": "Hi, this is my invoice with id {invoice_id}!"
}
}
},
"ScheduleSending": {
"summary": "Schedule sending",
"value": {
"sales_invoice_sending": {
"sending_scheduled": true,
"invoice_date": "2026-11-03"
}
}
},
"FallsBackToE-mailDeliveryWhenSendingSimplerinvoicingForTheSecondTime": {
"summary": "Falls back to e-mail delivery when sending simplerinvoicing for the second time",
"value": {}
}
}
}
}
},
"responses": {
"200": {
"description": "Sales invoice updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/sales_invoice_response"
},
"examples": {
"SendsAnInvoiceViaMailWithAnUblAttachment": {
"summary": "Sends an invoice via mail with an ubl attachment",
"value": {
"id": "502689143152706797",
"administration_id": 123,
"contact_id": "502689143129638123",
"contact": {
"id": "502689143129638123",
"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-11-02T12:15:46.660Z",
"updated_at": "2026-11-02T12:15:46.660Z",
"version": 1793621746,
"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,
"invoice_id": "2026-0001",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF750000000000000UQZ4HJV2",
"short_payment_reference": "RF75UQZ4HJV2",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:15:46.682Z",
"updated_at": "2026-11-02T12:15:46.750Z",
"public_view_code": "034620",
"public_view_code_expires_at": "2027-02-02T12:15:46.719Z",
"version": 1793621746,
"details": [
{
"id": "502689143155852526",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:15:46.684Z",
"updated_at": "2026-11-02T12:15:46.749Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/487f2fd9e6eafe3ddf02abc676b45be84117f25b263fadbea221392d668102e2/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/487f2fd9e6eafe3ddf02abc676b45be84117f25b263fadbea221392d668102e2/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:46.686Z",
"updated_at": "2026-11-02T12:15:46.686Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:46.725Z",
"updated_at": "2026-11-02T12:15:46.725Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "alternative@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0001 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:15:46.760Z",
"updated_at": "2026-11-02T12:15:46.760Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
},
"SendsAnInvoice": {
"summary": "Sends an invoice",
"value": {
"id": "502689143311041792",
"administration_id": 123,
"contact_id": "502689143287973118",
"contact": {
"id": "502689143287973118",
"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-11-02T12:15:46.810Z",
"updated_at": "2026-11-02T12:15:46.810Z",
"version": 1793621746,
"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,
"invoice_id": "2026-0001",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF830000000000000C375WAFR",
"short_payment_reference": "RF83C375WAFR",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:15:46.833Z",
"updated_at": "2026-11-02T12:15:46.887Z",
"public_view_code": "496025",
"public_view_code_expires_at": "2027-02-02T12:15:46.869Z",
"version": 1793621746,
"details": [
{
"id": "502689143313138945",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:15:46.835Z",
"updated_at": "2026-11-02T12:15:46.886Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/5475dd21f1fba9b48bd9e0d2324762c5780ae00abac1c2a22409aa4ac09ea3db/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/5475dd21f1fba9b48bd9e0d2324762c5780ae00abac1c2a22409aa4ac09ea3db/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:46.837Z",
"updated_at": "2026-11-02T12:15:46.837Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:46.875Z",
"updated_at": "2026-11-02T12:15:46.875Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "info@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0001 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:15:46.896Z",
"updated_at": "2026-11-02T12:15:46.896Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
},
"SendsAnInvoiceWithAlternativeInformation": {
"summary": "Sends an invoice with alternative information",
"value": {
"id": "502689143465182483",
"administration_id": 123,
"contact_id": "502689143437919505",
"contact": {
"id": "502689143437919505",
"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-11-02T12:15:46.953Z",
"updated_at": "2026-11-02T12:15:46.953Z",
"version": 1793621746,
"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,
"invoice_id": "2026-0001",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF5000000000000006YFT5Y4V",
"short_payment_reference": "RF506YFT5Y4V",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:15:46.980Z",
"updated_at": "2026-11-02T12:15:47.042Z",
"public_view_code": "812119",
"public_view_code_expires_at": "2027-02-02T12:15:47.021Z",
"version": 1793621747,
"details": [
{
"id": "502689143467279636",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:15:46.982Z",
"updated_at": "2026-11-02T12:15:47.041Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/bbd8dd7511889fa9163690f37acdaf64803073312c5186f6829a39acbe83ef65/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/bbd8dd7511889fa9163690f37acdaf64803073312c5186f6829a39acbe83ef65/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:46.985Z",
"updated_at": "2026-11-02T12:15:46.985Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:47.027Z",
"updated_at": "2026-11-02T12:15:47.027Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "alternative@example.com",
"email_message": "Hi, this is my invoice with id {invoice_id}!"
},
"created_at": "2026-11-02T12:15:47.054Z",
"updated_at": "2026-11-02T12:15:47.054Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
},
"ScheduleSending": {
"summary": "Schedule sending",
"value": {
"id": "502689144119493946",
"administration_id": 123,
"contact_id": "502689144092230968",
"contact": {
"id": "502689144092230968",
"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-11-02T12:15:47.576Z",
"updated_at": "2026-11-02T12:15:47.576Z",
"version": 1793621747,
"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,
"invoice_id": null,
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": 1,
"state": "scheduled",
"invoice_date": "2026-11-03",
"due_date": "2026-11-17",
"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-11-02T12:15:47.603Z",
"updated_at": "2026-11-02T12:15:47.650Z",
"public_view_code": null,
"public_view_code_expires_at": null,
"version": 1793621747,
"details": [
{
"id": "502689144121591099",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:15:47.605Z",
"updated_at": "2026-11-02T12:15:47.649Z"
}
],
"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": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/feeff1846a6dced7feea196dce7ecb31d984b174a809297f7ae9f2b0f20cc206/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/feeff1846a6dced7feea196dce7ecb31d984b174a809297f7ae9f2b0f20cc206/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:47.608Z",
"updated_at": "2026-11-02T12:15:47.608Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_scheduled",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:47.642Z",
"updated_at": "2026-11-02T12:15:47.642Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
},
"FallsBackToE-mailDeliveryWhenSendingSimplerinvoicingForTheSecondTime": {
"summary": "Falls back to e-mail delivery when sending simplerinvoicing for the second time",
"value": {
"id": "502689144413095247",
"administration_id": 123,
"contact_id": "502689144294606149",
"contact": {
"id": "502689144294606149",
"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-11-02T12:15:47.770Z",
"updated_at": "2026-11-02T12:15:47.860Z",
"version": 1793621747,
"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,
"invoice_id": "2026-0001",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF080000000000000WWD742ZR",
"short_payment_reference": "RF08WWD742ZR",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:15:47.884Z",
"updated_at": "2026-11-02T12:15:48.020Z",
"public_view_code": "631742",
"public_view_code_expires_at": "2027-02-02T12:15:48.019Z",
"version": 1793621748,
"details": [
{
"id": "502689144415192400",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:15:47.886Z",
"updated_at": "2026-11-02T12:15:47.968Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/41321384d3147fc20c7b27ed04c9bd887f0aedc620d086976ac10e028204b1f7/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/41321384d3147fc20c7b27ed04c9bd887f0aedc620d086976ac10e028204b1f7/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:47.888Z",
"updated_at": "2026-11-02T12:15:47.888Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:47.954Z",
"updated_at": "2026-11-02T12:15:47.954Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_si",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"si_identifier": "NL:KVK:12345678"
},
"created_at": "2026-11-02T12:15:47.984Z",
"updated_at": "2026-11-02T12:15:47.984Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "info@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0001 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:15:48.027Z",
"updated_at": "2026-11-02T12:15:48.027Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"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": {
"ReturnsErrorWhenSendingInvalidInvoiceWithoutDetails": {
"summary": "Returns error when sending invalid invoice without details",
"value": {
"error": "details cannot be empty",
"symbolic": {
"sales_invoice": "details_cannot_be_empty"
}
}
}
}
}
}
},
"404": {
"$ref": "#/components/responses/404_not_found"
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"ReturnsErrorWhenSendingInvoiceToContactWithoutEmailAddress": {
"summary": "Returns error when sending invoice to contact without email address",
"value": {
"error": {
"email_address": [
"can't be blank"
]
},
"details": {
"email_address": [
{
"error": "blank"
}
]
}
}
},
"ReturnsErrorWhenSendingInvoiceFromIdentityWithoutEmail": {
"summary": "Returns error when sending invoice from identity without email",
"value": {
"error": {
"delivery_method": [
"The sender address must contain an email address"
]
},
"details": {
"delivery_method": [
{
"error": "need_identity_email"
}
]
}
}
}
}
}
}
}
},
"operationId": "patch_administration_id_sales_invoices_id_send_invoice"
}
},
"/{administration_id}/sales_invoices/{id}{format}": {
"get": {
"summary": "Get an invoice by id",
"description": "Returns a sales invoices in the administration.\n\nNote that the link in the `url` attribute will only work if viewing invoices online has been enabled and the invoice is not a draft.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"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"
}
],
"responses": {
"200": {
"description": "A sales invoice",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/sales_invoice_response"
},
"examples": {
"ReturnsInvoiceByGivenId": {
"summary": "Returns invoice by given id",
"value": {
"id": "502689172090259288",
"administration_id": 123,
"contact_id": "502689172049364819",
"contact": {
"id": "502689172049364819",
"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-11-02T12:16:14.239Z",
"updated_at": "2026-11-02T12:16:14.239Z",
"version": 1793621774,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": "502689172054607701",
"contact_person": {
"id": null,
"contact_id": "502689172049364819",
"administration_id": 123,
"firstname": "Jan",
"lastname": "Janssen",
"phone": "123-456-2346",
"email": "janjanssen@dev.null.moneybird.net",
"department": "Sales",
"created_at": "2026-11-02T12:16:14.244Z",
"updated_at": "2026-11-02T12:16:14.244Z",
"version": 1793621774
},
"invoice_id": "2026-0001",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF120000000000000TMDVYERR",
"short_payment_reference": "RF12TMDVYERR",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:14.277Z",
"updated_at": "2026-11-02T12:16:14.353Z",
"public_view_code": "552484",
"public_view_code_expires_at": "2027-02-02T12:16:14.322Z",
"version": 1793621774,
"details": [
{
"id": "502689172092356441",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "1 x",
"amount_decimal": "1.0",
"description": "Project X",
"price": "300.0",
"period": "20261101..20261130",
"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-11-02T12:16:14.281Z",
"updated_at": "2026-11-02T12:16:14.352Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/a6a4e80b49382715203f439a066b9eb53c12509929f3ddfdc0e2d0fa2e69a756/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/a6a4e80b49382715203f439a066b9eb53c12509929f3ddfdc0e2d0fa2e69a756/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:14.284Z",
"updated_at": "2026-11-02T12:16:14.284Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:14.331Z",
"updated_at": "2026-11-02T12:16:14.331Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_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,\n\nIn de bijlage kunt u factuur 2026-0001 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:14.368Z",
"updated_at": "2026-11-02T12:16:14.368Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenInvoiceDoesNotExist": {
"summary": "Returns 404 when invoice does not exist",
"value": {
"error": "record not found",
"symbolic": {
"id": "not_found"
}
}
}
}
}
}
}
},
"operationId": "get_administration_id_sales_invoices_id"
},
"patch": {
"summary": "Update a sales invoice",
"description": "When updating a sales invoice, provide only the attributes you want to update. The other attributes will not be changed.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"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": {
"unevaluatedProperties": false,
"type": "object",
"properties": {
"sales_invoice": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"contact_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the contact associated with the sales invoice. This is mandatory when setting the contact_person_id. Should be a valid contact id."
},
"contact_person_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the contact person associated with the sales invoice. 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 invoice from the current contact record."
},
"original_estimate_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the estimate this invoice was created from. Used to link an invoice to its originating estimate."
},
"document_style_id": {
"$ref": "#/components/schemas/identifier",
"description": "Default document style is used if 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 invoice, e.g. a project code or PO number. Visible to the recipient."
},
"invoice_sequence_id": {
"type": [
"string",
"integer"
],
"description": "The sequence number that is put in the invoice number template, e.g. `0042`."
},
"remove_invoice_sequence_id": {
"type": [
"boolean",
"string"
],
"description": "Set to `true` to remove the sequence number of an invoice that is not sent yet. The next number in the sequence is then used when the invoice is sent."
},
"invoice_date": {
"type": "string",
"description": "The date of the invoice.",
"format": "date"
},
"first_due_interval": {
"type": "integer",
"description": "The number of days after the invoice date before the invoice is due."
},
"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 invoice are inclusive of tax."
},
"payment_conditions": {
"type": "string",
"description": "Free-text payment conditions printed on the invoice, e.g. \"Payment within 30 days\"."
},
"discount": {
"$ref": "#/components/schemas/number",
"description": "Discount percentage applied to the entire invoice, e.g. `10.0` for 10%."
},
"time_entry_ids": {
"type": "array",
"description": "An array of time entry IDs to associate with this invoice. Linked time entries will be marked as invoiced.",
"items": {
"$ref": "#/components/schemas/identifier"
}
},
"details_attributes": {
"$ref": "#/components/schemas/details_attributes"
},
"custom_fields_attributes": {
"$ref": "#/components/schemas/custom_fields_attributes"
}
},
"required": []
}
},
"required": []
},
"examples": {
"UpdatingTheSalesInvoiceReference": {
"summary": "Updating the sales invoice reference",
"value": {
"sales_invoice": {
"reference": "30053"
}
}
},
"AddingAndRemovingASalesInvoiceDetail": {
"summary": "Adding and removing a sales invoice detail",
"value": {
"sales_invoice": {
"details_attributes": [
{
"description": "Sofa",
"price": 199.99
},
{
"id": 502689170341234300,
"_destroy": true
}
]
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "Sales invoice updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/sales_invoice_response"
},
"examples": {
"UpdatingTheSalesInvoiceReference": {
"summary": "Updating the sales invoice reference",
"value": {
"id": "502689170106353228",
"administration_id": 123,
"contact_id": "502689170080138826",
"contact": {
"id": "502689170080138826",
"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-11-02T12:16:12.361Z",
"updated_at": "2026-11-02T12:16:12.361Z",
"version": 1793621772,
"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,
"invoice_id": "2026-0001",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF340000000000000RP6KCUZ9",
"short_payment_reference": "RF34RP6KCUZ9",
"reference": "30053",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:12.387Z",
"updated_at": "2026-11-02T12:16:12.525Z",
"public_view_code": "501378",
"public_view_code_expires_at": "2027-02-02T12:16:12.428Z",
"version": 1793621772,
"details": [
{
"id": "502689170108450381",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:16:12.389Z",
"updated_at": "2026-11-02T12:16:12.455Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/d2d6c286f73eef634c3b52c0ec1ceb844d3cdf73ef6ea31bcf1b54d3bfb6dc13/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/d2d6c286f73eef634c3b52c0ec1ceb844d3cdf73ef6ea31bcf1b54d3bfb6dc13/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:12.391Z",
"updated_at": "2026-11-02T12:16:12.391Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:12.438Z",
"updated_at": "2026-11-02T12:16:12.438Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "info@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0001 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:12.470Z",
"updated_at": "2026-11-02T12:16:12.470Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_updated",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"changes": {
"reference": [
"30052",
"30053"
],
"updated_at": [
"2026-11-02T13:16:12.456+01:00",
"2026-11-02T13:16:12.525+01:00"
]
}
},
"created_at": "2026-11-02T12:16:12.528Z",
"updated_at": "2026-11-02T12:16:12.528Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
},
"AddingAndRemovingASalesInvoiceDetail": {
"summary": "Adding and removing a sales invoice detail",
"value": {
"id": "502689170338088562",
"administration_id": 123,
"contact_id": "502689170307679856",
"contact": {
"id": "502689170307679856",
"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-11-02T12:16:12.578Z",
"updated_at": "2026-11-02T12:16:12.578Z",
"version": 1793621772,
"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,
"invoice_id": "2026-0001",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF900000000000000AZT9S7XS",
"short_payment_reference": "RF90AZT9S7XS",
"reference": "30052",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:12.607Z",
"updated_at": "2026-11-02T12:16:12.752Z",
"public_view_code": "749499",
"public_view_code_expires_at": "2027-02-02T12:16:12.646Z",
"version": 1793621772,
"details": [
{
"id": "502689170488034946",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": null,
"amount_decimal": "1.0",
"description": "Sofa",
"price": "199.99",
"period": null,
"row_order": 0,
"total_price_excl_tax_with_discount": "199.99",
"total_price_excl_tax_with_discount_base": "199.99",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:16:12.751Z",
"updated_at": "2026-11-02T12:16:12.751Z"
}
],
"payments": [],
"total_paid": "0.0",
"total_unpaid": "241.99",
"total_unpaid_base": "241.99",
"prices_are_incl_tax": false,
"total_price_excl_tax": "199.99",
"total_price_excl_tax_base": "199.99",
"total_price_incl_tax": "241.99",
"total_price_incl_tax_base": "241.99",
"total_discount": "0.0",
"marked_dubious_on": null,
"marked_uncollectible_on": null,
"reminder_count": 0,
"next_reminder": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/cab70d55759ffbc2f8a5e9ce7d8480900db4f28df6e76c6cd4255f3cc8ab521b/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/cab70d55759ffbc2f8a5e9ce7d8480900db4f28df6e76c6cd4255f3cc8ab521b/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:12.614Z",
"updated_at": "2026-11-02T12:16:12.614Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:12.653Z",
"updated_at": "2026-11-02T12:16:12.653Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "info@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0001 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:12.681Z",
"updated_at": "2026-11-02T12:16:12.681Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_updated",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"changes": {
"total_price_excl_tax": [
"300.0",
"199.99"
],
"total_price_excl_tax_base": [
"300.0",
"199.99"
],
"total_price_incl_tax": [
"363.0",
"241.99"
],
"total_price_incl_tax_base": [
"363.0",
"241.99"
],
"cached_taxes": [
[
{
"debit": 0,
"credit": "63.0",
"payable": true,
"tax_rate_id": "502689108899923082",
"report_reference": "NL/1a"
}
],
[
{
"tax_rate_id": "502689108899923082",
"report_reference": "NL/1a",
"payable": true,
"debit": 0,
"credit": "42.0"
}
]
],
"updated_at": [
"2026-11-02T13:16:12.668+01:00",
"2026-11-02T13:16:12.745+01:00"
]
}
},
"created_at": "2026-11-02T12:16:12.753Z",
"updated_at": "2026-11-02T12:16:12.753Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "199.99",
"taxable_amount_base": "199.99",
"tax_amount": "42.0",
"tax_amount_base": "42.0"
}
],
"time_entries": []
}
}
}
}
}
},
"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_sales_invoices_id"
},
"delete": {
"summary": "Delete a sales invoice",
"description": "Delete a sales invoice. Requires that the sales invoice has no pending payments and is not in a locked bookkeeping period.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"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"
}
],
"responses": {
"204": {
"description": "Sales invoice deleted"
},
"404": {
"$ref": "#/components/responses/404_not_found"
},
"422": {
"$ref": "#/components/responses/422_unprocessable_entity"
}
},
"operationId": "delete_administration_id_sales_invoices_id"
}
},
"/{administration_id}/sales_invoices/{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\nwhere the attachment can be downloaded. Use the `Location` header in the response\nto download the attachment.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"security": [
{
"bearerAuth": [
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "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": "{\"message\":\"Use the Location header to download the attachment\"}"
}
}
}
}
},
"404": {
"$ref": "#/components/responses/404_not_found"
}
},
"operationId": "get_administration_id_sales_invoices_sales_invoice_id_attachments_id_download"
}
},
"/{administration_id}/sales_invoices/{sales_invoice_id}/attachments/{id}{format}": {
"delete": {
"summary": "Delete an attachment",
"description": "Deletes an attachment of an attachable.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"security": [
{
"bearerAuth": [
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "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": {
"204": {
"description": "Attachment deleted"
},
"404": {
"$ref": "#/components/responses/404_not_found"
}
},
"operationId": "delete_administration_id_sales_invoices_sales_invoice_id_attachments_id"
}
},
"/{administration_id}/sales_invoices/{sales_invoice_id}/notes/{id}{format}": {
"delete": {
"summary": "Destroys note from entity",
"description": "Deletes a note from the sales invoice.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"security": [
{
"bearerAuth": [
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "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": {
"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 SalesInvoice",
"symbolic": {
"user": "insufficient_permissions"
}
}
}
}
}
}
}
},
"operationId": "delete_administration_id_sales_invoices_sales_invoice_id_notes_id"
}
},
"/{administration_id}/sales_invoices/{sales_invoice_id}/notes{format}": {
"post": {
"summary": "Adds note to entity",
"description": "Adds a note to the sales invoice.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"security": [
{
"bearerAuth": [
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "sales_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": 502689149679044540,
"todo": true
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Note created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/note_response"
},
"examples": {
"CreateANote": {
"summary": "Create a note",
"value": {
"id": "502689149691627474",
"administration_id": 123,
"entity_id": "502689149580478400",
"entity_type": "SalesInvoice",
"user_id": "502689108256097381",
"assignee_id": "502689149679044560",
"todo": true,
"note": "Text of the note",
"completed_at": null,
"completed_by_id": null,
"todo_type": null,
"data": {},
"created_at": "2026-11-02T12:15:52.917Z",
"updated_at": "2026-11-02T12:15:52.917Z"
}
}
}
}
}
},
"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 SalesInvoice",
"symbolic": {
"user": "insufficient_permissions"
}
}
}
}
}
}
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"ReturnsA422StatusWhenTheNoteIsNotValid": {
"summary": "Returns a 422 status when the note is not valid",
"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_sales_invoices_sales_invoice_id_notes"
}
},
"/{administration_id}/sales_invoices/{sales_invoice_id}/payments/{id}{format}": {
"delete": {
"summary": "Delete a payment",
"description": "Delete a payment from a sales invoice.\n\nWhen the payment is linked to a financial mutation, the token also needs the `bank` scope. Such a payment is\nunlinked from the mutation instead and stays on the invoice, unless it was created by linking it to that\nmutation.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"security": [
{
"bearerAuth": [
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "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": {
"204": {
"description": "Payment deleted"
},
"404": {
"$ref": "#/components/responses/404_not_found"
},
"422": {
"$ref": "#/components/responses/422_unprocessable_entity"
}
},
"operationId": "delete_administration_id_sales_invoices_sales_invoice_id_payments_id"
}
},
"/{administration_id}/sales_invoices/{sales_invoice_id}/payments{format}": {
"post": {
"summary": "Create a payment",
"description": "Registers a payment for a sales invoice.\n\nA `cash_payment` with `financial_account_id` and without `financial_mutation_id` also needs the `bank` scope.\nAn `invoices_settlement` against a purchase invoice also needs the `documents` scope.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Sales invoices"
],
"security": [
{
"bearerAuth": [
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "sales_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": {
"payment": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"payment_date": {
"type": "string",
"description": "The date on which the payment was made."
},
"price": {
"$ref": "#/components/schemas/money",
"description": "The amount paid in the document's currency."
},
"price_base": {
"$ref": "#/components/schemas/money",
"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."
},
"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). `payment_without_proof` is only accepted when the administration allows payments without proof."
},
"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-11-02T12:15:46.420Z",
"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": "502689142904194260",
"administration_id": 123,
"invoice_type": "SalesInvoice",
"invoice_id": "502689142790948036",
"financial_account_id": null,
"user_id": "502689108256097381",
"payment_transaction_id": null,
"transaction_identifier": null,
"price": "363.0",
"price_base": "363.0",
"payment_date": "2026-11-02",
"credit_invoice_id": null,
"financial_mutation_id": null,
"ledger_account_id": "502689108803454083",
"linked_payment_id": null,
"manual_payment_action": null,
"created_at": "2026-11-02T12:15:46.444Z",
"updated_at": "2026-11-02T12:15:46.444Z"
}
}
}
}
}
},
"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_sales_invoices_sales_invoice_id_payments"
}
},
"/{administration_id}/sales_invoices{format}": {
"get": {
"summary": "List all invoices",
"description": "Returns a paginated list of sales invoices in the administration.\n\nSorting with `sort=date_asc` does not work when the period includes today and the filter includes draft or scheduled invoices; the request then answers 400. Use for example `state:open|pending_payment|reminded|late|paid|uncollectible`, or a period that does not include today.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"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. Available filters:\n\n| **Filter** | **Type** | **Default** | **Description** |\n| - | - | - | - |\n| state | `String` | `all` | `all`, `draft`, `open`, `scheduled`, `pending_payment`, `late`, `reminded`, `paid` or `uncollectible` |\n| period | `String` | `this_year` | Matches on the invoice date. A period description (`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`). A custom period must have a start and an end date. It must not be longer than 10 years. For one month, use `202401..202401`, not `202401`. Without `period`, the filter does not limit the dates. The default `this_year` applies only when you send no `filter`. |\n| reference | `String` | | Select invoices with a certain reference |\n| contact_id | `Integer` | | Select invoices belonging to a certain contact |\n| recurring_sales_invoice_id | `Integer` | | Select invoices created by a certain recurring invoice |\n| workflow_id | `Integer` | | Select invoices that use a certain workflow |\n| created_after | `String` | | Select invoices created after the given time (exclusive). ISO 8601 formatted string. The time to compare with is in UTC timezone |\n| updated_after | `String` | | Select invoices updated after the given time (exclusive). ISO 8601 formatted string. The time to compare with is in UTC timezone |\n\nThe `period` filter matches on the invoice date. It does not look at the `period` of the individual details, which says which months the expenses belong to. Read `details[].period` in the response when you need those months, or use the reports endpoints, which already spread the amounts over that period. A detail's period can fall outside the filtered range, however wide you make it, so this filter cannot tell you which periods amounts fall in. Use the reports endpoints for that.\n\nYou can filter by multiple states at the same time by separating the values with a pipe (`state:draft|scheduled`). This also holds for the reference.\n\nA draft with no `invoice_date` set is only matched by a `period` when that period contains today. To list drafts irrespective of date, pass `state:draft` without a `period`; to narrow them down in time, use `created_after` or `updated_after`.",
"schema": {
"type": "string",
"default": "period:this_year"
},
"examples": {
"ReturnsAllInvoicesFilteredOnPeriod": {
"summary": "Returns all invoices filtered on period",
"value": "period:this_month"
},
"ReturnsAllSalesInvoicesCreatedAfterGivenDatetime": {
"summary": "Returns all sales invoices created after given datetime",
"value": "created_after:2026-11-01 12:16:05 UTC"
},
"ReturnsAnEmptyListWhenFilterContactIdDoesNotMatchAnyContact": {
"summary": "Returns an empty list when filter contact id does not match any contact",
"value": "contact_id:123"
},
"ReturnsTheOldestInvoicesFirstWhenSortedByDateAscending": {
"summary": "Returns the oldest invoices first when sorted by date ascending",
"value": "state:open"
},
"ReturnsOnlySalesInvoicesUpdatedAfterGivenDatetime": {
"summary": "Returns only sales invoices updated after given datetime",
"value": "updated_after:2026-11-02 12:16:13 UTC"
}
}
},
{
"$ref": "#/components/parameters/page"
},
{
"$ref": "#/components/parameters/sort"
},
{
"$ref": "#/components/parameters/per_page"
}
],
"responses": {
"200": {
"description": "A list of sales invoices",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/sales_invoice_response"
}
},
"examples": {
"ReturnsAllInvoicesFilteredOnPeriod": {
"summary": "Returns all invoices filtered on period",
"value": [
{
"id": "502689161091745267",
"administration_id": 123,
"contact_id": "502689160858961359",
"contact": {
"id": "502689160858961359",
"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-11-02T12:16:03.568Z",
"updated_at": "2026-11-02T12:16:03.568Z",
"version": 1793621763,
"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,
"invoice_id": "2026-0003",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF060000000000000JDGWQ4JP",
"short_payment_reference": "RF06JDGWQ4JP",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:03.789Z",
"updated_at": "2026-11-02T12:16:03.844Z",
"public_view_code": "937243",
"public_view_code_expires_at": "2027-02-02T12:16:03.823Z",
"version": 1793621763,
"details": [
{
"id": "502689161093842420",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:16:03.791Z",
"updated_at": "2026-11-02T12:16:03.843Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/dca9881c6c878f6bb311094abb4a470fcd3c6994fcd8f75c767eee02f55a9c17/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/dca9881c6c878f6bb311094abb4a470fcd3c6994fcd8f75c767eee02f55a9c17/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:03.794Z",
"updated_at": "2026-11-02T12:16:03.794Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:03.830Z",
"updated_at": "2026-11-02T12:16:03.830Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "info@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0003 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:03.853Z",
"updated_at": "2026-11-02T12:16:03.853Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
},
{
"id": "502689160984790500",
"administration_id": 123,
"contact_id": "502689160858961359",
"contact": {
"id": "502689160858961359",
"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-11-02T12:16:03.568Z",
"updated_at": "2026-11-02T12:16:03.568Z",
"version": 1793621763,
"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,
"invoice_id": "2026-0002",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF730000000000000PEM56TFC",
"short_payment_reference": "RF73PEM56TFC",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:03.687Z",
"updated_at": "2026-11-02T12:16:03.746Z",
"public_view_code": "773458",
"public_view_code_expires_at": "2027-02-02T12:16:03.719Z",
"version": 1793621763,
"details": [
{
"id": "502689160986887653",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:16:03.689Z",
"updated_at": "2026-11-02T12:16:03.745Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/40e4b256290cd5475acbee1ddd242135a3f48a410ba312e6fe4139e9fe3b0f3e/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/40e4b256290cd5475acbee1ddd242135a3f48a410ba312e6fe4139e9fe3b0f3e/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:03.692Z",
"updated_at": "2026-11-02T12:16:03.692Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:03.727Z",
"updated_at": "2026-11-02T12:16:03.727Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "info@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0002 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:03.759Z",
"updated_at": "2026-11-02T12:16:03.759Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
},
{
"id": "502689160891467220",
"administration_id": 123,
"contact_id": "502689160858961359",
"contact": {
"id": "502689160858961359",
"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-11-02T12:16:03.568Z",
"updated_at": "2026-11-02T12:16:03.568Z",
"version": 1793621763,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": "502689160863155665",
"contact_person": {
"id": null,
"contact_id": "502689160858961359",
"administration_id": 123,
"firstname": "Jan",
"lastname": "Janssen",
"phone": "123-456-2346",
"email": "janjanssen@dev.null.moneybird.net",
"department": "Sales",
"created_at": "2026-11-02T12:16:03.572Z",
"updated_at": "2026-11-02T12:16:03.572Z",
"version": 1793621763
},
"invoice_id": "2026-0001",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF420000000000000QUCHRVAV",
"short_payment_reference": "RF42QUCHRVAV",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:03.598Z",
"updated_at": "2026-11-02T12:16:03.652Z",
"public_view_code": "747107",
"public_view_code_expires_at": "2027-02-02T12:16:03.630Z",
"version": 1793621763,
"details": [
{
"id": "502689160893564373",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "1 x",
"amount_decimal": "1.0",
"description": "Project X",
"price": "300.0",
"period": "20261101..20261130",
"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-11-02T12:16:03.600Z",
"updated_at": "2026-11-02T12:16:03.651Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/7487b6011fe5bfd1f8cf8594f250a297d0f4ea86febe93e4b1fe66199a1c48bb/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/7487b6011fe5bfd1f8cf8594f250a297d0f4ea86febe93e4b1fe66199a1c48bb/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:03.603Z",
"updated_at": "2026-11-02T12:16:03.603Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:03.637Z",
"updated_at": "2026-11-02T12:16:03.637Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_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,\n\nIn de bijlage kunt u factuur 2026-0001 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:03.662Z",
"updated_at": "2026-11-02T12:16:03.662Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
]
},
"ReturnsPaginatedSalesInvoicesOnPage2": {
"summary": "Returns paginated sales invoices on page 2",
"value": [
{
"id": "502689161367520792",
"administration_id": 123,
"contact_id": "502689161218622979",
"contact": {
"id": "502689161218622979",
"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-11-02T12:16:03.911Z",
"updated_at": "2026-11-02T12:16:03.911Z",
"version": 1793621763,
"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,
"invoice_id": "2026-0002",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF840000000000000WGWNMATA",
"short_payment_reference": "RF84WGWNMATA",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:04.052Z",
"updated_at": "2026-11-02T12:16:04.123Z",
"public_view_code": "018198",
"public_view_code_expires_at": "2027-02-02T12:16:04.099Z",
"version": 1793621764,
"details": [
{
"id": "502689161369617945",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:16:04.054Z",
"updated_at": "2026-11-02T12:16:04.122Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/ee4d4701bbab32ef284c222304c6ff1ae23a2a2b59188ecbd0d60bba381d8e6e/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/ee4d4701bbab32ef284c222304c6ff1ae23a2a2b59188ecbd0d60bba381d8e6e/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:04.057Z",
"updated_at": "2026-11-02T12:16:04.057Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:04.107Z",
"updated_at": "2026-11-02T12:16:04.107Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "info@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0002 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:04.137Z",
"updated_at": "2026-11-02T12:16:04.137Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
]
},
"ReturnsAllSalesInvoicesCreatedAfterGivenDatetime": {
"summary": "Returns all sales invoices created after given datetime",
"value": [
{
"id": "502689163034756855",
"administration_id": 123,
"contact_id": "502689162735912659",
"contact": {
"id": "502689162735912659",
"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-11-02T12:16:05.358Z",
"updated_at": "2026-11-02T12:16:05.358Z",
"version": 1793621765,
"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,
"invoice_id": "2026-0003",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF480000000000000ZVF3HRJN",
"short_payment_reference": "RF48ZVF3HRJN",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:05.642Z",
"updated_at": "2026-11-02T12:16:05.713Z",
"public_view_code": "584893",
"public_view_code_expires_at": "2027-02-02T12:16:05.686Z",
"version": 1793621765,
"details": [
{
"id": "502689163037902584",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:16:05.645Z",
"updated_at": "2026-11-02T12:16:05.712Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/83cad103f0a20b5c7da2fdd1649427884098105c2a1bb0260d6ff1a251617474/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/83cad103f0a20b5c7da2fdd1649427884098105c2a1bb0260d6ff1a251617474/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:05.649Z",
"updated_at": "2026-11-02T12:16:05.649Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:05.694Z",
"updated_at": "2026-11-02T12:16:05.694Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "info@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0003 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:05.726Z",
"updated_at": "2026-11-02T12:16:05.726Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
},
{
"id": "502689162899490536",
"administration_id": 123,
"contact_id": "502689162735912659",
"contact": {
"id": "502689162735912659",
"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-11-02T12:16:05.358Z",
"updated_at": "2026-11-02T12:16:05.358Z",
"version": 1793621765,
"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,
"invoice_id": "2026-0002",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF210000000000000TDNUUCQZ",
"short_payment_reference": "RF21TDNUUCQZ",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:05.514Z",
"updated_at": "2026-11-02T12:16:05.585Z",
"public_view_code": "501244",
"public_view_code_expires_at": "2027-02-02T12:16:05.553Z",
"version": 1793621765,
"details": [
{
"id": "502689162901587689",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:16:05.516Z",
"updated_at": "2026-11-02T12:16:05.584Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/4b17ce037e158120594c794c1b0a77e520a5a58a20eb532f1f0eece24d0bce31/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/4b17ce037e158120594c794c1b0a77e520a5a58a20eb532f1f0eece24d0bce31/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:05.519Z",
"updated_at": "2026-11-02T12:16:05.519Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:05.563Z",
"updated_at": "2026-11-02T12:16:05.563Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "info@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0002 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:05.602Z",
"updated_at": "2026-11-02T12:16:05.602Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
},
{
"id": "502689162769467096",
"administration_id": 123,
"contact_id": "502689162735912659",
"contact": {
"id": "502689162735912659",
"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-11-02T12:16:05.358Z",
"updated_at": "2026-11-02T12:16:05.358Z",
"version": 1793621765,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": "502689162740106965",
"contact_person": {
"id": null,
"contact_id": "502689162735912659",
"administration_id": 123,
"firstname": "Jan",
"lastname": "Janssen",
"phone": "123-456-2346",
"email": "janjanssen@dev.null.moneybird.net",
"department": "Sales",
"created_at": "2026-11-02T12:16:05.362Z",
"updated_at": "2026-11-02T12:16:05.362Z",
"version": 1793621765
},
"invoice_id": "2026-0001",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF2200000000000006GHPF6HZ",
"short_payment_reference": "RF226GHPF6HZ",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:05.389Z",
"updated_at": "2026-11-02T12:16:05.458Z",
"public_view_code": "184875",
"public_view_code_expires_at": "2027-02-02T12:16:05.429Z",
"version": 1793621765,
"details": [
{
"id": "502689162771564249",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "1 x",
"amount_decimal": "1.0",
"description": "Project X",
"price": "300.0",
"period": "20261101..20261130",
"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-11-02T12:16:05.391Z",
"updated_at": "2026-11-02T12:16:05.457Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/30bf6d8cd3bf2489fc13292624ffe69734d6b8a3770b2a938c8321e5c62ecf40/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/30bf6d8cd3bf2489fc13292624ffe69734d6b8a3770b2a938c8321e5c62ecf40/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:05.394Z",
"updated_at": "2026-11-02T12:16:05.394Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:05.439Z",
"updated_at": "2026-11-02T12:16:05.439Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_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,\n\nIn de bijlage kunt u factuur 2026-0001 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:05.475Z",
"updated_at": "2026-11-02T12:16:05.475Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
]
},
"ReturnsAnEmptyListWhenFilterContactIdDoesNotMatchAnyContact": {
"summary": "Returns an empty list when filter contact id does not match any contact",
"value": []
},
"ReturnsPaginatedSalesInvoicesOnPage1": {
"summary": "Returns paginated sales invoices on page 1",
"value": [
{
"id": "502689164293048211",
"administration_id": 123,
"contact_id": "502689164030904175",
"contact": {
"id": "502689164030904175",
"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-11-02T12:16:06.592Z",
"updated_at": "2026-11-02T12:16:06.592Z",
"version": 1793621766,
"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,
"invoice_id": "2026-0003",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF98000000000000067ZGZ2DN",
"short_payment_reference": "RF9867ZGZ2DN",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:06.842Z",
"updated_at": "2026-11-02T12:16:06.907Z",
"public_view_code": "551908",
"public_view_code_expires_at": "2027-02-02T12:16:06.880Z",
"version": 1793621766,
"details": [
{
"id": "502689164295145364",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:16:06.845Z",
"updated_at": "2026-11-02T12:16:06.906Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/aaf90fb882e60ece46b4525bec3621ec747aaebdcdc48414455abb776dab5489/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/aaf90fb882e60ece46b4525bec3621ec747aaebdcdc48414455abb776dab5489/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:06.848Z",
"updated_at": "2026-11-02T12:16:06.848Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:06.888Z",
"updated_at": "2026-11-02T12:16:06.888Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "info@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0003 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:06.919Z",
"updated_at": "2026-11-02T12:16:06.919Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
]
},
"ReturnsAllInvoicesOfAnAdministration": {
"summary": "Returns all invoices of an administration",
"value": [
{
"id": "502689165113034747",
"administration_id": 123,
"contact_id": "502689164820482007",
"contact": {
"id": "502689164820482007",
"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-11-02T12:16:07.345Z",
"updated_at": "2026-11-02T12:16:07.345Z",
"version": 1793621767,
"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,
"invoice_id": "2026-0003",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF730000000000000J7SKAVG4",
"short_payment_reference": "RF73J7SKAVG4",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:07.624Z",
"updated_at": "2026-11-02T12:16:07.692Z",
"public_view_code": "362730",
"public_view_code_expires_at": "2027-02-02T12:16:07.664Z",
"version": 1793621767,
"details": [
{
"id": "502689165115131900",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:16:07.626Z",
"updated_at": "2026-11-02T12:16:07.691Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/049ab5bd8f3c649861df60e80a0ca7d098ef6e3697b280033703bbe3d82a050f/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/049ab5bd8f3c649861df60e80a0ca7d098ef6e3697b280033703bbe3d82a050f/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:07.629Z",
"updated_at": "2026-11-02T12:16:07.629Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:07.674Z",
"updated_at": "2026-11-02T12:16:07.674Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "info@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0003 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:07.706Z",
"updated_at": "2026-11-02T12:16:07.706Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
},
{
"id": "502689164986157036",
"administration_id": 123,
"contact_id": "502689164820482007",
"contact": {
"id": "502689164820482007",
"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-11-02T12:16:07.345Z",
"updated_at": "2026-11-02T12:16:07.345Z",
"version": 1793621767,
"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,
"invoice_id": "2026-0002",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF660000000000000MF76WVYR",
"short_payment_reference": "RF66MF76WVYR",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:07.503Z",
"updated_at": "2026-11-02T12:16:07.576Z",
"public_view_code": "628934",
"public_view_code_expires_at": "2027-02-02T12:16:07.547Z",
"version": 1793621767,
"details": [
{
"id": "502689164989302765",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:16:07.506Z",
"updated_at": "2026-11-02T12:16:07.575Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/2fa112dbd57b0156ab2cde4480fd29c737a6d73096c99172fd0e9e444a342901/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/2fa112dbd57b0156ab2cde4480fd29c737a6d73096c99172fd0e9e444a342901/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:07.509Z",
"updated_at": "2026-11-02T12:16:07.509Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:07.558Z",
"updated_at": "2026-11-02T12:16:07.558Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "info@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0002 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:07.590Z",
"updated_at": "2026-11-02T12:16:07.590Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
},
{
"id": "502689164855085020",
"administration_id": 123,
"contact_id": "502689164820482007",
"contact": {
"id": "502689164820482007",
"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-11-02T12:16:07.345Z",
"updated_at": "2026-11-02T12:16:07.345Z",
"version": 1793621767,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": "502689164824676313",
"contact_person": {
"id": null,
"contact_id": "502689164820482007",
"administration_id": 123,
"firstname": "Jan",
"lastname": "Janssen",
"phone": "123-456-2346",
"email": "janjanssen@dev.null.moneybird.net",
"department": "Sales",
"created_at": "2026-11-02T12:16:07.349Z",
"updated_at": "2026-11-02T12:16:07.349Z",
"version": 1793621767
},
"invoice_id": "2026-0001",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF810000000000000EMYSNNAV",
"short_payment_reference": "RF81EMYSNNAV",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:07.378Z",
"updated_at": "2026-11-02T12:16:07.443Z",
"public_view_code": "289102",
"public_view_code_expires_at": "2027-02-02T12:16:07.415Z",
"version": 1793621767,
"details": [
{
"id": "502689164858230749",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "1 x",
"amount_decimal": "1.0",
"description": "Project X",
"price": "300.0",
"period": "20261101..20261130",
"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-11-02T12:16:07.381Z",
"updated_at": "2026-11-02T12:16:07.442Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/3820c33363982d11ec7ae58aa3e0b5e3bf7168b7fffef214754171a881610f43/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/3820c33363982d11ec7ae58aa3e0b5e3bf7168b7fffef214754171a881610f43/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:07.384Z",
"updated_at": "2026-11-02T12:16:07.384Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:07.423Z",
"updated_at": "2026-11-02T12:16:07.423Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_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,\n\nIn de bijlage kunt u factuur 2026-0001 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:07.462Z",
"updated_at": "2026-11-02T12:16:07.462Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
]
},
"ReturnsTheOldestInvoicesFirstWhenSortedByDateAscending": {
"summary": "Returns the oldest invoices first when sorted by date ascending",
"value": [
{
"id": "502689165612155968",
"administration_id": 123,
"contact_id": "502689165598524479",
"contact": {
"id": "502689165598524479",
"administration_id": 123,
"company_name": "Relation 1",
"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-11-02T12:16:08.087Z",
"updated_at": "2026-11-02T12:16:08.087Z",
"version": 1793621768,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000002/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": null,
"contact_person": null,
"invoice_id": "2026-1",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2025-11-02",
"due_date": "2025-11-16",
"payment_conditions": null,
"payment_reference": "RF74000000000000000000001",
"short_payment_reference": "RF741",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:08.100Z",
"updated_at": "2026-11-02T12:16:08.103Z",
"public_view_code": "2026-1",
"public_view_code_expires_at": null,
"version": 1793621768,
"details": [
{
"id": "502689165614253121",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:16:08.102Z",
"updated_at": "2026-11-02T12:16:08.102Z"
}
],
"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",
"total_discount": "0.0",
"marked_dubious_on": null,
"marked_uncollectible_on": null,
"reminder_count": 0,
"next_reminder": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000002/a351a7268cbd32a668c67809bf616414f7057d085808226b6b081c8444756044/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000002/a351a7268cbd32a668c67809bf616414f7057d085808226b6b081c8444756044/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "100.0",
"taxable_amount_base": "100.0",
"tax_amount": "21.0",
"tax_amount_base": "21.0"
}
],
"time_entries": []
},
{
"id": "502689165295485968",
"administration_id": 123,
"contact_id": "502689165265077259",
"contact": {
"id": "502689165265077259",
"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-11-02T12:16:07.769Z",
"updated_at": "2026-11-02T12:16:07.769Z",
"version": 1793621767,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": "502689165268222989",
"contact_person": {
"id": null,
"contact_id": "502689165265077259",
"administration_id": 123,
"firstname": "Jan",
"lastname": "Janssen",
"phone": "123-456-2346",
"email": "janjanssen@dev.null.moneybird.net",
"department": "Sales",
"created_at": "2026-11-02T12:16:07.773Z",
"updated_at": "2026-11-02T12:16:07.773Z",
"version": 1793621767
},
"invoice_id": "2026-0001",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF22000000000000055NKARN9",
"short_payment_reference": "RF2255NKARN9",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:07.798Z",
"updated_at": "2026-11-02T12:16:07.867Z",
"public_view_code": "637867",
"public_view_code_expires_at": "2027-02-02T12:16:07.841Z",
"version": 1793621767,
"details": [
{
"id": "502689165298631697",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "1 x",
"amount_decimal": "1.0",
"description": "Project X",
"price": "300.0",
"period": "20261101..20261130",
"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-11-02T12:16:07.801Z",
"updated_at": "2026-11-02T12:16:07.866Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/1171e93e69e314b88a6d49785aae5b3b32eb7da769b03981e898da04c5746b55/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/1171e93e69e314b88a6d49785aae5b3b32eb7da769b03981e898da04c5746b55/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:07.805Z",
"updated_at": "2026-11-02T12:16:07.805Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:07.851Z",
"updated_at": "2026-11-02T12:16:07.851Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_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,\n\nIn de bijlage kunt u factuur 2026-0001 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:07.881Z",
"updated_at": "2026-11-02T12:16:07.881Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
},
{
"id": "502689165415023648",
"administration_id": 123,
"contact_id": "502689165265077259",
"contact": {
"id": "502689165265077259",
"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-11-02T12:16:07.769Z",
"updated_at": "2026-11-02T12:16:07.769Z",
"version": 1793621767,
"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,
"invoice_id": "2026-0002",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF490000000000000S5CUVK3K",
"short_payment_reference": "RF49S5CUVK3K",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:07.912Z",
"updated_at": "2026-11-02T12:16:07.966Z",
"public_view_code": "466528",
"public_view_code_expires_at": "2027-02-02T12:16:07.944Z",
"version": 1793621767,
"details": [
{
"id": "502689165417120801",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:16:07.914Z",
"updated_at": "2026-11-02T12:16:07.965Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/221231d2e433f8eecc518ef5e775f784b39409ea9e0738b4ea44e5157dce814b/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/221231d2e433f8eecc518ef5e775f784b39409ea9e0738b4ea44e5157dce814b/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:07.917Z",
"updated_at": "2026-11-02T12:16:07.917Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:07.951Z",
"updated_at": "2026-11-02T12:16:07.951Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "info@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0002 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:07.983Z",
"updated_at": "2026-11-02T12:16:07.983Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
},
{
"id": "502689165523026991",
"administration_id": 123,
"contact_id": "502689165265077259",
"contact": {
"id": "502689165265077259",
"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-11-02T12:16:07.769Z",
"updated_at": "2026-11-02T12:16:07.769Z",
"version": 1793621767,
"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,
"invoice_id": "2026-0003",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF640000000000000RCPWXKDD",
"short_payment_reference": "RF64RCPWXKDD",
"reference": "Project X",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:08.015Z",
"updated_at": "2026-11-02T12:16:08.064Z",
"public_view_code": "774808",
"public_view_code_expires_at": "2027-02-02T12:16:08.044Z",
"version": 1793621768,
"details": [
{
"id": "502689165525124144",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"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-11-02T12:16:08.017Z",
"updated_at": "2026-11-02T12:16:08.063Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/cc7da673fbcfbb01db2f59dfd46c12fb7b5871835d6e08ffba2b3bbf2144f588/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/cc7da673fbcfbb01db2f59dfd46c12fb7b5871835d6e08ffba2b3bbf2144f588/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:08.019Z",
"updated_at": "2026-11-02T12:16:08.019Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:08.051Z",
"updated_at": "2026-11-02T12:16:08.051Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_send_email",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"email_address": "info@example.com",
"email_message": "Geachte Foobar Holding B.V.,\n\nIn de bijlage kunt u factuur 2026-0003 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:08.074Z",
"updated_at": "2026-11-02T12:16:08.074Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
]
},
"ReturnsOnlySalesInvoicesUpdatedAfterGivenDatetime": {
"summary": "Returns only sales invoices updated after given datetime",
"value": [
{
"id": "502689165774685257",
"administration_id": 123,
"contact_id": "502689165733790788",
"contact": {
"id": "502689165733790788",
"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-11-02T12:16:08.216Z",
"updated_at": "2026-11-02T12:16:08.216Z",
"version": 1793621768,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": "502689165737985094",
"contact_person": {
"id": null,
"contact_id": "502689165733790788",
"administration_id": 123,
"firstname": "Jan",
"lastname": "Janssen",
"phone": "123-456-2346",
"email": "janjanssen@dev.null.moneybird.net",
"department": "Sales",
"created_at": "2026-11-02T12:16:08.221Z",
"updated_at": "2026-11-02T12:16:08.221Z",
"version": 1793621768
},
"invoice_id": "2026-0001",
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": null,
"state": "open",
"invoice_date": "2026-11-02",
"due_date": "2026-11-16",
"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": "RF600000000000000E5JU4VH9",
"short_payment_reference": "RF60E5JU4VH9",
"reference": "foo",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": "2026-11-02",
"created_at": "2026-11-02T12:16:08.255Z",
"updated_at": "2026-11-02T12:17:13.646Z",
"public_view_code": "119206",
"public_view_code_expires_at": "2027-02-02T12:16:08.297Z",
"version": 1793621833,
"details": [
{
"id": "502689165777830986",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": "1 x",
"amount_decimal": "1.0",
"description": "Project X",
"price": "300.0",
"period": "20261101..20261130",
"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-11-02T12:16:08.258Z",
"updated_at": "2026-11-02T12:16:08.323Z"
}
],
"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": "2026-11-16",
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/b3a4dd4c9bb5e7573dd717b11c23badeb0a6dae30c444d66d1427ac8d32a1ce6/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/b3a4dd4c9bb5e7573dd717b11c23badeb0a6dae30c444d66d1427ac8d32a1ce6/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:08.261Z",
"updated_at": "2026-11-02T12:16:08.261Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_open",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:08.305Z",
"updated_at": "2026-11-02T12:16:08.305Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_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,\n\nIn de bijlage kunt u factuur 2026-0001 voor onze diensten vinden. Wij verzoeken u vriendelijk de factuur voor 16-11-2026 te voldoen.\n\nMet vriendelijke groet,\n\nParkietje B.V."
},
"created_at": "2026-11-02T12:16:08.338Z",
"updated_at": "2026-11-02T12:16:08.338Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "300.0",
"taxable_amount_base": "300.0",
"tax_amount": "63.0",
"tax_amount_base": "63.0"
}
],
"time_entries": []
}
]
},
"ReturnsAllInvoicesFilteredOnState": {
"summary": "Returns all invoices filtered on state",
"value": []
},
"ReturnsAnEmptyPageBeyondTheLastOne": {
"summary": "Returns an empty page beyond the last one",
"value": []
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsA400ErrorWhenSortedByDateAscendingWithDraftsInTheFilter": {
"summary": "Returns a 400 error when sorted by date ascending with drafts in the filter",
"value": {
"error": "sort date_asc does not work when the period includes today and the filter includes draft or scheduled invoices. Use for example state:open|pending_payment|reminded|late|paid|uncollectible, or a period that does not include today."
}
},
"GiveA400ErrorWhenTheDateRangeIsFromTheBeginningOfTime": {
"summary": "Give a 400 error when the date range is from the beginning of time",
"value": {
"error": "Period must have both a start and end date"
}
},
"ReturnsAnErrorWhenTooManySalesInvoicesAreRequested": {
"summary": "Returns an error when too many sales invoices are requested",
"value": {
"error": "per_page does not have a valid value"
}
},
"GiveA400ErrorWhenTheDateRangeIsUntilTheEndOfTime": {
"summary": "Give a 400 error when the date range is until the end of time",
"value": {
"error": "Period must have both a start and end date"
}
},
"ReturnsAnErrorWhenThePageIsOutOfRange": {
"summary": "Returns an error when the page is out of range",
"value": {
"error": "page does not have a valid value"
}
}
}
}
}
}
},
"operationId": "get_administration_id_sales_invoices"
},
"post": {
"summary": "Create a sales invoice",
"description": "Create a sales invoice with the parameters defined in the request body.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"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": {
"sales_invoice": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"contact_id": {
"$ref": "#/components/schemas/identifier"
},
"contact_person_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the contact person associated with the sales invoice. Should be a valid contact person id."
},
"original_estimate_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the estimate this invoice was created from. Used to link an invoice to its originating estimate."
},
"document_style_id": {
"$ref": "#/components/schemas/identifier",
"description": "Default document style is used if 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 invoice, e.g. a project code or PO number. Visible to the recipient."
},
"invoice_sequence_id": {
"type": [
"string",
"integer"
],
"description": "The sequence number that is put in the invoice number template, e.g. `0042`. If not provided, the next number in the sequence is used when the invoice is sent."
},
"invoice_date": {
"type": "string",
"description": "When left empty, it is filled in when the invoice is sent.",
"format": "date"
},
"first_due_interval": {
"type": "integer",
"description": "The number of days after the invoice date before the invoice is due. Defaults to the first workflow step's due interval."
},
"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 invoice are inclusive of tax. Defaults to the workflow's setting."
},
"payment_conditions": {
"type": "string",
"description": "Free-text payment conditions printed on the invoice, e.g. \"Payment within 30 days\". Defaults to the workflow's payment conditions."
},
"discount": {
"$ref": "#/components/schemas/number",
"description": "Discount percentage applied to the entire invoice, e.g. `10.0` for 10%."
},
"time_entry_ids": {
"type": "array",
"description": "An array of time entry IDs to associate with this invoice. Linked time entries will be marked as invoiced.",
"items": {
"$ref": "#/components/schemas/identifier"
}
},
"details_attributes": {
"$ref": "#/components/schemas/details_attributes"
},
"custom_fields_attributes": {
"$ref": "#/components/schemas/custom_fields_attributes"
}
},
"required": [
"contact_id"
]
},
"from_payment_request": {
"type": [
"boolean",
"string"
],
"description": "Set to `true` when the invoice was created from a Moneybird payment request."
}
},
"required": [
"sales_invoice"
]
},
"examples": {
"CreateABasicSalesInvoice": {
"summary": "Create a basic sales invoice",
"value": {
"sales_invoice": {
"reference": "30052",
"contact_id": 502689148829697860,
"details_attributes": [
{
"description": "Rocking Chair",
"price": 129.95
}
]
}
}
},
"CreateASalesInvoiceInAForeignCurrency": {
"summary": "Create a sales invoice in a foreign currency",
"value": {
"sales_invoice": {
"reference": "30052",
"contact_id": 502689149012150100,
"currency": "USD",
"details_attributes": [
{
"description": "Rocking Chair",
"price": 159.99,
"tax_rate_id": 502689149108619140
}
]
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Sales invoice created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/sales_invoice_response"
},
"examples": {
"CreateABasicSalesInvoice": {
"summary": "Create a basic sales invoice",
"value": {
"id": "502689148973352793",
"administration_id": 123,
"contact_id": "502689148829697860",
"contact": {
"id": "502689148829697860",
"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-11-02T12:15:52.095Z",
"updated_at": "2026-11-02T12:15:52.095Z",
"version": 1793621752,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all",
"notes": [],
"custom_fields": [],
"contact_people": [
{
"id": "502689148832843590",
"contact_id": "502689148829697860",
"administration_id": 123,
"firstname": "Jan",
"lastname": "Janssen",
"phone": "123-456-2346",
"email": "janjanssen@dev.null.moneybird.net",
"department": "Sales",
"created_at": "2026-11-02T12:15:52.099Z",
"updated_at": "2026-11-02T12:15:52.099Z",
"version": 1793621752
}
],
"archived": false
},
"contact_person_id": null,
"contact_person": null,
"invoice_id": null,
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": 2,
"state": "draft",
"invoice_date": null,
"due_date": "2026-11-16",
"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": "30052",
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": null,
"created_at": "2026-11-02T12:15:52.232Z",
"updated_at": "2026-11-02T12:15:52.236Z",
"public_view_code": null,
"public_view_code_expires_at": null,
"version": 1793621752,
"details": [
{
"id": "502689148975449946",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": null,
"amount_decimal": "1.0",
"description": "Rocking Chair",
"price": "129.95",
"period": null,
"row_order": 0,
"total_price_excl_tax_with_discount": "129.95",
"total_price_excl_tax_with_discount_base": "129.95",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:15:52.235Z",
"updated_at": "2026-11-02T12:15:52.235Z"
}
],
"payments": [],
"total_paid": "0.0",
"total_unpaid": "157.24",
"total_unpaid_base": "157.24",
"prices_are_incl_tax": false,
"total_price_excl_tax": "129.95",
"total_price_excl_tax_base": "129.95",
"total_price_incl_tax": "157.24",
"total_price_incl_tax_base": "157.24",
"total_discount": "0.0",
"marked_dubious_on": null,
"marked_uncollectible_on": null,
"reminder_count": 0,
"next_reminder": null,
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/f7983dbdb2f0da98920e0434e918c04d6d87dc635089630429b222abd8da401c/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/f7983dbdb2f0da98920e0434e918c04d6d87dc635089630429b222abd8da401c/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:52.237Z",
"updated_at": "2026-11-02T12:15:52.237Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "129.95",
"taxable_amount_base": "129.95",
"tax_amount": "27.29",
"tax_amount_base": "27.29"
}
],
"time_entries": []
}
},
"CreateASalesInvoiceInAForeignCurrency": {
"summary": "Create a sales invoice in a foreign currency",
"value": {
"id": "502689149129590643",
"administration_id": 123,
"contact_id": "502689149012150109",
"contact": {
"id": "502689149012150109",
"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-11-02T12:15:52.269Z",
"updated_at": "2026-11-02T12:15:52.269Z",
"version": 1793621752,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/0000000000000000000000000000000000000000000000000000000000000001/all",
"notes": [],
"custom_fields": [],
"contact_people": [
{
"id": "502689149014247263",
"contact_id": "502689149012150109",
"administration_id": 123,
"firstname": "Jan",
"lastname": "Janssen",
"phone": "123-456-2346",
"email": "janjanssen@dev.null.moneybird.net",
"department": "Sales",
"created_at": "2026-11-02T12:15:52.272Z",
"updated_at": "2026-11-02T12:15:52.272Z",
"version": 1793621752
}
],
"archived": false
},
"contact_person_id": null,
"contact_person": null,
"invoice_id": null,
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": 2,
"state": "draft",
"invoice_date": null,
"due_date": "2026-11-16",
"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": "30052",
"language": "nl",
"currency": "USD",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": null,
"created_at": "2026-11-02T12:15:52.382Z",
"updated_at": "2026-11-02T12:15:52.384Z",
"public_view_code": null,
"public_view_code_expires_at": null,
"version": 1793621752,
"details": [
{
"id": "502689149131687796",
"administration_id": 123,
"tax_rate_id": "502689149108619122",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": null,
"amount_decimal": "1.0",
"description": "Rocking Chair",
"price": "159.99",
"period": null,
"row_order": 0,
"total_price_excl_tax_with_discount": "159.99",
"total_price_excl_tax_with_discount_base": "127.99",
"tax_report_reference": [
"NL/3a"
],
"mandatory_tax_text": "Intracommunautaire levering, artikel 138, lid 1, Richtlijn 2006/112",
"created_at": "2026-11-02T12:15:52.383Z",
"updated_at": "2026-11-02T12:15:52.383Z"
}
],
"payments": [],
"total_paid": "0.0",
"total_unpaid": "159.99",
"total_unpaid_base": "127.99",
"prices_are_incl_tax": false,
"total_price_excl_tax": "159.99",
"total_price_excl_tax_base": "127.99",
"total_price_incl_tax": "159.99",
"total_price_incl_tax_base": "127.99",
"total_discount": "0.0",
"marked_dubious_on": null,
"marked_uncollectible_on": null,
"reminder_count": 0,
"next_reminder": null,
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/1c683e662b08bea8afba1614ec2453af460d32d1de331afb37258a3d729c543f/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/0000000000000000000000000000000000000000000000000000000000000001/1c683e662b08bea8afba1614ec2453af460d32d1de331afb37258a3d729c543f/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:52.385Z",
"updated_at": "2026-11-02T12:15:52.385Z"
}
],
"tax_totals": [],
"time_entries": []
}
}
}
}
}
},
"402": {
"description": "Payment required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ExceedingTheMonthlySalesInvoiceLimitOnAFreePlanResultsInAnError": {
"summary": "Exceeding the monthly sales invoice limit on a free plan results in an error",
"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": {
"CreatingAnInvoiceWithAnUnknownCustomFieldIdResultsInAnError": {
"summary": "Creating an invoice with an unknown custom field id results in an error",
"value": {
"error": "Custom field with id 123456 not found for administration",
"symbolic": {
"custom_fields_attributes": "not_found"
}
}
}
}
}
}
},
"422": {
"$ref": "#/components/responses/422_unprocessable_entity"
}
},
"operationId": "post_administration_id_sales_invoices"
}
},
"/{administration_id}/sepa_credit_transfer{format}": {
"post": {
"summary": "Upload a SEPA credit transfer file to create purchase transaction batches",
"description": "Upload a SEPA credit transfer file (pain.001.001.09/Version 2019) to create purchase transaction batches. This endpoint requires an active Moneybird Banking account in the administration.\n\n### Required scope(s)\n `bank`",
"tags": [
"Purchase transactions"
],
"security": [
{
"bearerAuth": [
"bank"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
}
],
"requestBody": {
"required": true,
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"format": "binary",
"description": "SEPA credit transfer file (pain.001.001.09/Version 2019)"
},
"ledger_account_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the ledger account that all transactions in the file will be booked on. If omitted, no booking is made and the bank transaction is left to automatic booking."
},
"financial_account_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the Moneybird Banking financial account that will be linked to all the purchase transactions in the file. Must be an active Moneybird Banking account. If not provided, the financial account will be determined based on the debtor account in the file."
}
}
}
}
}
},
"responses": {
"201": {
"description": "Purchase transaction batches created successfully using the SEPA credit transfer file",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/purchase_transaction_batch_response"
}
},
"examples": {
"Returns201": {
"summary": "Returns 201",
"value": [
{
"id": "502689273889162469",
"administration_id": 123,
"financial_account_id": "502689273794790620",
"state": "open",
"identifier": "PMT20250910-STD",
"created_at": "2025-09-12T00:00:00.000Z",
"updated_at": "2025-09-12T00:00:00.000Z"
},
{
"id": "502689273893356775",
"administration_id": 123,
"financial_account_id": "502689273806324959",
"state": "open",
"identifier": "PMT20250910-INST",
"created_at": "2025-09-12T00:00:00.000Z",
"updated_at": "2025-09-12T00:00:00.000Z"
},
{
"id": "502689273895453929",
"administration_id": 123,
"financial_account_id": "502689273817859298",
"state": "open",
"identifier": "PMT20250910-SAL",
"created_at": "2025-09-12T00:00:00.000Z",
"updated_at": "2025-09-12T00:00:00.000Z"
}
]
},
"CreatesPurchaseTransactionBatchesFromASepaCreditTransferFile": {
"summary": "Creates purchase transaction batches from a sepa credit transfer file",
"value": [
{
"id": "502689274713343287",
"administration_id": 123,
"financial_account_id": "502689274624214318",
"state": "open",
"identifier": "PMT20250910-STD",
"created_at": "2025-09-12T00:00:00.000Z",
"updated_at": "2025-09-12T00:00:00.000Z"
},
{
"id": "502689274716489017",
"administration_id": 123,
"financial_account_id": "502689274631554353",
"state": "open",
"identifier": "PMT20250910-INST",
"created_at": "2025-09-12T00:00:00.000Z",
"updated_at": "2025-09-12T00:00:00.000Z"
},
{
"id": "502689274719634747",
"administration_id": 123,
"financial_account_id": "502689274638894388",
"state": "open",
"identifier": "PMT20250910-SAL",
"created_at": "2025-09-12T00:00:00.000Z",
"updated_at": "2025-09-12T00:00:00.000Z"
}
]
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"type": "object",
"required": [
"errors"
],
"properties": {
"errors": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
]
},
"examples": {
"Returns400WhenNoFileIsProvided": {
"summary": "Returns 400 when no file is provided",
"value": {
"errors": [
"File is required"
]
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns401WhenUserHasNoBankPermission": {
"summary": "Returns 401 when user has no bank permission",
"value": {
"error": "No access to bank"
}
}
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns403WhenAdministrationHasNoActiveMoneybirdBankingAccounts": {
"summary": "Returns 403 when administration has no active moneybird banking accounts",
"value": {
"error": "No access to SEPA credit transfers"
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"CreatesAnImportWithGivenIds": {
"summary": "Creates an import with given ids",
"value": {
"error": "Record not found for model name: Financial account"
}
},
"Returns404WhenNoFinancialAccountIsFound": {
"summary": "Returns 404 when no financial account is found",
"value": {
"error": "Record not found for model name: Financial account"
}
},
"Returns404WhenTheFinancialAccountIsAVatSavingsAccount": {
"summary": "Returns 404 when the financial account is a vat savings account",
"value": {
"error": "Record not found for model name: Financial account"
}
},
"Returns404WhenNoLedgerAccountIsFound": {
"summary": "Returns 404 when no ledger account is found",
"value": {
"error": "Record not found for model name: Category"
}
}
}
}
}
},
"422": {
"description": "The file is not valid SEPA credit transfer XML, or the batches in it are not valid",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"errors"
],
"properties": {
"message": {
"type": "string",
"description": "Only present when the XML is not valid."
},
"errors": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"examples": {
"Returns422WhenCreatedBatchesAreInvalid": {
"summary": "Returns 422 when created batches are invalid",
"value": {
"errors": [
"Purchase transactions is invalid",
"Amount must be greater than or equal to 0.01"
]
}
},
"Returns422WhenTheXmlIsInvalid": {
"summary": "Returns 422 when the xml is invalid",
"value": {
"message": "The XML is invalid",
"errors": [
"6:0: ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.001.001.09}CreDtTm': 'invalid-date' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.001.001.09}ISODateTime'.",
"7:0: ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.001.001.09}NbOfTxs': [facet 'pattern'] The value 'not-a-number' is not accepted by the pattern '[0-9]{1,15}'.",
"8:0: ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.001.001.09}CtrlSum': 'invalid-amount' is not a valid value of the atomic type '{urn:iso:std:iso:20022:tech:xsd:pain.001.001.09}DecimalNumber'.",
"10:0: ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.001.001.09}Nm': [facet 'minLength'] The value has a length of '0'; this underruns the allowed minimum length of '1'.",
"14:0: ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.001.001.09}PmtInfId': [facet 'minLength'] The value has a length of '0'; this underruns the allowed minimum length of '1'.",
"15:0: ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.001.001.09}PmtMtd': [facet 'enumeration'] The value 'INVALID' is not an element of the set {'CHK', 'TRF', 'TRA'}.",
"16:0: ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.001.001.09}NbOfTxs': [facet 'pattern'] The value '-1' is not accepted by the pattern '[0-9]{1,15}'.",
"18:0: ERROR: Element '{urn:iso:std:iso:20022:tech:xsd:pain.001.001.09}Dbtr': This element is not expected. Expected is one of ( {urn:iso:std:iso:20022:tech:xsd:pain.001.001.09}PmtTpInf, {urn:iso:std:iso:20022:tech:xsd:pain.001.001.09}ReqdExctnDt )."
]
}
}
}
}
}
}
},
"operationId": "post_administration_id_sepa_credit_transfer"
}
},
"/{administration_id}/subscription_templates/{id}/checkout_identifier{format}": {
"get": {
"summary": "Create online sales link [Deprecated]",
"description": "This call generates an online sales link, which enables pre-setting the contact and start date for a subscription.\n\n### Required scope(s)\n `settings`",
"deprecated": true,
"x-sunset": "2025-12-31",
"tags": [
"Subscription templates"
],
"security": [
{
"bearerAuth": [
"settings"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"$ref": "#/components/parameters/format"
},
{
"name": "contact_id",
"in": "query",
"required": false,
"schema": {
"$ref": "#/components/schemas/identifier"
},
"examples": {
"CreatesAnOnlineSalesLink": {
"summary": "Creates an online sales link",
"value": "502689262780548789"
}
}
},
{
"name": "start_date",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "date"
},
"examples": {
"CreatesAnOnlineSalesLink": {
"summary": "Creates an online sales link",
"value": "2026-11-02"
}
}
},
{
"name": "product_id",
"in": "query",
"required": false,
"schema": {
"$ref": "#/components/schemas/identifier"
},
"examples": {
"CreatesAnOnlineSalesLinkForAProduct": {
"summary": "Creates an online sales link for a product",
"value": "502689262957758172"
}
}
}
],
"responses": {
"200": {
"description": "A subscription template",
"content": {
"application/json": {
"schema": {
"type": "string"
},
"examples": {
"CreatesAnOnlineSalesLink": {
"summary": "Creates an online sales link",
"value": "http://checkout.moneybird.dev/s/MGM0NVZ0S0NFeFBkNitpait4aitQVWsvSnJJS2Frc21ySHo1a1IweUZJcHc3dU4yWmhJZ3ZDTlhnVU02TEFhZ0hscERNeXlHZWRGSFhVZndEeXBDeTU1NTNnejBUdVFQVG5vPS0tNlVIZityS0VnOTlDZXU0Ty0tYm5mV3FyWmh6eG8wN2I4enBTd3RoZz09"
},
"CreatesAnOnlineSalesLinkIfNoContactIdIsProvided": {
"summary": "Creates an online sales link if no contact id is provided",
"value": "http://checkout.moneybird.dev/s/VVM3VUhYbjdpSWFxQ1ZmSFA4WUJ6NFhIV2VBc0NCZDB5WEo2L0pwUVBFLzVwbFQ3YkpJNnZvOGg4NzNoSTVZdUlGMzV4dz09LS11YS9mS2hZM21IYWovR3FsLS1Sdmp0MVRuU3RaeDhscXdFbmNFeGpBPT0="
},
"CreatesAnOnlineSalesLinkForAProduct": {
"summary": "Creates an online sales link for a product",
"value": "http://checkout.moneybird.dev/stp/NStsMzRqaGlmN0tFVG9VcmN0dmx0Mzk0TUViQXR6UTAzZ2JwY0lJajZ5U3FuTGtoR2VUTWJXNGFrYXI4Zk9BajFzUTBoUT09LS1BSDk2VnlGVFFCakl5a1hkLS1xWFZNcnNxTk44a2JPWFdRRjI1K2Z3PT0="
}
}
}
},
"headers": {
"X-Deprecated-Endpoint": {
"description": "This endpoint is deprecated and will be removed in the future.",
"schema": {
"type": "string"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTheProductIsNotFound": {
"summary": "Returns 404 when the product is not found",
"value": {
"error": "Product not found for subscription template"
}
},
"Returns404IfContactIsNotFound": {
"summary": "Returns 404 if contact is not found",
"value": {
"error": "Record not found for model name: Contact"
}
}
}
}
}
}
},
"operationId": "get_administration_id_subscription_templates_id_checkout_identifier"
}
},
"/{administration_id}/subscription_templates/{id}/sales_link{format}": {
"post": {
"summary": "Create online sales link",
"description": "This call generates an online sales link, and allows pre-setting the contact and start date for a subscription. The link is valid for one hour\n\n### Required scope(s)\n `settings`",
"tags": [
"Subscription templates"
],
"security": [
{
"bearerAuth": [
"settings"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"$ref": "#/components/parameters/format"
},
{
"name": "contact_id",
"in": "query",
"required": false,
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"name": "start_date",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "date"
}
},
{
"name": "product_id",
"in": "query",
"required": false,
"schema": {
"$ref": "#/components/schemas/identifier"
}
}
],
"responses": {
"201": {
"description": "Online sales link created successfully",
"content": {
"application/json": {
"schema": {
"type": "string"
},
"examples": {
"CreatesAnOnlineSalesLink": {
"summary": "Creates an online sales link",
"value": "http://checkout.moneybird.dev/o/8pl2k2klrkwR"
},
"CreatesAnOnlineSalesLinkForAProduct": {
"summary": "Creates an online sales link for a product",
"value": "http://checkout.moneybird.dev/o/RVnb6b6dD6AY"
},
"CreatesAnOnlineSalesLinkIfNoContactIdIsProvided": {
"summary": "Creates an online sales link if no contact id is provided",
"value": "http://checkout.moneybird.dev/o/dV15G5j7qxYB"
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTheProductIsNotFound": {
"summary": "Returns 404 when the product is not found",
"value": {
"error": "Product not found for subscription template"
}
},
"Returns404IfContactIsNotFound": {
"summary": "Returns 404 if contact is not found",
"value": {
"error": "Record not found for model name: Contact"
}
}
}
}
}
}
},
"operationId": "post_administration_id_subscription_templates_id_sales_link"
}
},
"/{administration_id}/subscription_templates{format}": {
"get": {
"summary": "List all subscription templates",
"description": "This call retrieves a paginated list of all subscription templates available in the administration.\nEach page consists of up to 100 subscription templates. To access subsequent pages, utilize the page parameter to fetch the next set of subscription templates.\n\n### Required scope(s)\n `settings`",
"tags": [
"Subscription templates"
],
"security": [
{
"bearerAuth": [
"settings"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/per_page"
},
{
"$ref": "#/components/parameters/page"
}
],
"responses": {
"200": {
"description": "A list of subscription templates",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/subscription_template_response"
}
},
"examples": {
"ListsSubscriptionTemplatesForTheAdministration": {
"summary": "Lists subscription templates for the administration",
"value": [
{
"id": "502689262996555492",
"administration_id": 123,
"workflow_id": "502689262988166878",
"document_style_id": "502689109280556185",
"mergeable": false,
"contact_can_update": true,
"products": [
{
"id": "502689262992361187",
"administration_id": 123,
"description": "fancy product",
"title": null,
"identifier": null,
"price": "10.0",
"currency": "EUR",
"frequency": 1,
"frequency_type": "month",
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"created_at": "2026-11-02T12:17:40.970Z",
"updated_at": "2026-11-02T12:17:40.970Z"
}
]
}
]
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsA400IfPageParamIsInvalid": {
"summary": "Returns a 400 if page param is invalid",
"value": {
"error": "Page is too small",
"symbolic": {
"page": "min"
}
}
}
}
}
}
}
},
"operationId": "get_administration_id_subscription_templates"
}
},
"/{administration_id}/subscriptions/{id}/additional_charges{format}": {
"post": {
"summary": "Create an additional charge to be invoiced together with the subscription",
"description": "At the end of the current subscription period, the additional charges are merged where possible and an invoice will be created for them. The invoice will be scheduled for sending together with the subscription invoice, so that they are merged on sending.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Subscriptions"
],
"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",
"unevaluatedProperties": false,
"properties": {
"product_id": {
"$ref": "#/components/schemas/identifier"
},
"amount": {
"type": [
"string",
"integer"
],
"description": "The quantity on the invoice line, e.g. `1` or `5 x`."
},
"price": {
"$ref": "#/components/schemas/money",
"description": "The price per unit. Defaults to the price of the product for this contact at the start of the period."
},
"period": {
"type": "string",
"description": "The period the charge applies to, e.g. `20250101..20250131`, `202501..202503` or `this_month`."
},
"description": {
"type": "string"
},
"identifier": {
"type": "string",
"description": "Your own reference for this charge."
}
},
"required": [
"product_id",
"amount",
"period",
"description"
]
},
"examples": {
"CreateAUsageCharge": {
"summary": "Create a usage charge",
"value": {
"product_id": 502689128954988300,
"amount": "5 x",
"price": 100,
"period": "20210601..20210630",
"description": "Transaction Costs"
}
}
}
}
}
},
"responses": {
"201": {
"description": "Subscription additional charge created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/subscription_additional_charge_response"
},
"examples": {
"CreateAUsageCharge": {
"summary": "Create a usage charge",
"value": {
"id": "502689129138489129",
"administration_id": 123,
"contact_id": null,
"subscription_id": "502689128981202716",
"product_id": "502689128954988310",
"detail_id": null,
"amount": "5 x",
"price": "100.0",
"period": "202106..202106",
"description": "Transaction Costs"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400_bad_request"
},
"404": {
"$ref": "#/components/responses/404_not_found"
}
},
"operationId": "post_administration_id_subscriptions_id_additional_charges"
},
"get": {
"summary": "Get additional charges",
"description": "Get the additional charges of the given subscription.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Subscriptions"
],
"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 subscription additional charge",
"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": "502689127387367054",
"administration_id": 123,
"contact_id": null,
"subscription_id": "502689127227983487",
"product_id": "502689127369541260",
"detail_id": null,
"amount": "5 x",
"price": "100.0",
"period": "202106..202106",
"description": "Transaction Costs"
},
{
"id": "502689127399949969",
"administration_id": 123,
"contact_id": null,
"subscription_id": "502689127227983487",
"product_id": "502689127392609935",
"detail_id": "502689127423018643",
"amount": "5 x",
"price": "100.0",
"period": "202106..202106",
"description": "Transaction Costs"
}
]
},
"ViewsAdditionalChargesOfASubscription": {
"summary": "Views additional charges of a subscription",
"value": [
{
"id": "502689127947306694",
"administration_id": 123,
"contact_id": null,
"subscription_id": "502689127796311735",
"product_id": "502689127941015236",
"detail_id": null,
"amount": "5 x",
"price": "100.0",
"period": "202106..202106",
"description": "Transaction Costs"
}
]
}
}
}
}
},
"404": {
"$ref": "#/components/responses/404_not_found"
}
},
"operationId": "get_administration_id_subscriptions_id_additional_charges"
}
},
"/{administration_id}/subscriptions/{id}/create_and_schedule_one_off_sales_invoice{format}": {
"post": {
"summary": "Create and schedule an invoice to be sent together with the subscription",
"description": "Besides the recurring sales invoice for the subscription, you sometimes need to bill\nseparate costs like usage based charges. Ideally you want these costs to be on the\nsame invoice as the subscription invoice. This endpoint allows you to put extra invoice\ndetails on the subscription invoice.\n\nThis endpoint creates a new sales invoice and schedules it for sending on the same date as\nthe next subscription invoice. During sending, Moneybird will merge both the scheduled invoice\nand the subscription invoice. This means the contact will receive one sales invoice with\nmultiple invoice details, both from the subscription and from the one off sales invoice.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Subscriptions"
],
"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": {
"unevaluatedProperties": false,
"type": "object",
"properties": {
"sales_invoice": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"details_attributes": {
"$ref": "#/components/schemas/details_attributes"
},
"invoice_date": {
"type": "string",
"format": "date",
"description": "Date to schedule the invoice for. Defaults to the date of the next subscription invoice."
}
},
"required": []
}
},
"required": []
},
"examples": {
"CreatesASalesInvoice": {
"summary": "Creates a sales invoice",
"value": {
"sales_invoice": {
"details_attributes": {
"0": {
"description": "Extra costs subscription",
"price": "10.5"
}
}
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Sales invoice created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/sales_invoice_response"
},
"examples": {
"CreatesASalesInvoice": {
"summary": "Creates a sales invoice",
"value": {
"id": "502689125151802875",
"administration_id": 123,
"contact_id": "502689124743906794",
"contact": {
"id": "502689124743906794",
"administration_id": 123,
"company_name": "Foobar Holding B.V.",
"firstname": "",
"lastname": "",
"address1": "Hoofdstraat 12",
"address2": "",
"zipcode": "1234AB",
"city": "Amsterdam",
"country": "NL",
"phone": "",
"delivery_method": "Email",
"customer_id": "1",
"tax_number": "",
"chamber_of_commerce": "",
"bank_account": "",
"is_trusted": false,
"max_transfer_amount": null,
"attention": "",
"email": "info@example.com",
"email_ubl": true,
"send_invoices_to_attention": "",
"send_invoices_to_email": "info@example.com",
"send_estimates_to_attention": "",
"send_estimates_to_email": "info@example.com",
"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-11-02T12:15:29.113Z",
"updated_at": "2026-11-02T12:15:29.113Z",
"version": 1793621729,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/5c7680032b2f3000385c4ddde1bfd6ef4c7e00b4cdccf4f84ed32bca4ba70de0/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": null,
"contact_person": null,
"invoice_id": null,
"recurring_sales_invoice_id": null,
"subscription_id": null,
"workflow_id": "502689109097055375",
"document_style_id": "502689109280556185",
"identity_id": "502689108656653419",
"draft_id": 2,
"state": "scheduled",
"invoice_date": "2026-12-01",
"due_date": "2026-12-15",
"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": null,
"language": "nl",
"currency": "EUR",
"discount": "0.0",
"original_sales_invoice_id": null,
"paused": false,
"paid_at": null,
"sent_at": null,
"created_at": "2026-11-02T12:15:29.113Z",
"updated_at": "2026-11-02T12:15:29.113Z",
"public_view_code": null,
"public_view_code_expires_at": null,
"version": 1793621729,
"details": [
{
"id": "502689125154948604",
"administration_id": 123,
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"project_id": null,
"product_id": null,
"amount": null,
"amount_decimal": "1.0",
"description": "Extra costs subscription",
"price": "10.5",
"period": null,
"row_order": 0,
"total_price_excl_tax_with_discount": "10.5",
"total_price_excl_tax_with_discount_base": "10.5",
"tax_report_reference": [
"NL/1a"
],
"mandatory_tax_text": null,
"created_at": "2026-11-02T12:15:29.113Z",
"updated_at": "2026-11-02T12:15:29.113Z"
}
],
"payments": [],
"total_paid": "0.0",
"total_unpaid": "12.71",
"total_unpaid_base": "12.71",
"prices_are_incl_tax": false,
"total_price_excl_tax": "10.5",
"total_price_excl_tax_base": "10.5",
"total_price_incl_tax": "12.71",
"total_price_incl_tax_base": "12.71",
"total_discount": "0.0",
"marked_dubious_on": null,
"marked_uncollectible_on": null,
"reminder_count": 0,
"next_reminder": null,
"original_estimate_id": null,
"url": "http://moneybird.dev/123/external/5c7680032b2f3000385c4ddde1bfd6ef4c7e00b4cdccf4f84ed32bca4ba70de0/a1bfd70ab86828104ef4789a8a4b1e9cfcbe905dc8b9afa1f37d181af3b969b2/sales_invoice",
"payment_url": "http://moneybird.dev/123/external/5c7680032b2f3000385c4ddde1bfd6ef4c7e00b4cdccf4f84ed32bca4ba70de0/a1bfd70ab86828104ef4789a8a4b1e9cfcbe905dc8b9afa1f37d181af3b969b2/sales_invoice",
"custom_fields": [],
"notes": [],
"attachments": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:29.113Z",
"updated_at": "2026-11-02T12:15:29.113Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "sales_invoice_state_changed_to_scheduled",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:29.113Z",
"updated_at": "2026-11-02T12:15:29.113Z"
}
],
"tax_totals": [
{
"tax_rate_id": "502689108899923082",
"taxable_amount": "10.5",
"taxable_amount_base": "10.5",
"tax_amount": "2.21",
"tax_amount_base": "2.21"
}
],
"time_entries": []
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400_bad_request"
},
"402": {
"$ref": "#/components/responses/402_payment_required"
},
"404": {
"$ref": "#/components/responses/404_not_found"
}
},
"operationId": "post_administration_id_subscriptions_id_create_and_schedule_one_off_sales_invoice"
}
},
"/{administration_id}/subscriptions/{id}{format}": {
"get": {
"summary": "Get subscription",
"description": "Get a subscription.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Subscriptions"
],
"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"
}
],
"responses": {
"200": {
"description": "A subscription",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/subscription_response"
},
"examples": {
"ReturnsASubscription": {
"summary": "Returns a subscription",
"value": {
"id": "502689126966888044",
"administration_id": 123,
"start_date": "2017-01-01",
"end_date": null,
"frequency": 1,
"frequency_type": "month",
"reference": null,
"cancelled_at": null,
"product_id": "502689126957450858",
"product": {
"id": "502689126957450858",
"administration_id": 123,
"description": "My product description",
"title": null,
"identifier": null,
"price": "20.0",
"currency": "EUR",
"frequency": 1,
"frequency_type": "month",
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"created_at": "2026-11-02T12:15:31.237Z",
"updated_at": "2026-11-02T12:15:31.237Z"
},
"contact_id": "502689126945916520",
"contact": {
"id": "502689126945916520",
"administration_id": 123,
"company_name": "Foobar Holding B.V.",
"firstname": "",
"lastname": "",
"address1": "Hoofdstraat 12",
"address2": "",
"zipcode": "1234AB",
"city": "Amsterdam",
"country": "NL",
"phone": "",
"delivery_method": "Email",
"customer_id": "1",
"tax_number": "",
"chamber_of_commerce": "",
"bank_account": "",
"is_trusted": false,
"max_transfer_amount": null,
"attention": "",
"email": "info@example.com",
"email_ubl": true,
"send_invoices_to_attention": "",
"send_invoices_to_email": "info@example.com",
"send_estimates_to_attention": "",
"send_estimates_to_email": "info@example.com",
"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-11-02T12:15:31.226Z",
"updated_at": "2026-11-02T12:15:31.226Z",
"version": 1793621731,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/5dc0a8cfc2717e9b9212e6f23ded8f516ce39fb4db62eee30877582192dbc05c/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": null,
"contact_person": null,
"subscription_products": [
{
"start_date": "2017-01-01",
"end_date": null,
"product_id": "502689126957450858",
"product": {
"id": "502689126957450858",
"administration_id": 123,
"description": "My product description",
"title": null,
"identifier": null,
"price": "20.0",
"currency": "EUR",
"frequency": 1,
"frequency_type": "month",
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"created_at": "2026-11-02T12:15:31.237Z",
"updated_at": "2026-11-02T12:15:31.237Z"
},
"amount": "1 x",
"discount": "0.0"
}
],
"recurring_sales_invoice_id": "502689126983665263"
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTheSubscriptionDoesNotExist": {
"summary": "Returns 404 when the subscription does not exist",
"value": {
"error": "Record not found for model name: Subscription"
}
}
}
}
}
}
},
"operationId": "get_administration_id_subscriptions_id"
},
"patch": {
"summary": "Update a subscription",
"description": "Updates the product the contact is subscribed to. This will automatically calculate the differences\nbetween the product prices and create a one off sales invoice to bill the extra charge for the remaining\nbilling period.\n\nOptionally you can provide a start date for the product change to become active.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Subscriptions"
],
"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": {
"unevaluatedProperties": false,
"type": "object",
"properties": {
"subscription": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"contact_person_id": {
"$ref": "#/components/schemas/identifier_nullable",
"description": "Should be a valid contact person id."
},
"document_style_id": {
"$ref": "#/components/schemas/identifier",
"description": "Should be a valid document style id."
},
"reference": {
"type": "string"
},
"mergeable": {
"type": [
"boolean",
"string"
],
"default": false,
"description": "Merge invoices from this subscription with other mergeable invoices for the same contact before sending. Only applies when invoices are sent automatically."
},
"prices_are_incl_tax": {
"type": [
"boolean",
"string"
],
"default": false,
"description": "Whether the amounts on the generated invoices are inclusive of tax."
},
"product_id": {
"$ref": "#/components/schemas/identifier",
"description": "Should be a valid product id."
},
"start_date": {
"type": "string",
"format": "date"
},
"amount": {
"type": "string",
"description": "Quantity of the product billed each period."
},
"discount": {
"$ref": "#/components/schemas/number",
"description": "Both a decimal and a string '10,95' are accepted."
}
},
"required": []
}
},
"required": []
},
"examples": {
"UpdatesASubscription": {
"summary": "Updates a subscription",
"value": {
"subscription": {
"product_id": 502689130665215940,
"discount": 10,
"amount": "3 x"
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "Subscription updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/subscription_response"
},
"examples": {
"UpdatesASubscription": {
"summary": "Updates a subscription",
"value": {
"id": "502689130693527487",
"administration_id": 123,
"start_date": "2017-01-01",
"end_date": null,
"frequency": 1,
"frequency_type": "month",
"reference": null,
"cancelled_at": null,
"product_id": "502689130665215927",
"product": {
"id": "502689130665215927",
"administration_id": 123,
"description": "My product description",
"title": null,
"identifier": null,
"price": "30.0",
"currency": "EUR",
"frequency": 1,
"frequency_type": "month",
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"created_at": "2026-11-02T12:15:34.772Z",
"updated_at": "2026-11-02T12:15:34.772Z"
},
"contact_id": "502689130675701691",
"contact": {
"id": "502689130675701691",
"administration_id": 123,
"company_name": "Foobar Holding B.V.",
"firstname": "",
"lastname": "",
"address1": "Hoofdstraat 12",
"address2": "",
"zipcode": "1234AB",
"city": "Amsterdam",
"country": "NL",
"phone": "",
"delivery_method": "Email",
"customer_id": "1",
"tax_number": "",
"chamber_of_commerce": "",
"bank_account": "",
"is_trusted": false,
"max_transfer_amount": null,
"attention": "",
"email": "info@example.com",
"email_ubl": true,
"send_invoices_to_attention": "",
"send_invoices_to_email": "info@example.com",
"send_estimates_to_attention": "",
"send_estimates_to_email": "info@example.com",
"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-11-02T12:15:34.783Z",
"updated_at": "2026-11-02T12:15:34.783Z",
"version": 1793621734,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/4482153dcd323a6ef304a8ac5540f8f92a3ae35921c91968287ed5bfbc18a189/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": null,
"contact_person": null,
"subscription_products": [
{
"start_date": "2017-01-01",
"end_date": "2026-11-01",
"product_id": "502689130684090301",
"product": {
"id": "502689130684090301",
"administration_id": 123,
"description": "My product description",
"title": null,
"identifier": null,
"price": "20.0",
"currency": "EUR",
"frequency": 1,
"frequency_type": "month",
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"created_at": "2026-11-02T12:15:34.791Z",
"updated_at": "2026-11-02T12:15:34.791Z"
},
"amount": "1 x",
"discount": "0.0"
},
{
"start_date": "2026-11-02",
"end_date": null,
"product_id": "502689130665215927",
"product": {
"id": "502689130665215927",
"administration_id": 123,
"description": "My product description",
"title": null,
"identifier": null,
"price": "30.0",
"currency": "EUR",
"frequency": 1,
"frequency_type": "month",
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"created_at": "2026-11-02T12:15:34.772Z",
"updated_at": "2026-11-02T12:15:34.772Z"
},
"amount": "3 x",
"discount": "10.0"
}
],
"recurring_sales_invoice_id": "502689130712401858"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400_bad_request"
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsA404IfTheSubscriptionCouldnTBeFound": {
"summary": "Returns a 404 if the subscription couldn't be found",
"value": {
"error": "record not found",
"symbolic": {
"id": "not_found"
}
}
}
}
}
}
},
"422": {
"$ref": "#/components/responses/422_unprocessable_entity"
}
},
"operationId": "patch_administration_id_subscriptions_id"
},
"delete": {
"summary": "Cancel a subscription",
"description": "Cancels the subscription. Stops the recurring sales invoice for the contact. Optionally\nyou can provide an `end_date` to stop the subscription on a future date.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Subscriptions"
],
"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": {
"unevaluatedProperties": false,
"type": "object",
"properties": {
"subscription": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"end_date": {
"type": "string",
"format": "date"
}
},
"required": []
}
},
"required": []
},
"examples": {
"CancelsASubscriptionForTheContact": {
"summary": "Cancels a subscription for the contact",
"value": {
"subscription": {
"end_date": "2026-11-04"
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "Subscription cancelled",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/subscription_response"
},
"examples": {
"CancelsASubscriptionForTheContact": {
"summary": "Cancels a subscription for the contact",
"value": {
"id": "502689129446770499",
"administration_id": 123,
"start_date": "2017-01-01",
"end_date": "2026-11-04",
"frequency": 1,
"frequency_type": "month",
"reference": null,
"cancelled_at": "2026-11-02T12:15:33.785Z",
"product_id": "502689129433139009",
"product": {
"id": "502689129433139009",
"administration_id": 123,
"description": "My product description",
"title": null,
"identifier": null,
"price": "20.0",
"currency": "EUR",
"frequency": 1,
"frequency_type": "month",
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"created_at": "2026-11-02T12:15:33.598Z",
"updated_at": "2026-11-02T12:15:33.598Z"
},
"contact_id": "502689129420556095",
"contact": {
"id": "502689129420556095",
"administration_id": 123,
"company_name": "Foobar Holding B.V.",
"firstname": "",
"lastname": "",
"address1": "Hoofdstraat 12",
"address2": "",
"zipcode": "1234AB",
"city": "Amsterdam",
"country": "NL",
"phone": "",
"delivery_method": "Email",
"customer_id": "1",
"tax_number": "",
"chamber_of_commerce": "",
"bank_account": "",
"is_trusted": false,
"max_transfer_amount": null,
"attention": "",
"email": "info@example.com",
"email_ubl": true,
"send_invoices_to_attention": "",
"send_invoices_to_email": "info@example.com",
"send_estimates_to_attention": "",
"send_estimates_to_email": "info@example.com",
"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-11-02T12:15:33.585Z",
"updated_at": "2026-11-02T12:15:33.585Z",
"version": 1793621733,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/ea9b097d6aed3a9a4b1a3dfdb8780dd6d4aae6273e4de20ac155ad5a8c76f916/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": null,
"contact_person": null,
"subscription_products": [
{
"start_date": "2017-01-01",
"end_date": "2026-11-04",
"product_id": "502689129433139009",
"product": {
"id": "502689129433139009",
"administration_id": 123,
"description": "My product description",
"title": null,
"identifier": null,
"price": "20.0",
"currency": "EUR",
"frequency": 1,
"frequency_type": "month",
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"created_at": "2026-11-02T12:15:33.598Z",
"updated_at": "2026-11-02T12:15:33.598Z"
},
"amount": "1 x",
"discount": "0.0"
}
],
"recurring_sales_invoice_id": "502689129481373510"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400_bad_request"
},
"404": {
"$ref": "#/components/responses/404_not_found"
}
},
"operationId": "delete_administration_id_subscriptions_id"
}
},
"/{administration_id}/subscriptions{format}": {
"get": {
"summary": "List subscriptions of a contact",
"description": "Lists the subscriptions of a single contact. There is no endpoint that returns the subscriptions of every contact at once.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Subscriptions"
],
"security": [
{
"bearerAuth": [
"sales_invoices"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"name": "contact_id",
"in": "query",
"required": true,
"schema": {
"$ref": "#/components/schemas/identifier"
},
"examples": {
"ListsAllSubscriptionsForAContact": {
"summary": "Lists all subscriptions for a contact",
"value": "502689132511757431"
}
}
}
],
"responses": {
"200": {
"description": "A list of subscriptions",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/subscription_response"
}
},
"examples": {
"ListsAllSubscriptionsForAContact": {
"summary": "Lists all subscriptions for a contact",
"value": [
{
"id": "502689132536923259",
"administration_id": 123,
"start_date": "2017-01-01",
"end_date": null,
"frequency": 1,
"frequency_type": "month",
"reference": null,
"cancelled_at": null,
"product_id": "502689132526437497",
"product": {
"id": "502689132526437497",
"administration_id": 123,
"description": "My product description",
"title": null,
"identifier": null,
"price": "20.0",
"currency": "EUR",
"frequency": 1,
"frequency_type": "month",
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"created_at": "2026-11-02T12:15:36.547Z",
"updated_at": "2026-11-02T12:15:36.547Z"
},
"contact_id": "502689132511757431",
"contact": {
"id": "502689132511757431",
"administration_id": 123,
"company_name": "Foobar Holding B.V.",
"firstname": "",
"lastname": "",
"address1": "Hoofdstraat 12",
"address2": "",
"zipcode": "1234AB",
"city": "Amsterdam",
"country": "NL",
"phone": "",
"delivery_method": "Email",
"customer_id": "1",
"tax_number": "",
"chamber_of_commerce": "",
"bank_account": "",
"is_trusted": false,
"max_transfer_amount": null,
"attention": "",
"email": "info@example.com",
"email_ubl": true,
"send_invoices_to_attention": "",
"send_invoices_to_email": "info@example.com",
"send_estimates_to_attention": "",
"send_estimates_to_email": "info@example.com",
"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-11-02T12:15:36.533Z",
"updated_at": "2026-11-02T12:15:36.533Z",
"version": 1793621736,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/dadcbaa9db9dfe3368ea3dcdd7423e59e8a997e760ef42ad643dda983eee9efd/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": null,
"contact_person": null,
"subscription_products": [
{
"start_date": "2017-01-01",
"end_date": null,
"product_id": "502689132526437497",
"product": {
"id": "502689132526437497",
"administration_id": 123,
"description": "My product description",
"title": null,
"identifier": null,
"price": "20.0",
"currency": "EUR",
"frequency": 1,
"frequency_type": "month",
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"created_at": "2026-11-02T12:15:36.547Z",
"updated_at": "2026-11-02T12:15:36.547Z"
},
"amount": "1 x",
"discount": "0.0"
}
],
"recurring_sales_invoice_id": "502689132553700478"
}
]
}
}
}
}
}
},
"operationId": "get_administration_id_subscriptions"
},
"post": {
"summary": "Create a new subscription",
"description": "Starts a new subscription for the given contact. The `product_id` points to a product with a frequency, price and description.\nA recurring sales invoice is automatically created to bill the contact for the given frequency. The first invoice will be sent on the\nstart date, but no sooner than tomorrow. The `reference` will be added to the sales invoices.\n\nOptionally you can create a subscription with a different frequency than stored in the product. Make sure the frequency of the product\nand the provided frequency are compatible. E.g. you can bill a monthly product yearly.\n\n### Required scope(s)\n `sales_invoices`",
"tags": [
"Subscriptions"
],
"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": {
"subscription": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"start_date": {
"type": "string",
"format": "date"
},
"product_id": {
"$ref": "#/components/schemas/identifier",
"description": "Should be a valid product id."
},
"amount": {
"type": "string",
"description": "Quantity of the product billed each period."
},
"discount": {
"$ref": "#/components/schemas/number",
"description": "Both a decimal and a string '10,95' are accepted."
},
"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."
},
"end_date": {
"type": "string",
"format": "date"
},
"reference": {
"type": "string"
},
"document_style_id": {
"$ref": "#/components/schemas/identifier",
"description": "Should be a valid document style id."
},
"frequency": {
"type": "integer",
"description": "Number of periods between invoices, combined with `frequency_type`. Must be compatible with the product's frequency (e.g. a monthly product can be billed yearly). Defaults to the product's frequency."
},
"frequency_type": {
"type": "string",
"enum": [
"day",
"week",
"month",
"quarter",
"year"
],
"description": "Length of a single billing period, combined with `frequency`. Defaults to the product's frequency type."
},
"mergeable": {
"type": [
"boolean",
"string"
],
"default": false,
"description": "Merge invoices from this subscription with other mergeable invoices for the same contact before sending. Only applies when invoices are sent automatically."
},
"prices_are_incl_tax": {
"type": [
"boolean",
"string"
],
"default": false,
"description": "Whether the amounts on the generated invoices are inclusive of tax."
}
},
"required": [
"start_date",
"product_id",
"contact_id"
]
}
},
"required": [
"subscription"
]
},
"examples": {
"CreatesANewSubscriptionForTheContact": {
"summary": "Creates a new subscription for the contact",
"value": {
"subscription": {
"start_date": "2026-11-03",
"contact_id": 502689130288777100,
"product_id": 502689130300311400,
"reference": "moneybird.nl",
"discount": 10,
"amount": "5x"
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Subscription created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/subscription_response"
},
"examples": {
"CreatesANewSubscriptionForTheContact": {
"summary": "Creates a new subscription for the contact",
"value": {
"id": "502689130317088648",
"administration_id": 123,
"start_date": "2026-11-03",
"end_date": null,
"frequency": 1,
"frequency_type": "month",
"reference": "moneybird.nl",
"cancelled_at": null,
"product_id": "502689130300311430",
"product": {
"id": "502689130300311430",
"administration_id": 123,
"description": "My product description",
"title": null,
"identifier": null,
"price": "20.0",
"currency": "EUR",
"frequency": 1,
"frequency_type": "month",
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"created_at": "2026-11-02T12:15:34.425Z",
"updated_at": "2026-11-02T12:15:34.425Z"
},
"contact_id": "502689130288777092",
"contact": {
"id": "502689130288777092",
"administration_id": 123,
"company_name": "Foobar Holding B.V.",
"firstname": "",
"lastname": "",
"address1": "Hoofdstraat 12",
"address2": "",
"zipcode": "1234AB",
"city": "Amsterdam",
"country": "NL",
"phone": "",
"delivery_method": "Email",
"customer_id": "1",
"tax_number": "",
"chamber_of_commerce": "",
"bank_account": "",
"is_trusted": false,
"max_transfer_amount": null,
"attention": "",
"email": "info@example.com",
"email_ubl": true,
"send_invoices_to_attention": "",
"send_invoices_to_email": "info@example.com",
"send_estimates_to_attention": "",
"send_estimates_to_email": "info@example.com",
"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-11-02T12:15:34.413Z",
"updated_at": "2026-11-02T12:15:34.413Z",
"version": 1793621734,
"sales_invoices_url": "https://moneybird.dev/123/sales_invoices/6c8597fa07ca10fc0e34e906ea9c0780f2a85303e12b1be7e2ed4f321967ba5a/all",
"notes": [],
"custom_fields": [],
"contact_people": [],
"archived": false
},
"contact_person_id": null,
"contact_person": null,
"subscription_products": [
{
"start_date": "2026-11-03",
"end_date": null,
"product_id": "502689130300311430",
"product": {
"id": "502689130300311430",
"administration_id": 123,
"description": "My product description",
"title": null,
"identifier": null,
"price": "20.0",
"currency": "EUR",
"frequency": 1,
"frequency_type": "month",
"tax_rate_id": "502689108899923082",
"ledger_account_id": "502689108787725434",
"created_at": "2026-11-02T12:15:34.425Z",
"updated_at": "2026-11-02T12:15:34.425Z"
},
"amount": "5x",
"discount": "10.0"
}
],
"recurring_sales_invoice_id": "502689130337011595"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400_bad_request"
},
"402": {
"$ref": "#/components/responses/402_payment_required"
},
"422": {
"$ref": "#/components/responses/422_unprocessable_entity"
}
},
"operationId": "post_administration_id_subscriptions"
}
},
"/{administration_id}/task_list_groups/{id}{format}": {
"get": {
"summary": "Returns information about a task list group",
"description": "Returns information about a task list group, including its tasks.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task lists"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"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 task list group",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/task_list_group_response"
},
"examples": {
"ReturnsASingleGroup": {
"summary": "Returns a single group",
"value": {
"id": "502689197700679600",
"name": "Task list group #2",
"row_order": 1,
"report_type": null,
"created_at": "2026-11-02T12:16:38.703Z",
"updated_at": "2026-11-02T12:16:38.703Z",
"tasks": [
{
"id": "502689197701728177",
"administration_id": 123,
"name": "Task #2",
"description": "Description 2",
"row_order": 0,
"completed_at": null,
"report_type": null,
"task_lists_group_id": "502689197700679600",
"parent_task_id": null,
"created_at": "2026-11-02T12:16:38.703Z",
"updated_at": "2026-11-02T12:16:38.703Z",
"assignee_id": null,
"subtasks": [],
"notes": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:38.705Z",
"updated_at": "2026-11-02T12:16:38.705Z"
}
]
}
]
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenGroupDoesNotExist": {
"summary": "Returns 404 when group does not exist",
"value": {
"error": "Record not found for model name: Group"
}
}
}
}
}
}
},
"operationId": "get_administration_id_task_list_groups_id"
},
"patch": {
"summary": "Updates a task list group",
"description": "Updates a task list group's name or report type. Updating the report type will destroy all tasks and generate new tasks based on the new report.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task lists"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"$ref": "#/components/parameters/format"
}
],
"requestBody": {
"content": {
"application/*": {
"schema": {
"unevaluatedProperties": false,
"type": "object",
"properties": {
"group": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"name": {
"type": "string"
},
"report_type": {
"type": "string",
"enum": [
"balance_sheet",
"profit_loss",
"debtor",
"creditor",
"assets"
],
"description": "Report this group is based on; its tasks are generated from the report."
}
}
}
}
},
"examples": {
"UpdatesAGroupWithoutParams": {
"summary": "Updates a group without params",
"value": {}
},
"UpdatesAGroup": {
"summary": "Updates a group",
"value": {
"group": {
"name": "Updated Group"
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "Group updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/task_list_group_response"
},
"examples": {
"UpdatesAGroupWithoutParams": {
"summary": "Updates a group without params",
"value": {
"id": "502689198056145921",
"name": "Task list group #2",
"row_order": 1,
"report_type": null,
"created_at": "2026-11-02T12:16:39.042Z",
"updated_at": "2026-11-02T12:16:39.042Z",
"tasks": [
{
"id": "502689198057194498",
"administration_id": 123,
"name": "Task #2",
"description": "Description 2",
"row_order": 0,
"completed_at": null,
"report_type": null,
"task_lists_group_id": "502689198056145921",
"parent_task_id": null,
"created_at": "2026-11-02T12:16:39.042Z",
"updated_at": "2026-11-02T12:16:39.042Z",
"assignee_id": null,
"subtasks": [],
"notes": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:39.043Z",
"updated_at": "2026-11-02T12:16:39.043Z"
}
]
}
]
}
},
"UpdatesAGroup": {
"summary": "Updates a group",
"value": {
"id": "502689198100186121",
"name": "Updated Group",
"row_order": 1,
"report_type": null,
"created_at": "2026-11-02T12:16:39.084Z",
"updated_at": "2026-11-02T12:16:39.098Z",
"tasks": [
{
"id": "502689198101234698",
"administration_id": 123,
"name": "Task #2",
"description": "Description 2",
"row_order": 0,
"completed_at": null,
"report_type": null,
"task_lists_group_id": "502689198100186121",
"parent_task_id": null,
"created_at": "2026-11-02T12:16:39.084Z",
"updated_at": "2026-11-02T12:16:39.084Z",
"assignee_id": null,
"subtasks": [],
"notes": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:39.085Z",
"updated_at": "2026-11-02T12:16:39.085Z"
}
]
}
]
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenGroupDoesNotExist": {
"summary": "Returns 404 when group does not exist",
"value": {
"error": "Record not found for model name: Group"
}
}
}
}
}
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"Returns422WhenTryingToUpdateAVirtualGroup": {
"summary": "Returns 422 when trying to update a virtual group",
"value": {
"error": "The first group cannot be modified"
}
}
}
}
}
}
},
"operationId": "patch_administration_id_task_list_groups_id"
},
"delete": {
"summary": "Deletes a task list group",
"description": "Permanently deletes a task list group and all its tasks.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task lists"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"204": {
"description": "Group deleted"
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenGroupDoesNotExist": {
"summary": "Returns 404 when group does not exist",
"value": {
"error": "Record not found for model name: Group"
}
}
}
}
}
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"Returns422WhenTryingToDeleteAVirtualGroup": {
"summary": "Returns 422 when trying to delete a virtual group",
"value": {
"error": "The first group cannot be deleted"
}
}
}
}
}
}
},
"operationId": "delete_administration_id_task_list_groups_id"
}
},
"/{administration_id}/task_list_groups/{task_list_group_id}/tasks{format}": {
"post": {
"summary": "Creates a new task in a group",
"description": "Creates a new task in the specified task list group.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task lists"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "task_list_group_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": {
"task": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"report_type": {
"type": "string",
"enum": [
"balance_sheet",
"profit_loss",
"debtor",
"creditor",
"assets"
],
"description": "Report this task is based on; its content is generated from the report."
},
"assignee_id": {
"$ref": "#/components/schemas/identifier",
"description": "ID of the user to assign the task to."
},
"related_entity_id": {
"$ref": "#/components/schemas/identifier_nullable",
"description": "The ID of a ledger account to link to the task"
},
"generate_subtasks": {
"type": "boolean",
"description": "Whether to generate subtasks based on the related entity's children"
}
},
"required": [
"name"
]
}
}
},
"examples": {
"CreatesANewTask": {
"summary": "Creates a new task",
"value": {
"task": {
"name": "New Task"
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Task created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/task_list_task_response"
},
"examples": {
"CreatesANewTask": {
"summary": "Creates a new task",
"value": {
"id": "502689197799245765",
"administration_id": 123,
"name": "New Task",
"description": null,
"row_order": 1,
"completed_at": null,
"report_type": null,
"task_lists_group_id": "502689197785614274",
"parent_task_id": null,
"created_at": "2026-11-02T12:16:38.797Z",
"updated_at": "2026-11-02T12:16:38.797Z",
"assignee_id": null,
"subtasks": [],
"notes": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:38.798Z",
"updated_at": "2026-11-02T12:16:38.798Z"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns400WhenParametersAreInvalid": {
"summary": "Returns 400 when parameters are invalid",
"value": {
"error": "task[name] is missing"
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenGroupDoesNotExist": {
"summary": "Returns 404 when group does not exist",
"value": {
"error": "Record not found for model name: Group"
}
}
}
}
}
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"Returns422WhenGroupHasGeneratedTasks": {
"summary": "Returns 422 when group has generated tasks",
"value": {
"error": "Tasks cannot be added to a group with generated tasks"
}
},
"Returns422WhenNameIsMissing": {
"summary": "Returns 422 when name is missing",
"value": {
"error": "Name can't be blank"
}
}
}
}
}
}
},
"operationId": "post_administration_id_task_list_groups_task_list_group_id_tasks"
}
},
"/{administration_id}/task_list_tasks/{id}{format}": {
"get": {
"summary": "Returns information about a task",
"description": "Returns information about a task, including its subtasks, notes, and events.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task lists"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"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 task",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/task_list_task_response"
},
"examples": {
"ReturnsASingleTask": {
"summary": "Returns a single task",
"value": {
"id": "502689278170498854",
"administration_id": 123,
"name": "Task #1",
"description": "Description 1",
"row_order": 0,
"completed_at": null,
"report_type": null,
"task_lists_group_id": "502689278170498853",
"parent_task_id": null,
"created_at": "2026-11-02T12:17:55.445Z",
"updated_at": "2026-11-02T12:17:55.445Z",
"assignee_id": null,
"subtasks": [],
"notes": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:17:55.446Z",
"updated_at": "2026-11-02T12:17:55.446Z"
}
]
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTaskDoesNotExist": {
"summary": "Returns 404 when task does not exist",
"value": {
"error": "Record not found for model name: Task"
}
}
}
}
}
}
},
"operationId": "get_administration_id_task_list_tasks_id"
},
"patch": {
"summary": "Updates a task",
"description": "Updates a task's attributes.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task lists"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"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": {
"task": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"report_type": {
"type": "string",
"enum": [
"balance_sheet",
"profit_loss",
"debtor",
"creditor",
"assets"
],
"description": "Report this task is based on; its content is generated from the report."
},
"assignee_id": {
"$ref": "#/components/schemas/identifier",
"description": "ID of the user to assign the task to."
},
"related_entity_id": {
"$ref": "#/components/schemas/identifier_nullable",
"description": "The ID of a ledger account to link to the task"
},
"generate_subtasks": {
"type": "boolean",
"description": "Whether to generate subtasks based on the related entity's children"
}
}
}
}
},
"examples": {
"UpdatesATask": {
"summary": "Updates a task",
"value": {
"task": {
"name": "Updated Task"
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "Task updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/task_list_task_response"
},
"examples": {
"UpdatesATask": {
"summary": "Updates a task",
"value": {
"id": "502689278538549095",
"administration_id": 123,
"name": "Updated Task",
"description": "Description 1",
"row_order": 0,
"completed_at": null,
"report_type": null,
"task_lists_group_id": "502689278537500518",
"parent_task_id": null,
"created_at": "2026-11-02T12:17:55.796Z",
"updated_at": "2026-11-02T12:17:55.815Z",
"assignee_id": null,
"subtasks": [],
"notes": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:17:55.796Z",
"updated_at": "2026-11-02T12:17:55.796Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_name",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"name": "Updated Task"
},
"created_at": "2026-11-02T12:17:55.816Z",
"updated_at": "2026-11-02T12:17:55.816Z"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns400WhenRequiredParamsAreMissing": {
"summary": "Returns 400 when required params are missing",
"value": {
"error": "task is missing"
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTaskDoesNotExist": {
"summary": "Returns 404 when task does not exist",
"value": {
"error": "Record not found for model name: Task"
}
}
}
}
}
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"Returns422WhenNameIsEmpty": {
"summary": "Returns 422 when name is empty",
"value": {
"error": "Name can't be blank"
}
}
}
}
}
}
},
"operationId": "patch_administration_id_task_list_tasks_id"
},
"delete": {
"summary": "Deletes a task",
"description": "Permanently deletes a task and all its subtasks. Generated tasks cannot be deleted.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task lists"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"204": {
"description": "Task deleted"
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTaskDoesNotExist": {
"summary": "Returns 404 when task does not exist",
"value": {
"error": "Record not found for model name: Task"
}
}
}
}
}
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"Returns422WhenTaskIsGenerated": {
"summary": "Returns 422 when task is generated",
"value": {
"error": "Generated tasks cannot be deleted"
}
}
}
}
}
}
},
"operationId": "delete_administration_id_task_list_tasks_id"
}
},
"/{administration_id}/task_list_tasks/{task_list_task_id}/assignment{format}": {
"post": {
"summary": "Assigns a user to a task",
"description": "Assigns a user to the specified task.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task lists"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "task_list_task_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": {
"assignee_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the user to assign to the task. A user must have permissions to a task or else a 404 will be thrown."
}
},
"required": [
"assignee_id"
]
},
"examples": {
"AssignsAUserToTheTask": {
"summary": "Assigns a user to the task",
"value": {
"assignee_id": "502689108270777446"
}
}
}
}
}
},
"responses": {
"200": {
"description": "User assigned to task",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/task_list_task_response"
},
"examples": {
"AssignsAUserToTheTask": {
"summary": "Assigns a user to the task",
"value": {
"id": "502689278434740054",
"administration_id": 123,
"name": "Task #1",
"description": "Description 1",
"row_order": 0,
"completed_at": null,
"report_type": null,
"task_lists_group_id": "502689278434740053",
"parent_task_id": null,
"created_at": "2026-11-02T12:17:55.697Z",
"updated_at": "2026-11-02T12:17:55.697Z",
"assignee_id": "502689108270777446",
"subtasks": [],
"notes": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:17:55.698Z",
"updated_at": "2026-11-02T12:17:55.698Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_assigned",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"assignee": "Mo Neybird"
},
"created_at": "2026-11-02T12:17:55.711Z",
"updated_at": "2026-11-02T12:17:55.711Z"
}
]
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenAssigneeIdIsInvalid": {
"summary": "Returns 404 when assignee id is invalid",
"value": {
"error": "Assignee not found"
}
},
"Returns404WhenTaskDoesNotExist": {
"summary": "Returns 404 when task does not exist",
"value": {
"error": "Record not found for model name: Task"
}
}
}
}
}
}
},
"operationId": "post_administration_id_task_list_tasks_task_list_task_id_assignment"
},
"delete": {
"summary": "Unassigns the user from a task",
"description": "Removes the current assignment from the specified task.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task lists"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "task_list_task_id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"200": {
"description": "User unassigned from task",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/task_list_task_response"
},
"examples": {
"UnassignsTheTask": {
"summary": "Unassigns the task",
"value": {
"id": "502689278475634525",
"administration_id": 123,
"name": "Task #1",
"description": "Description 1",
"row_order": 0,
"completed_at": null,
"report_type": null,
"task_lists_group_id": "502689278474585948",
"parent_task_id": null,
"created_at": "2026-11-02T12:17:55.735Z",
"updated_at": "2026-11-02T12:17:55.735Z",
"assignee_id": null,
"subtasks": [],
"notes": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:17:55.736Z",
"updated_at": "2026-11-02T12:17:55.736Z"
}
]
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTaskDoesNotExist": {
"summary": "Returns 404 when task does not exist",
"value": {
"error": "Record not found for model name: Task"
}
}
}
}
}
}
},
"operationId": "delete_administration_id_task_list_tasks_task_list_task_id_assignment"
}
},
"/{administration_id}/task_list_tasks/{task_list_task_id}/completion{format}": {
"post": {
"summary": "Completes a task",
"description": "Marks a task and all its subtasks as completed.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task lists"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "task_list_task_id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"200": {
"description": "Task completed",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/task_list_task_response"
},
"examples": {
"CompletesTheTask": {
"summary": "Completes the task",
"value": {
"id": "502689278326736705",
"administration_id": 123,
"name": "Task #1",
"description": "Description 1",
"row_order": 0,
"completed_at": "2026-11-02T12:17:55.604Z",
"report_type": null,
"task_lists_group_id": "502689278325688128",
"parent_task_id": null,
"created_at": "2026-11-02T12:17:55.593Z",
"updated_at": "2026-11-02T12:17:55.604Z",
"assignee_id": null,
"subtasks": [],
"notes": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:17:55.594Z",
"updated_at": "2026-11-02T12:17:55.594Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_completed",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:17:55.606Z",
"updated_at": "2026-11-02T12:17:55.606Z"
}
]
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTaskDoesNotExist": {
"summary": "Returns 404 when task does not exist",
"value": {
"error": "Record not found for model name: Task"
}
}
}
}
}
}
},
"operationId": "post_administration_id_task_list_tasks_task_list_task_id_completion"
},
"delete": {
"summary": "Reopens a task",
"description": "Reopens a completed task and possible parent tasks.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task lists"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "task_list_task_id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"200": {
"description": "Task reopened",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/task_list_task_response"
},
"examples": {
"ReopensTheTask": {
"summary": "Reopens the task",
"value": {
"id": "502689277777282762",
"administration_id": 123,
"name": "Task #1",
"description": "Description 1",
"row_order": 0,
"completed_at": null,
"report_type": null,
"task_lists_group_id": "502689277776234185",
"parent_task_id": null,
"created_at": "2026-11-02T12:17:55.070Z",
"updated_at": "2026-11-02T12:17:55.091Z",
"assignee_id": null,
"subtasks": [],
"notes": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:17:55.071Z",
"updated_at": "2026-11-02T12:17:55.071Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_completed",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:17:55.078Z",
"updated_at": "2026-11-02T12:17:55.078Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_reopened",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:17:55.093Z",
"updated_at": "2026-11-02T12:17:55.093Z"
}
]
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTaskDoesNotExist": {
"summary": "Returns 404 when task does not exist",
"value": {
"error": "Record not found for model name: Task"
}
}
}
}
}
}
},
"operationId": "delete_administration_id_task_list_tasks_task_list_task_id_completion"
}
},
"/{administration_id}/task_list_tasks/{task_list_task_id}/notes{format}": {
"post": {
"summary": "Creates a note on a task",
"description": "Creates a new note on the specified task.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task lists"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "task_list_task_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": "The note content"
},
"todo": {
"type": "boolean",
"description": "Whether the note is a to-do item"
}
},
"required": [
"note"
]
}
}
},
"examples": {
"CreatesANote": {
"summary": "Creates a note",
"value": {
"note": {
"note": "Test note",
"todo": false
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Note created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/note_response"
},
"examples": {
"CreatesANote": {
"summary": "Creates a note",
"value": {
"id": "502689278269065015",
"administration_id": 123,
"entity_id": "502689278256482101",
"entity_type": "TaskLists::Task",
"user_id": "502689108256097381",
"assignee_id": null,
"todo": false,
"note": "Test note",
"completed_at": null,
"completed_by_id": null,
"todo_type": null,
"data": {},
"created_at": "2026-11-02T12:17:55.538Z",
"updated_at": "2026-11-02T12:17:55.538Z"
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTaskDoesNotExist": {
"summary": "Returns 404 when task does not exist",
"value": {
"error": "Record not found for model name: Task"
}
}
}
}
}
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"Returns422WhenNoteIsEmpty": {
"summary": "Returns 422 when note is empty",
"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_task_list_tasks_task_list_task_id_notes"
}
},
"/{administration_id}/task_list_templates/{id}{format}": {
"get": {
"summary": "Returns information about a task list template",
"description": "Returns information about a task list template, including its groups and tasks.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task list templates"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"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 task list template",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/task_list_template_response"
},
"examples": {
"ReturnsASingleTemplate": {
"summary": "Returns a single template",
"value": {
"id": "502689219755377872",
"administration_id": 123,
"name": "Task list template #1",
"description": "Template description",
"period": "P1M",
"deadline_after": null,
"created_at": "2026-11-02T12:16:59.735Z",
"updated_at": "2026-11-02T12:16:59.735Z",
"groups": [
{
"id": "502689219757475026",
"name": "Task list group #1",
"row_order": 0,
"report_type": null,
"created_at": "2026-11-02T12:16:59.738Z",
"updated_at": "2026-11-02T12:16:59.738Z",
"tasks": [
{
"id": "502689219758523603",
"administration_id": 123,
"name": "Task #1",
"description": "Description 1",
"row_order": 0,
"completed_at": null,
"report_type": null,
"task_lists_group_id": "502689219757475026",
"parent_task_id": null,
"created_at": "2026-11-02T12:16:59.739Z",
"updated_at": "2026-11-02T12:16:59.739Z",
"assignee_id": null,
"subtasks": [],
"notes": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:59.740Z",
"updated_at": "2026-11-02T12:16:59.740Z"
}
]
}
]
}
]
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTemplateDoesNotExist": {
"summary": "Returns 404 when template does not exist",
"value": {
"error": "Record not found for model name: List template"
}
}
}
}
}
}
},
"operationId": "get_administration_id_task_list_templates_id"
},
"patch": {
"summary": "Updates a task list template",
"description": "Updates a task list template.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task list templates"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"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": {
"task_list_template": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"period": {
"type": "string",
"description": "ISO 8601 duration string (e.g. P1M, P3M, P1Y) or friendly name (monthly, quarterly, yearly, none)"
},
"deadline_after": {
"type": "string",
"description": "ISO 8601 duration string representing the deadline offset from the period end"
}
}
}
}
},
"examples": {
"UpdatesATemplate": {
"summary": "Updates a template",
"value": {
"task_list_template": {
"name": "Updated Template"
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "Template updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/task_list_template_response"
},
"examples": {
"UpdatesATemplate": {
"summary": "Updates a template",
"value": {
"id": "502689219829826778",
"administration_id": 123,
"name": "Updated Template",
"description": "Template description",
"period": "P1M",
"deadline_after": null,
"created_at": "2026-11-02T12:16:59.806Z",
"updated_at": "2026-11-02T12:16:59.823Z",
"groups": [
{
"id": "502689219832972508",
"name": "Task list group #1",
"row_order": 0,
"report_type": null,
"created_at": "2026-11-02T12:16:59.809Z",
"updated_at": "2026-11-02T12:16:59.809Z",
"tasks": [
{
"id": "502689219832972509",
"administration_id": 123,
"name": "Task #1",
"description": "Description 1",
"row_order": 0,
"completed_at": null,
"report_type": null,
"task_lists_group_id": "502689219832972508",
"parent_task_id": null,
"created_at": "2026-11-02T12:16:59.810Z",
"updated_at": "2026-11-02T12:16:59.810Z",
"assignee_id": null,
"subtasks": [],
"notes": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:59.811Z",
"updated_at": "2026-11-02T12:16:59.811Z"
}
]
}
]
}
]
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns400WhenRequiredParamsAreMissing": {
"summary": "Returns 400 when required params are missing",
"value": {
"error": "task_list_template is missing"
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTemplateDoesNotExist": {
"summary": "Returns 404 when template does not exist",
"value": {
"error": "Record not found for model name: List template"
}
}
}
}
}
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"Returns422WhenNameIsEmpty": {
"summary": "Returns 422 when name is empty",
"value": {
"error": "Name can't be blank"
}
}
}
}
}
}
},
"operationId": "patch_administration_id_task_list_templates_id"
},
"delete": {
"summary": "Deletes a task list template",
"description": "Permanently deletes a task list template and all its groups and tasks.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task list templates"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"204": {
"description": "Template deleted"
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTemplateDoesNotExist": {
"summary": "Returns 404 when template does not exist",
"value": {
"error": "Record not found for model name: List template"
}
}
}
}
}
}
},
"operationId": "delete_administration_id_task_list_templates_id"
}
},
"/{administration_id}/task_list_templates/{task_list_template_id}/groups{format}": {
"post": {
"summary": "Creates a new group in a task list template",
"description": "Creates a new group in the specified task list template.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task list templates"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "task_list_template_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": {
"group": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"name": {
"type": "string"
},
"report_type": {
"type": "string",
"enum": [
"balance_sheet",
"profit_loss",
"debtor",
"creditor",
"assets"
],
"description": "Report this group is based on; its tasks are generated from the report."
}
},
"required": [
"name"
]
}
}
},
"examples": {
"CreatesANewGroup": {
"summary": "Creates a new group",
"value": {
"group": {
"name": "New Group"
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Group created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/task_list_group_response"
},
"examples": {
"CreatesANewGroup": {
"summary": "Creates a new group",
"value": {
"id": "502689219404104858",
"name": "New Group",
"row_order": 1,
"report_type": null,
"created_at": "2026-11-02T12:16:59.401Z",
"updated_at": "2026-11-02T12:16:59.401Z",
"tasks": []
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns400WhenRequiredParamsAreMissing": {
"summary": "Returns 400 when required params are missing",
"value": {
"error": "group is missing, group[name] is missing"
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTemplateDoesNotExist": {
"summary": "Returns 404 when template does not exist",
"value": {
"error": "Record not found for model name: List template"
}
}
}
}
}
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"Returns422WhenNameIsMissing": {
"summary": "Returns 422 when name is missing",
"value": {
"error": "Name can't be blank"
}
}
}
}
}
}
},
"operationId": "post_administration_id_task_list_templates_task_list_template_id_groups"
}
},
"/{administration_id}/task_list_templates/{task_list_template_id}/task_lists{format}": {
"post": {
"summary": "Creates a task list from a template",
"description": "Creates a new task list based on the specified template.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task lists"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "task_list_template_id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"$ref": "#/components/parameters/format"
}
],
"requestBody": {
"required": false,
"content": {
"application/*": {
"schema": {
"unevaluatedProperties": false,
"type": "object",
"properties": {
"task_list": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"deadline_on": {
"type": "string",
"format": "date"
},
"period_begin": {
"type": "string",
"format": "date"
},
"period_end": {
"type": "string",
"format": "date"
}
}
}
}
},
"examples": {
"CreatesATaskListFromTheTemplate": {
"summary": "Creates a task list from the template",
"value": {}
}
}
}
}
},
"responses": {
"201": {
"description": "Task list created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/task_list_response"
},
"examples": {
"CreatesATaskListFromTheTemplate": {
"summary": "Creates a task list from the template",
"value": {
"id": "502689219599140023",
"administration_id": 123,
"name": "Task list template #1",
"description": "Template description",
"deadline_on": null,
"period_begin": "2026-10-01",
"period_end": "2026-10-31",
"completed": false,
"template_id": "502689219560342706",
"total_tasks_count": 1,
"completed_tasks_count": 0,
"created_at": "2026-11-02T12:16:59.587Z",
"updated_at": "2026-11-02T12:16:59.587Z",
"groups": [
{
"id": "502689219603334329",
"name": "Task list group #1",
"row_order": 0,
"report_type": null,
"created_at": "2026-11-02T12:16:59.590Z",
"updated_at": "2026-11-02T12:16:59.590Z",
"tasks": [
{
"id": "502689219604382906",
"administration_id": 123,
"name": "Task #1",
"description": "Description 1",
"row_order": 0,
"completed_at": null,
"report_type": null,
"task_lists_group_id": "502689219603334329",
"parent_task_id": null,
"created_at": "2026-11-02T12:16:59.591Z",
"updated_at": "2026-11-02T12:16:59.591Z",
"assignee_id": null,
"subtasks": [],
"notes": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:59.593Z",
"updated_at": "2026-11-02T12:16:59.593Z"
}
]
}
]
}
]
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns400WhenParamsAreInvalidType": {
"summary": "Returns 400 when params are invalid type",
"value": {
"error": "task_list is invalid"
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTemplateDoesNotExist": {
"summary": "Returns 404 when template does not exist",
"value": {
"error": "Record not found for model name: List template"
}
}
}
}
}
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"Returns422WhenTaskListParamsAreInvalid": {
"summary": "Returns 422 when task list params are invalid",
"value": {
"error": "Name can't be blank"
}
}
}
}
}
}
},
"operationId": "post_administration_id_task_list_templates_task_list_template_id_task_lists"
}
},
"/{administration_id}/task_list_templates{format}": {
"get": {
"summary": "List all task list templates of an administration",
"description": "Returns all task list templates in the administration.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task list templates"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"200": {
"description": "A list of task list templates",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/task_list_template_response"
}
},
"examples": {
"ReturnsTheListOfTemplates": {
"summary": "Returns the list of templates",
"value": [
{
"id": "502689219794175189",
"administration_id": 123,
"name": "Task list template #1",
"description": "Template description",
"period": "P1M",
"deadline_after": null,
"created_at": "2026-11-02T12:16:59.772Z",
"updated_at": "2026-11-02T12:16:59.772Z",
"groups": [
{
"id": "502689219797320919",
"name": "Task list group #1",
"row_order": 0,
"report_type": null,
"created_at": "2026-11-02T12:16:59.775Z",
"updated_at": "2026-11-02T12:16:59.775Z",
"tasks": [
{
"id": "502689219797320920",
"administration_id": 123,
"name": "Task #1",
"description": "Description 1",
"row_order": 0,
"completed_at": null,
"report_type": null,
"task_lists_group_id": "502689219797320919",
"parent_task_id": null,
"created_at": "2026-11-02T12:16:59.776Z",
"updated_at": "2026-11-02T12:16:59.776Z",
"assignee_id": null,
"subtasks": [],
"notes": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:16:59.777Z",
"updated_at": "2026-11-02T12:16:59.777Z"
}
]
}
]
}
]
}
]
}
}
}
}
}
},
"operationId": "get_administration_id_task_list_templates"
},
"post": {
"summary": "Creates a new task list template",
"description": "Creates a new task list template.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task list templates"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
}
],
"requestBody": {
"required": true,
"content": {
"application/*": {
"schema": {
"unevaluatedProperties": false,
"type": "object",
"properties": {
"task_list_template": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"period": {
"type": "string",
"description": "ISO 8601 duration string (e.g. P1M, P3M, P1Y) or friendly name (monthly, quarterly, yearly, none)"
},
"deadline_after": {
"type": "string",
"description": "ISO 8601 duration string representing the deadline offset from the period end"
}
},
"required": [
"name"
]
}
}
},
"examples": {
"CreatesANewTemplate": {
"summary": "Creates a new template",
"value": {
"task_list_template": {
"name": "New Template"
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Template created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/task_list_template_response"
},
"examples": {
"CreatesANewTemplate": {
"summary": "Creates a new template",
"value": {
"id": "502689220192634124",
"administration_id": 123,
"name": "New Template",
"description": null,
"period": "P1M",
"deadline_after": null,
"created_at": "2026-11-02T12:17:00.152Z",
"updated_at": "2026-11-02T12:17:00.152Z",
"groups": [
{
"id": "502689220196828430",
"name": null,
"row_order": 0,
"report_type": null,
"created_at": "2026-11-02T12:17:00.157Z",
"updated_at": "2026-11-02T12:17:00.157Z",
"tasks": []
}
]
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns400WhenRequiredParamsAreMissing": {
"summary": "Returns 400 when required params are missing",
"value": {
"error": "task_list_template is missing, task_list_template[name] is missing"
}
}
}
}
}
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"Returns422WhenNameIsMissing": {
"summary": "Returns 422 when name is missing",
"value": {
"error": "Name can't be blank"
}
}
}
}
}
}
},
"operationId": "post_administration_id_task_list_templates"
}
},
"/{administration_id}/task_lists/{id}{format}": {
"get": {
"summary": "Returns information about a task list",
"description": "Returns information about a task list, including its groups, tasks, and subtasks.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task lists"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"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 task list",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/task_list_response"
},
"examples": {
"ReturnsASingleTaskList": {
"summary": "Returns a single task list",
"value": {
"id": "502689284628678369",
"administration_id": 123,
"name": "Task list #1",
"description": "List description",
"deadline_on": null,
"period_begin": "2026-07-01",
"period_end": "2026-09-30",
"completed": false,
"template_id": null,
"total_tasks_count": 1,
"completed_tasks_count": 0,
"created_at": "2026-11-02T12:18:01.603Z",
"updated_at": "2026-11-02T12:18:01.603Z",
"groups": [
{
"id": "502689284631824099",
"name": "Task list group #1",
"row_order": 0,
"report_type": null,
"created_at": "2026-11-02T12:18:01.606Z",
"updated_at": "2026-11-02T12:18:01.606Z",
"tasks": [
{
"id": "502689284631824100",
"administration_id": 123,
"name": "Task #1",
"description": "Description 1",
"row_order": 0,
"completed_at": null,
"report_type": null,
"task_lists_group_id": "502689284631824099",
"parent_task_id": null,
"created_at": "2026-11-02T12:18:01.607Z",
"updated_at": "2026-11-02T12:18:01.607Z",
"assignee_id": null,
"subtasks": [],
"notes": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:18:01.608Z",
"updated_at": "2026-11-02T12:18:01.608Z"
}
]
}
]
}
]
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTaskListDoesNotExist": {
"summary": "Returns 404 when task list does not exist",
"value": {
"error": "Record not found for model name: List"
}
}
}
}
}
}
},
"operationId": "get_administration_id_task_lists_id"
},
"patch": {
"summary": "Updates a task list",
"description": "Updates a task list's name, description, or deadline.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task lists"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"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": {
"task_list": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"deadline_on": {
"type": "string",
"format": "date"
}
}
}
},
"required": []
},
"examples": {
"UpdatesATaskList": {
"summary": "Updates a task list",
"value": {
"task_list": {
"name": "Updated Name"
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "Task list updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/task_list_response"
},
"examples": {
"UpdatesATaskList": {
"summary": "Updates a task list",
"value": {
"id": "502689284149479069",
"administration_id": 123,
"name": "Updated Name",
"description": "List description",
"deadline_on": null,
"period_begin": "2026-07-01",
"period_end": "2026-09-30",
"completed": false,
"template_id": null,
"total_tasks_count": 1,
"completed_tasks_count": 0,
"created_at": "2026-11-02T12:18:01.146Z",
"updated_at": "2026-11-02T12:18:01.164Z",
"groups": [
{
"id": "502689284154721951",
"name": "Task list group #1",
"row_order": 0,
"report_type": null,
"created_at": "2026-11-02T12:18:01.151Z",
"updated_at": "2026-11-02T12:18:01.151Z",
"tasks": [
{
"id": "502689284155770528",
"administration_id": 123,
"name": "Task #1",
"description": "Description 1",
"row_order": 0,
"completed_at": null,
"report_type": null,
"task_lists_group_id": "502689284154721951",
"parent_task_id": null,
"created_at": "2026-11-02T12:18:01.152Z",
"updated_at": "2026-11-02T12:18:01.152Z",
"assignee_id": null,
"subtasks": [],
"notes": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:18:01.154Z",
"updated_at": "2026-11-02T12:18:01.154Z"
}
]
}
]
}
]
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsA400WhenTheGivenParametersAreInvalid": {
"summary": "Returns a 400 when the given parameters are invalid",
"value": {
"error": "task_list is missing"
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTaskListDoesNotExist": {
"summary": "Returns 404 when task list does not exist",
"value": {
"error": "Record not found for model name: List"
}
}
}
}
}
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"Returns422WhenNameIsEmpty": {
"summary": "Returns 422 when name is empty",
"value": {
"error": "Name can't be blank"
}
}
}
}
}
}
},
"operationId": "patch_administration_id_task_lists_id"
},
"delete": {
"summary": "Deletes a task list",
"description": "Permanently deletes a task list and all its groups and tasks.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task lists"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"204": {
"description": "Task list deleted"
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTaskListDoesNotExist": {
"summary": "Returns 404 when task list does not exist",
"value": {
"error": "Record not found for model name: List"
}
}
}
}
}
}
},
"operationId": "delete_administration_id_task_lists_id"
}
},
"/{administration_id}/task_lists/{task_list_id}/groups{format}": {
"post": {
"summary": "Creates a new group in a task list",
"description": "Creates a new group in the specified task list.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task lists"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "task_list_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": {
"group": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"name": {
"type": "string"
},
"report_type": {
"type": "string",
"enum": [
"balance_sheet",
"profit_loss",
"debtor",
"creditor",
"assets"
],
"description": "Report this group is based on; its tasks are generated from the report."
}
},
"required": [
"name"
]
}
},
"required": []
},
"examples": {
"CreatesANewGroup": {
"summary": "Creates a new group",
"value": {
"group": {
"name": "New Group"
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Group created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/task_list_group_response"
},
"examples": {
"CreatesANewGroup": {
"summary": "Creates a new group",
"value": {
"id": "502689283978561159",
"name": "New Group",
"row_order": 1,
"report_type": null,
"created_at": "2026-11-02T12:18:00.984Z",
"updated_at": "2026-11-02T12:18:00.984Z",
"tasks": []
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsA400WhenTheGivenParametersAreInvalid": {
"summary": "Returns a 400 when the given parameters are invalid",
"value": {
"error": "group is missing, group[name] is missing"
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTaskListDoesNotExist": {
"summary": "Returns 404 when task list does not exist",
"value": {
"error": "Record not found for model name: List"
}
}
}
}
}
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"Returns422WhenNameIsMissing": {
"summary": "Returns 422 when name is missing",
"value": {
"error": "Name can't be blank"
}
}
}
}
}
}
},
"operationId": "post_administration_id_task_lists_task_list_id_groups"
}
},
"/{administration_id}/task_lists{format}": {
"get": {
"summary": "List all task lists of an administration",
"description": "Returns a paginated list of task lists in the administration. Each page contains 30 task lists by default. Use the `page` parameter to fetch the next page.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task lists"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"$ref": "#/components/parameters/per_page",
"description": "Amount of task lists per page, default: 30"
},
{
"$ref": "#/components/parameters/page",
"description": "The page to fetch, starting at 1."
}
],
"responses": {
"200": {
"description": "A list of task lists",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/task_list_response"
}
},
"examples": {
"RequestsWithADifferentPage": {
"summary": "Requests with a different page",
"value": []
},
"RequestsWithAPageSizeSmallerThanDefault": {
"summary": "Requests with a page size smaller than default",
"value": [
{
"id": "502689283737388649",
"administration_id": 123,
"name": "Task list #1",
"description": "List description",
"deadline_on": null,
"period_begin": "2026-07-01",
"period_end": "2026-09-30",
"completed": false,
"template_id": null,
"total_tasks_count": 1,
"completed_tasks_count": 0,
"created_at": "2026-11-02T12:18:00.754Z",
"updated_at": "2026-11-02T12:18:00.754Z",
"groups": [
{
"id": "502689283739485803",
"name": "Task list group #1",
"row_order": 0,
"report_type": null,
"created_at": "2026-11-02T12:18:00.756Z",
"updated_at": "2026-11-02T12:18:00.756Z",
"tasks": [
{
"id": "502689283740534380",
"administration_id": 123,
"name": "Task #1",
"description": "Description 1",
"row_order": 0,
"completed_at": null,
"report_type": null,
"task_lists_group_id": "502689283739485803",
"parent_task_id": null,
"created_at": "2026-11-02T12:18:00.757Z",
"updated_at": "2026-11-02T12:18:00.757Z",
"assignee_id": null,
"subtasks": [],
"notes": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:18:00.758Z",
"updated_at": "2026-11-02T12:18:00.758Z"
}
]
}
]
}
]
}
]
},
"FetchesWithoutPageAndPerPageAttributesUsingDefaultValues": {
"summary": "Fetches without page and per page attributes, using default values",
"value": [
{
"id": "502689283776185966",
"administration_id": 123,
"name": "Task list #1",
"description": "List description",
"deadline_on": null,
"period_begin": "2026-07-01",
"period_end": "2026-09-30",
"completed": false,
"template_id": null,
"total_tasks_count": 1,
"completed_tasks_count": 0,
"created_at": "2026-11-02T12:18:00.790Z",
"updated_at": "2026-11-02T12:18:00.790Z",
"groups": [
{
"id": "502689283778283120",
"name": "Task list group #1",
"row_order": 0,
"report_type": null,
"created_at": "2026-11-02T12:18:00.793Z",
"updated_at": "2026-11-02T12:18:00.793Z",
"tasks": [
{
"id": "502689283779331697",
"administration_id": 123,
"name": "Task #1",
"description": "Description 1",
"row_order": 0,
"completed_at": null,
"report_type": null,
"task_lists_group_id": "502689283778283120",
"parent_task_id": null,
"created_at": "2026-11-02T12:18:00.794Z",
"updated_at": "2026-11-02T12:18:00.794Z",
"assignee_id": null,
"subtasks": [],
"notes": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:18:00.795Z",
"updated_at": "2026-11-02T12:18:00.795Z"
}
]
}
]
}
]
}
]
},
"RequestsWithAPageSizeLargerThanDefault": {
"summary": "Requests with a page size larger than default",
"value": [
{
"id": "502689283820226163",
"administration_id": 123,
"name": "Task list #1",
"description": "List description",
"deadline_on": null,
"period_begin": "2026-07-01",
"period_end": "2026-09-30",
"completed": false,
"template_id": null,
"total_tasks_count": 1,
"completed_tasks_count": 0,
"created_at": "2026-11-02T12:18:00.832Z",
"updated_at": "2026-11-02T12:18:00.832Z",
"groups": [
{
"id": "502689283822323317",
"name": "Task list group #1",
"row_order": 0,
"report_type": null,
"created_at": "2026-11-02T12:18:00.835Z",
"updated_at": "2026-11-02T12:18:00.835Z",
"tasks": [
{
"id": "502689283823371894",
"administration_id": 123,
"name": "Task #1",
"description": "Description 1",
"row_order": 0,
"completed_at": null,
"report_type": null,
"task_lists_group_id": "502689283822323317",
"parent_task_id": null,
"created_at": "2026-11-02T12:18:00.835Z",
"updated_at": "2026-11-02T12:18:00.835Z",
"assignee_id": null,
"subtasks": [],
"notes": [],
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "task_lists_task_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:18:00.836Z",
"updated_at": "2026-11-02T12:18:00.836Z"
}
]
}
]
}
]
}
]
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns400WhenPerPageExceedsMaximum": {
"summary": "Returns 400 when per page exceeds maximum",
"value": {
"error": "per_page does not have a valid value"
}
},
"Returns400WhenPageIsInvalid": {
"summary": "Returns 400 when page is invalid",
"value": {
"error": "page is invalid, page does not have a valid value"
}
},
"Returns400WhenPerPageIsInvalid": {
"summary": "Returns 400 when per page is invalid",
"value": {
"error": "per_page is invalid, per_page does not have a valid value"
}
}
}
}
}
}
},
"operationId": "get_administration_id_task_lists"
},
"post": {
"summary": "Creates a new task list",
"description": "Creates a new task list. Optionally, you can provide a template_id to create the task list from a template.\n\n### Required scope(s)\n All of: `bank`, `documents`, `estimates`, `sales_invoices`, `settings` and `time_entries`",
"tags": [
"Task lists"
],
"security": [
{
"bearerAuth": [
"bank",
"documents",
"estimates",
"sales_invoices",
"settings",
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
}
],
"requestBody": {
"required": true,
"content": {
"application/*": {
"schema": {
"unevaluatedProperties": false,
"type": "object",
"properties": {
"task_list": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"deadline_on": {
"type": "string",
"format": "date"
},
"period_begin": {
"type": "string",
"format": "date"
},
"period_end": {
"type": "string",
"format": "date"
},
"template_id": {
"$ref": "#/components/schemas/identifier",
"description": "ID of a task list template to create the list from"
}
},
"required": [
"name"
]
}
}
},
"examples": {
"CreatesANewTaskList": {
"summary": "Creates a new task list",
"value": {
"task_list": {
"name": "New Task List"
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Task list created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/task_list_response"
},
"examples": {
"CreatesANewTaskList": {
"summary": "Creates a new task list",
"value": {
"id": "502689284601415390",
"administration_id": 123,
"name": "New Task List",
"description": null,
"deadline_on": null,
"period_begin": "2026-10-01",
"period_end": "2026-10-31",
"completed": true,
"template_id": null,
"total_tasks_count": 0,
"completed_tasks_count": 0,
"created_at": "2026-11-02T12:18:01.577Z",
"updated_at": "2026-11-02T12:18:01.577Z",
"groups": [
{
"id": "502689284603512544",
"name": null,
"row_order": 0,
"report_type": null,
"created_at": "2026-11-02T12:18:01.580Z",
"updated_at": "2026-11-02T12:18:01.580Z",
"tasks": []
}
]
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsA400WhenTheGivenParametersAreInvalid": {
"summary": "Returns a 400 when the given parameters are invalid",
"value": {
"error": "task_list is missing, task_list[name] is missing"
}
}
}
}
}
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"Returns422WhenNameIsMissing": {
"summary": "Returns 422 when name is missing",
"value": {
"error": "Name can't be blank"
}
}
}
}
}
}
},
"operationId": "post_administration_id_task_lists"
}
},
"/{administration_id}/tax_rates{format}": {
"get": {
"summary": "List all available tax rates for the administration",
"description": "Returns a paginated list of all available tax rates for the administration\n\n### Required scope(s)\n Any of: `settings`, `sales_invoices`, `documents` or `estimates`",
"tags": [
"Tax rates"
],
"security": [
{
"bearerAuth": [
"settings"
]
},
{
"bearerAuth": [
"sales_invoices"
]
},
{
"bearerAuth": [
"documents"
]
},
{
"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. `percentage:21,tax_rate_type:sales_invoice`). Any filter you pass replaces the defaults below entirely, so include every key you need. Available filters:\n\n| **Filter** | **Type** | **Default** | **Description** |\n| --- | --- | --- | --- |\n| name | `String` | | Select tax rates by their full name |\n| partial_name | `String` | | Select tax rates with this substring in their name |\n| percentage | `Integer` | | Select tax rates with the specified percentage, e.g. specify `21` for 21% |\n| tax_rate_type | `String` | | `general_journal_document`, `purchase_invoice` or `sales_invoice`. Without this filter, tax rates of all types are returned |\n| country | `String` | | Select tax rates with the specified country. Must be a 2 letter abbreviation following ISO 3166. Please note that only foreign tax rates will have this field set. Domestic tax rates will not have this set at the moment. |\n| show_tax | `Boolean` | | Use `true` to tax rates for which tax is shown on the invoice, `false` for when it's not shown. No value will select both |\n| active | `Boolean` | | Use `true` to select active tax rates. Use `false` for inactive tax rates. No value will select both |\n| created_after | `String` | | Tax rates created after the given time (exclusive). ISO 8601 formatted string. The time to compare with is in UTC timezone |\n| updated_after | `String` | | Tax rates updated after the given time (exclusive). ISO 8601 formatted string. The time to compare with is in UTC timezone |\n\nYou can filter by multiple tax rate types at the same time by separating the values with a pipe (`tax_rate_type:purchase_invoice|sales_invoice`).",
"schema": {
"type": "string"
},
"examples": {
"ReturnsAllTaxRatesCreatedAfterGivenDatetime": {
"summary": "Returns all tax rates created after given datetime",
"value": "created_after:2026-11-01 12:18:31 UTC"
},
"ReturnsOnlyTaxRatesUpdatedAfterGivenDatetime": {
"summary": "Returns only tax rates updated after given datetime",
"value": "updated_after:2026-11-02 12:18:36 UTC"
},
"ReturnsAllTaxRatesFilteredOnPercentage": {
"summary": "Returns all tax rates filtered on percentage",
"value": "percentage:21"
}
}
},
{
"$ref": "#/components/parameters/page"
},
{
"$ref": "#/components/parameters/per_page"
}
],
"responses": {
"200": {
"description": "A list of tax rates",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/tax_rate_response"
}
},
"examples": {
"ReturnsPaginatedTaxRatesOnPage2": {
"summary": "Returns paginated tax rates on page 2",
"value": [
{
"id": "502689108905165963",
"administration_id": 123,
"name": "9% btw",
"percentage": "9.0",
"tax_rate_type": "sales_invoice",
"show_tax": true,
"active": true,
"country": null,
"created_at": "2026-11-02T12:15:14.021Z",
"updated_at": "2026-11-02T12:15:14.021Z"
}
]
},
"ReturnsAllTaxRatesCreatedAfterGivenDatetime": {
"summary": "Returns all tax rates created after given datetime",
"value": [
{
"id": "502689108899923082",
"administration_id": 123,
"name": "21% btw",
"percentage": "21.0",
"tax_rate_type": "sales_invoice",
"show_tax": true,
"active": true,
"country": null,
"created_at": "2026-11-02T12:15:14.012Z",
"updated_at": "2026-11-02T12:15:14.012Z"
},
{
"id": "502689108905165963",
"administration_id": 123,
"name": "9% btw",
"percentage": "9.0",
"tax_rate_type": "sales_invoice",
"show_tax": true,
"active": true,
"country": null,
"created_at": "2026-11-02T12:15:14.021Z",
"updated_at": "2026-11-02T12:15:14.021Z"
},
{
"id": "502689108907263116",
"administration_id": 123,
"name": "0% btw",
"percentage": "0.0",
"tax_rate_type": "sales_invoice",
"show_tax": true,
"active": true,
"country": null,
"created_at": "2026-11-02T12:15:14.022Z",
"updated_at": "2026-11-02T12:15:14.022Z"
},
{
"id": "502689108908311693",
"administration_id": 123,
"name": "21% btw",
"percentage": "21.0",
"tax_rate_type": "purchase_invoice",
"show_tax": true,
"active": true,
"country": null,
"created_at": "2026-11-02T12:15:14.024Z",
"updated_at": "2026-11-02T12:15:14.024Z"
},
{
"id": "502689108909360270",
"administration_id": 123,
"name": "9% btw",
"percentage": "9.0",
"tax_rate_type": "purchase_invoice",
"show_tax": true,
"active": true,
"country": null,
"created_at": "2026-11-02T12:15:14.024Z",
"updated_at": "2026-11-02T12:15:14.024Z"
}
]
},
"ReturnsPaginatedTaxRatesOnPage1": {
"summary": "Returns paginated tax rates on page 1",
"value": [
{
"id": "502689108899923082",
"administration_id": 123,
"name": "21% btw",
"percentage": "21.0",
"tax_rate_type": "sales_invoice",
"show_tax": true,
"active": true,
"country": null,
"created_at": "2026-11-02T12:15:14.012Z",
"updated_at": "2026-11-02T12:15:14.012Z"
}
]
},
"ReturnsOnlyTaxRatesUpdatedAfterGivenDatetime": {
"summary": "Returns only tax rates updated after given datetime",
"value": [
{
"id": "502689108899923082",
"administration_id": 123,
"name": "foo",
"percentage": "21.0",
"tax_rate_type": "sales_invoice",
"show_tax": true,
"active": true,
"country": null,
"created_at": "2026-11-02T12:15:14.012Z",
"updated_at": "2026-11-02T12:19:36.205Z"
}
]
},
"ReturnsAllTaxRatesFilteredOnPercentage": {
"summary": "Returns all tax rates filtered on percentage",
"value": [
{
"id": "502689108899923082",
"administration_id": 123,
"name": "21% btw",
"percentage": "21.0",
"tax_rate_type": "sales_invoice",
"show_tax": true,
"active": true,
"country": null,
"created_at": "2026-11-02T12:15:14.012Z",
"updated_at": "2026-11-02T12:15:14.012Z"
},
{
"id": "502689108908311693",
"administration_id": 123,
"name": "21% btw",
"percentage": "21.0",
"tax_rate_type": "purchase_invoice",
"show_tax": true,
"active": true,
"country": null,
"created_at": "2026-11-02T12:15:14.024Z",
"updated_at": "2026-11-02T12:15:14.024Z"
}
]
},
"ReturnsAllTaxRatesOfAnAdministration": {
"summary": "Returns all tax rates of an administration",
"value": [
{
"id": "502689108899923082",
"administration_id": 123,
"name": "21% btw",
"percentage": "21.0",
"tax_rate_type": "sales_invoice",
"show_tax": true,
"active": true,
"country": null,
"created_at": "2026-11-02T12:15:14.012Z",
"updated_at": "2026-11-02T12:15:14.012Z"
},
{
"id": "502689108905165963",
"administration_id": 123,
"name": "9% btw",
"percentage": "9.0",
"tax_rate_type": "sales_invoice",
"show_tax": true,
"active": true,
"country": null,
"created_at": "2026-11-02T12:15:14.021Z",
"updated_at": "2026-11-02T12:15:14.021Z"
},
{
"id": "502689108907263116",
"administration_id": 123,
"name": "0% btw",
"percentage": "0.0",
"tax_rate_type": "sales_invoice",
"show_tax": true,
"active": true,
"country": null,
"created_at": "2026-11-02T12:15:14.022Z",
"updated_at": "2026-11-02T12:15:14.022Z"
},
{
"id": "502689108908311693",
"administration_id": 123,
"name": "21% btw",
"percentage": "21.0",
"tax_rate_type": "purchase_invoice",
"show_tax": true,
"active": true,
"country": null,
"created_at": "2026-11-02T12:15:14.024Z",
"updated_at": "2026-11-02T12:15:14.024Z"
},
{
"id": "502689108909360270",
"administration_id": 123,
"name": "9% btw",
"percentage": "9.0",
"tax_rate_type": "purchase_invoice",
"show_tax": true,
"active": true,
"country": null,
"created_at": "2026-11-02T12:15:14.024Z",
"updated_at": "2026-11-02T12:15:14.024Z"
}
]
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsAnErrorWhenTooManyTaxRatesAreRequested": {
"summary": "Returns an error when too many tax rates are requested",
"value": {
"error": "per_page does not have a valid value"
}
}
}
}
}
}
},
"operationId": "get_administration_id_tax_rates"
}
},
"/{administration_id}/time_entries/{id}/resume{format}": {
"patch": {
"summary": "Resume a stopped timer",
"description": "Resumes a stopped time entry. If another time entry is currently active, it will be stopped first. Can only resume timers that started today.\n\nWhen the time entry belongs to another user than the user of the token, the token also needs the `sales_invoices` scope.\n\n### Required scope(s)\n `time_entries`",
"tags": [
"Time entries"
],
"security": [
{
"bearerAuth": [
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"200": {
"description": "Time entry resumed",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/time_entry_response"
},
"examples": {
"ResumesAStoppedTimeEntry": {
"summary": "Resumes a stopped time entry",
"value": {
"id": "502689134775633194",
"administration_id": 123,
"contact_id": null,
"project_id": null,
"sales_invoice_id": null,
"user_id": "502689108256097381",
"started_at": "2026-11-02T11:15:00.000Z",
"ended_at": null,
"description": "Designing the website",
"paused_duration": 0,
"billable": true,
"created_at": "2026-11-02T12:15:38.693Z",
"updated_at": "2026-11-02T12:15:38.713Z",
"contact": null,
"user": {
"id": "502689108256097381",
"name": "Moneybird",
"created_at": "2026-11-02T12:15:13.391Z",
"updated_at": "2026-11-02T12:15:13.683Z"
},
"project": null,
"sales_invoice": null,
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "time_entry_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:38.695Z",
"updated_at": "2026-11-02T12:15:38.695Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "time_entry_updated",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"ended_at": [
"2026-11-02T13:15:00.000+01:00",
null
],
"updated_at": [
"2026-11-02T13:15:38.693+01:00",
"2026-11-02T13:15:38.713+01:00"
]
},
"created_at": "2026-11-02T12:15:38.715Z",
"updated_at": "2026-11-02T12:15:38.715Z"
}
],
"notes": []
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTimeEntryDoesNotExist": {
"summary": "Returns 404 when time entry 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": {
"ReturnsA422IfTheTimeEntryCannotBeResumed": {
"summary": "Returns a 422 if the time entry cannot be resumed",
"value": {
"error": {
"base": [
"Cannot resume timer"
]
},
"details": {
"base": [
{
"error": "cannot_resume_timer"
}
]
}
}
}
}
}
}
}
},
"operationId": "patch_administration_id_time_entries_id_resume"
}
},
"/{administration_id}/time_entries/{id}/stop{format}": {
"patch": {
"summary": "Stops an active time entry",
"description": "Stops an active time entry. If the time entry is already stopped, the time entry is returned unchanged.\n\nWhen the time entry belongs to another user than the user of the token, the token also needs the `sales_invoices` scope.\n\n### Required scope(s)\n `time_entries`",
"tags": [
"Time entries"
],
"security": [
{
"bearerAuth": [
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"200": {
"description": "Time entry stopped",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/time_entry_response"
},
"examples": {
"StopsAnActiveTimeEntry": {
"summary": "Stops an active time entry",
"value": {
"id": "502689136353740268",
"administration_id": 123,
"contact_id": null,
"project_id": null,
"sales_invoice_id": null,
"user_id": "502689108256097381",
"started_at": "2026-11-02T12:15:00.000Z",
"ended_at": "2026-11-02T12:15:00.000Z",
"description": "Designing the website",
"paused_duration": 0,
"billable": true,
"created_at": "2026-11-02T12:15:40.197Z",
"updated_at": "2026-11-02T12:15:40.218Z",
"contact": null,
"user": {
"id": "502689108256097381",
"name": "Moneybird",
"created_at": "2026-11-02T12:15:13.391Z",
"updated_at": "2026-11-02T12:15:13.683Z"
},
"project": null,
"sales_invoice": null,
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "time_entry_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:40.199Z",
"updated_at": "2026-11-02T12:15:40.199Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "time_entry_updated",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"ended_at": [
null,
"2026-11-02T13:15:00.000+01:00"
],
"updated_at": [
"2026-11-02T13:15:40.197+01:00",
"2026-11-02T13:15:40.218+01:00"
]
},
"created_at": "2026-11-02T12:15:40.220Z",
"updated_at": "2026-11-02T12:15:40.220Z"
}
],
"notes": []
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTimeEntryDoesNotExist": {
"summary": "Returns 404 when time entry does not exist",
"value": {
"error": "record not found",
"symbolic": {
"id": "not_found"
}
}
}
}
}
}
}
},
"operationId": "patch_administration_id_time_entries_id_stop"
}
},
"/{administration_id}/time_entries/{id}{format}": {
"get": {
"summary": "Get a time entry by id",
"description": "Returns a time entry in the administration. When the time entry belongs to another user than the user of the\ntoken, the token also needs the `sales_invoices` scope.\n\n### Required scope(s)\n `time_entries`",
"tags": [
"Time entries"
],
"security": [
{
"bearerAuth": [
"time_entries"
]
}
],
"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 time entry",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/time_entry_response"
},
"examples": {
"ReturnsTimeEntryByGivenId": {
"summary": "Returns time entry by given id",
"value": {
"id": "502689134245053697",
"administration_id": 123,
"contact_id": "502689134232470782",
"project_id": "502689134236665087",
"sales_invoice_id": null,
"user_id": "502689108256097381",
"started_at": "2026-11-02T12:15:00.000Z",
"ended_at": "2026-11-02T13:15:00.000Z",
"description": "Designing the website",
"paused_duration": 0,
"billable": true,
"created_at": "2026-11-02T12:15:38.186Z",
"updated_at": "2026-11-02T12:15:38.186Z",
"contact": {
"id": "502689134232470782",
"firstname": null,
"lastname": null,
"company_name": "Foobar Holding B.V."
},
"user": {
"id": "502689108256097381",
"name": "Moneybird",
"created_at": "2026-11-02T12:15:13.391Z",
"updated_at": "2026-11-02T12:15:13.683Z"
},
"project": {
"id": "502689134236665087",
"name": "Project 1",
"state": "active",
"budget": 10
},
"sales_invoice": null,
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "time_entry_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:38.188Z",
"updated_at": "2026-11-02T12:15:38.188Z"
}
],
"notes": []
}
},
"DoesNotIncludeTheSalesInvoiceWhenTheApiUserHasNoAccessToSalesInvoices": {
"summary": "Does not include the sales invoice when the api user has no access to sales invoices",
"value": {
"id": "502689134346765581",
"administration_id": 123,
"contact_id": "502689134335231242",
"project_id": "502689134339425547",
"sales_invoice_id": null,
"user_id": "502689108256097381",
"started_at": "2026-11-02T12:15:00.000Z",
"ended_at": "2026-11-02T13:15:00.000Z",
"description": "Designing the website",
"paused_duration": 0,
"billable": true,
"created_at": "2026-11-02T12:15:38.283Z",
"updated_at": "2026-11-02T12:15:38.283Z",
"contact": {
"id": "502689134335231242",
"firstname": null,
"lastname": null,
"company_name": "Foobar Holding B.V."
},
"user": {
"id": "502689108256097381",
"name": "Moneybird",
"created_at": "2026-11-02T12:15:13.391Z",
"updated_at": "2026-11-02T12:15:13.683Z"
},
"project": {
"id": "502689134339425547",
"name": "Project 1",
"state": "active",
"budget": 10
},
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "time_entry_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:38.285Z",
"updated_at": "2026-11-02T12:15:38.285Z"
}
],
"notes": []
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTimeEntryDoesNotExist": {
"summary": "Returns 404 when time entry does not exist",
"value": {
"error": "record not found",
"symbolic": {
"id": "not_found"
}
}
}
}
}
}
}
},
"operationId": "get_administration_id_time_entries_id"
},
"patch": {
"summary": "Update a time entry",
"description": "When updating a time entry, provide only the attributes you want to update. The other attributes will not be changed.\n`started_at` and `ended_at` are rounded down to full minutes when updating a time entry, with a minimum of 1 minute between them.\n\nWhen the time entry belongs to another user than the user of the token, the token also needs the `sales_invoices` scope.\nA time entry that is on a sales invoice cannot be updated.\n\n### Required scope(s)\n `time_entries`",
"tags": [
"Time entries"
],
"security": [
{
"bearerAuth": [
"time_entries"
]
}
],
"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": {
"time_entry": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"started_at": {
"type": "string",
"format": "date-time",
"description": "The start time of the time entry. Rounded down to full minutes."
},
"ended_at": {
"type": "string",
"format": "date-time",
"description": "The end time of the time entry. Rounded down to full minutes. A time entry without `ended_at` is considered a running (active) time entry."
},
"paused_duration": {
"type": "integer",
"description": "Total paused duration in seconds, is rounded down to full minutes."
},
"contact_id": {
"$ref": "#/components/schemas/identifier",
"description": "Should be a valid contact id."
},
"project_id": {
"$ref": "#/components/schemas/identifier",
"description": "Should be a valid project id."
},
"sales_invoice_id": {
"$ref": "#/components/schemas/identifier",
"description": "Should be a valid sales invoice id."
},
"description": {
"type": "string",
"description": "A description of how the time was spent. May be shown on the invoice."
},
"billable": {
"type": [
"boolean",
"string"
],
"description": "Whether this time entry is billable to the client.",
"default": true
}
},
"required": []
}
},
"required": []
},
"examples": {
"UpdatingTheTimeEntryDescription": {
"summary": "Updating the time entry description",
"value": {
"time_entry": {
"description": "Updated description"
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "Time entry updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/time_entry_response"
},
"examples": {
"UpdatingTheTimeEntryDescription": {
"summary": "Updating the time entry description",
"value": {
"id": "502689134863713585",
"administration_id": 123,
"contact_id": "502689134851130670",
"project_id": "502689134855324975",
"sales_invoice_id": null,
"user_id": "502689108256097381",
"started_at": "2026-11-02T12:15:00.000Z",
"ended_at": "2026-11-02T13:15:00.000Z",
"description": "Updated description",
"paused_duration": 0,
"billable": true,
"created_at": "2026-11-02T12:15:38.777Z",
"updated_at": "2026-11-02T12:15:38.792Z",
"contact": {
"id": "502689134851130670",
"firstname": null,
"lastname": null,
"company_name": "Foobar Holding B.V."
},
"user": {
"id": "502689108256097381",
"name": "Moneybird",
"created_at": "2026-11-02T12:15:13.391Z",
"updated_at": "2026-11-02T12:15:13.683Z"
},
"project": {
"id": "502689134855324975",
"name": "Project 1",
"state": "active",
"budget": 10
},
"sales_invoice": null,
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "time_entry_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:38.778Z",
"updated_at": "2026-11-02T12:15:38.778Z"
},
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "time_entry_updated",
"link_entity_id": null,
"link_entity_type": null,
"data": {
"description": [
"Designing the website",
"Updated description"
],
"updated_at": [
"2026-11-02T13:15:38.777+01:00",
"2026-11-02T13:15:38.792+01:00"
]
},
"created_at": "2026-11-02T12:15:38.793Z",
"updated_at": "2026-11-02T12:15:38.793Z"
}
],
"notes": []
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTimeEntryDoesNotExist": {
"summary": "Returns 404 when time entry 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": {
"Returns422ForASalesInvoiceOfAnotherAdministration": {
"summary": "Returns 422 for a sales invoice of another administration",
"value": {
"error": {
"sales_invoice_id": [
"is not found"
]
},
"details": {
"sales_invoice_id": [
{
"error": "invalid"
}
]
}
}
},
"Returns422WhenInvalidDataIsProvided": {
"summary": "Returns 422 when invalid data is provided",
"value": {
"error": {
"description": [
"can't be blank"
]
},
"details": {
"description": [
{
"error": "blank"
}
]
}
}
}
}
}
}
}
},
"operationId": "patch_administration_id_time_entries_id"
},
"delete": {
"summary": "Delete a time entry",
"description": "Delete a time entry by id. When the time entry belongs to another user than the user of the token, the token\nalso needs the `sales_invoices` scope. A time entry that is on a sales invoice cannot be deleted.\n\n### Required scope(s)\n `time_entries`",
"tags": [
"Time entries"
],
"security": [
{
"bearerAuth": [
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"204": {
"description": "Time entry deleted"
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenTimeEntryDoesNotExist": {
"summary": "Returns 404 when time entry 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": {
"Returns422WhenTheTimeEntryIsOnASalesInvoice": {
"summary": "Returns 422 when the time entry is on a sales invoice",
"value": {
"error": "ID is invalid",
"symbolic": {
"id": "cannot_destroy"
}
}
}
}
}
}
}
},
"operationId": "delete_administration_id_time_entries_id"
}
},
"/{administration_id}/time_entries/{time_entry_id}/notes/{id}{format}": {
"delete": {
"summary": "Destroys note from entity",
"description": "Deletes a note from a time entry.\n\n### Required scope(s)\n `time_entries`",
"tags": [
"Time entries"
],
"security": [
{
"bearerAuth": [
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "time_entry_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"
}
},
"operationId": "delete_administration_id_time_entries_time_entry_id_notes_id"
}
},
"/{administration_id}/time_entries/{time_entry_id}/notes{format}": {
"post": {
"summary": "Adds note to entity",
"description": "Adds a note to the time entry.\n\n### Required scope(s)\n `time_entries`",
"tags": [
"Time entries"
],
"security": [
{
"bearerAuth": [
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "time_entry_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": 502689134528169200,
"todo": true
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Note created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/note_response"
},
"examples": {
"CreateANote": {
"summary": "Create a note",
"value": {
"id": "502689134566966566",
"administration_id": 123,
"entity_id": "502689134550189348",
"entity_type": "TimeEntry",
"user_id": "502689108256097381",
"assignee_id": "502689134528169246",
"todo": true,
"note": "Text of the note",
"completed_at": null,
"completed_by_id": null,
"todo_type": null,
"data": {},
"created_at": "2026-11-02T12:15:38.493Z",
"updated_at": "2026-11-02T12:15:38.493Z"
}
}
}
}
}
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"Returns422WhenInvalidNoteDataIsProvided": {
"summary": "Returns 422 when invalid note data is 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_time_entries_time_entry_id_notes"
}
},
"/{administration_id}/time_entries{format}": {
"get": {
"summary": "List all time entries",
"description": "Returns a paginated list of time entries in the administration.\n\n### Required scope(s)\n `time_entries`",
"tags": [
"Time entries"
],
"security": [
{
"bearerAuth": [
"time_entries"
]
}
],
"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. Available filters:\n\n| **Filter** | **Type** | **Default** | **Description** |\n| --- | --- | --- | --- |\n| state | `String` | `all` | `all`, `open` or `non_billable` |\n| 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`). A custom period must have a start and an end date. It must not be longer than 10 years and must be between `20000101` and `21000101`. For one month, use `202401..202401`, not `202401`. Without `period`, the filter does not limit the dates. The default `this_year` applies only when you send no `filter`. |\n| contact_id | `Integer` | | Select time entries belonging to a certain contact |\n| include_nil_contacts | `Boolean` | false | Whether to include time entries that have no assigned contact |\n| include_active | `Boolean` | false | Whether to include active time entries i.e. time entries without ended_at |\n| project_id | `Integer` | | Select time entries belonging to a certain project |\n| user_id | `Integer` | | Select time entries belonging to a certain user |\n| day | `Date` | | Select time entries on a specific date |\n\nYou can filter by multiple states at the same time as well. To do this, separate the state values by a pipe: `state:open|non_billable`.",
"schema": {
"type": "string",
"default": "period:this_year"
},
"examples": {
"ReturnsAllTimeEntriesFilteredOnState": {
"summary": "Returns all time entries filtered on state",
"value": "state:non_billable"
},
"ReturnsAllTimeEntriesFilteredOnPeriod": {
"summary": "Returns all time entries filtered on period",
"value": "period:this_month"
}
}
},
{
"$ref": "#/components/parameters/page"
},
{
"$ref": "#/components/parameters/per_page"
},
{
"name": "query",
"in": "query",
"required": false,
"description": "Free-text search across the time entry description.",
"schema": {
"type": "string"
},
"examples": {
"ReturnsAllTimeEntriesFilteredOnSearchQuery": {
"summary": "Returns all time entries filtered on search query",
"value": "Custom"
}
}
}
],
"responses": {
"200": {
"description": "A list of time entries",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/time_entry_response"
}
},
"examples": {
"ReturnsAllTimeEntriesFilteredOnSearchQuery": {
"summary": "Returns all time entries filtered on search query",
"value": [
{
"id": "502689135426798983",
"administration_id": 123,
"contact_id": null,
"project_id": null,
"sales_invoice_id": null,
"user_id": 3,
"started_at": "2026-11-02T12:15:00.000Z",
"ended_at": "2026-11-02T13:15:00.000Z",
"description": "Custom description",
"paused_duration": 0,
"billable": true,
"created_at": "2026-11-02T12:15:39.314Z",
"updated_at": "2026-11-02T12:15:39.314Z",
"contact": null,
"user": {
"id": 3,
"name": "Edwin Vlieg",
"created_at": "2026-11-02T12:15:39.307Z",
"updated_at": "2026-11-02T12:15:39.311Z"
},
"project": null,
"sales_invoice": null,
"events": [
{
"administration_id": 123,
"user_id": 3,
"action": "time_entry_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:39.315Z",
"updated_at": "2026-11-02T12:15:39.315Z"
}
],
"notes": []
}
]
},
"ReturnsPaginatedTimeEntriesOnPage1": {
"summary": "Returns paginated time entries on page 1",
"value": [
{
"id": "502689135615542681",
"administration_id": 123,
"contact_id": "502689135600862614",
"project_id": "502689135607154071",
"sales_invoice_id": null,
"user_id": "502689108256097381",
"started_at": "2026-11-02T12:15:00.000Z",
"ended_at": "2026-11-02T13:15:00.000Z",
"description": "Designing the website",
"paused_duration": 0,
"billable": true,
"created_at": "2026-11-02T12:15:39.493Z",
"updated_at": "2026-11-02T12:15:39.493Z",
"contact": {
"id": "502689135600862614",
"firstname": null,
"lastname": null,
"company_name": "Foobar Holding B.V."
},
"user": {
"id": "502689108256097381",
"name": "Moneybird",
"created_at": "2026-11-02T12:15:13.391Z",
"updated_at": "2026-11-02T12:15:13.683Z"
},
"project": {
"id": "502689135607154071",
"name": "Project 1",
"state": "active",
"budget": 10
},
"sales_invoice": null,
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "time_entry_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:39.495Z",
"updated_at": "2026-11-02T12:15:39.495Z"
}
],
"notes": []
}
]
},
"ReturnsAllTimeEntriesOfAnAdministration": {
"summary": "Returns all time entries of an administration",
"value": [
{
"id": "502689135745566117",
"administration_id": 123,
"contact_id": "502689135728788898",
"project_id": "502689135736128931",
"sales_invoice_id": null,
"user_id": "502689108256097381",
"started_at": "2026-11-02T12:15:00.000Z",
"ended_at": "2026-11-02T13:15:00.000Z",
"description": "Designing the website",
"paused_duration": 0,
"billable": true,
"created_at": "2026-11-02T12:15:39.617Z",
"updated_at": "2026-11-02T12:15:39.617Z",
"contact": {
"id": "502689135728788898",
"firstname": null,
"lastname": null,
"company_name": "Foobar Holding B.V."
},
"user": {
"id": "502689108256097381",
"name": "Moneybird",
"created_at": "2026-11-02T12:15:13.391Z",
"updated_at": "2026-11-02T12:15:13.683Z"
},
"project": {
"id": "502689135736128931",
"name": "Project 1",
"state": "active",
"budget": 10
},
"sales_invoice": null,
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "time_entry_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:39.619Z",
"updated_at": "2026-11-02T12:15:39.619Z"
}
],
"notes": []
},
{
"id": "502689135762343336",
"administration_id": 123,
"contact_id": null,
"project_id": null,
"sales_invoice_id": null,
"user_id": 1,
"started_at": "2026-11-02T12:15:00.000Z",
"ended_at": "2026-11-02T13:15:00.000Z",
"description": "Designing the website",
"paused_duration": 0,
"billable": false,
"created_at": "2026-11-02T12:15:39.633Z",
"updated_at": "2026-11-02T12:15:39.633Z",
"contact": null,
"user": {
"id": 1,
"name": "Edwin Vlieg",
"created_at": "2026-11-02T12:15:39.626Z",
"updated_at": "2026-11-02T12:15:39.630Z"
},
"project": null,
"sales_invoice": null,
"events": [
{
"administration_id": 123,
"user_id": 1,
"action": "time_entry_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:39.635Z",
"updated_at": "2026-11-02T12:15:39.635Z"
}
],
"notes": []
},
{
"id": "502689135774926251",
"administration_id": 123,
"contact_id": null,
"project_id": null,
"sales_invoice_id": null,
"user_id": 2,
"started_at": "2026-11-02T12:15:00.000Z",
"ended_at": "2026-11-02T13:15:00.000Z",
"description": "Designing the website",
"paused_duration": 0,
"billable": true,
"created_at": "2026-11-02T12:15:39.646Z",
"updated_at": "2026-11-02T12:15:39.646Z",
"contact": null,
"user": {
"id": 2,
"name": "Edwin Vlieg",
"created_at": "2026-11-02T12:15:39.641Z",
"updated_at": "2026-11-02T12:15:39.644Z"
},
"project": null,
"sales_invoice": null,
"events": [
{
"administration_id": 123,
"user_id": 2,
"action": "time_entry_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:39.647Z",
"updated_at": "2026-11-02T12:15:39.647Z"
}
],
"notes": []
}
]
},
"ReturnsPaginatedTimeEntriesOnPage2": {
"summary": "Returns paginated time entries on page 2",
"value": [
{
"id": "502689135860909492",
"administration_id": 123,
"contact_id": null,
"project_id": null,
"sales_invoice_id": null,
"user_id": 1,
"started_at": "2026-11-02T12:15:00.000Z",
"ended_at": "2026-11-02T13:15:00.000Z",
"description": "Designing the website",
"paused_duration": 0,
"billable": false,
"created_at": "2026-11-02T12:15:39.728Z",
"updated_at": "2026-11-02T12:15:39.728Z",
"contact": null,
"user": {
"id": 1,
"name": "Edwin Vlieg",
"created_at": "2026-11-02T12:15:39.720Z",
"updated_at": "2026-11-02T12:15:39.724Z"
},
"project": null,
"sales_invoice": null,
"events": [
{
"administration_id": 123,
"user_id": 1,
"action": "time_entry_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:39.729Z",
"updated_at": "2026-11-02T12:15:39.729Z"
}
],
"notes": []
}
]
},
"ReturnsAllTimeEntriesFilteredOnState": {
"summary": "Returns all time entries filtered on state",
"value": [
{
"id": "502689135969961408",
"administration_id": 123,
"contact_id": null,
"project_id": null,
"sales_invoice_id": null,
"user_id": 1,
"started_at": "2026-11-02T12:15:00.000Z",
"ended_at": "2026-11-02T13:15:00.000Z",
"description": "Designing the website",
"paused_duration": 0,
"billable": false,
"created_at": "2026-11-02T12:15:39.831Z",
"updated_at": "2026-11-02T12:15:39.831Z",
"contact": null,
"user": {
"id": 1,
"name": "Edwin Vlieg",
"created_at": "2026-11-02T12:15:39.824Z",
"updated_at": "2026-11-02T12:15:39.828Z"
},
"project": null,
"sales_invoice": null,
"events": [
{
"administration_id": 123,
"user_id": 1,
"action": "time_entry_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:39.833Z",
"updated_at": "2026-11-02T12:15:39.833Z"
}
],
"notes": []
}
]
},
"ReturnsAllTimeEntriesFilteredOnPeriod": {
"summary": "Returns all time entries filtered on period",
"value": [
{
"id": "502689136235251169",
"administration_id": 123,
"contact_id": "502689136221619678",
"project_id": "502689136226862559",
"sales_invoice_id": null,
"user_id": "502689108256097381",
"started_at": "2026-11-02T12:15:00.000Z",
"ended_at": "2026-11-02T13:15:00.000Z",
"description": "Designing the website",
"paused_duration": 0,
"billable": true,
"created_at": "2026-11-02T12:15:40.085Z",
"updated_at": "2026-11-02T12:15:40.085Z",
"contact": {
"id": "502689136221619678",
"firstname": null,
"lastname": null,
"company_name": "Foobar Holding B.V."
},
"user": {
"id": "502689108256097381",
"name": "Moneybird",
"created_at": "2026-11-02T12:15:13.391Z",
"updated_at": "2026-11-02T12:15:13.683Z"
},
"project": {
"id": "502689136226862559",
"name": "Project 1",
"state": "active",
"budget": 10
},
"sales_invoice": null,
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "time_entry_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:40.086Z",
"updated_at": "2026-11-02T12:15:40.086Z"
}
],
"notes": []
},
{
"id": "502689136249931236",
"administration_id": 123,
"contact_id": null,
"project_id": null,
"sales_invoice_id": null,
"user_id": 1,
"started_at": "2026-11-02T12:15:00.000Z",
"ended_at": "2026-11-02T13:15:00.000Z",
"description": "Designing the website",
"paused_duration": 0,
"billable": false,
"created_at": "2026-11-02T12:15:40.098Z",
"updated_at": "2026-11-02T12:15:40.098Z",
"contact": null,
"user": {
"id": 1,
"name": "Edwin Vlieg",
"created_at": "2026-11-02T12:15:40.092Z",
"updated_at": "2026-11-02T12:15:40.096Z"
},
"project": null,
"sales_invoice": null,
"events": [
{
"administration_id": 123,
"user_id": 1,
"action": "time_entry_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:40.100Z",
"updated_at": "2026-11-02T12:15:40.100Z"
}
],
"notes": []
},
{
"id": "502689136260416999",
"administration_id": 123,
"contact_id": null,
"project_id": null,
"sales_invoice_id": null,
"user_id": 2,
"started_at": "2026-11-02T12:15:00.000Z",
"ended_at": "2026-11-02T13:15:00.000Z",
"description": "Designing the website",
"paused_duration": 0,
"billable": true,
"created_at": "2026-11-02T12:15:40.109Z",
"updated_at": "2026-11-02T12:15:40.109Z",
"contact": null,
"user": {
"id": 2,
"name": "Edwin Vlieg",
"created_at": "2026-11-02T12:15:40.105Z",
"updated_at": "2026-11-02T12:15:40.107Z"
},
"project": null,
"sales_invoice": null,
"events": [
{
"administration_id": 123,
"user_id": 2,
"action": "time_entry_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:40.110Z",
"updated_at": "2026-11-02T12:15:40.110Z"
}
],
"notes": []
}
]
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsAnErrorWhenTooManyTimeEntriesAreRequested": {
"summary": "Returns an error when too many time entries are requested",
"value": {
"error": "per_page does not have a valid value"
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsAnErrorMessageIfFilterContactIdIsNotFound": {
"summary": "Returns an error message if filter contact id is not found",
"value": {
"error": "record not found",
"symbolic": {
"contact_id": "not_found"
}
}
},
"ReturnsAnErrorMessageIfFilterUserIdIsNotFound": {
"summary": "Returns an error message if filter user id is not found",
"value": {
"error": "record not found",
"symbolic": {
"user_id": "not_found"
}
}
}
}
}
}
}
},
"operationId": "get_administration_id_time_entries"
},
"post": {
"summary": "Create a time entry",
"description": "API to post a time entry. Used to create time entries to record time spent by an employee.\nApi user needs access to both sales invoices and time entries for this action.\n`started_at` and `ended_at` are rounded down to full minutes when creating a time entry, with a minimum of 1 minute between them.\n\n### Required scope(s)\n `time_entries`",
"tags": [
"Time entries"
],
"security": [
{
"bearerAuth": [
"time_entries"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
}
],
"requestBody": {
"required": true,
"content": {
"application/*": {
"schema": {
"unevaluatedProperties": false,
"type": "object",
"properties": {
"time_entry": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"user_id": {
"$ref": "#/components/schemas/identifier",
"description": "The employee for which the time should be entered. Should be a valid user id."
},
"started_at": {
"$ref": "#/components/schemas/timestamp",
"description": "The start time of the time entry. Rounded down to full minutes."
},
"ended_at": {
"$ref": "#/components/schemas/timestamp",
"description": "The end time of the time entry. Rounded down to full minutes. Omit to create a running (active) time entry."
},
"description": {
"type": "string",
"description": "A description on how the time was spent. May be shown on the invoice."
},
"contact_id": {
"$ref": "#/components/schemas/identifier",
"description": "Should be a valid contact id."
},
"project_id": {
"$ref": "#/components/schemas/identifier",
"description": "Should be a valid project id."
},
"sales_invoice_id": {
"$ref": "#/components/schemas/identifier",
"description": "Should be a valid sales invoice id."
},
"billable": {
"type": [
"boolean",
"string"
],
"default": true,
"description": "Whether this time entry is billable to the client."
},
"paused_duration": {
"type": "integer",
"description": "Total paused duration in seconds, is rounded down to full minutes."
}
},
"required": [
"user_id",
"started_at",
"description"
]
}
},
"required": []
},
"examples": {
"CreateABasicTimeEntry": {
"summary": "Create a basic time entry",
"value": {
"time_entry": {
"started_at": "2026-11-02T12:15:00.000Z",
"ended_at": "2026-11-02T13:15:00.000Z",
"description": "Test",
"contact_id": 502689134083573000,
"project_id": 502689134095107300,
"user_id": 502689108256097400,
"billable": false
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Time entry created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/time_entry_response"
},
"examples": {
"CreateABasicTimeEntry": {
"summary": "Create a basic time entry",
"value": {
"id": "502689134117127419",
"administration_id": 123,
"contact_id": "502689134083572984",
"project_id": "502689134095107321",
"sales_invoice_id": null,
"user_id": "502689108256097381",
"started_at": "2026-11-02T12:15:00.000Z",
"ended_at": "2026-11-02T13:15:00.000Z",
"description": "Test",
"paused_duration": 0,
"billable": false,
"created_at": "2026-11-02T12:15:38.065Z",
"updated_at": "2026-11-02T12:15:38.065Z",
"contact": {
"id": "502689134083572984",
"firstname": null,
"lastname": null,
"company_name": "Foobar Holding B.V."
},
"user": {
"id": "502689108256097381",
"name": "Moneybird",
"created_at": "2026-11-02T12:15:13.391Z",
"updated_at": "2026-11-02T12:15:13.683Z"
},
"project": {
"id": "502689134095107321",
"name": "Project 1",
"state": "active",
"budget": 10
},
"sales_invoice": null,
"events": [
{
"administration_id": 123,
"user_id": "502689108256097381",
"action": "time_entry_created",
"link_entity_id": null,
"link_entity_type": null,
"data": {},
"created_at": "2026-11-02T12:15:38.067Z",
"updated_at": "2026-11-02T12:15:38.067Z"
}
],
"notes": []
}
}
}
}
}
},
"402": {
"description": "Payment required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns402WhenLimitIsReached": {
"summary": "Returns 402 when limit is reached",
"value": {
"error": "creating time entries is limited",
"symbolic": {
"administration": "limit_reached"
}
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenSalesInvoiceIdDoesNotExist": {
"summary": "Returns 404 when sales invoice id does not exist",
"value": {
"error": "no sales invoice with given ID found",
"symbolic": {
"sales_invoice_id": "not_found"
}
}
}
}
}
}
},
"422": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
},
"examples": {
"ReturnsAnErrorWhenInvalidDetailsAreProvided": {
"summary": "Returns an error when invalid details are provided",
"value": {
"error": {
"ended_at": [
"cannot be before the start time"
],
"description": [
"can't be blank"
]
},
"details": {
"ended_at": [
{
"error": "ended_at_before_started_at"
}
],
"description": [
{
"error": "blank"
}
]
}
}
}
}
}
}
}
},
"operationId": "post_administration_id_time_entries"
}
},
"/{administration_id}/users{format}": {
"get": {
"summary": "List all users",
"description": "Returns a list of users within the administration.\n\n### Required scope(s)\n `settings`",
"tags": [
"Users"
],
"security": [
{
"bearerAuth": [
"settings"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
},
{
"name": "include_inactive",
"in": "query",
"required": false,
"schema": {
"type": [
"boolean",
"string"
],
"default": false
},
"examples": {
"IncludesInactiveUsersWhenIncludeInactiveIsTrue": {
"summary": "Includes inactive users when include inactive is true",
"value": "true"
},
"ExcludesInactiveUsersAccountantsAndApiUsersWhenTheIncludeFlagsAreFalse": {
"summary": "Excludes inactive users, accountants and api users when the include flags are false",
"value": "false"
}
}
},
{
"name": "include_accountants",
"in": "query",
"required": false,
"schema": {
"type": [
"boolean",
"string"
],
"default": false
},
"examples": {
"IncludesAccountsWhenIncludeAccountantsIsTrue": {
"summary": "Includes accounts when include accountants is true",
"value": "true"
},
"ExcludesInactiveUsersAccountantsAndApiUsersWhenTheIncludeFlagsAreFalse": {
"summary": "Excludes inactive users, accountants and api users when the include flags are false",
"value": "false"
}
}
},
{
"name": "include_api_users",
"in": "query",
"required": false,
"schema": {
"type": [
"boolean",
"string"
],
"default": false
},
"examples": {
"IncludesApiUsersWhenIncludeApiUsersIsTrue": {
"summary": "Includes api users when include api users is true",
"value": "true"
},
"ExcludesInactiveUsersAccountantsAndApiUsersWhenTheIncludeFlagsAreFalse": {
"summary": "Excludes inactive users, accountants and api users when the include flags are false",
"value": "false"
}
}
}
],
"responses": {
"200": {
"description": "A list of users",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/extended_user_response"
}
},
"examples": {
"IncludesAccountsWhenIncludeAccountantsIsTrue": {
"summary": "Includes accounts when include accountants is true",
"value": [
{
"id": "502689108270777446",
"name": "Mo Neybird",
"created_at": "2026-11-02T12:15:13.414Z",
"updated_at": "2026-11-02T12:15:13.708Z",
"email": "info@moneybird.nl",
"email_validated": true,
"language": "nl",
"time_zone": "Europe/Amsterdam",
"user_type": "owner",
"permissions": [
"sales_invoices",
"documents",
"estimates",
"bank",
"settings",
"ownership",
"time_entries"
]
},
{
"id": "502689313459275112",
"name": "A. Accountant.",
"created_at": "2026-11-02T12:18:29.098Z",
"updated_at": "2026-11-02T12:18:29.102Z",
"email": "john+6@example.com",
"email_validated": true,
"language": "nl",
"time_zone": "Europe/Amsterdam",
"user_type": "accountant",
"permissions": [
"sales_invoices",
"documents",
"estimates",
"bank",
"settings",
"time_entries"
]
}
]
},
"IncludesInactiveUsersWhenIncludeInactiveIsTrue": {
"summary": "Includes inactive users when include inactive is true",
"value": [
{
"id": "502689108270777446",
"name": "Mo Neybird",
"created_at": "2026-11-02T12:15:13.414Z",
"updated_at": "2026-11-02T12:15:13.708Z",
"email": "info@moneybird.nl",
"email_validated": true,
"language": "nl",
"time_zone": "Europe/Amsterdam",
"user_type": "owner",
"permissions": [
"sales_invoices",
"documents",
"estimates",
"bank",
"settings",
"ownership",
"time_entries"
]
},
{
"id": "502689313499121002",
"name": "A. User.",
"created_at": "2026-11-02T12:18:29.136Z",
"updated_at": "2026-11-02T12:18:29.144Z"
}
]
},
"IncludesApiUsersWhenIncludeApiUsersIsTrue": {
"summary": "Includes api users when include api users is true",
"value": [
{
"id": "502689108270777446",
"name": "Mo Neybird",
"created_at": "2026-11-02T12:15:13.414Z",
"updated_at": "2026-11-02T12:15:13.708Z",
"email": "info@moneybird.nl",
"email_validated": true,
"language": "nl",
"time_zone": "Europe/Amsterdam",
"user_type": "owner",
"permissions": [
"sales_invoices",
"documents",
"estimates",
"bank",
"settings",
"ownership",
"time_entries"
]
},
{
"id": 1,
"name": "Edwin Vlieg",
"created_at": "2026-11-02T12:18:29.178Z",
"updated_at": "2026-11-02T12:18:29.181Z",
"email": "example+1@dev.null.moneybird.net",
"email_validated": true,
"language": "nl",
"time_zone": "Europe/Amsterdam",
"user_type": "api_user",
"permissions": [
"time_entries"
]
}
]
},
"ReturnsAllActiveUsersOfAnAdministration": {
"summary": "Returns all active users of an administration",
"value": [
{
"id": "502689108270777446",
"name": "Mo Neybird",
"created_at": "2026-11-02T12:15:13.414Z",
"updated_at": "2026-11-02T12:15:13.708Z",
"email": "info@moneybird.nl",
"email_validated": true,
"language": "nl",
"time_zone": "Europe/Amsterdam",
"user_type": "owner",
"permissions": [
"sales_invoices",
"documents",
"estimates",
"bank",
"settings",
"ownership",
"time_entries"
]
},
{
"id": "502689313574618477",
"name": "John Doe",
"created_at": "2026-11-02T12:18:29.209Z",
"updated_at": "2026-11-02T12:18:29.212Z",
"email": "john+6@example.com",
"email_validated": true,
"language": "nl",
"time_zone": "Europe/Amsterdam",
"user_type": "employee",
"permissions": [
"time_entries"
]
}
]
},
"ExcludesInactiveUsersAccountantsAndApiUsersWhenTheIncludeFlagsAreFalse": {
"summary": "Excludes inactive users, accountants and api users when the include flags are false",
"value": [
{
"id": "502689108270777446",
"name": "Mo Neybird",
"created_at": "2026-11-02T12:15:13.414Z",
"updated_at": "2026-11-02T12:15:13.708Z",
"email": "info@moneybird.nl",
"email_validated": true,
"language": "nl",
"time_zone": "Europe/Amsterdam",
"user_type": "owner",
"permissions": [
"sales_invoices",
"documents",
"estimates",
"bank",
"settings",
"ownership",
"time_entries"
]
}
]
},
"DoesNotIncludeApiUsersWhenIncludeApiUsersIsFalse": {
"summary": "Does not include api users when include api users is false",
"value": [
{
"id": "502689108270777446",
"name": "Mo Neybird",
"created_at": "2026-11-02T12:15:13.414Z",
"updated_at": "2026-11-02T12:15:13.708Z",
"email": "info@moneybird.nl",
"email_validated": true,
"language": "nl",
"time_zone": "Europe/Amsterdam",
"user_type": "owner",
"permissions": [
"sales_invoices",
"documents",
"estimates",
"bank",
"settings",
"ownership",
"time_entries"
]
}
]
}
}
}
}
},
"429": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
},
"examples": {
"Returns429WhenExceedingTheRateLimit": {
"summary": "Returns 429 when exceeding the rate limit",
"value": "Retry later"
}
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
}
},
"operationId": "get_administration_id_users"
}
},
"/{administration_id}/verifications{format}": {
"get": {
"summary": "Retrieve verifications",
"description": "Retrieve all the verifications within an administration. Returns all\nverified e-mail addresses and bank account numbers, as well as the\nverified chamber of commerce number and tax number.\n\n### Required scope(s)\n `settings`",
"tags": [
"Verifications"
],
"security": [
{
"bearerAuth": [
"settings"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"200": {
"description": "A list of verifications",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/verification_response"
},
"examples": {
"IfBankAccountNumberVerificationsAreStillPending": {
"summary": "If bank account number verifications are still pending",
"value": {
"emails": [
"validated1@dev.null.moneybird.net",
"validated2@dev.null.moneybird.net"
],
"chamber_of_commerce_number": "12345678",
"tax_number": "NL852924574B01"
}
},
"IfTaxNumberVerificationIsStillPending": {
"summary": "If tax number verification is still pending",
"value": {
"emails": [
"validated1@dev.null.moneybird.net",
"validated2@dev.null.moneybird.net"
],
"bank_account_numbers": [
"NL42TEST0000000002"
],
"chamber_of_commerce_number": "12345678"
}
},
"ReturnsAllVerificationsOfAnAdministration": {
"summary": "Returns all verifications of an administration",
"value": {
"emails": [
"validated1@dev.null.moneybird.net",
"validated2@dev.null.moneybird.net"
],
"bank_account_numbers": [
"NL42TEST0000000002"
],
"chamber_of_commerce_number": "12345678",
"tax_number": "NL852924574B01"
}
},
"IfEmailVerificationsAreStillPending": {
"summary": "If email verifications are still pending",
"value": {
"bank_account_numbers": [
"NL42TEST0000000002"
],
"chamber_of_commerce_number": "12345678",
"tax_number": "NL852924574B01"
}
},
"IfNoVerificationsArePresent": {
"summary": "If no verifications are present",
"value": {}
},
"IfChamberOfCommerceNumberVerificationIsStillPending": {
"summary": "If chamber of commerce number verification is still pending",
"value": {
"emails": [
"validated1@dev.null.moneybird.net",
"validated2@dev.null.moneybird.net"
],
"bank_account_numbers": [
"NL42TEST0000000002"
]
}
}
}
}
}
}
},
"operationId": "get_administration_id_verifications"
}
},
"/{administration_id}/webhooks/{id}/activate{format}": {
"patch": {
"summary": "Activate a webhook",
"description": "Activates a previously deactivated webhook. After activation, the webhook will resume receiving event notifications.\n\n### Required scope(s)\n `settings`",
"tags": [
"Webhooks"
],
"security": [
{
"bearerAuth": [
"settings"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"200": {
"description": "Webhook activated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/webhook_response"
},
"examples": {
"ActivatesAWebhook": {
"summary": "Activates a webhook",
"value": {
"id": "502689286107169907",
"administration_id": 123,
"url": "http://example.com/create_webhook",
"enabled_events": [],
"last_http_status": null,
"last_http_body": null,
"token": "Z3LWpBDhXYsSgLCtL1JytbLJ",
"deactivated_at": null
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsA404WhenTheWebhookCannotBeFound": {
"summary": "Returns a 404 when the webhook cannot be found",
"value": {
"error": "Record not found for model name: Webhook"
}
}
}
}
}
}
},
"operationId": "patch_administration_id_webhooks_id_activate"
}
},
"/{administration_id}/webhooks/{id}/deactivate{format}": {
"patch": {
"summary": "Deactivate a webhook",
"description": "Deactivates a webhook. A deactivated webhook will not receive new event notifications, but existing retries will still be processed. The webhook can be reactivated at any time.\n\n### Required scope(s)\n `settings`",
"tags": [
"Webhooks"
],
"security": [
{
"bearerAuth": [
"settings"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/identifier"
}
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"200": {
"description": "Webhook deactivated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/webhook_response"
},
"examples": {
"DeactivatesAWebhook": {
"summary": "Deactivates a webhook",
"value": {
"id": "502689286287525007",
"administration_id": 123,
"url": "http://example.com/create_webhook",
"enabled_events": [],
"last_http_status": null,
"last_http_body": null,
"token": "X8LeNxrgmQKrmxWmmFvbqVN6",
"deactivated_at": "2026-11-02T12:18:03.195Z"
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"ReturnsA404WhenTheWebhookCannotBeFound": {
"summary": "Returns a 404 when the webhook cannot be found",
"value": {
"error": "Record not found for model name: Webhook"
}
}
}
}
}
}
},
"operationId": "patch_administration_id_webhooks_id_deactivate"
}
},
"/{administration_id}/webhooks/{id}{format}": {
"delete": {
"summary": "Delete a webhook",
"description": "Remove a registered webhook.\n\n### Required scope(s)\n `settings`",
"tags": [
"Webhooks"
],
"security": [
{
"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": "Webhook deleted"
},
"404": {
"$ref": "#/components/responses/404_not_found"
}
},
"operationId": "delete_administration_id_webhooks_id"
}
},
"/{administration_id}/webhooks{format}": {
"get": {
"summary": "List all webhooks",
"description": "List all registered webhooks for the administration.\n\n### Required scope(s)\n `settings`",
"tags": [
"Webhooks"
],
"security": [
{
"bearerAuth": [
"settings"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"200": {
"description": "A list of webhooks",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/webhook_response"
}
},
"examples": {
"ReturnsAllWebhooksOfAnAdministration": {
"summary": "Returns all webhooks of an administration",
"value": [
{
"id": "502689286335759510",
"administration_id": 123,
"url": "http://example.com/create_webhook",
"enabled_events": [],
"last_http_status": null,
"last_http_body": null,
"token": "Ayo89tgerVZyCiKynvoLVQvk",
"deactivated_at": null
}
]
}
}
}
}
}
},
"operationId": "get_administration_id_webhooks"
},
"post": {
"summary": "Create a webhook",
"description": "Creates a new webhook. The provided URL should respond with a 200 HTTP status. After\ncreation, the URL will receive notifications when events on documents in the\nadministration occur. It is also possible to subscribe to certain events by adding an array\nwith events you would like to receive notifications from. For a full list of available events\nand event groups, see the [webhook events documentation](https://developer.moneybird.com/webhooks/events).\n\n\n \n We strongly recommend that you use a secure HTTPS endpoint for receiving payload from Moneybird.
\n If you use unencrypted HTTP, anyone on the network may be able to listen in on sensitive information like contacts and invoices.\n
\n\n### Required scope(s)\n `settings`",
"tags": [
"Webhooks"
],
"security": [
{
"bearerAuth": [
"settings"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
}
],
"requestBody": {
"required": true,
"content": {
"application/*": {
"schema": {
"unevaluatedProperties": false,
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The HTTPS endpoint URL that will receive webhook notifications. Must respond with HTTP 200 on creation."
},
"enabled_events": {
"type": "array",
"description": "List of events to subscribe to. See [webhook events](https://developer.moneybird.com/webhooks/events) for all available events and event groups.",
"items": {
"type": [
"string"
]
}
}
},
"required": [
"url"
]
},
"examples": {
"CreatesAWebhook": {
"summary": "Creates a webhook",
"value": {
"url": "http://www.mocky.io/v2/5185415ba171ea3a00704eed"
}
},
"CreatesAWebhookThatIsSubscribedToEnabledEvents": {
"summary": "Creates a webhook that is subscribed to enabled events",
"value": {
"url": "http://www.mocky.io/v2/5185415ba171ea3a00704eed",
"enabled_events": [
"contact_created"
]
}
}
}
}
}
},
"responses": {
"201": {
"description": "Webhook created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/webhook_response"
},
"examples": {
"CreatesAWebhook": {
"summary": "Creates a webhook",
"value": {
"id": "502689286204687491",
"administration_id": 123,
"url": "http://www.mocky.io/v2/5185415ba171ea3a00704eed",
"enabled_events": [],
"last_http_status": null,
"last_http_body": null,
"token": "1aqC8cjMQ4VjLLkw7dTiGn4V",
"secret": "b6acd7c7683ff4314acd6fec43b046a467fd7722b6773cf58954d20f8dce1341",
"deactivated_at": null
}
},
"CreatesAWebhookThatIsSubscribedToEnabledEvents": {
"summary": "Creates a webhook that is subscribed to enabled events",
"value": {
"id": "502689286242436233",
"administration_id": 123,
"url": "http://www.mocky.io/v2/5185415ba171ea3a00704eed",
"enabled_events": [
"contact_created"
],
"last_http_status": null,
"last_http_body": null,
"token": "s1CF64vwp2jmRPsbnhi5mfWU",
"secret": "086832f7c566d1dc514fe848c1f1650200d925329920e56292cd33e7161d2c6c",
"deactivated_at": null
}
}
}
}
}
},
"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": "Url is required",
"symbolic": {
"url": "required"
}
}
},
"ReturnsAnErrorWhenEventsIsProvided": {
"summary": "Returns an error when events is provided",
"value": {
"error": "'events' has been removed from webhooks, use 'enabled_events'",
"symbolic": {
"events": "removed"
}
}
}
}
}
}
}
},
"operationId": "post_administration_id_webhooks"
}
},
"/{administration_id}/workflows/{id}{format}": {
"get": {
"summary": "Get a workflow by id",
"description": "Returns all information about a workflow.\n\n### Required scope(s)\n Any of: `settings`, `sales_invoices`, `documents`, `estimates` or `bank`",
"tags": [
"Workflows"
],
"security": [
{
"bearerAuth": [
"settings"
]
},
{
"bearerAuth": [
"sales_invoices"
]
},
{
"bearerAuth": [
"documents"
]
},
{
"bearerAuth": [
"estimates"
]
},
{
"bearerAuth": [
"bank"
]
}
],
"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 workflow",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/workflow_response"
},
"examples": {
"ReturnsAWorkflowWithSteps": {
"summary": "Returns a workflow with steps",
"value": {
"id": "502689109097055375",
"administration_id": 123,
"type": "InvoiceWorkflow",
"name": "Standaard",
"default": true,
"currency": "EUR",
"language": "nl",
"active": true,
"prices_are_incl_tax": false,
"payment_methods": [],
"collection_method": null,
"number_of_collections": 0,
"show_qr_code": true,
"created_at": "2026-11-02T12:15:14.201Z",
"updated_at": "2026-11-02T12:15:14.201Z",
"steps": [
{
"id": "502689109102298256",
"administration_id": 123,
"step_order": 0,
"due_interval": 14,
"reminder_delay": 0,
"reminder_text": null,
"reminder_auto_send": false,
"action": null,
"created_at": "2026-11-02T12:15:14.208Z",
"updated_at": "2026-11-02T12:15:14.208Z"
},
{
"id": "502689109104395409",
"administration_id": 123,
"step_order": 1,
"due_interval": 10,
"reminder_delay": 0,
"reminder_text": "Geachte {recipient.name},\n\nUit onze administratie blijkt dat u de onderstaande facturen nog niet voldaan heeft. We willen u erop wijzen dat de betaaltermijn van deze facturen verstreken is en verzoeken u vriendelijk doch dringend om de betaling zo spoedig mogelijk te voldoen.\n\n{reminders_table}\n\nMochten de betalingen en deze herinnering elkaar kruisen, dan kunt u deze herinnering als niet verzonden beschouwen.\nVia deze link kunt u naar het overzicht van uw {recipient.show_open_invoices_online_url}.\n\nMet vriendelijke groet,\n\n{company.company_name}",
"reminder_auto_send": false,
"action": null,
"created_at": "2026-11-02T12:15:14.210Z",
"updated_at": "2026-11-02T12:15:14.210Z"
},
{
"id": "502689109108589714",
"administration_id": 123,
"step_order": 2,
"due_interval": 5,
"reminder_delay": 0,
"reminder_text": "Geachte {recipient.name},\n\nOndanks een eerdere herinnering blijkt uit onze administratie dat u de onderstaande facturen nog niet voldaan heeft. We willen u er op wijzen dat de betaaltermijn van deze facturen verstreken is en verzoeken u vriendelijk doch dringend om de betaling zo spoedig mogelijk te voldoen.\n\n{reminders_table}\n\nMochten de betalingen en deze herinnering elkaar kruisen, dan kunt u deze herinnering als niet verzonden beschouwen. Wanneer betaling uitblijft, zullen wij de vordering uit handen moeten geven aan een incassobureau en de wettelijke incassokosten in rekening brengen.\nVia deze link kunt u naar het overzicht van uw {recipient.show_open_invoices_online_url}.\n\nMet vriendelijke groet,\n\n{company.company_name}",
"reminder_auto_send": false,
"action": null,
"created_at": "2026-11-02T12:15:14.211Z",
"updated_at": "2026-11-02T12:15:14.211Z"
},
{
"id": "502689109110686867",
"administration_id": 123,
"step_order": 3,
"due_interval": 5,
"reminder_delay": 0,
"reminder_text": "Geachte {recipient.name},\n\nOndanks eerdere herinneringen blijkt uit onze administratie dat u de onderstaande facturen nog niet voldaan heeft. Dit is de derde herinnering voor het voldoen van de vordering, voordat de vordering uit handen gegeven zal worden aan een incassobureau.\n\n{reminders_table}\n\nWij verzoeken u om de betalingen binnen 5 dagen te voldoen. Wanneer betaling uitblijft, zullen wij de vordering uit handen geven aan een incassobureau en brengen we de wettelijke incassokosten in rekening.\nVia deze link kunt u naar het overzicht van uw {recipient.show_open_invoices_online_url}.\n\nMet vriendelijke groet,\n\n{company.company_name}",
"reminder_auto_send": false,
"action": null,
"created_at": "2026-11-02T12:15:14.217Z",
"updated_at": "2026-11-02T12:15:14.217Z"
}
]
}
}
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
},
"examples": {
"Returns404WhenWorkflowDoesNotExist": {
"summary": "Returns 404 when workflow does not exist",
"value": {
"error": "Record not found for model name: Workflow"
}
}
}
}
}
}
},
"operationId": "get_administration_id_workflows_id"
}
},
"/{administration_id}/workflows{format}": {
"get": {
"summary": "Retrieve available workflows",
"description": "Returns a list of all the workflows of an administration.\n\n### Required scope(s)\n Any of: `settings`, `sales_invoices`, `documents`, `estimates` or `bank`",
"tags": [
"Workflows"
],
"security": [
{
"bearerAuth": [
"settings"
]
},
{
"bearerAuth": [
"sales_invoices"
]
},
{
"bearerAuth": [
"documents"
]
},
{
"bearerAuth": [
"estimates"
]
},
{
"bearerAuth": [
"bank"
]
}
],
"parameters": [
{
"$ref": "#/components/parameters/administration_id"
},
{
"$ref": "#/components/parameters/format"
}
],
"responses": {
"200": {
"description": "A list of workflows",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/workflow_response"
}
},
"examples": {
"ReturnsAllWorkflowsOfAnAdministration": {
"summary": "Returns all workflows of an administration",
"value": [
{
"id": "502689109222884501",
"administration_id": 123,
"type": "EstimateWorkflow",
"name": "Standaard",
"default": true,
"currency": "EUR",
"language": "nl",
"active": true,
"prices_are_incl_tax": false,
"payment_methods": [],
"collection_method": null,
"number_of_collections": 0,
"show_qr_code": true,
"created_at": "2026-11-02T12:15:14.322Z",
"updated_at": "2026-11-02T12:15:14.322Z",
"steps": [
{
"id": "502689109224981654",
"administration_id": 123,
"step_order": 0,
"due_interval": 14,
"reminder_delay": 0,
"reminder_text": null,
"reminder_auto_send": false,
"action": null,
"created_at": "2026-11-02T12:15:14.325Z",
"updated_at": "2026-11-02T12:15:14.325Z"
}
]
},
{
"id": "502689109097055375",
"administration_id": 123,
"type": "InvoiceWorkflow",
"name": "Standaard",
"default": true,
"currency": "EUR",
"language": "nl",
"active": true,
"prices_are_incl_tax": false,
"payment_methods": [],
"collection_method": null,
"number_of_collections": 0,
"show_qr_code": true,
"created_at": "2026-11-02T12:15:14.201Z",
"updated_at": "2026-11-02T12:15:14.201Z",
"steps": [
{
"id": "502689109102298256",
"administration_id": 123,
"step_order": 0,
"due_interval": 14,
"reminder_delay": 0,
"reminder_text": null,
"reminder_auto_send": false,
"action": null,
"created_at": "2026-11-02T12:15:14.208Z",
"updated_at": "2026-11-02T12:15:14.208Z"
},
{
"id": "502689109104395409",
"administration_id": 123,
"step_order": 1,
"due_interval": 10,
"reminder_delay": 0,
"reminder_text": "Geachte {recipient.name},\n\nUit onze administratie blijkt dat u de onderstaande facturen nog niet voldaan heeft. We willen u erop wijzen dat de betaaltermijn van deze facturen verstreken is en verzoeken u vriendelijk doch dringend om de betaling zo spoedig mogelijk te voldoen.\n\n{reminders_table}\n\nMochten de betalingen en deze herinnering elkaar kruisen, dan kunt u deze herinnering als niet verzonden beschouwen.\nVia deze link kunt u naar het overzicht van uw {recipient.show_open_invoices_online_url}.\n\nMet vriendelijke groet,\n\n{company.company_name}",
"reminder_auto_send": false,
"action": null,
"created_at": "2026-11-02T12:15:14.210Z",
"updated_at": "2026-11-02T12:15:14.210Z"
},
{
"id": "502689109108589714",
"administration_id": 123,
"step_order": 2,
"due_interval": 5,
"reminder_delay": 0,
"reminder_text": "Geachte {recipient.name},\n\nOndanks een eerdere herinnering blijkt uit onze administratie dat u de onderstaande facturen nog niet voldaan heeft. We willen u er op wijzen dat de betaaltermijn van deze facturen verstreken is en verzoeken u vriendelijk doch dringend om de betaling zo spoedig mogelijk te voldoen.\n\n{reminders_table}\n\nMochten de betalingen en deze herinnering elkaar kruisen, dan kunt u deze herinnering als niet verzonden beschouwen. Wanneer betaling uitblijft, zullen wij de vordering uit handen moeten geven aan een incassobureau en de wettelijke incassokosten in rekening brengen.\nVia deze link kunt u naar het overzicht van uw {recipient.show_open_invoices_online_url}.\n\nMet vriendelijke groet,\n\n{company.company_name}",
"reminder_auto_send": false,
"action": null,
"created_at": "2026-11-02T12:15:14.211Z",
"updated_at": "2026-11-02T12:15:14.211Z"
},
{
"id": "502689109110686867",
"administration_id": 123,
"step_order": 3,
"due_interval": 5,
"reminder_delay": 0,
"reminder_text": "Geachte {recipient.name},\n\nOndanks eerdere herinneringen blijkt uit onze administratie dat u de onderstaande facturen nog niet voldaan heeft. Dit is de derde herinnering voor het voldoen van de vordering, voordat de vordering uit handen gegeven zal worden aan een incassobureau.\n\n{reminders_table}\n\nWij verzoeken u om de betalingen binnen 5 dagen te voldoen. Wanneer betaling uitblijft, zullen wij de vordering uit handen geven aan een incassobureau en brengen we de wettelijke incassokosten in rekening.\nVia deze link kunt u naar het overzicht van uw {recipient.show_open_invoices_online_url}.\n\nMet vriendelijke groet,\n\n{company.company_name}",
"reminder_auto_send": false,
"action": null,
"created_at": "2026-11-02T12:15:14.217Z",
"updated_at": "2026-11-02T12:15:14.217Z"
}
]
}
]
}
}
}
}
}
},
"operationId": "get_administration_id_workflows"
}
}
},
"components": {
"headers": {
"link": {
"description": "Pagination links (next, prev)",
"schema": {
"type": "string"
}
},
"x-total-count": {
"description": "Total number of entries in the collection",
"schema": {
"type": "integer"
}
}
},
"parameters": {
"administration_id": {
"in": "path",
"name": "administration_id",
"required": true,
"schema": {
"$ref": "#/components/schemas/administration_id"
},
"description": "The unique identifier of the administration"
},
"format": {
"in": "path",
"name": "format",
"required": true,
"schema": {
"type": "string",
"pattern": "^(.(json|xml))?$",
"default": ".json"
},
"description": "The format in which the response is given, can be empty to use the default format"
},
"granularity": {
"name": "granularity",
"in": "query",
"required": false,
"description": "Splits the report into periods of a month, a quarter or a year. The response then also contains `periods`, with the same fields for each period. The first and the last period are cut off at the start and the end of `period`.\n",
"schema": {
"type": "string",
"enum": [
"month",
"quarter",
"year"
]
}
},
"page": {
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": [
"integer",
"string"
]
}
},
"per_page": {
"name": "per_page",
"in": "query",
"required": false,
"schema": {
"type": [
"integer",
"string"
],
"pattern": "^\\d+$",
"minimum": 1,
"maximum": 100
}
},
"period": {
"name": "period",
"in": "query",
"required": false,
"description": "The period can be a date range or one of the presets. Date ranges must consist of whole months (start on 1st, end on last day of month).\n\n**Date range formats:**\n - `YYYYMMDD..YYYYMMDD` (e.g., `20250101..20250131`)\n - `YYYYMM..YYYYMM` (e.g., `202501..202501`)\n - `YYYYMM` (e.g., `202501`)\n\n**Preset options:**\n - `this_month` - Current month (default if not specified)\n - `prev_month` - Previous month\n - `next_month` - Next month\n - `this_quarter` - Current quarter\n - `prev_quarter` - Previous quarter\n - `next_quarter` - Next quarter\n - `this_year` - Current year\n - `prev_year` - Previous year\n - `next_year` - Next year\n\n**Maximum period: 12 months.**\n",
"schema": {
"type": "string",
"pattern": "^\\d{6,8}(..\\d{6,8})?|this_month|prev_month|next_month|this_quarter|prev_quarter|next_quarter|this_year|prev_year|next_year$",
"example": "20250101..20250131",
"default": "this_month"
}
},
"period_until": {
"name": "period_until",
"in": "query",
"required": false,
"description": "A period until which a report should be generated.\n\n**Date range formats:**\n - `YYYYMM` (e.g., `202501`)\n\n**Preset options:**\n - `this_month` - Current month (default if not specified)\n - `prev_month` - Previous month\n - `this_quarter` - Current quarter\n - `prev_quarter` - Previous quarter\n - `this_year` - Current year\n - `prev_year` - Previous year\n",
"schema": {
"type": "string",
"pattern": "^\\d{6,8}|this_month|prev_month|this_quarter|prev_quarter|this_year|prev_year$",
"example": "202501",
"default": "this_month"
}
},
"sort": {
"name": "sort",
"in": "query",
"required": false,
"description": "Sorts the list on date, so the newest (`date_desc`) or the oldest (`date_asc`) items come first.\n",
"schema": {
"type": "string",
"default": "date_desc",
"enum": [
"date_desc",
"date_asc"
]
}
}
},
"requestBodies": {
"payment_request": {
"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/money",
"description": "The amount paid in the document's currency."
},
"price_base": {
"$ref": "#/components/schemas/money",
"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."
},
"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). `payment_without_proof` is only accepted when the administration allows payments without proof."
},
"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": []
}
}
}
},
"subscription_additional_charge_request": {
"required": true,
"content": {
"application/*": {
"schema": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"product_id": {
"$ref": "#/components/schemas/identifier"
},
"amount": {
"type": [
"string",
"integer"
],
"description": "The quantity on the invoice line, e.g. `1` or `5 x`."
},
"price": {
"$ref": "#/components/schemas/money",
"description": "The price per unit. Defaults to the price of the product for this contact at the start of the period."
},
"period": {
"type": "string",
"description": "The period the charge applies to, e.g. `20250101..20250131`, `202501..202503` or `this_month`."
},
"description": {
"type": "string"
},
"identifier": {
"type": "string",
"description": "Your own reference for this charge."
}
},
"required": [
"product_id",
"amount",
"period",
"description"
]
}
}
}
}
},
"responses": {
"200_synchronization_response": {
"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"
]
}
}
}
}
}
}
},
"204_no_content": {
"description": "No content"
},
"302_found": {
"description": "Found",
"content": {
"text/plain": {
"schema": {
"type": "string"
}
}
}
},
"400_bad_request": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
}
}
}
},
"401_unauthorized": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
}
}
}
},
"402_payment_required": {
"description": "Payment required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
}
}
}
},
"403_forbidden": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
}
}
}
},
"404_not_found": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
}
}
}
},
"422_unprocessable_entity": {
"description": "Unprocessable entity",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/symbolic_error"
},
{
"$ref": "#/components/schemas/non_symbolic_error"
}
]
}
}
}
},
"429_too_many_requests": {
"description": "Too many requests - rate limit exceeded",
"content": {
"application/json": {
"schema": {
"type": "string",
"example": "Retry later"
}
}
},
"headers": {
"RateLimit-Limit": {
"description": "The rate limit ceiling for that given request",
"schema": {
"type": "integer",
"example": 150
}
},
"RateLimit-Remaining": {
"description": "The number of requests left for the time window",
"schema": {
"type": "integer",
"example": 149
}
},
"RateLimit-Reset": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
},
"Retry-After": {
"description": "The time at which the current rate limit window resets in UTC epoch seconds",
"schema": {
"type": "integer",
"example": 1609459200
}
}
}
},
"4XX_open_error": {
"description": "Error code",
"content": {
"application/json": {
"schema": {
"type": "integer"
}
}
}
},
"503_service_unavailable": {
"description": "Service Unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/symbolic_error"
}
}
}
},
"status_code": {
"description": "Status code",
"content": {
"application/json": {
"schema": {
"type": "integer"
}
}
}
}
},
"schemas": {
"administration_id": {
"allOf": [
{
"$ref": "#/components/schemas/identifier",
"description": "A unique record identifier of an administration",
"example": "123"
}
]
},
"administration_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/administration_id"
},
"name": {
"type": "string",
"example": "Moneybird"
},
"language": {
"type": "string",
"enum": [
"nl",
"nl-be",
"en"
],
"example": "nl",
"description": "The ISO 639-1 language code used in the administration"
},
"currency": {
"type": "string",
"description": "The ISO 4217 currency code",
"example": "EUR"
},
"country": {
"type": "string",
"description": "The ISO 3166-1 alpha-2 code the administration country",
"example": "NL"
},
"time_zone": {
"type": "string",
"description": "The time zone of the administration",
"example": "Europe/Amsterdam"
},
"access": {
"type": "string",
"enum": [
"accountant_company",
"user"
],
"description": "The type of acess the user has to this administration",
"example": "user"
},
"suspended": {
"type": "boolean"
},
"period_locked_until": {
"type": [
"string",
"null"
],
"format": "date"
},
"period_start_date": {
"type": "string",
"format": "date",
"description": "Start of the year in which the administration recorded its first bookkeeping data, based on journal entries.",
"example": "2024-01-01"
}
}
},
"aging_report_item": {
"type": "object",
"description": "Aging report data item",
"properties": {
"contact_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"amount": {
"type": "string"
},
"aging_buckets": {
"type": "array",
"minItems": 4,
"maxItems": 4,
"description": "In this order: 0 to 30 days, 30 to 60 days, older, and the total of the contact, which\nequals `amount`.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "In the language of the user."
},
"amount": {
"type": "string"
}
}
}
}
}
},
"asset_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"ledger_account_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"name": {
"type": "string"
},
"purchase_date": {
"type": "string",
"format": "date"
},
"purchase_value": {
"$ref": "#/components/schemas/number"
},
"calculated_purchase_value": {
"$ref": "#/components/schemas/number",
"description": "Purchase value reduced by any reinvestment reserve purchase applied to the asset."
},
"current_value": {
"$ref": "#/components/schemas/number"
},
"value_change_plan": {
"type": [
"object",
"null"
],
"unevaluatedProperties": false,
"properties": {
"lifespan_in_years": {
"type": "number"
},
"residual_value": {
"$ref": "#/components/schemas/number"
},
"active": {
"type": "boolean"
},
"monthly_depreciation": {
"$ref": "#/components/schemas/number"
}
}
},
"disposal": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/components/schemas/disposal_response"
}
]
},
"value_changes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/value_change_response"
}
},
"sources": {
"type": "array",
"items": {
"$ref": "#/components/schemas/source_response"
}
},
"reinvestment_reserve_purchase": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/components/schemas/reinvestment_reserve_purchase_response"
}
]
}
}
},
"attachment_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"attachable_id": {
"$ref": "#/components/schemas/identifier"
},
"attachable_type": {
"type": "string",
"enum": [
"SalesInvoice",
"RecurringSalesInvoice",
"Document",
"FinancialStatement",
"Workflow",
"Estimate",
"ExternalSalesInvoice"
]
},
"filename": {
"type": "string"
},
"content_type": {
"type": "string"
},
"size": {
"type": "integer"
},
"rotation": {
"type": [
"integer",
"null"
]
},
"created_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"updated_at": {
"type": [
"string",
"null"
],
"format": "date-time"
}
}
},
"balance_sheet_credit": {
"type": "object",
"description": "Credit side of the balance sheet (equity and liabilities)",
"properties": {
"total": {
"type": "string",
"description": "Total credit amount"
},
"equity": {
"$ref": "#/components/schemas/balance_sheet_ledger_account"
},
"provisions": {
"$ref": "#/components/schemas/balance_sheet_ledger_account"
},
"non_current_liabilities": {
"$ref": "#/components/schemas/balance_sheet_ledger_account"
},
"current_liabilities": {
"$ref": "#/components/schemas/balance_sheet_ledger_account"
},
"open_years": {
"type": "array",
"description": "Results per open year",
"items": {
"type": "object",
"properties": {
"year": {
"type": "string"
},
"value": {
"type": "string"
}
}
}
}
}
},
"balance_sheet_debit": {
"type": "object",
"description": "Debit side of the balance sheet (assets)",
"properties": {
"total": {
"type": "string"
},
"current_assets": {
"$ref": "#/components/schemas/balance_sheet_ledger_account"
},
"non_current_assets": {
"$ref": "#/components/schemas/balance_sheet_ledger_account"
}
}
},
"balance_sheet_ledger_account": {
"type": "array",
"description": "A list of ledger accounts with their value and child accounts",
"items": {
"type": "object",
"properties": {
"ledger_account_id": {
"type": "string"
},
"value": {
"type": "string"
},
"children": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ledger_account_id": {
"type": "string"
},
"value": {
"type": "string"
}
}
}
}
}
}
},
"bank_balance_amounts": {
"type": "object",
"properties": {
"total": {
"type": "string",
"description": "The total of `financial_accounts`, the same as `closing_balance` of the cash flow report"
},
"financial_accounts": {
"type": "array",
"description": "The booked balance of every financial account except private withdrawal accounts. Like the balance sheet, an account with a zero balance in every period is left out.",
"items": {
"type": "object",
"unevaluatedProperties": false,
"required": [
"financial_account_id",
"name",
"type",
"balance"
],
"properties": {
"financial_account_id": {
"$ref": "#/components/schemas/identifier"
},
"name": {
"type": "string"
},
"type": {
"type": "string",
"description": "The kind of financial account, such as `BankAccount` or `CreditCardAccount`"
},
"balance": {
"type": "string"
}
}
}
}
}
},
"base_contact_response": {
"type": "object",
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"company_name": {},
"firstname": {
"type": [
"string",
"null"
]
},
"lastname": {
"type": [
"string",
"null"
]
},
"address1": {
"type": [
"string",
"null"
]
},
"address2": {
"type": [
"string",
"null"
]
},
"zipcode": {
"type": [
"string",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"country": {
"type": "string"
},
"phone": {
"type": [
"string",
"null"
]
},
"delivery_method": {
"type": [
"string",
"null"
],
"enum": [
"Email",
"Post",
"Manual",
"Simplerinvoicing",
"Peppol",
null
]
},
"customer_id": {
"type": "string",
"description": "Will be assigned automatically if empty"
},
"tax_number": {
"type": [
"string",
"null"
]
},
"chamber_of_commerce": {
"type": [
"string",
"null"
]
},
"bank_account": {
"type": [
"string",
"null"
],
"description": "The SEPA IBAN of the contact, can be empty if no SEPA IBAN is set"
},
"is_trusted": {
"type": "boolean",
"default": "default"
},
"max_transfer_amount": {
"type": [
"string",
"null"
]
},
"attention": {
"type": [
"string",
"null"
]
},
"email": {
"type": [
"string",
"null"
]
},
"email_ubl": {
"type": "boolean"
},
"send_invoices_to_attention": {
"type": [
"string",
"null"
]
},
"send_invoices_to_email": {
"type": [
"string",
"null"
]
},
"send_estimates_to_attention": {
"type": [
"string",
"null"
]
},
"send_estimates_to_email": {
"type": [
"string",
"null"
]
},
"direct_debit": {
"type": "boolean"
},
"sepa_active": {
"type": [
"boolean",
"null"
]
},
"sepa_iban": {
"type": [
"string",
"null"
]
},
"sepa_iban_account_name": {
"type": [
"string",
"null"
]
},
"sepa_bic": {
"type": [
"string",
"null"
]
},
"sepa_mandate_id": {
"type": [
"string",
"null"
]
},
"sepa_mandate_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"sepa_sequence_type": {
"type": "string",
"enum": [
"RCUR",
"FRST",
"OOFF",
"FNAL"
]
},
"credit_card_number": {
"type": [
"string",
"null"
]
},
"credit_card_reference": {
"type": [
"string",
"null"
]
},
"credit_card_type": {
"type": [
"string",
"null"
],
"enum": [
"mastercard",
"visa",
null
]
},
"tax_number_validated_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"tax_number_valid": {
"type": [
"boolean",
"null"
]
},
"invoice_workflow_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"estimate_workflow_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"si_identifier": {
"type": [
"string",
"null"
]
},
"si_identifier_type": {
"type": [
"string",
"null"
]
},
"moneybird_payments_mandate": {
"type": "boolean",
"description": "Whether the contact has a valid Moneybird Payments mandate"
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
},
"version": {
"type": "integer",
"example": 1716801778
},
"sales_invoices_url": {
"type": "string",
"format": "uri",
"pattern": "^https:\\/\\/moneybird\\.\\w{3,9}\\/\\d+\\/sales_invoices\\/[a-f0-9]{64}\\/all$",
"example": "https://moneybird.com/123/sales_invoices/4f0af91e456aa9c5b11ccfd6572da4f56cc8e45a701690c9279c9e4cec7b68f1/all"
},
"notes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/note_response"
}
},
"custom_fields": {
"type": "array",
"items": {
"$ref": "#/components/schemas/custom_field_value_response"
}
},
"contact_people": {
"type": "array",
"items": {
"$ref": "#/components/schemas/contact_person_response"
}
},
"archived": {
"type": "boolean"
}
}
},
"base_user_response": {
"type": "object",
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"name": {
"type": "string"
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
}
}
},
"cash_flow_amounts": {
"type": "object",
"properties": {
"cash_received_by_ledger_account": {
"$ref": "#/components/schemas/ledger_account_data"
},
"cash_paid_by_ledger_account": {
"$ref": "#/components/schemas/ledger_account_data"
},
"opening_balance": {
"type": "string",
"description": "The balance of the financial accounts at the start of the period"
},
"closing_balance": {
"type": "string",
"description": "The balance of the financial accounts at the end of the period"
}
}
},
"contact_person_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"contact_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"firstname": {
"type": [
"string",
"null"
]
},
"lastname": {
"type": [
"string",
"null"
]
},
"phone": {
"type": [
"string",
"null"
]
},
"email": {
"type": [
"string",
"null"
]
},
"department": {
"type": [
"string",
"null"
]
},
"created_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"updated_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"version": {
"type": "integer"
}
}
},
"contact_report_item": {
"type": "object",
"description": "Contact report data item",
"properties": {
"contact_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"amount": {
"type": "string"
}
},
"required": [
"contact_id",
"amount"
]
},
"contact_response": {
"unevaluatedProperties": false,
"allOf": [
{
"$ref": "#/components/schemas/base_contact_response"
},
{
"type": "object",
"properties": {
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/event_response"
}
}
}
}
]
},
"creditors_report_item": {
"type": "object",
"description": "Creditors report data item",
"properties": {
"contact_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"amount": {
"type": "string"
}
},
"required": [
"contact_id",
"amount"
]
},
"currency": {
"type": "string",
"description": "ISO 4217 currency code",
"example": "EUR"
},
"custom_field_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"administration_id": {
"oneOf": [
{
"$ref": "#/components/schemas/administration_id"
},
{
"type": "null"
}
]
},
"name": {
"type": "string"
},
"source": {
"type": [
"string",
"null"
],
"enum": [
"sales_invoice",
"estimate",
"contact",
"identity",
null
]
}
}
},
"custom_field_value_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"name": {
"type": "string"
},
"value": {
"type": "string"
}
}
},
"custom_fields_attributes": {
"oneOf": [
{
"type": "object",
"additionalProperties": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the custom field to set a value for. Retrieve available custom fields via the custom fields endpoint."
},
"value": {
"type": "string",
"description": "The value to assign to the custom field. The expected format depends on the custom field's type (e.g. text or dropdown)."
}
},
"required": [
"id",
"value"
]
}
},
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the custom field to set a value for. Retrieve available custom fields via the custom fields endpoint."
},
"value": {
"type": "string",
"description": "The value to assign to the custom field. The expected format depends on the custom field's type (e.g. text or dropdown)."
}
}
}
}
]
},
"debtors_report_item": {
"type": "object",
"description": "Debtors report data item",
"properties": {
"contact_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"amount": {
"type": "string"
}
},
"required": [
"contact_id",
"amount"
]
},
"detail_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"tax_rate_id": {
"$ref": "#/components/schemas/identifier"
},
"ledger_account_id": {
"$ref": "#/components/schemas/identifier"
},
"project_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"product_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"amount": {
"type": [
"string",
"null"
]
},
"amount_decimal": {
"type": [
"string",
"null"
]
},
"description": {
"type": "string"
},
"price": {
"type": "string",
"pattern": "^-?\\d+\\.\\d{1,2}$",
"examples": [
"123.45",
"-500.0",
"0.0"
]
},
"period": {
"type": [
"string",
"null"
],
"pattern": "^\\d{6,8}..\\d{6,8}$",
"example": "20250501..20250531",
"description": "The period this detail belongs to for bookkeeping, independent of the document date. Revenue or expenses are spread over this period in the reports, so a detail on an invoice dated in May can belong to January. Use this field, not the document date, to tell which months a detail covers. Null when the detail has no period of its own; the document date then decides where it lands."
},
"row_order": {
"type": "integer"
},
"total_price_excl_tax_with_discount": {
"$ref": "#/components/schemas/number"
},
"total_price_excl_tax_with_discount_base": {
"$ref": "#/components/schemas/number"
},
"tax_report_reference": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
}
},
"mandatory_tax_text": {
"type": [
"string",
"null"
]
},
"created_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"updated_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"is_optional": {
"type": "boolean"
},
"is_selected": {
"type": "boolean"
}
}
},
"details_attributes": {
"oneOf": [
{
"type": "object",
"additionalProperties": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of an existing detail to update. Required when updating or removing an existing detail; omit when creating a new one."
},
"description": {
"type": "string",
"description": "A free-text description for this detail, e.g. the name of the product or service delivered."
},
"period": {
"type": "string",
"description": "String with a date range: `20140101..20141231`, presets are also allowed: `this_month`, `prev_month`, `next_month`, `this_quarter`, `prev_quarter`, `next_quarter`, `this_year`, `prev_year`, `next_year`. Used to indicate the period the detail applies to, independent of the document date. Revenue or expenses are deferred over this period in the profit and loss report. Omit it to let the document date decide where the amounts land."
},
"price": {
"$ref": "#/components/schemas/money",
"description": "The unit price for this detail."
},
"amount": {
"type": [
"integer",
"string"
],
"description": "The quantity for this detail, e.g. `1`, `5` or `0.5`. Defaults to 1 if not provided."
},
"tax_rate_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the tax rate to apply to this detail. Should be a valid tax rate id. If not provided, the administration's default tax rate is used."
},
"ledger_account_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the ledger account (category) to book this detail to. Should be a valid ledger account id."
},
"project_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the project to associate with this detail. Should be a valid project id. Used to track revenue and expenses per project."
},
"product_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the product to use for this detail. When provided, the product's default price, tax rate, ledger account, description and period are applied as defaults. Explicitly provided values take precedence. Should be a valid product id."
},
"row_order": {
"type": [
"integer",
"string"
],
"description": "The position of this detail in the document, starting at 0. Used to control the display order of details."
},
"is_optional": {
"type": [
"boolean",
"string"
],
"description": "Whether this detail is optional. Optional details are shown on estimates but not included in the total unless selected by the client. Only allowed on estimates."
},
"is_selected": {
"type": [
"boolean",
"string"
],
"description": "Whether this optional detail has been selected by the client. Only relevant when `is_optional` is true."
},
"_destroy": {
"type": [
"boolean",
"string"
],
"description": "Set to `true` to remove this detail from the document. Requires the `id` of the existing detail."
},
"automated_tax_enabled": {
"type": [
"boolean",
"string"
],
"description": "Whether automatic tax calculation is enabled for this detail. When enabled, the tax rate is automatically determined based on the product's type and VAT rate type, combined with the contact's country, tax number and address. Requires a `product_id` with smart tax selection enabled (i.e. `product_type` and `vat_rate_type` configured on the product)."
}
},
"required": []
}
},
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of an existing detail to update. Required when updating or removing an existing detail; omit when creating a new one."
},
"description": {
"type": "string",
"description": "A free-text description for this detail, e.g. the name of the product or service delivered."
},
"period": {
"type": "string",
"description": "String with a date range: `20140101..20141231`, presets are also allowed: `this_month`, `prev_month`, `next_month`, `this_quarter`, `prev_quarter`, `next_quarter`, `this_year`, `prev_year`, `next_year`. Used to indicate the period the detail applies to, independent of the document date. Revenue or expenses are deferred over this period in the profit and loss report. Omit it to let the document date decide where the amounts land."
},
"price": {
"$ref": "#/components/schemas/money",
"description": "The unit price for this detail."
},
"amount": {
"type": [
"integer",
"string"
],
"description": "The quantity for this detail, e.g. `1`, `5` or `0.5`. Defaults to 1 if not provided."
},
"tax_rate_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the tax rate to apply to this detail. Should be a valid tax rate id. If not provided, the administration's default tax rate is used."
},
"ledger_account_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the ledger account (category) to book this detail to. Should be a valid ledger account id."
},
"project_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the project to associate with this detail. Should be a valid project id. Used to track revenue and expenses per project."
},
"product_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the product to use for this detail. When provided, the product's default price, tax rate, ledger account, description and period are applied as defaults. Explicitly provided values take precedence. Should be a valid product id."
},
"row_order": {
"type": [
"integer",
"string"
],
"description": "The position of this detail in the document, starting at 0. Used to control the display order of details."
},
"is_optional": {
"type": [
"boolean",
"string"
],
"description": "Whether this detail is optional. Optional details are shown on estimates but not included in the total unless selected by the client. Only allowed on estimates."
},
"is_selected": {
"type": [
"boolean",
"string"
],
"description": "Whether this optional detail has been selected by the client. Only relevant when `is_optional` is true."
},
"_destroy": {
"type": [
"boolean",
"string"
],
"description": "Set to `true` to remove this detail from the document. Requires the `id` of the existing detail."
},
"automated_tax_enabled": {
"type": [
"boolean",
"string"
],
"description": "Whether automatic tax calculation is enabled for this detail. When enabled, the tax rate is automatically determined based on the product's type and VAT rate type, combined with the contact's country, tax number and address. Requires a `product_id` with smart tax selection enabled (i.e. `product_type` and `vat_rate_type` configured on the product)."
}
}
}
}
]
},
"disposal_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"date": {
"type": "string",
"format": "date"
},
"reason": {
"type": "string",
"enum": [
"out_of_use",
"sold",
"private_withdrawal",
"divested"
]
},
"externally_booked": {
"type": "boolean"
},
"asset_id": {
"$ref": "#/components/schemas/identifier"
},
"reinvestment_reserve_sale": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/components/schemas/reinvestment_reserve_sale_response"
}
]
}
}
},
"document_style_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"name": {
"type": "string"
},
"identity_id": {
"$ref": "#/components/schemas/identifier"
},
"default": {
"type": "boolean"
},
"logo_hash": {
"type": [
"string",
"null"
]
},
"logo_container_full_width": {
"type": [
"boolean",
"null"
],
"default": false
},
"logo_display_width": {
"type": [
"integer",
"null"
],
"default": 50
},
"logo_position": {
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
"background_hash": {
"type": [
"string",
"null"
]
},
"paper_size": {
"type": "string",
"enum": [
"A4",
"letter"
]
},
"address_position": {
"type": "string",
"enum": [
"left",
"right"
]
},
"font_size": {
"type": "integer"
},
"font_family": {
"type": "string"
},
"print_on_stationery": {
"type": [
"boolean",
"null"
],
"default": false
},
"custom_css": {
"type": [
"string",
"null"
]
},
"invoice_sender_address": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {
"type": [
"string",
"boolean"
]
}
}
},
"invoice_metadata_left": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {
"type": [
"string",
"boolean"
]
}
}
},
"invoice_metadata_right": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {
"type": [
"string",
"boolean"
]
}
}
},
"estimate_sender_address": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {
"type": [
"string",
"boolean"
]
}
}
},
"estimate_metadata_left": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {
"type": [
"string",
"boolean"
]
}
}
},
"estimate_metadata_right": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {
"type": [
"string",
"boolean"
]
}
}
},
"created_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"updated_at": {
"type": [
"string",
"null"
],
"format": "date-time"
}
}
},
"download_response": {
"type": "object",
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"user_id": {
"$ref": "#/components/schemas/identifier_nullable",
"description": "The user who created the download"
},
"download_type": {
"type": "string",
"description": "The type of download (e.g., export_contacts, export_sales_invoices, auditfile)"
},
"filename": {
"type": "string"
},
"content_type": {
"type": "string"
},
"failed": {
"type": "boolean"
},
"downloaded": {
"type": "boolean"
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
}
}
},
"estimate_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"contact_id": {
"$ref": "#/components/schemas/identifier"
},
"contact": {
"oneOf": [
{
"$ref": "#/components/schemas/simple_contact_response"
},
{
"type": "null"
}
]
},
"contact_person_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"contact_person": {
"oneOf": [
{
"$ref": "#/components/schemas/contact_person_response"
},
{
"type": "null"
}
]
},
"estimate_id": {
"type": [
"string",
"null"
]
},
"estimate_sequence_id": {
"type": [
"string",
"null"
]
},
"workflow_id": {
"$ref": "#/components/schemas/identifier"
},
"document_style_id": {
"$ref": "#/components/schemas/identifier"
},
"identity_id": {
"$ref": "#/components/schemas/identifier"
},
"draft_id": {
"type": [
"integer",
"null"
]
},
"state": {
"type": "string",
"enum": [
"draft",
"open",
"late",
"accepted",
"rejected",
"billed",
"archived"
]
},
"estimate_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"due_date": {
"type": "string",
"format": "date"
},
"reference": {
"type": [
"string",
"null"
]
},
"language": {
"type": [
"string",
"null"
]
},
"currency": {
"type": "string"
},
"exchange_rate": {
"$ref": "#/components/schemas/number"
},
"discount": {
"$ref": "#/components/schemas/number"
},
"original_estimate_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"show_tax": {
"type": "boolean",
"default": true
},
"sign_online": {
"type": "boolean",
"default": true
},
"sent_at": {
"type": [
"string",
"null"
],
"format": "date"
},
"accepted_at": {
"type": [
"string",
"null"
],
"format": "date"
},
"rejected_at": {
"type": [
"string",
"null"
],
"format": "date"
},
"archived_at": {
"type": [
"string",
"null"
],
"format": "date"
},
"created_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"updated_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"public_view_code": {
"type": [
"string",
"null"
],
"pattern": "^\\d+$"
},
"public_view_code_expires_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"version": {
"type": "integer"
},
"pre_text": {
"type": [
"string",
"null"
]
},
"post_text": {
"type": [
"string",
"null"
]
},
"details": {
"type": "array",
"items": {
"$ref": "#/components/schemas/detail_response"
}
},
"prices_are_incl_tax": {
"type": "boolean",
"default": false
},
"total_price_excl_tax": {
"$ref": "#/components/schemas/number"
},
"total_price_excl_tax_base": {
"$ref": "#/components/schemas/number"
},
"total_price_incl_tax": {
"$ref": "#/components/schemas/number"
},
"total_price_incl_tax_base": {
"$ref": "#/components/schemas/number"
},
"total_discount": {
"$ref": "#/components/schemas/number"
},
"url": {
"type": "string"
},
"custom_fields": {
"type": "array",
"items": {
"$ref": "#/components/schemas/custom_field_value_response"
}
},
"notes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/note_response"
}
},
"attachments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/attachment_response"
}
},
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/event_response"
}
},
"tax_totals": {
"type": "array",
"items": {
"$ref": "#/components/schemas/tax_subtotal_response"
}
}
}
},
"event_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"administration_id": {
"oneOf": [
{
"$ref": "#/components/schemas/administration_id"
},
{
"type": "null"
}
]
},
"user_id": {
"$ref": "#/components/schemas/identifier"
},
"action": {
"type": "string"
},
"link_entity_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"link_entity_type": {
"type": [
"string",
"null"
]
},
"data": {
"type": "object",
"additionalProperties": true
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
}
}
},
"extended_user_response": {
"unevaluatedProperties": false,
"allOf": [
{
"$ref": "#/components/schemas/base_user_response"
},
{
"type": "object",
"properties": {
"email": {
"type": "string"
},
"email_validated": {
"type": "boolean"
},
"language": {
"type": "string"
},
"time_zone": {
"type": "string",
"example": "Europe/Amsterdam"
},
"user_type": {
"type": "string",
"enum": [
"end_user",
"api_user",
"system_user",
"deleted_end_user",
"deleted_api_user",
"owner",
"accountant",
"employee"
]
},
"permissions": {
"type": "array",
"items": {
"type": "string",
"enum": [
"sales_invoices",
"documents",
"estimates",
"bank",
"settings",
"ownership",
"time_entries"
]
}
}
}
}
]
},
"external_sales_invoice_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"contact_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"contact": {
"oneOf": [
{
"$ref": "#/components/schemas/simple_contact_response"
},
{
"type": "null"
}
]
},
"date": {
"type": "string",
"format": "date"
},
"state": {
"type": "string",
"enum": [
"new",
"open",
"late",
"paid",
"uncollectible",
"pending_payment"
]
},
"due_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"reference": {
"type": [
"string",
"null"
]
},
"entry_number": {
"type": "integer"
},
"origin": {
"type": [
"string",
"null"
],
"enum": [
"upload",
"endpoint",
"si",
"email",
"si_local",
"si_peppol",
"api",
"moneybird_bv",
"mollie",
null
]
},
"source": {
"type": [
"string",
"null"
]
},
"source_url": {
"type": [
"string",
"null"
]
},
"currency": {
"$ref": "#/components/schemas/currency"
},
"paid_at": {
"type": [
"string",
"null"
],
"format": "date"
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
},
"version": {
"$ref": "#/components/schemas/version"
},
"details": {
"type": "array",
"items": {
"$ref": "#/components/schemas/detail_response"
}
},
"payments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/payment_response"
}
},
"total_paid": {
"type": "string"
},
"total_unpaid": {
"type": "string"
},
"total_unpaid_base": {
"type": "string"
},
"prices_are_incl_tax": {
"type": "boolean"
},
"total_price_excl_tax": {
"type": "string"
},
"total_price_excl_tax_base": {
"type": "string"
},
"total_price_incl_tax": {
"type": "string"
},
"total_price_incl_tax_base": {
"type": "string"
},
"marked_dubious_on": {
"type": [
"string",
"null"
],
"format": "date"
},
"marked_uncollectible_on": {
"type": [
"string",
"null"
],
"format": "date"
},
"notes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/note_response"
}
},
"attachments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/attachment_response"
}
},
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/event_response"
}
},
"tax_totals": {
"type": "array",
"items": {
"$ref": "#/components/schemas/tax_subtotal_response"
}
}
}
},
"financial_account_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"type": {
"type": "string"
},
"name": {
"type": "string"
},
"identifier": {
"type": "string"
},
"currency": {
"$ref": "#/components/schemas/currency"
},
"provider": {
"type": [
"string",
"null"
]
},
"moneybird_account": {
"type": "boolean",
"description": "Whether Moneybird provides this account (Moneybird Betaalrekening or Moneybird Online Betaalmethoden), rather than an account at an external bank or provider."
},
"active": {
"type": "boolean",
"default": true
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
}
}
},
"financial_mutation_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"amount": {
"type": "string"
},
"code": {
"type": [
"string",
"null"
]
},
"date": {
"type": "string",
"format": "date"
},
"message": {
"type": [
"string",
"null"
]
},
"contra_account_name": {
"type": [
"string",
"null"
]
},
"contra_account_number": {
"type": "string"
},
"state": {
"type": "string",
"enum": [
"unprocessed",
"processed"
],
"default": "unprocessed"
},
"settlement_state": {
"type": "string",
"enum": [
"authorised",
"cancelled",
"expired",
"settled",
"pending",
"refused",
"error",
"captured",
"failed",
"returned"
],
"default": "settled"
},
"amount_open": {
"type": "string"
},
"sepa_fields": {
"type": [
"object",
"null"
]
},
"batch_reference": {
"type": [
"string",
"null"
]
},
"financial_account_id": {
"$ref": "#/components/schemas/identifier"
},
"currency": {
"$ref": "#/components/schemas/currency"
},
"original_amount": {
"type": [
"string",
"null"
]
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
},
"version": {
"$ref": "#/components/schemas/version"
},
"financial_statement_id": {
"$ref": "#/components/schemas/identifier"
},
"processed_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"account_servicer_transaction_id": {
"type": [
"string",
"null"
]
},
"payments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/payment_response"
}
},
"ledger_account_bookings": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ledger_account_booking_response"
}
}
}
},
"financial_statement_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"financial_account_id": {
"$ref": "#/components/schemas/identifier"
},
"reference": {
"type": "string"
},
"official_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"official_balance": {
"type": [
"string",
"null"
]
},
"importer_service": {
"type": [
"string",
"null"
]
},
"financial_mutations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/financial_mutation_response"
}
}
}
},
"fiscal_allocation_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"ledger_account_id": {
"$ref": "#/components/schemas/identifier"
},
"private_ledger_account_id": {
"$ref": "#/components/schemas/identifier"
},
"percentage": {
"$ref": "#/components/schemas/number"
},
"price": {
"$ref": "#/components/schemas/number"
},
"price_base": {
"$ref": "#/components/schemas/number"
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
}
}
},
"fiscal_allocations_attributes": {
"oneOf": [
{
"type": "object",
"additionalProperties": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of an existing fiscal allocation to update. Required when updating or removing an existing allocation; omit when creating a new one."
},
"ledger_account_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the ledger account (category) this allocation applies to. Must match a ledger account used in the document's details."
},
"private_ledger_account_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the private ledger account (equity account) to allocate the private portion to."
},
"percentage": {
"$ref": "#/components/schemas/number",
"description": "The percentage of expenses for the given ledger account that is allocated to private use. The total percentage across all allocations for the same ledger account on a document must not exceed 100.",
"minimum": 0,
"maximum": 100
},
"_destroy": {
"type": [
"boolean",
"string"
],
"description": "Set to `true` to remove this fiscal allocation from the document. Requires the `id` of the existing allocation."
}
},
"required": []
}
},
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of an existing fiscal allocation to update. Required when updating or removing an existing allocation; omit when creating a new one."
},
"ledger_account_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the ledger account (category) this allocation applies to. Must match a ledger account used in the document's details."
},
"private_ledger_account_id": {
"$ref": "#/components/schemas/identifier",
"description": "The ID of the private ledger account (equity account) to allocate the private portion to."
},
"percentage": {
"$ref": "#/components/schemas/number",
"description": "The percentage of expenses for the given ledger account that is allocated to private use. The total percentage across all allocations for the same ledger account on a document must not exceed 100.",
"minimum": 0,
"maximum": 100
},
"_destroy": {
"type": [
"boolean",
"string"
],
"description": "Set to `true` to remove this fiscal allocation from the document. Requires the `id` of the existing allocation."
}
}
}
}
]
},
"general_document_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"contact_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"contact": {
"oneOf": [
{
"$ref": "#/components/schemas/simple_contact_response"
},
{
"type": "null"
}
]
},
"reference": {
"type": [
"string",
"null"
]
},
"date": {
"type": "string",
"format": "date"
},
"due_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"entry_number": {
"type": [
"integer",
"null"
]
},
"state": {
"type": "string",
"enum": [
"new",
"open",
"late",
"paid",
"saved",
"pending_payment"
]
},
"exchange_rate": {
"type": [
"string",
"null"
]
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
},
"version": {
"$ref": "#/components/schemas/version"
},
"notes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/note_response"
}
},
"attachments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/attachment_response"
}
},
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/event_response"
}
}
}
},
"general_journal_document_entry_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"ledger_account_id": {
"$ref": "#/components/schemas/identifier"
},
"project_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"contact_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"debit": {
"type": "string"
},
"credit": {
"type": "string"
},
"row_order": {
"type": [
"integer",
"null"
]
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
},
"description": {
"type": [
"string",
"null"
]
}
}
},
"general_journal_document_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"reference": {
"type": [
"string",
"null"
]
},
"date": {
"type": "string",
"format": "date"
},
"journal_type": {
"type": [
"string",
"null"
],
"enum": [
"fiscal_year_ending",
null
]
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
},
"version": {
"$ref": "#/components/schemas/version"
},
"general_journal_document_entries": {
"type": "array",
"items": {
"$ref": "#/components/schemas/general_journal_document_entry_response"
}
},
"notes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/note_response"
}
},
"attachments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/attachment_response"
}
},
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/event_response"
}
}
}
},
"general_ledger_amounts": {
"type": "object",
"properties": {
"debit_sums": {
"$ref": "#/components/schemas/ledger_account_data"
},
"credit_sums": {
"$ref": "#/components/schemas/ledger_account_data"
},
"start_balance": {
"$ref": "#/components/schemas/ledger_account_data"
},
"final_balance": {
"$ref": "#/components/schemas/ledger_account_data"
}
}
},
"identifier": {
"type": [
"string",
"integer"
],
"pattern": "^\\d+$",
"description": "A unique record identifier",
"example": "458026356994737217"
},
"identifier_nullable": {
"type": [
"string",
"integer",
"null"
],
"pattern": "^\\d+$",
"description": "A unique record identifier",
"example": "458026356994737217"
},
"identity_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"company_name": {
"type": [
"string",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"country": {
"type": [
"string",
"null"
]
},
"zipcode": {
"type": [
"string",
"null"
]
},
"address1": {
"type": [
"string",
"null"
]
},
"address2": {
"type": [
"string",
"null"
]
},
"email": {
"type": [
"string",
"null"
]
},
"phone": {
"type": [
"string",
"null"
]
},
"bank_account_name": {
"type": [
"string",
"null"
]
},
"bank_account_number": {
"type": [
"string",
"null"
]
},
"bank_account_bic": {
"type": [
"string",
"null"
]
},
"custom_fields": {
"type": "array",
"items": {
"$ref": "#/components/schemas/custom_field_value_response"
}
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"chamber_of_commerce": {
"type": [
"string",
"null"
]
},
"tax_number": {
"type": [
"string",
"null"
]
}
}
},
"ledger_account_booking_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"financial_mutation_id": {
"$ref": "#/components/schemas/identifier"
},
"ledger_account_id": {
"$ref": "#/components/schemas/identifier"
},
"project_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"description": {
"type": [
"string",
"null"
]
},
"price": {
"type": "string"
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
}
}
},
"ledger_account_data": {
"type": "object",
"description": "Data grouped by ledger account. Contains an array of ledger account entries with ledger_account_id and value.",
"required": [
"ledger_accounts"
],
"properties": {
"ledger_accounts": {
"type": "array",
"description": "Array of ledger account entries with ledger_account_id and value.",
"items": {
"type": "object",
"required": [
"ledger_account_id",
"value"
],
"properties": {
"ledger_account_id": {
"type": "string",
"description": "The ID of the ledger account"
},
"value": {
"type": "string",
"description": "The value for this ledger account"
}
}
}
}
}
},
"ledger_account_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"name": {
"type": "string"
},
"account_type": {
"type": "string",
"enum": [
"non_current_assets",
"current_assets",
"equity",
"non_current_liabilities",
"current_liabilities",
"revenue",
"direct_costs",
"expenses",
"other_income_expenses",
"other",
"temporary",
"provisions"
]
},
"account_id": {
"type": [
"string",
"null"
]
},
"parent_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"active": {
"type": "boolean"
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
},
"allowed_document_types": {
"type": "array",
"items": {
"type": "string",
"enum": [
"sales_invoice",
"purchase_invoice",
"general_journal_document",
"financial_mutation",
"payment"
]
}
},
"taxonomy_item": {
"oneOf": [
{
"$ref": "#/components/schemas/taxonomy_item_response"
},
{
"type": "null"
}
]
},
"financial_account_id": {
"$ref": "#/components/schemas/identifier_nullable"
}
}
},
"minimal_contact_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"firstname": {
"type": [
"string",
"null"
]
},
"lastname": {
"type": [
"string",
"null"
]
},
"company_name": {
"type": [
"string",
"null"
]
}
}
},
"minimal_time_entry_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"contact_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"project_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"user_id": {
"$ref": "#/components/schemas/identifier"
},
"started_at": {
"$ref": "#/components/schemas/timestamp"
},
"ended_at": {
"$ref": "#/components/schemas/timestamp"
},
"description": {
"type": [
"string",
"null"
]
},
"paused_duration": {
"type": "integer"
},
"billable": {
"type": "boolean"
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
}
}
},
"money": {
"oneOf": [
{
"type": "string",
"pattern": "^-?[0-9]+[,\\.]?[0-9]*$",
"example": "1.0"
},
{
"type": "number",
"minimum": -1000000000,
"maximum": 1000000000,
"example": 1
},
{
"type": "null"
}
],
"description": "An amount of money. Both a decimal and a string '10,95' are accepted. A string is bound to the same range as a number, -1,000,000,000 <= *n* <= 1,000,000,000."
},
"non_symbolic_error": {
"type": "object",
"properties": {
"error": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": [
"string",
"object"
]
}
}
},
"details": {
"type": "object",
"description": "The validation errors per attribute, as codes where the error has one.",
"additionalProperties": {
"type": "array",
"items": {
"type": "object",
"description": "Keys other than `error` hold the values used in the message, for example `count`.",
"required": [
"error"
],
"properties": {
"error": {
"type": "string",
"description": "The error code, for example `blank` or `taken`, or the message when the error has no code."
}
},
"additionalProperties": true
}
}
},
"full_message": {
"type": "string",
"description": "All validation errors in one sentence. Not every resource returns it."
}
}
},
"note_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"entity_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"entity_type": {
"type": "string"
},
"user_id": {
"$ref": "#/components/schemas/identifier"
},
"assignee_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"todo": {
"type": [
"boolean",
"string",
"null"
],
"default": false
},
"note": {
"type": [
"string",
"null"
]
},
"completed_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"completed_by_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"todo_type": {
"type": [
"string",
"null"
],
"enum": [
"sales_invoice_due",
"purchase_invoice_due",
"general_document_reminder",
"general_document_due",
"new_document_awaiting_processing",
"new_financial_mutation_awaiting_processing",
"financial_mutations_not_updated",
"sales_invoice_payment_not_linked_to_financial_mutation",
"document_payment_not_linked_to_financial_mutation",
"sales_invoice_awaiting_payment_batch",
"export_sales_invoices_ready",
"export_documents_ready",
"export_contacts_ready",
"import_contacts_ready",
"recurring_sales_invoice_auto_send_failed",
"sales_invoice_scheduled_sending_failed",
"sales_invoice_reminder_sending_failed",
"sales_invoice_payment_email_missing_sender_email",
"sales_invoice_becoming_due",
"sales_invoice_collecting_failed",
"estimate_due",
"export_estimates_ready",
"sales_invoice_email_delivery_failed",
"sales_invoice_email_marked_as_spam",
"estimate_email_delivery_failed",
"estimate_email_marked_as_spam",
"purchase_invoice_invalid_ubl",
"sales_invoice_unprintable",
"estimate_unprintable",
"auditfile_ready",
"import_financial_statement_finished",
"recurring_sales_invoice_auto_send_skipped_import_wizard",
"ledger_account_report_export_ready",
"recurring_sales_invoice_failed_deleted_contact",
"recurring_sales_invoice_create_invoice_failed",
"sales_invoice_simplerinvoicing_delivery_failed_unroutable",
"purchase_invoice_received_simplerinvoicing",
"sales_invoice_simplerinvoicing_delivery_error",
"purchase_transaction_expired",
"sales_invoice_si_delivery_failed_contact_unreachable",
"sales_invoice_si_delivery_failed_deactivated",
"sales_invoice_si_delivery_failed_identity_unverified",
"sales_invoice_si_delivery_failed_length_exceeded",
"recurring_document_stopped_by_contact_delete",
"sales_invoice_email_previously_bounced",
"estimate_email_previously_bounced",
"email_domain_invalidated",
"external_sales_invoice_invalid_ubl",
"sales_invoice_email_invalid_address",
"estimate_email_invalid_address",
"gateway_connection_terminated",
"sales_invoice_email_payload_too_large",
"estimate_email_payload_too_large",
"ponto_organization_not_activated",
"ponto_financial_institution_deprecated",
"contact_email_delivery_failed",
"contact_email_marked_as_spam",
"contact_email_previously_bounced",
"contact_email_invalid_address",
"contact_email_payload_too_large",
"sales_invoice_scheduling_failed_due_to_payment_information",
"sales_invoice_scheduling_failed_due_to_delivery_information",
"sales_invoice_scheduling_failed_due_to_collection_method",
"sales_invoice_collecting_failed_missing_subscription",
"sales_invoice_collecting_failed_no_mandate",
"sales_invoice_si_delivery_failed_ubl_validation_failed",
"sales_invoice_email_sender_limit",
"estimate_email_sender_limit",
"contact_email_sender_limit",
"sales_invoice_email_blocked",
"estimate_email_blocked",
"contact_email_blocked",
"sales_invoice_email_invalid_attachment",
"estimate_email_invalid_attachment",
"contact_email_invalid_attachment",
"sales_invoice_collecting_failed_monthly_limit_exceeded",
"sales_invoice_collecting_failed_invalid_currency",
"mollie_credential_needs_reconnect",
"adyen_verification_error",
"contact_email_not_present",
"financial_mutation_failed",
"sales_invoice_si_delivery_failed_invalid_sender",
"sales_invoice_tax_number_invalid",
"payment_transaction_no_positive_payment",
"financial_mutation_payment_locked",
"sales_invoice_withdrawal_requested",
null
]
},
"data": {
"type": [
"object",
"null"
]
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
}
}
},
"number": {
"oneOf": [
{
"type": "string",
"pattern": "^-?[0-9]+[,\\.]?[0-9]*$",
"example": "1.0"
},
{
"type": "number",
"example": 1
},
{
"type": "null"
}
]
},
"payment_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"invoice_type": {
"type": "string",
"enum": [
"SalesInvoice",
"Document",
"ExternalSalesInvoice",
"VatDocument"
]
},
"invoice_id": {
"$ref": "#/components/schemas/identifier"
},
"financial_account_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"user_id": {
"$ref": "#/components/schemas/identifier"
},
"payment_transaction_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"transaction_identifier": {
"type": [
"string",
"null"
]
},
"price": {
"$ref": "#/components/schemas/number"
},
"price_base": {
"$ref": "#/components/schemas/number"
},
"payment_date": {
"type": "string",
"format": "date"
},
"credit_invoice_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"financial_mutation_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"ledger_account_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"linked_payment_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"manual_payment_action": {
"type": [
"string",
"null"
]
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
}
}
},
"product_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"description": {
"type": [
"string",
"null"
]
},
"title": {
"type": [
"string",
"null"
]
},
"identifier": {
"type": [
"string",
"null"
]
},
"price": {
"type": "string"
},
"currency": {
"type": "string"
},
"frequency": {
"type": [
"integer",
"null"
]
},
"frequency_type": {
"type": [
"string",
"null"
],
"enum": [
"day",
"week",
"month",
"quarter",
"year",
null
]
},
"tax_rate_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"ledger_account_id": {
"$ref": "#/components/schemas/identifier"
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
}
}
},
"profit_loss_amounts": {
"type": "object",
"properties": {
"revenue_by_ledger_account": {
"$ref": "#/components/schemas/ledger_account_data"
},
"direct_costs_by_ledger_account": {
"$ref": "#/components/schemas/ledger_account_data"
},
"expenses_by_ledger_account": {
"$ref": "#/components/schemas/ledger_account_data"
},
"other_income_expenses_by_ledger_account": {
"$ref": "#/components/schemas/ledger_account_data"
},
"gross_profit": {
"type": "string",
"description": "`total_revenue` minus the total of `direct_costs_by_ledger_account`"
},
"operating_profit": {
"type": "string",
"description": "`gross_profit` minus the total of `expenses_by_ledger_account`, so excluding other income and expenses"
},
"net_profit": {
"type": "string",
"description": "`total_revenue` minus `total_expenses`"
},
"total_expenses": {
"type": "string",
"description": "The total of `direct_costs_by_ledger_account` plus `expenses_by_ledger_account` minus `other_income_expenses_by_ledger_account`"
},
"total_revenue": {
"type": "string",
"description": "The total of `revenue_by_ledger_account`"
}
}
},
"project_report_item": {
"type": "object",
"description": "Project report data item",
"properties": {
"project_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"amount": {
"type": "string"
}
},
"required": [
"project_id",
"amount"
]
},
"project_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"name": {
"type": "string"
},
"state": {
"type": "string",
"enum": [
"active",
"archived"
]
},
"budget": {
"type": [
"integer",
"null"
]
}
}
},
"purchase_invoice_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"contact_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"contact": {
"oneOf": [
{
"$ref": "#/components/schemas/simple_contact_response"
},
{
"type": "null"
}
]
},
"reference": {
"type": [
"string",
"null"
]
},
"date": {
"type": "string",
"format": "date",
"description": "The date of the record itself. It does not say which periods the amounts belong to, because a detail can carry its own `period` and a record dated in one month can cover another. Read `details[].period` for the periods; only a detail without a period of its own lands on this date."
},
"due_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"entry_number": {
"type": [
"integer",
"null"
]
},
"state": {
"type": "string",
"enum": [
"new",
"open",
"late",
"paid",
"saved",
"pending_payment"
]
},
"currency": {
"$ref": "#/components/schemas/currency"
},
"exchange_rate": {
"type": [
"string",
"null"
]
},
"revenue_invoice": {
"type": [
"boolean",
"null"
]
},
"prices_are_incl_tax": {
"type": [
"boolean",
"null"
]
},
"origin": {
"type": [
"string",
"null"
],
"enum": [
"upload",
"endpoint",
"si",
"email",
"si_local",
"si_peppol",
"api",
"moneybird_bv",
"mollie",
null
]
},
"paid_at": {
"type": [
"string",
"null"
],
"format": "date"
},
"tax_number": {
"type": [
"string",
"null"
]
},
"total_price_excl_tax": {
"type": [
"string",
"null"
]
},
"total_price_excl_tax_base": {
"type": [
"string",
"null"
]
},
"total_price_incl_tax": {
"type": [
"string",
"null"
]
},
"total_price_incl_tax_base": {
"type": [
"string",
"null"
]
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
},
"version": {
"$ref": "#/components/schemas/version"
},
"details": {
"type": "array",
"items": {
"$ref": "#/components/schemas/detail_response"
}
},
"fiscal_allocations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/fiscal_allocation_response"
}
},
"payments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/payment_response"
}
},
"notes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/note_response"
}
},
"attachments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/attachment_response"
}
},
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/event_response"
}
}
}
},
"purchase_transaction_batch_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"financial_account_id": {
"$ref": "#/components/schemas/identifier"
},
"state": {
"type": "string",
"enum": [
"exported",
"cancelled",
"open"
]
},
"identifier": {
"type": "string"
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
}
}
},
"purchase_transaction_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"financial_account_id": {
"$ref": "#/components/schemas/identifier"
},
"payment_instrument_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"state": {
"type": "string",
"enum": [
"open",
"cancelled",
"paid",
"pending_payment",
"error",
"awaiting_authorization",
"preparing"
]
},
"sepa_iban": {
"type": "string"
},
"sepa_iban_account_name": {
"type": "string"
},
"sepa_bic": {
"type": "string"
},
"source_sepa_iban": {
"type": [
"string",
"null"
]
},
"source_sepa_iban_account_name": {
"type": [
"string",
"null"
]
},
"date": {
"type": [
"string",
"null"
],
"format": "date"
},
"description": {
"type": "string"
},
"end_to_end_id": {
"type": "string"
},
"contact": {
"oneOf": [
{
"$ref": "#/components/schemas/simple_contact_response"
},
{
"type": "null"
}
]
},
"amount": {
"type": "string"
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
},
"payable_type": {
"type": [
"string",
"null"
]
},
"payable_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"payment_method": {
"type": [
"string",
"null"
]
}
}
},
"receipt_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"contact_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"contact": {
"oneOf": [
{
"$ref": "#/components/schemas/simple_contact_response"
},
{
"type": "null"
}
]
},
"reference": {
"type": [
"string",
"null"
]
},
"date": {
"type": "string",
"format": "date",
"description": "The date of the record itself. It does not say which periods the amounts belong to, because a detail can carry its own `period` and a record dated in one month can cover another. Read `details[].period` for the periods; only a detail without a period of its own lands on this date."
},
"due_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"entry_number": {
"type": [
"integer",
"null"
]
},
"state": {
"type": "string",
"enum": [
"new",
"open",
"late",
"paid",
"saved",
"pending_payment"
]
},
"currency": {
"type": [
"string",
"null"
]
},
"exchange_rate": {
"$ref": "#/components/schemas/number"
},
"revenue_invoice": {
"type": [
"boolean",
"null"
]
},
"prices_are_incl_tax": {
"type": [
"boolean",
"null"
]
},
"origin": {
"type": [
"string",
"null"
],
"enum": [
"upload",
"endpoint",
"si",
"email",
"si_local",
"si_peppol",
"api",
"moneybird_bv",
"mollie",
null
]
},
"paid_at": {
"type": [
"string",
"null"
],
"format": "date"
},
"tax_number": {
"type": [
"string",
"null"
]
},
"total_price_excl_tax": {
"type": [
"string",
"null"
]
},
"total_price_excl_tax_base": {
"type": [
"string",
"null"
]
},
"total_price_incl_tax": {
"type": [
"string",
"null"
]
},
"total_price_incl_tax_base": {
"type": [
"string",
"null"
]
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
},
"version": {
"$ref": "#/components/schemas/version"
},
"details": {
"type": "array",
"items": {
"$ref": "#/components/schemas/detail_response"
}
},
"fiscal_allocations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/fiscal_allocation_response"
}
},
"payments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/payment_response"
}
},
"notes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/note_response"
}
},
"attachments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/attachment_response"
}
},
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/event_response"
}
}
}
},
"recurring_contract_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"type": {
"type": [
"string",
"null"
]
},
"sepa_mandate": {
"type": "boolean"
},
"bank": {
"type": [
"string",
"null"
]
},
"iban": {
"type": [
"string",
"null"
]
},
"bic": {
"type": [
"string",
"null"
]
},
"iban_account_name": {
"type": [
"string",
"null"
]
},
"card_expiry_month": {
"type": [
"string",
"null"
]
},
"card_expiry_year": {
"type": [
"string",
"null"
]
},
"card_final_digits": {
"type": [
"string",
"null"
]
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
}
}
},
"recurring_sales_invoice_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"contact_id": {
"$ref": "#/components/schemas/identifier"
},
"contact": {
"$ref": "#/components/schemas/simple_contact_response"
},
"contact_person_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"contact_person": {
"oneOf": [
{
"$ref": "#/components/schemas/contact_person_response"
},
{
"type": "null"
}
]
},
"workflow_id": {
"$ref": "#/components/schemas/identifier"
},
"start_date": {
"type": "string",
"format": "date"
},
"invoice_date": {
"type": "string",
"format": "date"
},
"last_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"active": {
"type": [
"boolean",
"null"
]
},
"payment_conditions": {
"type": [
"string",
"null"
]
},
"reference": {
"type": [
"string",
"null"
]
},
"language": {
"type": "string"
},
"currency": {
"type": "string"
},
"discount": {
"type": [
"string",
"null"
]
},
"first_due_interval": {
"type": "integer"
},
"auto_send": {
"type": [
"boolean",
"null"
]
},
"sending_scheduled_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"sending_scheduled_user_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"frequency_type": {
"type": "string",
"enum": [
"day",
"week",
"month",
"quarter",
"year"
]
},
"frequency": {
"type": "integer"
},
"created_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"updated_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"version": {
"$ref": "#/components/schemas/version"
},
"prices_are_incl_tax": {
"type": "boolean"
},
"total_price_excl_tax": {
"type": "string"
},
"total_price_excl_tax_base": {
"type": "string"
},
"total_price_incl_tax": {
"type": "string"
},
"total_price_incl_tax_base": {
"type": "string"
},
"details": {
"type": "array",
"items": {
"$ref": "#/components/schemas/detail_response"
}
},
"custom_fields": {
"type": "array",
"items": {
"$ref": "#/components/schemas/custom_field_value_response"
}
},
"notes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/note_response"
}
},
"attachments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/attachment_response"
}
},
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/event_response"
}
},
"subscription": {
"oneOf": [
{
"$ref": "#/components/schemas/subscription_response"
},
{
"type": "null"
}
]
}
}
},
"reinvestment_reserve_purchase_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"amount": {
"$ref": "#/components/schemas/number"
},
"date": {
"type": "string",
"format": "date"
},
"asset_id": {
"$ref": "#/components/schemas/identifier"
}
}
},
"reinvestment_reserve_sale_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"amount": {
"$ref": "#/components/schemas/number"
},
"date": {
"type": "string",
"format": "date"
},
"disposal_id": {
"$ref": "#/components/schemas/identifier"
}
}
},
"sales_invoice_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"contact_id": {
"$ref": "#/components/schemas/identifier"
},
"contact": {
"$ref": "#/components/schemas/simple_contact_response"
},
"contact_person_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"contact_person": {
"oneOf": [
{
"$ref": "#/components/schemas/contact_person_response"
},
{
"type": "null"
}
]
},
"invoice_id": {
"type": [
"string",
"null"
],
"description": "The invoice number. It is `null` while the invoice is a draft."
},
"recurring_sales_invoice_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"subscription_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"workflow_id": {
"$ref": "#/components/schemas/identifier"
},
"document_style_id": {
"$ref": "#/components/schemas/identifier"
},
"identity_id": {
"$ref": "#/components/schemas/identifier"
},
"draft_id": {
"type": [
"integer",
"null"
],
"description": "Sequence number a draft is referred to by while it has no invoice number yet."
},
"state": {
"type": "string",
"enum": [
"draft",
"scheduled",
"open",
"pending_payment",
"reminded",
"late",
"paid",
"uncollectible"
]
},
"invoice_date": {
"type": [
"string",
"null"
],
"format": "date",
"description": "The date of the record itself. It does not say which periods the amounts belong to, because a detail can carry its own `period` and a record dated in one month can cover another. Read `details[].period` for the periods; only a detail without a period of its own lands on this date."
},
"due_date": {
"type": "string",
"format": "date"
},
"payment_conditions": {
"type": [
"string",
"null"
]
},
"payment_reference": {
"type": [
"string",
"null"
]
},
"short_payment_reference": {
"type": [
"string",
"null"
]
},
"reference": {
"type": [
"string",
"null"
]
},
"language": {
"type": [
"string",
"null"
]
},
"currency": {
"type": "string"
},
"discount": {
"type": [
"string",
"null"
]
},
"original_sales_invoice_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"paused": {
"type": "boolean"
},
"paid_at": {
"type": [
"string",
"null"
],
"format": "date"
},
"sent_at": {
"type": [
"string",
"null"
],
"format": "date"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
},
"public_view_code": {
"type": [
"string",
"null"
]
},
"public_view_code_expires_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"version": {
"$ref": "#/components/schemas/version"
},
"details": {
"type": "array",
"items": {
"$ref": "#/components/schemas/detail_response"
}
},
"payments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/payment_response"
}
},
"total_paid": {
"type": "string"
},
"total_unpaid": {
"type": "string"
},
"total_unpaid_base": {
"type": "string"
},
"prices_are_incl_tax": {
"type": "boolean"
},
"total_price_excl_tax": {
"type": "string"
},
"total_price_excl_tax_base": {
"type": "string"
},
"total_price_incl_tax": {
"type": "string"
},
"total_price_incl_tax_base": {
"type": "string"
},
"total_discount": {
"type": "string"
},
"marked_dubious_on": {
"type": [
"string",
"null"
],
"format": "date"
},
"marked_uncollectible_on": {
"type": [
"string",
"null"
],
"format": "date"
},
"reminder_count": {
"type": [
"integer",
"null"
]
},
"next_reminder": {
"type": [
"string",
"null"
],
"format": "date"
},
"original_estimate_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"url": {
"type": "string"
},
"payment_url": {
"type": "string"
},
"custom_fields": {
"type": "array",
"items": {
"$ref": "#/components/schemas/custom_field_value_response"
}
},
"notes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/note_response"
}
},
"attachments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/attachment_response"
}
},
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/event_response"
}
},
"tax_totals": {
"type": "array",
"items": {
"$ref": "#/components/schemas/tax_subtotal_response"
}
},
"time_entries": {
"type": "array",
"items": {
"$ref": "#/components/schemas/minimal_time_entry_response"
}
}
}
},
"simple_contact_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"company_name": {
"type": [
"string",
"null"
]
},
"firstname": {
"type": [
"string",
"null"
]
},
"lastname": {
"type": [
"string",
"null"
]
},
"address1": {
"type": [
"string",
"null"
]
},
"address2": {
"type": [
"string",
"null"
]
},
"zipcode": {
"type": [
"string",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"country": {
"type": "string"
},
"phone": {
"type": [
"string",
"null"
]
},
"delivery_method": {
"type": [
"string",
"null"
],
"enum": [
"Email",
"Post",
"Manual",
"Simplerinvoicing",
"Peppol",
null
]
},
"customer_id": {
"type": "string"
},
"tax_number": {
"type": [
"string",
"null"
]
},
"chamber_of_commerce": {
"type": [
"string",
"null"
]
},
"bank_account": {
"type": [
"string",
"null"
]
},
"is_trusted": {
"type": "boolean"
},
"max_transfer_amount": {
"type": [
"string",
"null"
]
},
"attention": {
"type": [
"string",
"null"
]
},
"email": {
"type": [
"string",
"null"
]
},
"email_ubl": {
"type": "boolean"
},
"send_invoices_to_attention": {
"type": [
"string",
"null"
]
},
"send_invoices_to_email": {
"type": [
"string",
"null"
]
},
"send_estimates_to_attention": {
"type": [
"string",
"null"
]
},
"send_estimates_to_email": {
"type": [
"string",
"null"
]
},
"direct_debit": {
"type": "boolean"
},
"sepa_active": {
"type": [
"boolean",
"null"
]
},
"sepa_iban": {
"type": [
"string",
"null"
]
},
"sepa_iban_account_name": {
"type": [
"string",
"null"
]
},
"sepa_bic": {
"type": [
"string",
"null"
]
},
"sepa_mandate_id": {
"type": [
"string",
"null"
]
},
"sepa_mandate_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"sepa_sequence_type": {
"type": "string",
"enum": [
"RCUR",
"FRST",
"OOFF",
"FNAL"
]
},
"credit_card_number": {
"type": [
"string",
"null"
]
},
"credit_card_reference": {
"type": [
"string",
"null"
]
},
"credit_card_type": {
"type": [
"string",
"null"
],
"enum": [
"mastercard",
"visa",
null
]
},
"tax_number_validated_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"tax_number_valid": {
"type": [
"boolean",
"null"
]
},
"invoice_workflow_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"estimate_workflow_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"si_identifier": {
"type": [
"string",
"null"
]
},
"si_identifier_type": {
"type": [
"string",
"null"
]
},
"moneybird_payments_mandate": {
"type": [
"boolean",
"null"
]
},
"created_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"updated_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"version": {
"$ref": "#/components/schemas/version"
},
"sales_invoices_url": {
"type": "string"
},
"notes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/note_response"
}
},
"custom_fields": {
"type": "array",
"items": {
"$ref": "#/components/schemas/custom_field_value_response"
}
},
"contact_people": {
"type": "array",
"items": {
"$ref": "#/components/schemas/contact_person_response"
}
},
"archived": {
"type": "boolean"
}
}
},
"source_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"asset_id": {
"$ref": "#/components/schemas/identifier"
},
"detail_id": {
"$ref": "#/components/schemas/identifier"
},
"general_journal_document_entry_id": {
"$ref": "#/components/schemas/identifier"
}
}
},
"subscription_additional_charge_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"contact_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"subscription_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"product_id": {
"$ref": "#/components/schemas/identifier"
},
"detail_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"amount": {
"type": [
"string",
"null"
]
},
"price": {
"type": "string"
},
"period": {
"type": "string",
"pattern": "^[0-9]{6}..[0-9]{6}$",
"example": "202501..202506"
},
"description": {
"type": "string"
}
}
},
"subscription_product_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"start_date": {
"type": "string",
"format": "date"
},
"end_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"product_id": {
"$ref": "#/components/schemas/identifier"
},
"product": {
"$ref": "#/components/schemas/product_response"
},
"amount": {
"type": "string"
},
"discount": {
"type": [
"string",
"null"
]
}
}
},
"subscription_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"start_date": {
"type": "string",
"format": "date"
},
"end_date": {
"type": [
"string",
"null"
],
"format": "date"
},
"frequency": {
"type": [
"integer",
"null"
]
},
"frequency_type": {
"type": [
"string",
"null"
],
"enum": [
"day",
"week",
"month",
"quarter",
"year",
null
]
},
"reference": {
"type": [
"string",
"null"
]
},
"cancelled_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"product_id": {
"$ref": "#/components/schemas/identifier"
},
"product": {
"$ref": "#/components/schemas/product_response"
},
"contact_id": {
"$ref": "#/components/schemas/identifier"
},
"contact": {
"$ref": "#/components/schemas/simple_contact_response"
},
"contact_person_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"contact_person": {
"oneOf": [
{
"$ref": "#/components/schemas/contact_person_response"
},
{
"type": "null"
}
]
},
"subscription_products": {
"type": "array",
"items": {
"$ref": "#/components/schemas/subscription_product_response"
}
},
"recurring_sales_invoice_id": {
"$ref": "#/components/schemas/identifier_nullable"
}
}
},
"subscription_template_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"workflow_id": {
"$ref": "#/components/schemas/identifier"
},
"document_style_id": {
"$ref": "#/components/schemas/identifier"
},
"mergeable": {
"type": "boolean"
},
"contact_can_update": {
"type": "boolean"
},
"products": {
"type": "array",
"items": {
"$ref": "#/components/schemas/product_response"
}
}
}
},
"symbolic_error": {
"type": "object",
"properties": {
"error": {
"type": [
"string"
]
},
"symbolic": {
"type": "object",
"additionalProperties": {
"type": [
"string",
"object",
"array"
]
}
}
}
},
"task_list_group_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"name": {
"type": [
"string",
"null"
]
},
"row_order": {
"type": "integer"
},
"report_type": {
"type": [
"string",
"null"
]
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
},
"tasks": {
"type": "array",
"items": {
"$ref": "#/components/schemas/task_list_task_response"
}
}
}
},
"task_list_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/identifier"
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"deadline_on": {
"type": [
"string",
"null"
],
"format": "date"
},
"period_begin": {
"type": [
"string",
"null"
],
"format": "date"
},
"period_end": {
"type": [
"string",
"null"
],
"format": "date"
},
"completed": {
"type": "boolean"
},
"template_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"total_tasks_count": {
"type": "integer"
},
"completed_tasks_count": {
"type": "integer"
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
},
"groups": {
"type": "array",
"items": {
"$ref": "#/components/schemas/task_list_group_response"
}
}
}
},
"task_list_task_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/identifier"
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"row_order": {
"type": "integer"
},
"completed_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"report_type": {
"type": [
"string",
"null"
]
},
"task_lists_group_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"parent_task_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"assignee_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
},
"subtasks": {
"type": "array",
"items": {
"$ref": "#/components/schemas/task_list_task_response"
}
},
"notes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/note_response"
}
},
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/event_response"
}
}
}
},
"task_list_template_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/identifier"
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"period": {
"type": [
"string",
"null"
],
"description": "ISO 8601 duration string (e.g. \"P1M\" for one month, \"P3M\" for one quarter, \"P1Y\" for one year)"
},
"deadline_after": {
"type": [
"string",
"null"
],
"description": "ISO 8601 duration string representing the deadline offset from the period end"
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
},
"groups": {
"type": "array",
"items": {
"$ref": "#/components/schemas/task_list_group_response"
}
}
}
},
"tax_rate_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"name": {
"type": "string"
},
"percentage": {
"oneOf": [
{
"$ref": "#/components/schemas/number"
},
{
"type": "null"
}
]
},
"tax_rate_type": {
"type": "string",
"enum": [
"sales_invoice",
"purchase_invoice",
"general_journal_document"
]
},
"show_tax": {
"type": [
"boolean",
"null"
]
},
"active": {
"type": [
"boolean",
"null"
]
},
"country": {
"type": [
"string",
"null"
]
},
"created_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"updated_at": {
"type": [
"string",
"null"
],
"format": "date-time"
}
}
},
"tax_report_amounts": {
"type": "object",
"properties": {
"tax_rates": {
"type": "array",
"items": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"tax_rate_id": {
"$ref": "#/components/schemas/identifier"
},
"name": {
"type": "string"
},
"percentage": {
"type": [
"string",
"null"
]
},
"report_reference": {
"type": "string"
},
"amount": {
"type": "string"
},
"type": {
"type": "string"
},
"tax": {
"type": "string"
}
}
}
}
}
},
"tax_subtotal_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"tax_rate_id": {
"$ref": "#/components/schemas/identifier"
},
"taxable_amount": {
"$ref": "#/components/schemas/number"
},
"taxable_amount_base": {
"$ref": "#/components/schemas/number"
},
"tax_amount": {
"$ref": "#/components/schemas/number"
},
"tax_amount_base": {
"$ref": "#/components/schemas/number"
}
}
},
"taxonomy_item_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"taxonomy_version": {
"type": "string"
},
"code": {
"type": "string"
},
"name": {
"type": "string"
},
"name_english": {
"type": [
"string",
"null"
]
},
"reference": {
"type": [
"string",
"null"
]
}
}
},
"time_entry_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"contact_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"project_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"sales_invoice_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"user_id": {
"$ref": "#/components/schemas/identifier"
},
"started_at": {
"$ref": "#/components/schemas/timestamp"
},
"ended_at": {
"oneOf": [
{
"$ref": "#/components/schemas/timestamp"
},
{
"type": "null"
}
]
},
"description": {
"type": "string"
},
"paused_duration": {
"type": "integer"
},
"billable": {
"type": [
"boolean",
"null"
]
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
},
"contact": {
"oneOf": [
{
"$ref": "#/components/schemas/minimal_contact_response"
},
{
"type": "null"
}
]
},
"user": {
"$ref": "#/components/schemas/user_response"
},
"project": {
"oneOf": [
{
"$ref": "#/components/schemas/project_response"
},
{
"type": "null"
}
]
},
"sales_invoice": {
"oneOf": [
{
"$ref": "#/components/schemas/sales_invoice_response"
},
{
"type": "null"
}
]
},
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/event_response"
}
},
"notes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/note_response"
}
}
}
},
"timestamp": {
"type": "string",
"format": "date-time"
},
"typeless_document_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"contact_id": {
"$ref": "#/components/schemas/identifier_nullable"
},
"contact": {
"oneOf": [
{
"$ref": "#/components/schemas/simple_contact_response"
},
{
"type": "null"
}
]
},
"reference": {
"type": [
"string",
"null"
]
},
"date": {
"type": "string",
"format": "date"
},
"state": {
"type": "string",
"enum": [
"new",
"open",
"late",
"paid",
"saved",
"pending_payment"
]
},
"origin": {
"type": [
"string",
"null"
],
"enum": [
"upload",
"endpoint",
"si",
"email",
"si_local",
"si_peppol",
"api",
"moneybird_bv",
"mollie",
null
]
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
},
"version": {
"$ref": "#/components/schemas/version"
},
"attachments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/attachment_response"
}
},
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/event_response"
}
}
}
},
"user_response": {
"$ref": "#/components/schemas/base_user_response"
},
"value_change_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"type": {
"type": "string",
"enum": [
"divestment",
"full_depreciation",
"manual",
"arbitrary",
"linear"
]
},
"date": {
"type": "string",
"format": "date"
},
"amount": {
"$ref": "#/components/schemas/number"
},
"description": {
"type": [
"null",
"string"
]
},
"externally_booked": {
"type": "boolean"
},
"asset_id": {
"$ref": "#/components/schemas/identifier"
}
}
},
"verification_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"emails": {
"type": "array",
"items": {
"type": "string"
}
},
"bank_account_numbers": {
"type": "array",
"items": {
"type": "string"
}
},
"chamber_of_commerce_number": {
"type": "string"
},
"tax_number": {
"type": "string"
}
}
},
"verifications_response": {
"$ref": "#/components/schemas/verification_response"
},
"version": {
"type": "integer"
},
"webhook_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"url": {
"type": "string"
},
"enabled_events": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of events this webhook is subscribed to. See [webhook events](https://developer.moneybird.com/webhooks/events) for all available events and event groups."
},
"last_http_status": {
"type": [
"integer",
"string",
"null"
],
"description": "HTTP status code of the request last received back from the webhook"
},
"last_http_body": {
"type": [
"string",
"null"
],
"description": "Body of the request last received back from the webhook"
},
"token": {
"type": "string"
},
"secret": {
"type": "string",
"description": "The webhook's secret, used to generate webhook signatures. Only returned at creation."
},
"deactivated_at": {
"oneOf": [
{
"$ref": "#/components/schemas/timestamp"
},
{
"type": "null"
}
],
"description": "Timestamp when the webhook was deactivated. Null if the webhook is active."
}
}
},
"workflow_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"type": {
"type": "string"
},
"name": {
"type": "string"
},
"default": {
"type": "boolean"
},
"currency": {
"type": "string"
},
"language": {
"type": "string"
},
"active": {
"type": "boolean"
},
"prices_are_incl_tax": {
"type": "boolean"
},
"payment_methods": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"collection_method": {
"type": [
"string",
"null"
]
},
"number_of_collections": {
"type": "integer"
},
"show_qr_code": {
"type": "boolean"
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
},
"steps": {
"type": "array",
"items": {
"$ref": "#/components/schemas/workflow_step_response"
}
}
}
},
"workflow_step_response": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"id": {
"$ref": "#/components/schemas/identifier"
},
"administration_id": {
"$ref": "#/components/schemas/administration_id"
},
"step_order": {
"type": "integer"
},
"due_interval": {
"type": "integer"
},
"reminder_delay": {
"type": "integer"
},
"reminder_text": {
"type": [
"string",
"null"
]
},
"reminder_auto_send": {
"type": "boolean"
},
"action": {
"type": [
"string",
"null"
],
"enum": [
"suspend_moneybird_account",
"reactivate_moneybird_account",
"warn_moneybird_account",
"cancel_subscription",
null
]
},
"created_at": {
"$ref": "#/components/schemas/timestamp"
},
"updated_at": {
"$ref": "#/components/schemas/timestamp"
}
}
},
"working_capital_amounts": {
"type": "object",
"properties": {
"working_capital": {
"type": "string",
"description": "Current assets minus current liabilities"
},
"bank": {
"type": "string",
"description": "The balance of the financial accounts, or zero when that balance is negative"
},
"to_receive": {
"type": "string",
"description": "The current assets other than `bank`"
},
"to_pay": {
"type": "string",
"description": "The current liabilities, including a negative balance of the financial accounts"
}
}
}
},
"securitySchemes": {
"bearerAuth": {
"type": "http",
"scheme": "bearer"
}
}
}
}