Transfers and refunds, matched for you
Budgie consolidates obvious transfers and merchant refunds automatically, and leaves anything ambiguous exactly as it imported it.
No spam, ever. Unsubscribe anytime.
- Free, no account
- Works offline
- Source-available

Two rows, one movement
Two screens: the list where a matched pair reads as a single transfer, and the sheet that still holds both originals behind it.
Both accounts report the same move
Sync the account the money left and the account it landed in, and each one imports its own half — an expense on one side, an income on the other. Left alone, one movement lands in your ledger twice.
The obvious pairs merge on import
An expense pairs with an income when the other account's IBAN lines up, or when the amounts match — same currency, or an implied exchange rate inside a tolerance band — and both halves fall within twelve hours of each other. The match becomes one transfer, so it stops counting as spending. Pairs Budgie is not sure about are left alone as two rows rather than guessed at.
See what merged, and undo it
A merged transfer keeps a Consolidation row. "View source transactions" opens both originals with their amounts, dates and accounts still intact. Revert puts them back and removes the merged transfer.


- One transfer row, not two
- Named by its destination account
- Every merge keeps its sources
- The other half, still there
- Revert restores both originals
Why matching beats cleaning up
Two synced banks report one move twice. Here is what changes when Budgie pairs them.
Fixing it by hand
- One transfer shows up as two rows
- Your spending looks doubled
- Refunds look like new income
- You hunt down each pair yourself
Budgie with matching
- Matching halves merge into one transfer
- Spending stays accurate
- Clear refunds match their expense
- Obvious pairs merge, unsure ones stay put
Both originals, one tap away
A merged transfer keeps the two halves it came from, and you can undo the merge.
- The half that left
- The half that arrived
- Revert restores both

What you get
Matches without perfect metadata
Amount + time-window matching catches transfers and refunds without perfect bank metadata
No silent guesses
Ambiguous matches stay as two untouched rows instead of a silent guess
Originals stay linked
Originals stay linked under the consolidated transaction, so every merge can be inspected and reverted
Everything included
- The other account's IBAN as the primary signal where the bank sends it; amount and time-window matching for banks that don't
- Cross-currency: $1000 → €925 matches when the implied exchange rate is plausible
The details
For when you want to know exactly how it behaves.
Why imported transactions need consolidation
Two synced banks see the same transfer twice — once going out, once coming in. Without consolidation, your spending doubles. Budgie matches the pair using amount, a time window, and the other account's IBAN when the bank provides it.
Refunds have the opposite problem: a merchant credit can look like income even though it reverses an earlier expense. Budgie consolidates clear refund matches automatically — including refunds in another currency that come back slightly larger than the original expense after conversion — and leaves uncertain cases exactly as they arrived.
Questions
What if the algorithm misidentifies a match?
Manual override is one tap. Open the consolidated transaction, choose Revert, and Budgie restores the original entries with their original categories.
Does this work across two different banks?
Yes. Where a bank tells Budgie the other account's IBAN, Budgie links those pairs directly. Otherwise it falls back to matching on amount and a time window. For cross-currency pairs, an exchange-rate tolerance band confirms the match when the amounts differ due to conversion.
What about cross-currency transfers?
Pairs match if the implied FX rate falls within a plausible tolerance band. Both halves still need to land within the same twelve-hour window as same-currency pairs. The original amounts in both currencies are preserved.
Will old (already-imported) transactions get re-matched?
Yes. Each consolidation run rescans recent entries against existing ones, so transfers and refunds can match retroactively when enough matching info arrives.
What if I logged an expense by hand and my bank syncs it later?
Budgie recognizes the same payment arriving from your bank and merges it with the expense you entered, so it is counted once. The merge keeps both originals and can be reverted like any other consolidation.
Do refunds in another currency match?
Yes. A refund in another currency can come back slightly larger than the original expense once converted; Budgie still matches it when it is clearly the same purchase.
Works well with
Ready to take Budgie for a spin?
Join the waitlist — be first to try the offline-first expense tracker.







