Skip to content
David Bomba edited this page Jan 16, 2023 · 74 revisions

Releases now moved here:

https://github.com/invoiceninja/invoiceninja/releases

5.5.44

This is another significant release. Fixes include attaching PDFs as data object rather than files.
Bug fix for an edge case caused when a invoice is deleted and restored multiple times causing the client balance to be incorrect
Fixes for expense categories not sticking to expenses
Add next send date and frequency to the recurring invoice report
Fixes for Stripe translations for payments in the Stripe Admin Panel
Auto detect delimiters for CSV files

Refactor PDF attachments as data instead of file paths
Inject slight delay into emails
Translate Stripe payment texts thanks @LarsK1
LarsK1 committed 22 hours ago
Implement checkout object for phone
Minor fixes for Stripe Payment Intent query
Fixes for store bank transaction
Add frequency to recurring invoice export
Fixes for storing bank transactions
Add CSV delimiter Autodetection thanks @checkitsedo
Fixes for CSV imports, replace work_phone with phone
Fixes for applying payment from a transaction, and then unwinding the…
Fixes for multiple deletes on a single invoice
Do not allow restoration of a invoice with a deleted payment
Fixes for expense category validation
Fixes for Stripe payment translations

5.5.43

This release continues to implement fixes for the Stripe payment gateway with users who opt into the latest API version 2022-11-15.

Spread out cron jobs to even system load
Updates for SMS confirmations
Update twilio sms authorize() method
Improve cron definitions to prevent race conditions
Improve validation layer for reports
Minor refactor for reminder jobs
Refactor the way we execute scheduled commands
Use translation for request cancellation
Clean up subscription service
Fix for subscription cancellation where there are no outstanding invoices
Fixes for displaying correct quote status in client portal
Minor fixes for bank transaction imports
Fixes for creating backup directory if it does not exist
Minor fixes for type checks
Minor fixes for failed notifications
Don't return value from void function
Refactor reminder crons
Fixes for client number race conditions when importing stripe clients
Fixes for stripe importing customers
Wind back Middleware for Bank Service Matching
Fixes for updated_at in bank_transaction_rules
Change private to protected property for middleware key
Inject small delay into email dispatch
Implement chunking of auto bill data
Handle nothing being passed into sort() filter
Fixes for missing properties in store bank integration request
Minor fix for client balance adjustment
Add more entropy when updating company ledger
Fixes for demo mode
Refactor for Stripe payment intents + charges + new api

5.5.42

This release contains significant bug fixes, if you are using Stripe with the latest API version, 2022-11-15, you will want to upgrade to this version immediately.

Also we have a lot of significant features. We have implemented bank transaction rules, this allows you to define matching rules which will allow the system to match and convert expenses / payments.

[Feature] Bank Transaction Rules
[Feature] API Doc Blocks for Bank Transaction Rules
[Bug fix] Fixes for failed email mailer, edge case where balances may not adjust
[Bug fix] Adjust when we send certain events after an email failure
[Feature] Match Bank Transactions
Tests for matching expenses
Transaction rules tests
[Bug fix] Remove delay from events
[Bug fix] Escape variables in custom designs
Minor fixes for create company routes
[Bug fix]Catch EPC QR failures
[Feature] Add reserved keywords for year/month before and after
[Bug fix] Set encoding to UTF-8 for EPC QR Codes
[Bug fix] Improve account resolution from Yodlee API
[Bug fix] Fixes for Paypal Token payments
[Bug fix]Fixes for blank client address in Swiss QR Codes
Adjust rate limits to prevent abuse
[Bug fix] Fixes for importing stripe customers where no customers exist in stripe
[Bug fix] Fixes for bank transaction csv imports
[Bug fix] Catch payment intents without charges key
[Feature] Invoice task locking
[Bug fix] Enforce password protection across entire client portal if invoice pa…
[Feature] Allow bulk email with selecting a template
[Bug fix] Purge company transactions/integrations
[Bug fix] Fixes for custom client portal subdomains
Add filters for tasks by project
Update validation rules for subscriptions
[Bug fix] Fixes for SendReminders firing twice
[Bug fix] Adjustments for handling invoice deletion
[Bug fix] Add checks to prevent duplicate reminders from being sent
[Feature] Bulk match transactions
[Bug fix] Refactor Stripe API Webhooks to work across all API Versions

5.5.41

This release contains lots of fixes for design layouts, particularly improvements when pages overflow.

We have also added a new design - Calm.

Also for designs, we now have a new variable $status_logo which will display a PAID css overlay when the invoice has been tagged as paid.


