KMyMoney Transaction Matcher

Similar documents
The Stack, Free Store, and Global Namespace

How to Improve Your Campaign Conversion Rates

Slide 1 CS 170 Java Programming 1 Testing Karel

Download, Install and Use Winzip

Contents. What's New. Version released. Newsletter #31 (May 24, 2008) What's New New version released, version 4.3.3

Online Banking Overview. Frequently Asked Questions & Common Support Topics

CheckBook Pro 2 Help

The Studio Director QuickBooks Help

Client-Account Receivable

MITOCW watch?v=w_-sx4vr53m

This lesson is part 5 of 5 in a series. You can go to Invoice, Part 1: Free Shipping if you'd like to start from the beginning.

Lesson 3 Transcript: Part 1 of 2 - Tools & Scripting

The smarter, faster guide to Microsoft Outlook

Who am I? I m a python developer who has been working on OpenStack since I currently work for Aptira, who do OpenStack, SDN, and orchestration

Arduino IDE Friday, 26 October 2018

Exact General Ledger Setup and Operation

How Do I Lock My Iphone 4 Screen While On A Call

Instructor: Craig Duckett. Lecture 04: Thursday, April 5, Relationships

Basic Fiction Formatting for Smashwords in OpenOffice L. Leona Davis. Copyright 2012 L. Leona Davis All Rights Reserved

mid=81#15143

Corporate Online. Using Accounts

Welcome to our online Web Help for the Activity Fund Accounting System software.

Lesson 4: Who Goes There?

Printing Drafts in Outlook Showing Date sent Asked by: OntarioMedicalAssociatin

Copyright 2004, Mighty Computer Services

MITOCW ocw f99-lec07_300k

MAPLOGIC CORPORATION. GIS Software Solutions. Getting Started. With MapLogic Layout Manager

In our first lecture on sets and set theory, we introduced a bunch of new symbols and terminology.

USING DRUPAL. Hampshire College Website Editors Guide

(Refer Slide Time: 00:51)

CheckBook Help. Getting Started 5. Introduction 5. Naming Your Account 6. Your Starting Balance 7. Password Protection 8. We're Not Done Yet!

Part 1 Simple Arithmetic

OFX Server Frequently Asked Questions

All textures produced with Texture Maker. Not Applicable. Beginner.

Microsoft's latest OS is a lot better than its predecessor, but it still has some annoying quirks. We help you solve them.

Chapter 2: Clients, charts of accounts, and bank accounts

Lesson 3 Transcript: Part 2 of 2 Tools & Scripting

BEGINNER PHP Table of Contents

Using Parameter Queries

From time to time Google changes the way it does things, and old tutorials may not apply to some new procedures.

ChatScript Finaling a Bot Manual Bruce Wilcox, Revision 12/31/13 cs3.81

Contents. What's New. Upcoming new version. Newsletter #43 (Aug 6, 2017) A couple quick reminders:

Chris' Makefile Tutorial

Focus Group Analysis

MITOCW watch?v=zlohv4xq_ti

Transcript: A Day in the Life Desiree: 7 th Grade Learning Coach Profile

How Can I Manually Speed Up My Pc Windows Xp Netbook

Contents. What's New. Dropbox / OneDrive / Google drive Warning! A couple quick reminders:

Formulas Learn how to use Excel to do the math for you by typing formulas into cells.

City National E Deposit SM User Guide

Starting Windows Live Mail

Windows Key e: Press and hold down the Windows (Start) Key and tap the letter e one time. Release these keys and Windows File Explorer will open.

Formal Methods of Software Design, Eric Hehner, segment 24 page 1 out of 5

Instructor: Craig Duckett. Lecture 03: Tuesday, April 3, 2018 SQL Sorting, Aggregates and Joining Tables

Best Practices for. Membership Renewals

MITOCW watch?v=9h6muyzjms0

Flowcharts for Picaxe BASIC

Post Experiment Interview Questions

Quicken 2015 The Official Guide For Windows! Ebooks Free

