Skip to content

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_reverse and default_reversal_date for manual bookings.
  • New — Organization settings accept immutableJournal. While it is enabled, deleting a manual booking created before today returns 422 with code: "immutable_journal" and updating it reverses the original and creates a new booking, optionally on reversal_date. The setting can't be disabled once enabled.
  • New — Expense payments accept the types cash_discount, credit_note and payables_write_off, which settle a bill's open amount without a bank transfer and reverse its booking pro rata. Payments return type and is_remainder_payment.
  • New — Expenses return is_written_off and has_remainder_payment. While a bill has a remainder payment, changing its positions, issue date, currency or status returns 422.
  • New — The webhook event expense/written-off is sent when a bill's open amount is written off.
  • Changed — Expense payments of type cash_discount, credit_note or payables_write_off can't be updated (422), only deleted. The global expense payment list returns payments of type creditor_payment only.

2026-10-29 ​

2026-10-28 ​

  • Fixed — Invoices return payable_in_days as the positive number of days from issued_at to due_at.

2026-10-23 ​

  • New — Invoice payments accept the type cancellation, which cancels the open amount of a sent invoice on executed_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 latestOutgoingMail as well.
  • New — Invoices return status (draft, scheduled, pending, overdue, paid or cancelled).
  • New — Invoices return is_cancelled and cancelled_at, and the status filter accepts cancelled. A cancelled invoice returns is_paid: false.
  • New — The webhook event invoice/cancelled is sent when an invoice becomes fully cancelled. Cancelling the remainder of a partly paid invoice sends invoice/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 422 and 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 shorter customer_portal_url (https://app.blond.swiss/p/…). Links in the previous format keep working.
  • Changed — An offer's approve_url and reject_url return 403 once 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_iban when 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_at as a date (2026-10-20) instead of a date-time. A date-time sent as execute_at is 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 ​

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_id of 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_id returns 422.
  • Changed — A sub-project of a flat-rate project returns billable_total 0: its parent's offers cover its work. The project filter with_billable_costs also finds projects whose sub-projects have work left to invoice.
  • Fixed — The search filter works when listing tags.
  • Changed — Listing VAT periods accepts no filters, sorts or includes; filter[search] returns 400. Results are sorted by start_date, newest first.

2026-10-10 ​

  • Changed — Creating or updating a project with parent_id validates the parent: it must be a top-level project of the same company, the project must not have sub-projects, be billed hourly and match the parent's is_internal, and costs_limit is required. Otherwise the request returns 422. See Sub-projects.
  • Changed — A sub-project cannot switch to flat billing or change is_internal while it keeps its parent (422).
  • Fixed — Date-time values with a UTC offset, such as the paid_at of 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_at on the issued_at day.
  • 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_reason and billing_waived_total; with completed billing, billable_total is 0.
  • Fixed — Currency differences book gains to the account in accountingFinancialIncomeAccount and losses to the one in accountingFinancialExpensesAccount (organization settings); the defaults are now 6950 and 6900.
  • Changed — Deleting a locked account returns 422.
  • Fixed — Creating a bank account keeps the given account_id. With accounting enabled, only a bank account created without one gets a new ledger account.
  • Changed — With accounting enabled, creating a bank account of a type other than bank requires account_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_total and expected_profit_total, also as part of the billing append.
  • Fixed — Project financial figures are rounded to cents, so a fully invoiced flat-rate project has a billable_total of 0.
  • Fixed — Projects return billed_total and turnover_total as 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_breakdown and internal_costs_breakdown.
  • Changed — A project's profit_total and return_on_investment_total no longer count draft invoices.
  • Docs — Project appends and financial figures are documented.
  • Fixed — For hourly projects, billable_total equals billable_costs and 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 page and per_page parameters.

2026-10-08 ​

  • Changed — Line items of locked offers and invoices can no longer be changed (422). See Locked documents.
  • Changed — document_type and document_id are ignored when updating or cloning a document element.
  • Changed — Offers the customer approves or rejects stay locked (is_locked: true, locked_at kept).
  • Changed — Signed upload URLs no longer accept bucket, expires and visibility.
  • Changed — Registering an upload requires the unchanged uuid and key from the signed URL response. Each upload can be registered once.
  • New — Organizations return agent_provider_profile, agent_provider_profile_inherited and agent_provider_profile_inherits.
  • New — PUT /organizations/{organizationId}/agent-provider-profile switches 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. 2311 finds 2311/HR01.

2026-10-02 ​

  • Changed — Webhook endpoints require the edit organization permission.
  • Changed — Manual bookings require the manage accounting and create journal_transaction permissions.

2026-09-28 ​

  • Changed — Project offers (offers, approvedOffers, offers_count) require the show offer permission.

2026-09-24 ​

  • Changed — A project's company_id must be an existing company.

2026-09-23 ​

  • Changed — Invoice payments validate their input and accept currency and conversion_rate.
  • Fixed — Invoice payments without executed_at default to today.
  • Fixed — Changing the email via PATCH /user requires verifying it again.

2026-09-21 ​

  • New — Invoices have is_dunning_paused, dunning_paused_at and ?append=auto_dunning_active.
  • Changed — Sending an invoice or offer fails with 422 when there's no recipient email address.

2026-09-17 ​

  • Changed — Invoice recipients and offer email accept an array of addresses.
  • Fixed — beforeOrder on the add products endpoints inserts at the given position.

2026-09-15 ​

2026-09-14 ​