Add a new design - Calm
Fix migrations for new invoice design
Fixes for gocardless events
Prevent deleted/archived/completed transactions from being re-converted
Fixes for bank transaction tests
Fixes for playful design
Stubs for search authorize.net
Fixes for gocardless delayed instant bank payment notification:
Add a Paid CSS Overlay to invoice designs using the variable $status_logo
Late fee tests
Tests for recurring invoice variables
Minor fixes for date range calculation for :WEEK
Fixes for Fortre payment driver and where no service fees are applicable
Clean input for custom css
Implement additional filters for list views

5.5.40

Process Invoice Numbers which includes letters
Flip the request requirements
Save default terms/footers
Allow different mail from / mail name for multi company mailers
Patch for 2FA Verification
Triggered actions for Credits / Quotes
Expired quote notifications
Fixes for uses_inclusive_taxes with recurring invoices
Fixes for bank transaction imports
Reset event delay
New Design
Update Readme

5.5.38

Allow individual SMTP per company
Add verified phone number flag
Check users number for validity for SMS verifications
User Twilio API to verify phone numbers
User Twilio API to verify phone numbers
Update phpunit spec for github actions
Update translations
Fixes for imports
Datamapper classes
Return early in some hosted jobs
Override phone number with international format
Fixes for bank transaction imports
Minor fixes for validation
Minor fixes for Bank Transactions / Integrations
Improve error handling with Checkout Payment Gateway
Improve handling of saving a client that has been created from an invoice import
Show credit balance as amount for draft credits
Migrate password hashes
Add trashed records to exports
Obfuscate account numbers
Yodlee Webhooks
Update validation rules
Fixes for imports
Add client and status by default to invoice item exports
Fixes for how we deal with over/under payments with transactions
Remove html_backup column from backups tables
Only store html backups for plan users on hosted service
Fixes for dropping columns if they do not exist yet
Improvements for instant bank payments with gocardless
Remove html_back as key from restore
Working on gocardless instant bank payment notifications
GoCardless offline instant bank payments
Additional logging for Microsoft acccounts
Fixes for inventory management
Fixes for bank transactions
Fixes for 2FA
Fixes for SEPA auto-billing
Add missing translations
Rate limit bank syncing internally, not at edge of application
Minor fixes for Paypal
Fixes for the Forte payment driver
Fixes for csv ingest
Improve quality of payment emails
Line item tax amounts

5.5.37

Merge PDFs
Fixes for failed payments when the paypal credentials are incorrect
Fixes for stripe autobilling
Don't link entities when we are in a transaction Fixes for payment email preview
QR codes for invoices as a variable
Return reminders to dispatch
QR Code Fixes
Minor fixes for QR Codes
Update merge actions to bulk_print
Improve error handling of illegal relation loading
Minor fixes for refunds
Fixes for non existent systemhealth setting
Improve memory handling in jobs
Fixes for imports - date formating
Fixes for WePay

5.5.36

Fixes for Swiss QR
Remove inventory adjustments when deleting a invoice
Remove RFC requirements for email on setup

5.5.35

Fixes for handling restoring a deleted invoice
Fixes for settings checks

5.5.33

This release contains our bank integration. With this integration you will be able to use a data service provider such as Yodlee to import your bank feeds directly into Invoice Ninja. In the next release we will also be exposing the ability to upload a .csv file with your bank feeds.

MatchBankTransactions
Working on matching transactions
Expense categories
Transaction expense resolution
Resolve categories
Add provisional match
Auto pull transactions when linking accounts
Fill from_date to be one year in the past
Add transaction id to expenses and payments
Fixes for bank integration routes
Allow Bank Accounts to be created manually
Save Bank Transaction manually
Bank Transactions matching default category ID
Always force a baseType
Return list of bank transactions
Minor fixes for braintree 3DS
Disable auto billing when an invoice has been refunded.
Adjust status if invoice is modified after payment
Attempt to import documents into new company

5.5.32

Fixes for purge client
Add Preloader
Fixes for document indexing
Fixes for indexes
Add to fillable
Fixes for storage paths in self host
Clean up for preload
Minor fixes for recurring invoices
Handle invoices going from zero balance to positive balance
Fixes for refund activity notes
Minor fixes for filters
Minor changes for setup intents
Minor fixes for check data

5.5.28

Add key to account transformer
Minor updates for htmlengine
Fixes for forte payment driver
Fixes for subscription renewals

5.5.26

Several very significant performance improvements in this release.

