Appearance
Changelog
API changes, newest first.
2026-10-30
- New — Manual bookings can be reversed with
POST /journal_transaction/{id}/reverse, which creates a linked booking with debit and credit swapped. A reversed booking can't be edited or deleted (422). - New — Journal transactions return
reverses,reversed_by,can_delete,can_edit_in_place,edit_requires_reversal,can_reverseanddefault_reversal_datefor manual bookings. - New — Organization settings accept
immutableJournal. While it is enabled, deleting a manual booking created before today returns422withcode: "immutable_journal"and updating it reverses the original and creates a new booking, optionally onreversal_date. The setting can't be disabled once enabled. - New — Expense payments accept the types
cash_discount,credit_noteandpayables_write_off, which settle a bill's open amount without a bank transfer and reverse its booking pro rata. Payments returntypeandis_remainder_payment. - New — Expenses return
is_written_offandhas_remainder_payment. While a bill has a remainder payment, changing its positions, issue date, currency or status returns422. - New — The webhook event
expense/written-offis sent when a bill's open amount is written off. - Changed — Expense payments of type
cash_discount,credit_noteorpayables_write_offcan't be updated (422), only deleted. The global expense payment list returns payments of typecreditor_paymentonly.
2026-10-29
- Changed — Matching a bank transaction manually returns
422when the transaction already has a reconciled match.
2026-10-28
- Fixed — Invoices return
payable_in_daysas the positive number of days fromissued_attodue_at.
2026-10-23
- New — Invoice payments accept the type
cancellation, which cancels the open amount of a sent invoice onexecuted_at. Deleting the cancellation payment reactivates the invoice. - New — Invoices accept the include
latestOutgoingMail, which returns the delivery status of the last email sent for the invoice, per recipient. - New — Offers accept the include
latestOutgoingMailas well. - New — Invoices return
status(draft,scheduled,pending,overdue,paidorcancelled). - New — Invoices return
is_cancelledandcancelled_at, and thestatusfilter acceptscancelled. A cancelled invoice returnsis_paid: false. - New — The webhook event
invoice/cancelledis sent when an invoice becomes fully cancelled. Cancelling the remainder of a partly paid invoice sendsinvoice/paid. - New — The Banana and Sage 50 invoice exports include reversal bookings on the cancellation date for cancelled invoices.
- Changed — Deleting a locked invoice returns
422; only drafts can be deleted. Cancel sent invoices instead. - Changed — Deleting many invoices returns
422and deletes nothing when one of them is locked. - Fixed — The Banana invoice export writes each value under its own column heading.
- Changed — Offers return a shorter
share_url(https://app.blond.swiss/q/…) and companies a shortercustomer_portal_url(https://app.blond.swiss/p/…). Links in the previous format keep working. - Changed — An offer's
approve_urlandreject_urlreturn403once the offer has expired or is a draft. - Docs — Webhook event names are written with a slash, such as
invoice/paid.
2026-10-19
- New — Organization settings accept
documentFooterTextAlignment(left,center,right) to align the footer text on sales document PDFs. - New — A statement review returns
mismatching_ibanwhen the statement names another IBAN than the bank account's. A PDF statement whose transactions also mention that IBAN is staged for review instead of failing. - Changed — Expense payments return
execute_atas a date (2026-10-20) instead of a date-time. A date-time sent asexecute_atis stored as its day in Swiss local time. - Changed — A PDF statement without opening balance is checked against its printed total debits and credits and imported right away when it balances.
2026-10-13
- New — Importing bank transactions accepts PDF bank and card statements with
file_type=pdf; each file uses one unit of the expense parser quota. Statements that don't balance are staged as statement reviews, and files that can't be imported are listed when retrieving the import.
2026-10-12
- New — The balance sheet and the income statement can be downloaded as Excel files.
- Changed — Invoices and offers always belong to a top-level project: creating or updating one with the
project_idof a sub-project assigns its parent. Sub-projects only hold time entries and expenses. - Changed — A project with invoices or offers, including deleted ones, cannot become a sub-project: setting its
parent_idreturns422. - Changed — A sub-project of a flat-rate project returns
billable_total0: its parent's offers cover its work. The project filterwith_billable_costsalso finds projects whose sub-projects have work left to invoice. - Fixed — The
searchfilter works when listing tags. - Changed — Listing VAT periods accepts no filters, sorts or includes;
filter[search]returns400. Results are sorted bystart_date, newest first.
2026-10-10
- Changed — Creating or updating a project with
parent_idvalidates the parent: it must be a top-level project of the same company, the project must not have sub-projects, be billedhourlyand match the parent'sis_internal, andcosts_limitis required. Otherwise the request returns422. See Sub-projects. - Changed — A sub-project cannot switch to
flatbilling or changeis_internalwhile it keeps its parent (422). - Fixed — Date-time values with a UTC offset, such as the
paid_atof a retrieved invoice (2026-05-11T22:00:00.000000Z), are stored as that moment in Swiss local time. Sending a retrieved object back unchanged keeps its dates. - Changed — Creating or updating an invoice accepts a
paid_aton theissued_atday. - Changed — Deleting a draft invoice, or permanently deleting any invoice, releases the time entries and expenses it billed.
2026-10-09
- New — The billing of a flat-rate project can be completed and reopened. Projects return
is_billing_completed,billing_completed_at,billing_completed_reasonandbilling_waived_total; with completed billing,billable_totalis0. - Fixed — Currency differences book gains to the account in
accountingFinancialIncomeAccountand losses to the one inaccountingFinancialExpensesAccount(organization settings); the defaults are now6950and6900. - Changed — Deleting a locked account returns
422. - Fixed — Creating a bank account keeps the given
account_id. With accounting enabled, only abankaccount created without one gets a new ledger account. - Changed — With accounting enabled, creating a bank account of a type other than
bankrequiresaccount_id(422). - Fixed — Deleting a bank account keeps a linked account outside the 1020–1059 range.
- New — Account sheets of a fiscal year can be generated and retrieved as Excel files with
format=xlsx. - New — Projects return
sent_invoices_total,expected_revenue_totalandexpected_profit_total, also as part of thebillingappend. - Fixed — Project financial figures are rounded to cents, so a fully invoiced flat-rate project has a
billable_totalof0. - Fixed — Projects return
billed_totalandturnover_totalas numbers. - Docs — Project financial figures state that internal costs count expenses gross and that sub-project invoices are not included.
- New — Projects return
draft_invoices_total,billable_costs_breakdownandinternal_costs_breakdown. - Changed — A project's
profit_totalandreturn_on_investment_totalno longer count draft invoices. - Docs — Project appends and financial figures are documented.
- Fixed — For hourly projects,
billable_totalequalsbillable_costsand no longer subtracts earlier invoices. - Fixed — Lists order objects with the same sort value by ID, so paging through an unchanged list returns each object once. See Sorting.
- Docs — Pagination documents the
pageandper_pageparameters.
2026-10-08
- Changed — Line items of locked offers and invoices can no longer be changed (
422). See Locked documents. - Changed —
document_typeanddocument_idare ignored when updating or cloning a document element. - Changed — Offers the customer approves or rejects stay locked (
is_locked: true,locked_atkept). - Changed — Signed upload URLs no longer accept
bucket,expiresandvisibility. - Changed — Registering an upload requires the unchanged
uuidandkeyfrom the signed URL response. Each upload can be registered once. - New — Organizations return
agent_provider_profile,agent_provider_profile_inheritedandagent_provider_profile_inherits. - New —
PUT /organizations/{organizationId}/agent-provider-profileswitches the AI provider. - Changed — Without a paid plan, inviting users is limited to 2 employee users (
402). - Fixed — Attachment
download_urls keep the file's original name and content type.
2026-10-05
- Fixed —
filter[search]finds names and numbers that contain punctuation, e.g.2311finds2311/HR01.
2026-10-02
- Changed — Webhook endpoints require the
edit organizationpermission. - Changed — Manual bookings require the
manage accountingandcreate journal_transactionpermissions.
2026-09-28
- Changed — Project offers (
offers,approvedOffers,offers_count) require theshow offerpermission.
2026-09-24
- Changed — A project's
company_idmust be an existing company.
2026-09-23
- Changed — Invoice payments validate their input and accept
currencyandconversion_rate. - Fixed — Invoice payments without
executed_atdefault to today. - Fixed — Changing the
emailviaPATCH /userrequires verifying it again.
2026-09-21
- New — Invoices have
is_dunning_paused,dunning_paused_atand?append=auto_dunning_active. - Changed — Sending an invoice or offer fails with
422when there's no recipient email address.
2026-09-17
- Changed — Invoice
recipientsand offeremailaccept an array of addresses. - Fixed —
beforeOrderon the add products endpoints inserts at the given position.
2026-09-15
- New — Expenses have the
transmittedstatus andis_transmittedfield. - New —
GET /fiscal_year/{id}/account-sheetsreturns the latest account sheets download URL. - Docs — The docs moved to developer.blond.swiss.
2026-09-14
- Changed — The organization's
vat_idnaccepts Liechtenstein UIDs.