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
Budgie transaction list where a matched transfer pair appears as one incoming transfer row naming the destination account

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.

  1. 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.

  2. 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.

  3. 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.

Budgie transaction list where a matched transfer pair appears as one incoming transfer row naming the destination account
One transfer row, not two
Named by its destination account
Budgie merged transfer screen with the consolidation source sheet listing both original transactions above Done and Revert
Every merge keeps its sources
The other half, still there
Revert restores both originals
  1. One transfer row, not two
  2. Named by its destination account
  1. Every merge keeps its sources
  2. The other half, still there
  3. 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.

  1. The half that left
  2. The half that arrived
  3. Revert restores both
Budgie consolidation sheet listing an outgoing and an incoming transfer above Done and Revert

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.

Guides on the blog

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.

Ready to take Budgie for a spin?

Join the waitlist — be first to try the offline-first expense tracker.