Moneybird – Gotchas

Service ID: moneybird

Dutch online accounting software for entrepreneurs and small businesses

⚠️

24 gotchas across 17 resources

These are connector-specific behaviors and limitations to be aware of when integrating.

Bank Accounts2 gotchas

allbankAccountsAll

Moneybird does not expose a total record count in list responses. meta.total_count will not appear.

onebankAccountsOne

Moneybird does not provide a financial account detail endpoint — this operation is unsupported. Use the bank accounts list to find the account.

allbankFeedAccountsAll

Moneybird cash accounts (financial accounts with type: "cash") are surfaced with bank_account_type: "bank", since the unified enum has no cash value. Cash accounts cannot meaningfully receive bank feed statements and are not distinguishable from real bank accounts in this list.

source_account_id is always null — Moneybird financial accounts have no concept of a separate "source" account distinct from the ledger account itself.

addbankFeedAccountsAdd

Moneybird does not support creating financial accounts via its API — this operation returns an unsupported-operation error. Bank accounts must be set up in the Moneybird UI; once created they appear in the Bank Feed Accounts list and their IDs can be used as bank_feed_account_id when creating bank feed statements.

onebankFeedAccountsOne

Moneybird does not provide a financial account detail endpoint — this operation is unsupported. Use the bank feed accounts list to find the account.

allbankFeedStatementsAll

Moneybird has no bank statement list endpoint, so this operation is backed by financial mutations: each returned statement contains exactly one transaction, and statement-level balance fields (start_balance, end_balance) are not populated.

Results default to the current financial year and are capped at 100 records per page. To read older mutations, pass an explicit period via pass_through: ?pass_through[filter]=period:20250101..20251231.

status reflects Moneybird's bookkeeping reconciliation state, not feed-delivery status: pending means the transaction has not yet been manually reconciled in the Moneybird UI and can remain pending indefinitely — it does not indicate a delivery problem. Moneybird never returns rejected.

addbankFeedStatementsAdd

The bank_feed_account_id must be the ID of an existing Moneybird financial account, as returned by the Bank Feed Accounts (or Bank Accounts) list. Financial accounts cannot be created via the Moneybird API — they must be set up in the Moneybird UI first.

Transaction amounts are sent to Moneybird as signed values derived from credit_or_debit (debit becomes negative).

Moneybird requires a statement reference; since the unified model has no statement-level reference field, one is generated automatically from the statement period (e.g. STMT-2026-06-30) plus the target account and a timestamp, to reduce (not guarantee) collisions between statements created in the same request burst. Moneybird does not deduplicate transactions by any client-supplied identifier — retrying a timed-out request will create duplicate transactions with no way to detect the duplication via the API.

Moneybird only stores posted_date, a message (from description, or reference when description is absent), and the signed amount per transaction. counterparty and source_transaction_id sent on write are not persisted and will not be returned on reads; if description is present, reference is also dropped on write. Reads always return a reference value, but it is derived from Moneybird's own data (batch reference or transaction id), never the value originally submitted.

The response id is the id of the first transaction created (Moneybird's mutation id), consistent with the ids returned by the list/get-one operations — it is not the id of the underlying Moneybird financial statement, which has no direct read endpoint.

onebankFeedStatementsOne

Moneybird has no endpoint to fetch a bank feed statement directly; this operation reads the underlying financial mutation by id (the same id returned by the list operation and by creating a statement).

deletebankFeedStatementsDelete

Moneybird can only delete an entire bank statement batch, not a single transaction. The connector resolves the passed id (a transaction id, as returned by list/get-one/create) to its parent statement and deletes that statement — if the statement contains other transactions from the same creation request, they are deleted too, not just the transaction identified by id.

allbillPaymentsAll

Moneybird does not expose a total record count in list responses. meta.total_count will not appear.

Bills1 gotcha

allbillsAll

Moneybird does not expose a total record count in list responses. meta.total_count will not appear.

Categories1 gotcha

allcategoriesAll

Moneybird does not expose a total record count in list responses. meta.total_count will not appear.

Customers1 gotcha

allcustomersAll

Moneybird does not expose a total record count in list responses. meta.total_count will not appear.

Expenses1 gotcha

allexpensesAll

Moneybird does not expose a total record count in list responses. meta.total_count will not appear.

allinvoiceItemsAll

Moneybird does not expose a total record count in list responses. meta.total_count will not appear.

Invoices1 gotcha

allinvoicesAll

Moneybird does not expose a total record count in list responses. meta.total_count will not appear.

alljournalEntriesAll

Moneybird does not expose a total record count in list responses. meta.total_count will not appear.

allledgerAccountsAll

Moneybird does not expose a total record count in list responses. meta.total_count will not appear.

addledgerAccountsAdd

When the Moneybird administration uses the RGS chart-of-accounts scheme (the default for new Dutch administrations), Moneybird requires an rgs_code when creating a ledger account and returns Rgs Code is required otherwise. Provide it via pass_through: "pass_through": [{"service_id": "moneybird", "extend_object": {"rgs_code": "WOmzNopOlv"}}]

Payments1 gotcha

allpaymentsAll

Moneybird does not expose a total record count in list responses. meta.total_count will not appear.

Subsidiaries1 gotcha

allsubsidiariesAll

Moneybird does not expose a total record count in list responses. meta.total_count will not appear.

Suppliers1 gotcha

allsuppliersAll

Moneybird does not expose a total record count in list responses. meta.total_count will not appear.

Tax Rates1 gotcha

alltaxRatesAll

Moneybird does not expose a total record count in list responses. meta.total_count will not appear.

alltrackingCategoriesAll

Moneybird does not expose a total record count in list responses. meta.total_count will not appear.