We have additional database indexing which will improve the loading performance of the client portal when using client hash logins. We also have made a large performance gain with invoices that have hundreds of line items.

Remove authorize for SEPA
Minor fixes
Fixes for generating counters
Strip tags from client and user names Remove redundant code in save company request
fix: SwissQr postal code appears twice thanks @filo87
Return early to improve PDF generation performance
Fixes for WePay
Database indexing
Updated schema dump
Fixes for Forte payment gateway

5.5.25

Minor fixes for stripe imports
Do not serialize company after migration
Put in checks for client filters
Show labels of custom fields in registration form
Remove direct google URLs
Minor fixes for QR Code generation for live previews
Improve livewire performance with Defer
Fixes for sms verification list
Minor fixes for Stripe ACH Verifications
Fixes for wepay

5.5.24

Working on hosted upgrades
Improve trial page
Increase backoff period
Force company currency for purchase orders
Ensure we do not remove gateway fee prematurely
Fixes for payment layouts (Regression)
Exclude canvaskit path for hosted
Implement 3DS for Braintree
Fixes for seeders
Fixes for checkout.com customer request class

v5.5.23

Fixes for send now functionality of recurring invoice
Single root element for wepay signups
Fixes for single root - Livewire
Update resources to defer
Minor fixes for client portal queries
Optimize css bundles
Fixes for tests
If blank exchange rate is sent, force 1

v5.5.22

Configuration for in app purchases
Move lightlogs to batch
Improve client imports
Add recurring invoice id to expense when it is generated
Fixes for support messages
Fixes for check data
Minor fixes for support messages
Ensure we also query trashed client records before lock
Logging around generates counter
Additional logging in generates counter
Minor fixes + additional logging
Fixes for applying numbers
Fixes for entity policy not capturing recurring invoice policies
Update customer details
Fixes for restricting csv imports
Add redundancy checks when creating task numbers
Port entity policy changes to view() policy
Set SEPA stripe token payments to pending
Fixes for QR Ibans with no payment references
Fixes for adding a payment method with Checkout.com
Adapt Email entity sending using emailentity
Fixes for sending custom templates with purchase orders
Add webhook functionality to credits
Fixes for tests

v5.5.21

Add secondary font as a variable in HTMLENGINE
Add additional field for reports to companies table
Fixes for InputBag
Fixes for race condition when saving expense numbers
Improve date resolution in recurring invoices
Improve float parsing in csv imports
Additional checks for GoCardless webhooks
Improve efficiency of lightlogs
Fixes for vendor templates
Fixes for sending purchase orders when using a custom template
Change [] for vendors to contacts.company
Move lightlogs back to batching

v5.5.20

Add check if plan is expired
Add checks for ninja portal urls
Improve handling of purchaseOrder and purchase_order
Updates for vendor routes
Client Paid To Date updates
Fixes for tech template
Fixes for braintree
Update client presenter methods
Updated composer lock
Fixes for default mark down settings
Fixes for tests.
Fixes for auto billing when using credits
Working on credit paymentS
Fixes for store payment request
Ensure documents array is an array
Handle single contact object passed into array
Handle single contact object passed into array
Fixes for handling partial payments with credits
Fixes for stripe error message when authorizing credit card
Fixes for seeding languages
Refactor for client balance
Fixes for select box background color
Fixes for registration fields and ensure client contact email is uniq…
Remove redundant code from CompanySettings
CLean up code paths for client balance
Remove DispatchNow()

v5.5.19

Stripe Imports: Check for valid bank account property before attempting to iterate
Set required fields to lazy
Refactor for switch plans
Better logging around setLateFee()
Better logging around setLateFee()
Fresh client prior to updating
Update project name to just project for label
Add option to send payment email when invoice has been marked as paid
Fixes for canvaskit path
Fixes for inventory notifications

v5.5.18

Minor fixes for invitation in view portal
Fixes for showing invoice
Allow client variables in purchase orders
Refactor trial confirmed page
Fixes for applying payment number
Clean up login controller
Catch and remove updates for oauth_provider_id
Add checks for oauth provider id
Fixes for github actions
Use transaction when marking an invoice as paid
Adjust spam filtering
Minor fixes for templates
Formatting for client emails
Check for exec function prior to attemping to use it
Minor fixes for client filter sorted by display name
Support for vendor and vendor contact imports
update vendor csv for tests
Refactor recurring invoice query
Improve query efficiency
Fixes for transforming vendor contacts
Add indexes to DB

v5.5.17

