feat: all invoices can be voided now #3902
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context
This PR addresses a limitation in the logic for voiding invoices that was causing confusion and blocking expected behaviour with some customers. Previously, certain invoice states were not allowed to be voided depending on specific internal validations, even if the user explicitly triggered a void action.
This inconsistency was particularly evident when using generate_credit_note: false, where the system applied legacy rules that no longer make sense from a user perspective.
Description
We removed the conditional logic that prevented invoices from being voided under specific internal states.
The behaviour is now simplified:
➡️ If the user calls void, the system will proceed with the voiding process without rejecting it due to previous state-based restrictions.
Potential Downside
This is a silent breaking change for clients relying on the previous behaviour (i.e. expecting a validation error when trying to void certain invoices). However, the rationale is that if a user explicitly calls void, they intend for the invoice to be voided — so this new behaviour is more consistent and predictable.