Keep Track of Your Passwords Easily

Introduction to JavaScript and the Web

Tracking changes in Word 2007 Table of Contents

Once you click on the Enterprise Icon found on your desktop you will be asked for your password. This Default Code Is

Creating an expenses record spreadsheet in Excel

Make a transfer Just select the Make a transfer button to make a one-time transfer between your accounts.

Citrix Connectivity Help. Table of Contents

6.001 Notes: Section 17.5

When you first login to CountAbout you will be on the Transactions tab (Figure 1). This is where you will spend most of your time on the website.

Some (semi-)advanced tips for LibreOffice

Bank Manager. Bank Manager is an add on module that allows you to import your bank statements that you download from your internet banking.

Azon Master Class. By Ryan Stevenson Guidebook #5 WordPress Usage

Windows Vista Service Pack 1 Won't Install. Properly >>>CLICK HERE<<<

With IBM BPM 8.5.5, the features needed to express both BPM solutions and case management oriented solutions comes together in one offering.

Permissions Tutorial: Add a Read-Only User

When you first launch CrushFTP you may be notified that port 21 is locked. You will be prompted to fix this.

About MassMutual Electronic Bill Presentment & Payment

Control Structures. Code can be purely arithmetic assignments. At some point we will need some kind of control or decision making process to occur

Introduction to ForScore Connect

Clickteam Fusion 2.5 Creating a Debug System - Guide

Can't Add Songs To Iphone From Itunes 11 >>>CLICK HERE<<<

Fortunately, you only need to know 10% of what's in the main page to get 90% of the benefit. This page will show you that 10%.

Clean & Speed Up Windows with AWO

CheckWriter Overview:

Week - 01 Lecture - 04 Downloading and installing Python

I made a 5 minute introductory video screencast. Go ahead and watch it. Copyright(c) 2011 by Steven Shank

(Refer Slide Time: 1:43)

Azon Master Class. By Ryan Stevenson Guidebook #7 Site Construction 2/3

Integrate with HeroPM

VISUAL GUIDE to. RX Scripting. for Roulette Xtreme - System Designer 2.0. L J Howell UX Software Ver. 1.0

When using custom white balance the custom setting could be automatically deactivated under certain circumstances - this is no longer the case.

Instructor: Craig Duckett. Lecture 07: Tuesday, April 17 th, 2018 Conflicts and Isolation, MySQL Workbench

Blue Bear/School Books Check Entry QR Guide

EXCEL TIPS and TRICKS FROM MADDOG ENTERPRISES LLC

"Missing log" in edit viewer, all media gone Posted by prodeuser - 17 Aug :14

In today s video I'm going show you how you can set up your own online business using marketing and affiliate marketing.

MITOCW watch?v=kz7jjltq9r4

Volume 8, Issue 1 Payment Processing News from Shift4 Corporation November 2005

MZD ultimate Tip Jar. Page 1. Tip Jar Features:

Lesson 4 Transcript: DB2 Architecture

Android Programming Family Fun Day using AppInventor

Transcription:

KMyMoney Transaction Matcher Ace Jones <acejones@users.sf.net> Use Cases Case #1A: Matching hand-entered transactions manually I enter a transaction by hand, with payee, amount, date & category. I download that transaction via OFX. Now, I have a problem. There are two transactions in my register, when there was only one in real life. If I delete the OFX transaction, the bank ID for this transaction is lost, so the next time I download via OFX I will get this transaction again. Using the manual transaction matcher, I can identify that these are the same. This will keep the payee and category I assigned by hand, but retain the bank ID of the downloaded transaction, avoiding the download again problem. If the date or amount don't match, it will use the downloaded date & amount. As a refinement, this behaviour can be globally configurable, or even prompted for each transaction. Case #1B: Matching only one side of a split Similar to Case #1A I have a checking account CH, and a credit card, CCA. I download a statement for CCA. I assign the category on the payment as a transfer from CH. Then I download the statement for CH. Now I have the same problem as Case #1A. This points out that bank ID's actually need to be a property of the split, not the transaction... because when this transaction is fully resolved, it will have two bank ID's: The one from CCA and the one from CH. Case #1C: Resolving conflicts in single-split matching Same as Case #1B, except I download the CH statement first, and I have 2 credit cards. Now I have another problem. I have a checking account CH, and two credit cards, CCA and CCB. When I download my statement from CH, the transaction payee for the payments to both CCA and CCB are CREDIT CARD PAYMENT.