Add vendor & expense includes for purchase orders
Add missing translations
Add new column for invoice_task_project
Fixes for project with both project and client id
Wrap client paid to date in transaction
Toggle sms verification based on domain
Remove ssl config
Ensure invoice marked as paid
Update purchase order invitations table
Update client records when trial activated in Stripe
Refactor to nested queries to improve query planner
Improve query efficiency

v5.5.12

Add validation for task time logs
Fixes for single route actions
Fixes for base path for canvas kit
Fixes for showing fees in both the product and tax tables
Change the order of email filters
Tests for deleting an invoice
Fixes for edge case when deleting an invoice with a partial payment
Clean up for tests
Remove snappdf download from composer script to reduce release file size

v5.5.10

Psalm Cleanup.
Fixes for ZOHO imports.
Portuguese translations updated.
Fixes for Postmark delivery.

v5.5.10

Additional checks for checkout.com
Add missing fields for activity transformer
Paytrace cleanup
Improve subscription currencies
Convert quote to project
Convert quote to project tests
Refund feature added for Forte Payment Gateway @kishanmnpatel
UI Dashboard improvements

v5.5.9

General improvements and minor bug fixes in this release. Thanks for everyones contributions to reporting and patching.

Recurring invoice due on receipt @yois615 Relocate portalButton variable @yois615 System logger added for Forte. @kishanmnpatel Fixes for phpunit - github actions Centralize where we inject email tags Remove cs-fixer from github actions Fixes for stripe catching aborted payments Clean up logging Paytrace cleanup Update dependencies Fixes for generated number tests Fixes for confirmation password verification: Fixes for custom fields for purchase orders Fixes for language init Add recurring invoice id to licenses table Fixes for paytrace: Fixes for fee labels Make square postal code optional Catch when braintree does not create the customer

v5.5.7

General improvements and bug fixes.

v5.5.3

Minor fixes overall, bug fixes for vendor documents not displaying in Portal. DB Performance improvements for eager loading

Fixes for subscriptions - allow currency id to be passed through Add enabled_expense_tax_rates Fixes for BPP in subscriptions The "with" filter for the QueryFilters Define "with_property" for ProductFilters Fixes for tests Improve efficiency of queries relying on Country Fixes for livewire Fixes for Twilio Fixes for settings purchase order designs Minor fixes for check data Fixes for vendor documents Vendor documents Fixes for emails - remove mime types Rebasing commits from v5-develop Fixes for multidb + twilio Integrate twilio Fixes for lock

v5.5.0

Release notes for v5.5

v5.5 is the new long term backend implementation of Invoice Ninja. In this major release we have incremented the minimum PHP to 8.1 and use the Laravel 9 framework this to allows the platform to remain stable without another major platform upgrade until 2024.

How do I upgrade?

First, upgrade your version of PHP to 8.1 and ensure the same extensions are available:

bcmath extension ctype extension fileinfo extension gd extension json extension mbstring extension openssl extension PDO extension tokenizer extension xml extension curl extension zip extension gmp extension mysql extension fpm (for Nginx)

Update your nginx configuration to point to the new PHP 8.1 FPM socket

If you run multiple version of PHP for other applications on your server, you'll want to ensure the CLI version for invoice ninja is PHP 8.1, if the default PHP cli version is not PHP 8.1 you'll want to update your supervisord configuration to point to the php8.1 binary

After starting the PHP8.1 FPM service and restarting nginx, you are ready to copy over the new v5.5 release files. You can either use the in app upgrade option, or manually copy over release files from the github release section.

v5.4.12

Minor fixes in this release. Please note this is the final v5.4.x release. The next release 5.5 is a major "breaking change" version where we are enforcing the minimum PHP requirements to 8.1 and moving the framework from Laravel 8 to Laravel 9. If you are not ready to change your PHP version up to 8.1 you'll want to stay on the v5.4.12 branch until ready to upgrade.

Button for Client Portal @yois615 Add missing translations for task statuses Add exchange rate to factory Fixes for purchase orders and business design Add support for showing related entity documents on invoice Working on signatures Ensure signature is provided in client portal prior to moving to next… Fixes for quote approve button when signature dialog is closed Force delete activities on purge data Prep for Hebrew Fixes for task statuses Add hebrew to repo Client include for expenses Vendor include for expenses Fixes for vendors Fixes for mailer

v5.4.11

Update Stripe responses for redirect_status Minor fixes for stripe Fixes for purging company data Fixes for invoice status if balance changes to negative Fixes for task relations

v5.4.9

This release completes our Purchase Order feature with end to end inventory management. Purchase orders can also be converted to an expense.

Subscriptions now has the option of quantities to be selected by the end client.

