Moneybird logo
Moneybird API

Financial mutations

Financial mutations are the transactions on your financial accounts.


List all ids and versions

GET
https://moneybird.com/api/v2
/{administration_id}/financial_mutations/synchronization{format}

Returns the financial mutations that match the filter. The list contains the id and the version of the financial mutation. Check if the version of the financial mutation is newer than the version you have stored locally, use the POST variant for fetching financial mutations with the given ids.

Required scope(s)

bank

List all ids and versions › path Parameters

administration_id
​administration_id · pattern: ^\d+$ · required

The unique identifier of the administration

A unique record identifier

format
​string · pattern: ^(.(json|xml))?$ · required

The format in which the response is given, can be empty to use the default format

Default: .json

List all ids and versions › query Parameters

filter
​string

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:

FilterTypeDefaultDescription
periodStringthis_yearThis 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.
stateStringCan be all, unprocessed or processed
mutation_typeStringCan be all, debit or credit
financial_account_idString
Default: period:this_year

List all ids and versions › Responses

200

IDs and versions of records

​object[]
id
​integer | string
version
​integer | string

Fetch financial mutations with given ids

POST
https://moneybird.com/api/v2
/{administration_id}/financial_mutations/synchronization{format}

Given a list of financial mutation ids, returns the financial mutation information belonging to the financial mutation. Returns a maximum of 100 financial mutations, even if more ids are provided.

Required scope(s)

bank

Fetch financial mutations with given ids › path Parameters

administration_id
​administration_id · pattern: ^\d+$ · required

The unique identifier of the administration

A unique record identifier

format
​string · pattern: ^(.(json|xml))?$ · required

The format in which the response is given, can be empty to use the default format

Default: .json

Fetch financial mutations with given ids › Request Body

ids
​(integer | string)[] · required

Fetch financial mutations with given ids › Responses

A financial mutation

id
​identifier · pattern: ^\d+$

A unique record identifier

administration_id
​administration_id · pattern: ^\d+$

A unique record identifier

amount
​string
code
​string | null
date
​string · date
message
​string | null
contra_account_name
​string | null
contra_account_number
​string
state
​string · enum
Enum values:
unprocessed
processed
Default: unprocessed
settlement_state
​string · enum
Enum values:
authorised
cancelled
expired
settled
pending
refused
error
captured
Default: settled
amount_open
​string
sepa_fields
​object | null
batch_reference
​string | null
financial_account_id
​identifier · pattern: ^\d+$

A unique record identifier

currency
​currency

ISO 4217 currency code

original_amount
​string | null
created_at
​timestamp · date-time
updated_at
​timestamp · date-time
version
​version
financial_statement_id
​identifier · pattern: ^\d+$

A unique record identifier

processed_at
​string | null · date-time
account_servicer_transaction_id
​string | null
​ledger_account_booking_response[]

PATCH
https://moneybird.com/api/v2
/{administration_id}/financial_mutations/{id}/link_booking{format}

Linking a booking to a financial mutation allows you to process financial mutations. Financial mutations can be linked to invoices, documents, ledger accounts and payment batches.

Depending on booking_type, the token also needs the sales_invoices scope (SalesInvoice, ExternalSalesInvoice, PaymentTransaction, PaymentTransactionBatch), the documents scope (Document, NewPurchaseInvoice, NewReceipt, PurchaseTransactionBatch), the sales_invoices, documents and settings scopes (VatDocument), or the scope of the invoice the payment belongs to (Payment). LedgerAccount needs only bank. For a PurchaseTransaction that is not paid yet, and for each such transaction in a PurchaseTransactionBatch, the token also needs the scope of the invoice the transaction pays.

Only a financial mutation with settlement_state settled, authorised or pending can be linked. Any other settlement_state answers 400.

Required scope(s)

bank

administration_id
​administration_id · pattern: ^\d+$ · required

The unique identifier of the administration

A unique record identifier

id
​identifier · pattern: ^\d+$ · required

A unique record identifier

format
​string · pattern: ^(.(json|xml))?$ · required

The format in which the response is given, can be empty to use the default format

Default: .json
booking_type
​string · enum · required

The type of record to link the mutation to.

Enum values:
SalesInvoice
Document
LedgerAccount
PaymentTransactionBatch
PurchaseTransaction
NewPurchaseInvoice
NewReceipt
PaymentTransaction
booking_id
​identifier · pattern: ^\d+$

The id of the record to link, of the type set in booking_type (e.g. the ledger account id when booking_type is LedgerAccount). Not allowed for NewPurchaseInvoice and NewReceipt — those create a new record instead of linking an existing one. To link an existing purchase invoice or receipt, use booking_type Document with the document's id.