The last time I entered a payment in CH, it was my payment for CCB. Category matching (see Case #3) will assign the other side of BOTH transactions to CCB. Later I will download the statement from CCA. Category matching will match the other side of that transaction to CH. Thus, in CH, I am left with two transactions, of the same amount and date. One is to CCA (the correct one), another is to CCB (incorrect). Somehow, I need to (manually?) match these two transactions into a single transfer from CH to CCA, with both the Bank ID from CCH, and the bank ID from CCA. Case #1D: Matching hand-entered transactions automatically Same as Case #1A, except the automatic transaction matcher will see that the amounts are the same, the dates similar, and match them for me. However, if I don't like the matching, I can unmatch them manually. This will leave 2 transactions. The one exactly as I entered it, and the second, exactly as I would have downloaded it without matching. Case #2A: Payee matching I shop for groceries at Whole Foods Market. When I download my grocery transactions, the payee is set to WHOLE FOODS MARKET 1000 ACE ROAD 800 555 1212. The first time I download one of these transactions, I change the payee to Whole Foods Market. The next time I download one, the payee is already set to Whole Foods Market because the program remembered the change. Case #2B: Advanced Payee Matching My bank has the insidious habit of inserting variable information into my payees, thus thwarting the logic that enables Case #2A. It may insert the date of payment, or an invoice number, or transaction number or something else. e.g. JUL 18 0846 SOUTHGATE HARDWAR PAYSON UT I would like a way to say, anything that has SOUTHGATE HARDWAR in it is in fact Southgate Hardware. I'm not entirely sure what the good solution is for this. One proposed solution is to have a matching regular expression in the payee. However, while I might find this useful, asking our target user to master regexp's is too much. I think a sub string approach is best, but I'm not sure how to enable the user to enter it. Perhaps just a match key field

in the payee. Case #3: Category matching The most recent transaction involving Whole Foods Market was set to the category Groceries. When I download another transaction which matches the payee to Whole Foods Market, the category is set automatically to Groceries. Case #4: Scheduled transaction matching We should also consider the uses cases of matching against scheduled transactions. I'll save that for a future date. This cases I can think about right now are: First, you enter the scheduled transaction and then LATER download its match. Second, you download the matching transaction, decline to match it with it's scheduled transaction and then later try to enter the scheduled transaction. Ideally, the scheduled transaction enterer detects the match and prompts the user, "It looks like you already have this, continue anyway?" or some such. MS Money's Implementation I've been using OFX based home banking in MS Money for years from numerous banks on even more numerous accounts and I've found it the perfect balance of speed and accuracy to enter transactions. When transactions are downloaded (OFX, HBCI, QIF, or anything else), they are entered and marked as 'downloaded' with a really obvious formatting change (bold text in Money's case). An attempt is done to match transactions automatically (Case #1D), and if a transaction is matched, there's a note that "this transaction was matched with an existing transaction" along with a button to UN match it. Matching requires 2 transactions: One entered by the user, and the other one downloaded. If a match is found, the 2 transactions are DISPLAYED as one transaction, but the engine maintains them as two separate transactions. That's needed so the user can say "No thank you, those do not match," and the transactions will be separated. They are merged into one when the user accepts the downloaded transaction. You have to 'accept' each downloaded transaction, whether or not it was matched. There is an 'accept all' button too. There is a button to manually match transactions (Case #1A), or unmatch incorrectly matched transactions.

The highlighted transaction in Screen #1 was automatically matched, or merged in Money's parlance. This fact is spelled out in plain language in the transaction display itself, and the details of both my hand entered transaction and the bank's version are shown. As Tom pointed out, the (rows per transaction) varies between regular and downloaded transactions. This will get weird coding wise... but we can use a different representation anyway ; ) This screen shows a similar screen to #1, but the transaction forms are turned on. Note that the ledger view automatically goes into "one line" mode when you're showing the forms, and also that the variable line bit Tom mentioned is still there.

Screen #3 shows the manual matching screen. This screen is brought up by pressing the Change button on the highlighted transaction. From here, the user can declare that this transaction is not to be matched with an existing on, or to change the one it was matched with. Screen #4 shows what Screen #1 looks like after I've accepted the matched transaction (highlighted). If you download a transaction that has not already been entered, there is no match. So the single displayed transaction is the downloaded one (with an altered payee and/or category as noted earlier). When you accept it, you enter it in. In practice, in MS Money, that transaction is still a 'live' transaction even if you haven't accepted it, e.g. it shows up in

reports, etc. Whenever you go back to your register, it's sitting there bold waiting for you. If it couldn't complete the split based on past data, it assigns it to the "Unassigned" category, which is also how it shows up in reports. (I'm not sure I love the "Unassigned" category instead of just doing what we do now. But it's probably a bit more user friendly.) Screen #2 shows a transaction which was not merged, because it wasn't already entered in the ledger. Here the user still has to accept the transaction. Pressing change will bring up the matching interface (Screen #3), because perhaps I do want to manually match this with another transaction. This is my last chance to do so. Once I accept the transaction, I can never match this again, and the transaction becomes just like any other transaction in the system. Note in Screen #4, it doesn't say This transaction was downloaded from your financial institution any more. This is in fact the normal use case for me. I RARELY hand enter transactions, preferring instead to download them all from the various banks. So there is rarely a match. The exception is usually for scheduled payments. Money is also aware of your scheduled transactions even if you haven't entered them. So it will attempt to 'merge' with those for you, in effect saying "This looks like it's your mortgage payment, even though you haven't entered it." Again, you can say, "No thank you, that is NOT my mortgage payment." MS Money clearly handles Case #2A (Payee Matching). When you manually match, it seems to update its payee mapping. Everything described here is done within the regular register itself, without a transaction list dialog like KImportVerifyDlg. That's handy, because sometimes you want to flip back and forth to payees or categories when you're dealing with downloaded transactions.

Case #3 is handled cleanly as well (Category Matching). Some months I won't shop anywhere new, so I can download and then 'accept all', and I'm totally DONE. Nice! Implementation Transaction Matching Logic In order to match an existing transaction, an imported transaction must have the exact same net amount. It must be within +/ 3 days of the existing transaction. Ledger Changes Unlike MS Money, we will not show both the original and matched information in the ledger. The ledger shows just the resulting transaction, after the matcher has made any changes to it. Imported transactions will have the yellow background color that they currently do only in the KimportVerifyDlg. In multi line view, they have the text IMPORTED in the bottom line of the number field (which will cause the number field to be wider sometimes), and two icons in the bottom line of the Date field. One icon is the green check box to Ok the match, and the other is the wrench to Match something more appropriate. See the above screen shot. This information is also conveyed on the button bar when transaction forms are enabled. To accommodate this, perhaps transactions with the imported flag are always shown in multi line mode, regardless of the ledger setting. The Match Dialog The things you can do in the match dialog are:

See if the matcher matched an already existing transaction. Choose to un match those. Choose to manually match the imported transaction with a different existing transaction. See if the matcher changed the date, and choose to keep the old date. See if the matcher changed the payee, and choose to keep the old one. See if the matcher changed the amount, and choose to keep the old one. This would only happen if you manually matched it to another of a different amount. Category Matching No special UI is needed for category matching. To some extent this is already working. It could be cleaned up a little. Payee Matching No special UI is needed for Case #2A payee matching. The way I imagined this working is storing a payee match map in the file, mapping all known imported payees to known payees.