Bulgarian translations have been integrated into the application.

Remove paid to date from credit PDF Uploads for purchase orders Add quantity to subscriptions Expense a Purchase Order Inventory management from purchase orders Update translations Introduce Bulgarian translations Fixes for migrations Fixes for language seeder Fixes for purchase order to expense Fixes for send_email bulk routes Minor fixes for invoice filters

v5.4.5

Another big release. We have merged a PR for the Forte Payment gateway, super popular for their very low ACH fees, thanks to @kishanmnpatel for this.

For hosted users, we've added OAuth with Microsoft and also send with microsoft, where you can send emails via Invoice Ninja from your own email address. This is of beta quality, and from our testing appears solid.

For our users in Switzerland we have added Swiss QR payment codes to the PDF invoices. Simply add your QR Iban and BESR ID number in your company settings.

Various other bugs and fixes are included

Forte gateway added. Thanks @kishanmnpatel Add microsoft oauth to index.html Compiled js file added to public folder. Fixes for purchase order fillable list Fixes for designs Checks for access token property Improve queries for client statements Appropriately refresh sending tokens Admin notifications Spam notifications Change purchase order transformer type Add signup checks to flutter routes Fixes for stripe webhooks Minor fixes for Purchase orders Reduce scopes for microsoft email Password protection route with Microsoft OAuth Always ensure contacts can pay an invoice with an invitation link Bulk actions for purchase orders Minor fixes for connected accounts Minor fixes for create user route Minor fixes for company imports Purchase order decorators Add flagging abilities to accounts table Fixes for paths Swiss QR codes Templates for Purchase Orders Fixes for duplicate quote approved notifications Fixes for type checking for purchase orders Fixes for surcharge visibility

v5.4.4

Important release for new users. Some supported databases do not have a "json" column, so we instead use a mediumText column.

Fixes for reminders when no due date is set Add dedicated :MONTHYEAR reserved keyword Ensure we save auto_bill_tries Updates for hosted platform Minor fixes for bcc's Add logging for payment intents Fixes for migrations with incompatible types

v5.4.0

This is a big release.

Whats new? The self updater has been further improved. With each release a new chromium folder is installed into the application, and when you are releasing at least once a week like we are, these folders start to consume significant space. To fix this, the self updater will now remove all old chromium files/folders in the system.

The Checkout Payment driver has been completely rewritten to take advantage of their new API key system. We now support both the default API and the Four API.

We've added the ability to switch from the Flutter front end to our React front end using the small React button on the dashboard. Please note, this will only work if you use our Release file / Self updater. Please bear in mind that the switch is a one way function at the moment until we update the React Web Application to enable switching back to the Flutter front end.

The Purchase Order API has been completed and we are nearing completion of the front end works for this.

Minor fixes for correct disk configuration when using S3
Stubs for vendor portal
Fixes for badge color shading
Remove old snappdf installations prior to upgrading
Accept a purchase order
Accept signatures on purchase orders
Update composer dependencies
Vendor profile update
Checkout v2 refactor
Minor fixes for recurring invoices
Add switch to force react as front end
Clean up for self updater
Update .gitignore
Notifications for Purchase orders / Viewed / Accepted
Comments for React Application
Don't allow upgrade to react if it is not installed

v5.3.100

Add Vendor guard
Map vendors api routes
Vendor route file
Add Microsoft provider for oauth
Install Apple driver for socialite
Minor fixes for client portal badges

v5.3.99

Lots of small quality of life improvements in this release! Now if you view the client portal as an admin, you can view any object without triggering the "viewed" status of a invoice/quote/credit.

PDF display has also been improved, with blank surcharges not being displayed at all.

A nasty edge case which prevented quotes from being displayed in the client portal has now been rectified.

Webhooks from GoCardless have been improved.

Final touches on the Purchase Order API has been completed!

Clean up logging
Hide surcharges on PDF if the value is blank
Ensure client contact id is being return in activity
Store silent in session to prevent entities being viewed by admins
Fixes for quote form request
Purchase Order Emails
Bulk actions for Purchase Orders
Purchase Order Download emails
Fixes for GoCardless webhooks
Fixes for falsey conditions

v5.3.97

Purchase orders
Send email set on blank contact vendor
Handle negative surcharges
Adjust memory settings for queue work
Scaffold for PDF generation for purchase orders
Vendor PDFs
Translations for purchase orders
Add client include for quotes
Fixes for variable naming
Purchase Order Actions
Update for invoice designs
Fixes for invoice sum calculations
Fixes for csv imports - exclude deleted data
Update product request
Update language files for inventory management
Add activity events for purchase orders
Update front end dependencies
Remove logging for google analytics data
Purchase Order Events
Event / Listeners for Purchase Orders