​money

The booking amount, in the administration's base currency. This is the field that carries the amount for most booking types; when linking a payment to an invoice it is the base-currency counterpart of price. For booking_type LedgerAccount send the amount here — price is ignored.

Whether to send a positive or a negative amount depends on booking_type:

booking_typeAmount
SalesInvoice, ExternalSalesInvoice, DocumentAlways positive. The payment direction is taken from the financial mutation, so refunds and credit notes also take a positive amount, whichever way the money moved
LedgerAccountPositive books in the same direction as the mutation, negative against it. Splitting a mutation over several bookings takes one request per part: an outgoing mutation of -95 consisting of 100 in costs and 5 received back takes one request with 100 and one with -5. One exception: once an incoming mutation has more booked than its own amount (its open amount went negative), positive and negative swap — a positive amount then books against the mutation
VatDocumentThe amount as it appears on the VAT return: positive when VAT is payable, negative for a refund
NewPurchaseInvoice, NewReceiptPositive when the mutation is outgoing (a purchase you paid), negative when it is incoming (money received back)
Payment, PaymentTransaction, PaymentTransactionBatch, PurchaseTransactionBatch, PurchaseTransactionIgnored — the amount comes from the record being linked
​money

Amount in the booking's own currency, used when linking a payment to an invoice. The same positive/negative rules apply as for price_base (see the table there). For a foreign-currency invoice both price and price_base are required; otherwise price_base alone is enough. Only used when booking_type is SalesInvoice, ExternalSalesInvoice, Document or VatDocument; every other booking type takes its amount from price_base or ignores it.

description
​string
payment_batch_identifier
​string
project_id
​identifier · pattern: ^\d+$

Should be a valid project id.

mark_open_sepa_transaction_as_paid
​boolean | string

The financial mutation from the request, with its payments and ledger_account_bookings. Linking to a cash-control ledger account can also book a second mutation; that mutation is not in the response.

For booking_type PaymentTransactionBatch the link is made in the background, so the response shows the mutation before the link.

id
​identifier · pattern: ^\d+$

A unique record identifier

administration_id
​administration_id · pattern: ^\d+$

A unique record identifier

amount
​string
code
​string | null
date
​string · date
message
​string | null
contra_account_name
​string | null
contra_account_number
​string
state
​string · enum
Enum values:
unprocessed
processed
Default: unprocessed
settlement_state
​string · enum
Enum values:
authorised
cancelled
expired
settled
pending
refused
error
captured
Default: settled
amount_open
​string
sepa_fields
​object | null
batch_reference
​string | null
financial_account_id
​identifier · pattern: ^\d+$

A unique record identifier

currency
​currency

ISO 4217 currency code

original_amount
​string | null
created_at
​timestamp · date-time
updated_at
​timestamp · date-time
version
​version
financial_statement_id
​identifier · pattern: ^\d+$

A unique record identifier

processed_at
​string | null · date-time
account_servicer_transaction_id
​string | null
​ledger_account_booking_response[]

DELETE
https://moneybird.com/api/v2
/{administration_id}/financial_mutations/{id}/unlink_booking{format}

Unlinks a booking from a financial mutation.

To unlink a Payment, the token also needs the scope of the invoice the payment belongs to: sales_invoices for (external) sales invoices, documents for purchase invoices and receipts, or sales_invoices, documents and settings for VAT documents.

Required scope(s)

bank

administration_id
​administration_id · pattern: ^\d+$ · required

The unique identifier of the administration

A unique record identifier

id
​identifier · pattern: ^\d+$ · required

A unique record identifier

format
​string · pattern: ^(.(json|xml))?$ · required

The format in which the response is given, can be empty to use the default format

Default: .json
booking_type
​string · enum · required

Can be Payment or LedgerAccountBooking.

Enum values:
Payment
LedgerAccountBooking
booking_id
​identifier · pattern: ^\d+$ · required

A unique record identifier

A financial mutation

id
​identifier · pattern: ^\d+$

A unique record identifier

administration_id
​administration_id · pattern: ^\d+$

A unique record identifier

amount
​string
code
​string | null
date
​string · date
message
​string | null
contra_account_name
​string | null
contra_account_number
​string
state
​string · enum
Enum values:
unprocessed
processed
Default: unprocessed
settlement_state
​string · enum
Enum values:
authorised
cancelled
expired
settled
pending
refused
error
captured
Default: settled
amount_open
​string
sepa_fields
​object | null
batch_reference
​string | null
financial_account_id
​identifier · pattern: ^\d+$

