Redesigning Transaction Conversion in Accounting Software

The Problem

In accounting software it is not uncommon transactions to get misclassified. If our system marked a transaction as an expense when it should have been a bank transfer or tax payment, correcting it required:

  • Clicking a checkbox that literally read “This is a bank transfer.”

  • Saving the form

  • Locating and reopening the transaction

  • Entering newly required fields

  • Saving again

Some transaction types required completely different fields. Since those fields didn’t update until after the conversion was saved, finalized transactions could become pending transactions again if the new transaction type had required fields (such as the deposit account on a bank transaction). This whole process caused confusion and wasted time.

The Solution

I redesigned transaction conversion as an explicit, dynamic action.

Instead of a list of checkboxes checkboxes, I introduced a “Convert to…” button.

When clicked:

  • A popup shows valid conversion options

  • Selecting a type dynamically transforms the current form

  • The correct fields render immediately

  • Users complete the update and save once

This allowed conversion and editing to happen in a single flow, including editing any relevant fields specific to the new transaction type. Under this paradigm, “conversion” is treated as a deliberate state change rather than a toggle that obfuscates required fields on a transaction.

Technical Execution

I designed a type-driven form architecture that:

  • Preserved shared data during conversion

  • Removed incompatible fields safely

  • Injected required fields dynamically

  • Revalidated the form automatically

  • Supported only valid transaction transitions

This unified previously inconsistent conversion logic across multiple form types.

Impact

  • Eliminated multi-save conversion workflow

  • Reduced friction when correcting transaction mistakes

  • Improved consistency across transaction forms

  • Created a reusable pattern for dynamic form reconfiguration

Why This Matters

This project demonstrates my ability to:

  • Align UI behavior with domain logic

  • Simplify complex workflows

  • Design dynamic, state-aware interfaces

  • Own a feature from concept through implementation

Expense form with old checkbox conversion UX

Expense form with new state-based conversion UX