v5.3.95

Revert zip package
Minor fixes for exports
Fixes for email images in outlook
Improve quality of email formatting for outlook

v5.3.94

Purchase Orders
Adjustments for Stripe Webhooks
Configure webhooks on gateway creation
Auth.net Level 2 tax data
Fixes for bug that sends multiple emails per import
Fixes for setting permissions on chrome binary

v5.3.93

Big release! We are now bundling our React Web Application (beta) into the releases.

You can activate the react application by using the .env variable REACT_APP_ENABLED=true

v5.3.92

This release has several important features.

  1. Page numbering is now available on PDFs, to enable this, navigate to Settings > Invoice Design and the bottom you can enable page numbering and there are alignment options available. Currently, page numbers are only available at the bottom margin of the PDF.

  2. CSV Exports are now available in Settings > Import|Export

  3. Memory improvements for the self updater, this should (hopefully) reduce the memory overhead when performing the self update.

Page numbering with FPDI Page numbering trait Page numbering for PDFs Minor fixes for self updater Enable page numbering logic Updated dependencies Fixes for self hosted setup Change requirements for report request Fixes for page numbering in previews

v5.3.91

Fixes for validation rules for exports
Fixes for data array for migration email
Fixes for reports
Add logging for google analytics
Fixes for mollie
Hide @example.com email address
UI/UX improvements

v5.3.90

Important feature update for users that rely on Stripe ACH payments. We have now implemented their new API which allows for Instant Bank Verifications. Unfortunately their API does not allow instant bank verification on its own, so the micro deposits are still required if a verification alone needs to be performed.

We have also implemented a system maintenance task that will perform a system cleanup of PDFs and Backup .html files. To enable this feature you will need to add two .env variables

DELETE_PDF_DAYS=60
DELETE_BACKUP_DAYS=60

these define the number of days you wish to retain these files. It is important to remember that the PDFs can be regenerated again if the system needs to rebuild them for emailing/viewing.

Blade files for email content @CirkaN
Download report mailable @CirkaN
Job for creating csv report & sending it to the admin @CirkaN
Minor fixes for auto billing
Custom value 4 update to text column
Fixes for paypal fees
Refactor for Stripe ACH
Fixes for trial layout
Add a System maintenance task
Clean up for login controller
Improve handling of missing tokens on login
Fixes for company ledger
Additional invoice filters

v5.3.89

Broad ranges of fixes in this update. When performing a self update we now force a reload of a cache which should resolve the need to manually run /update after performing an update

To improve our Zapier integration we are injecting a slight delay prior to sending information to Zapier, this should improve data quality.

GoCardless now listens to both completed and paid_out webhook listeners.

Bug fixes for payment gateways where min_limit is used which prevented the payment gateway from being displayed.

Fixes for race conditions when creating client and hitting unique constraints on DB.

Fixed a bug which was displaying deleted credit payments on statements.

Build cache after update Cayman island translation Force cache rebuild after update Protected domains Ledger refactor Adjust delays for observers Analytics on queue size Minor fixes for statement dates Fixes for reminders Unwind reminder changes Listen for additional webhooks for gocardless INA-2 | Added auto_bill_tries property to the database -> @CirkaN Fixes for failed payment email Add auto bill tries into cron Set flags for recurring invoices and quote terms Set conditionals for recurring invoices that are being restarted Add send_email in the request body for reports Improve resilience of client number creation Fixes for displaying payment gateways where min_limit is enforced

v5.3.87

Broad range of fixes in this release including attaching task and expense documents to emails if the option is enabled. Also, a huge amount of work has gone into supporting direct CSV exports and also Profit and loss statements which will be exposed in the Admin Portal in a future release

Fixes for Client CSV Export
Fixes for contact exports
Fixes for credits
Fixes for invoice exports
Documents Export
Expense Export
Invoice item export
Requirements for reports
Payment CSV exports
Products CSV export
Quotes CSV Exports
Quote Items
Recurring invoice export CSV
Fixes for task columns in export
Clean up for task export
Profit and loss:
Minor fixes for statement dates
Add domains to blacklist
Throttle payment methods to prevent spam:
Fixes for ACH notification with WePay
Updated translations
Updated translations
TDD for profit and loss
Fixes for tests
Fixes for jobs breaking with massive payloads
TDD Profit and loss
Limit system logs in client response
Profit and loss income by cash
Fixes for tests
PnL Expense tests
PnL Expense tests
Profit and loss
Update for statements
Profit and loss controller end point
Attach expense documents to invoices
Attach task documents to invoice emails
Attach task documents to invoice emails
Minor fixes for deleted company mail
Minor fixes for gocardless