A unique record identifier

currency
​currency

ISO 4217 currency code

original_amount
​string | null
created_at
​timestamp · date-time
updated_at
​timestamp · date-time
version
​version
financial_statement_id
​identifier · pattern: ^\d+$

A unique record identifier

processed_at
​string | null · date-time
account_servicer_transaction_id
​string | null
​ledger_account_booking_response[]

Get a financial mutation by id

GET
https://moneybird.com/api/v2
/{administration_id}/financial_mutations/{id}{format}

Returns a single financial mutation in the administration.

Required scope(s)

bank

Get a financial mutation by id › path Parameters

administration_id
​administration_id · pattern: ^\d+$ · required

The unique identifier of the administration

A unique record identifier

id
​identifier · pattern: ^\d+$ · required

A unique record identifier

format
​string · pattern: ^(.(json|xml))?$ · required

The format in which the response is given, can be empty to use the default format

Default: .json

Get a financial mutation by id › Responses

A financial mutation

id
​identifier · pattern: ^\d+$

A unique record identifier

administration_id
​administration_id · pattern: ^\d+$

A unique record identifier

amount
​string
code
​string | null
date
​string · date
message
​string | null
contra_account_name
​string | null
contra_account_number
​string
state
​string · enum
Enum values:
unprocessed
processed
Default: unprocessed
settlement_state
​string · enum
Enum values:
authorised
cancelled
expired
settled
pending
refused
error
captured
Default: settled
amount_open
​string
sepa_fields
​object | null
batch_reference
​string | null
financial_account_id
​identifier · pattern: ^\d+$

A unique record identifier

currency
​currency

ISO 4217 currency code

original_amount
​string | null
created_at
​timestamp · date-time
updated_at
​timestamp · date-time
version
​version
financial_statement_id
​identifier · pattern: ^\d+$

A unique record identifier

processed_at
​string | null · date-time
account_servicer_transaction_id
​string | null
​ledger_account_booking_response[]

List all financial mutations

GET
https://moneybird.com/api/v2
/{administration_id}/financial_mutations{format}

Returns the financial mutations that match the filter. When more than 100 financial mutations match, the request fails with a 400 response. Use a smaller period or the synchronize API to get more.

Required scope(s)

bank

List all financial mutations › path Parameters

administration_id
​administration_id · pattern: ^\d+$ · required

The unique identifier of the administration

A unique record identifier

format
​string · pattern: ^(.(json|xml))?$ · required

The format in which the response is given, can be empty to use the default format

Default: .json

List all financial mutations › query Parameters

filter
​string

Filters are key:value terms separated by commas (e.g. period:this_year,state:unprocessed). Any filter you pass replaces the defaults below entirely, so include every key you need. Available filters:

FilterTypeDefaultDescription
periodStringthis_yearA named period (this_week, prev_week, next_week, this_month, prev_month, next_month, this_quarter, prev_quarter, next_quarter, this_year, prev_year, next_year) or a custom range (201301..201302, 20130101..20130131). 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.
stateStringallall, unprocessed, processed or auto_booked
mutation_typeStringallall, debit or credit
financial_account_idIntegerRestrict to a single financial account
amount_fromStringLower bound on the absolute mutation amount (negative input is treated as positive)
amount_toStringUpper bound on the absolute mutation amount

Multiple values for state and mutation_type can be combined with a pipe, e.g. state:unprocessed|processed.

Default: period:this_year

List all financial mutations › Responses

A list of financial mutations

id
​identifier · pattern: ^\d+$

A unique record identifier

administration_id
​administration_id · pattern: ^\d+$

A unique record identifier

amount
​string
code
​string | null
date
​string · date
message
​string | null
contra_account_name
​string | null
contra_account_number
​string
state
​string · enum
Enum values:
unprocessed
processed
Default: unprocessed
settlement_state
​string · enum
Enum values:
authorised
cancelled
expired
settled
pending
refused
error
captured
Default: settled
amount_open
​string
sepa_fields
​object | null
batch_reference
​string | null
financial_account_id
​identifier · pattern: ^\d+$

A unique record identifier

currency
​currency

ISO 4217 currency code

original_amount
​string | null
created_at
​timestamp · date-time
updated_at
​timestamp · date-time
version
​version
financial_statement_id
​identifier · pattern: ^\d+$

A unique record identifier

processed_at
​string | null · date-time
account_servicer_transaction_id
​string | null
​ledger_account_booking_response[]