v5.3.85

General bug fixes. Also in preparation for our React application release, we are exposing API routes for CSV exports.

Export CSVs
Update Copyright text
Exports
Expose export csv routes
CSV Exports
Quote CSV exports
Limit client activities
Recurring Invoice Export CSV
Payment Export CSV
Improve WePay guardian
Product CSV Export
Quote Items Export
Add blacklist rules
Block domains from login
Allow the variable to be used with custom payment driver
Task exports with no timelog
Export Task CSVs
Email blacklists
Don't run migration on hosted - prevent blocking db
Fixes for phpunit
Clean up migrations
Change text of confirmation button
Add is_hosted flag to account transformer
Fixes for types in Authorize
Fixes for localizing dates for reset counter
Fixes for generates counter
Update trial plans
Check is_large flag when creating a new company
Fixes for generates counter
Logging for gmail notifications
Additional fixes for client payment failure mails
Bail early
Fixes for missing properties
Handle edge case where removed user tries to log into the system

v5.3.84

This is a significant release. Within this release we are changing the column types of custom fields from 191 character (VARCHAR) to 65,535 character (TEXT) this will enable more data to be stored within the custom fields.

There also has been improvements to UI/UX with more accessibility options.

Self updater is also improved in this release. We attempt to clear the bootstrap/cache folder within the selfupdate process which should prevent manual handling of this post update.

Translations for react app
Fix length of auth.net fields
Fixes for approve with no conversion of quote to invoice from AP
Release transactions on failures
Fixes for localizing company deleted email
Ensure all recurring invoices have a valid state - post migration
Change custom_value columns from varchar to text (Allows more information to be stored in custom fields)
Add file system checks to self checker
New Schema Dump
Payable filters
Disable gateway refund options for GoCardless
Delete bootstrap/cache folder contents as part of the update process

v5.3.83

Fixes for regression - auth.net client creation

v5.3.82

Fixes for regression - incorrect type setting in ClientSettings

  • This is a critical bug fix for a regression in v5.3.81 all users are advised to update to .82. We have also included within this release a migration which will fix any corrupt client settings objects.

Fixes for statement date Max password length 1000 Improve bulk email performance Type checking Fixes for type checks Generate idempotency key on the frontend Use idempotency key from frontend in payment request body Admin Portal - Next GoCardless Logging

v5.3.81

Fixes for endless reminders not sending. Improve error responses from PayTrace Add required fields dialogue for PayTrace New and improved PDF viewer!

v5.3.80

Improve performance for N+1 queries. Ensure Gateway fees are correctly added to Paypal transactions. Add Webhooks for Projects Type fixes for client settings Sort Client Statements by Due Date Improve logging / error responses from eWay

v5.3.79

Lots of quality of life improvements in this release. For our Stripe integration we keep the customer details in sync between Invoice Ninja and Stripe.

For heavy users who use the API, we have improved invoice number generation performance and reduce DB constraint exceptions

Protected sub domains
Add CHF as the symbol as well as code Fixes for seeds
Force integer for client id
Fixes for api docs
Fixes for translations corrupting client savings
Fixes for eWay descriptions
Admin Portal - Hosted
Fixes for ledger
Reduce transaction retries
Fixes for coercing types for react UI
Reduce queries for Invoice POST
Fixes for regression
Fixes for contact key login
Localize timezone for payment date
Entity translations
Link converted quote to invoice
Coerce types for authorize payment error
Handle user not present in completePurchase method of subscriptions
Fixes for translation of task statuses
Do not send notifications to archived/deleted users
Allow draft credits to be used in payments
Client Reports
Prevent double gateway fee removal
Improve invoice number generation when race conditions encountered
Update client details in Stripe during a transaction

v5.3.78

Fixes for custom messages
Remove domain verification for apple pay
Improve client paid to date calculations
Remove authorize method for SEPA
Admin Portal - Hosted
Fixes for fillable fields for company Company Transformer fixes
Fixes for string to array issues with converting variables in public notes
Triggered actions for Recurring Expenses
Fixes for task edge cases
Improve test coverage for triggered actions
Add line breaks to messages
Improve formatting of support messages
Update company defaults Flutter implemented WYSIWYG editor
Fixes for regression in Handler.php

This regression would cause the system to completely be inoperable, users are encouraged to upgrade directly to 5.3.78 and bypass 5.3.77

v5.3.77

Remove ->increment() methods
Fixes for payment method create
Fixes for migration validation
Documentation for listResponse end point
Improve invoice payment registrations
Fixes for frequencyforkey
Improve memory handling for self update

file_get_contents downloads the entire package to memory, which was causing OOM errors when updating for some users. We have switched to copy() which should be more performant and use less memory.

v5.3.76

Fixes for create product request

Remove any validation requirements for the create route

Fixes for testing for float

Handle string floats / in the settings object

Fixes for permissions

Handle a regression where lower permissioned users were not able to see correct entities

Fixes for login controller

Fixes for handling passing the correct company user to Fractal

Attempt to cast floats immediately in settings saver

Force casts in the settings saver for Floats - allows string floats to be passed in and pass validation.

Add new variable client.lang_2 thanks @Napsty

Allows access to the client locale in PDFs and emails.

Fixes for contact registration

Fixes for company resolution in self hosted installations when client registration is enabled.

Fixes for client contact country on registration

Prevent forcing USA as the default country, we now fall back to the company country if no country is assigned.

GMail credentials notification

Fire a notification if the gmail credentials are incorrect on the hosted platform.

Fixes for statements displaying payments per invoice

Statements now show per invoice amounts instead of aggregates

Factor in gateway fees to client / invoice balances

Add pending gateway fees to the ledger client balance

Fixes for recurring invoice number for pending plans

Fixes for hosted platform

Padding for wysiwyg editor Minor fixes for company gateways Minor fixes for client country in repo Clean up for eWay Error supression when logo is not present

Convert shared quote/invoice counters

Implement a feature parity item where when a quote is converted we assign the same counter to the invoice, ie Q2000 becomes I2000 when a quote is converted to invoice.

Fixes for tests Fixes for reversing invoice balances on archived invoice Fixes for refund payments

Fix for a regression where balances were not adjusting correctly if a invoice was archived.

v5.3.75

Fixes for contact registration.

Edge cases resolved where multiple companies existed and contact registration failed.

Fixes for custom messages in client portal

Ensure all custom messages are displayed on the app

Fixes for gocardless

Token billing now forces payments into Pending status (previously they were tagged as completed), webhooks will complete the payment if successful

Fixes for index title

The app by default shows Invoice Ninja as the title of the page, the APP_NAME is now displayed by default.

Fixes for queues trying to call SQS

Attempt to prevent the system from trying to call Amazon metadata services.

v5.3.74

Starting from this release, we'll be making an effort to describe significant changes to the application to assist the community in knowing what to expect with releases.

One issue we saw with v5.3.73 was that a lot of self hosted installations were not able to run the post update hooks which called composer to update the vendor dependencies, this quickly broken a lot of running applications.

To counter this we have removed both composer and also the self-updater we were relying on. In its place is our own implementation of the self updater. This will pull in the full release file ( circa 200mb ) which also contains all of the vendor dependencies so the chances of an update breaking should be greatly reduced. The cost of the larger file shouldn't be much of an issue for most people given bandwidth allowances nowadays.

So how exactly does the updater work?

I'm glad you asked :).

The first step in the update process is to ensure the system can write the files into the directory. To do this, the webuser must be able to write to every file and directory recursively. So we iterate through the entire directory and check all files and folders. If we hit a file that is not writable, we immediately thrown an exception and stop the update process.

Once the filesystem check is complete, we pull in the latest full package from the github releases and download the zip file to the local file system. Once there we unpack and overwrite all the existing file with the new ones.

All that is left to do after this is to clear the cache, run migrations and then optimize the config cache here are the post extraction steps

$cacheCompiled = base_path('bootstrap/cache/compiled.php');
if (file_exists($cacheCompiled)) { unlink ($cacheCompiled); }
$cacheServices = base_path('bootstrap/cache/services.php');
if (file_exists($cacheServices)) { unlink ($cacheServices); }

Artisan::call('clear-compiled');
Artisan::call('route:clear');
Artisan::call('view:clear');
Artisan::call('migrate', ['--force' => true]);
Artisan::call('optimize');

This should bring your system up to date with the least amount of pain possible.

What should I do if the update fails and puts the application into a bad state?

Hopefully this should not happen, however it the app does get into a bad state then download the latest release file from here and copy the files over your existing installation.

Then call the web url https://yourdomain/update?secret=secret

This web url will perform the post update steps and correct the app state.

More a more detailed breakdown into this release, you can check the commits here