Moving a file to a folder specified by a token

I have read previous posts indicating that you cannot sort into a subfolder using a wildcard. However, I'm trying to do something slightly different, which I cannot figure out how to do / if it can be done.
A (not so) brief background is that I scan in virtually all of my bills, receipts, etc. I save the files with names that are an abbreviation that is easy to type, in an "Incoming Scans" folder. I then need each file to be renamed with a more descriptive "proper" name, and then moved to the proper place in a large folder tree that keeps all the scanned documents. As an example, I might scan in an American Express bill and save it as "amex 2012.1004", then it is renamed to "American Express 2012.1004" and moved to /Users/nl/ScannedDocuments/Bills/CreditCards/AmericanExpress." I know there are other ways to organize this, but this is how I do it and it works for me.
THe sheer number of different things I scan makes it impractical to have a separate Hazel rule for each thing that is regularly scanned, and I have already explored using patterns to handle the process and that approach doesn't really apply (there's an earlier question and response from Mr. Noodle on this where we discussed that). Plus, I cannot really remember all the various abbreviations and so wanted a way to print out a list of my abbreviations and what they refer to.
What I hit upon is to write a script that runs off a data file that lists valid abbreviations as a regex, the "proper" name to rename the file to, and the location to move the file to after renaming. The data file is actually written as a Markdown table so it can easily be converted to a nice format for viewing/printing, so this would work well for me. The script returns two tokens to Hazel: the name to use in renaming the file, and the target folder for the file to be moved into.
The problem is that as far as I have been able to figure out, the move file action does not accept a token, and therefore I cannot actually perform the move. I could move the file to the root of the scanned documents folder and use a sort into subfolder, which does take a token, but as the file might have to go arbitrarily deep into the folder tree and as far as I can tell, sort into subfolder can only go one level deep at a time, so that won't work. To make matters worse, I handle the finances for several elderly family members, and each set of documents has its own folder tree to go into.
I was hoping there was a way to use Hazel to do the move. If there isn't I can fall back to just using a shell script to actually move the file, and maybe that's the only way to accomplish this. (I haven't yet experimented to see if a token can be passed into a shell script...). I figured I'd ask before giving up....
Sorry this was so long - I included a lot of detail in case there is a better way to have approached this in the first place, as I am open to that if I have gone about those in the wrong way.
Thanks!
nl
A (not so) brief background is that I scan in virtually all of my bills, receipts, etc. I save the files with names that are an abbreviation that is easy to type, in an "Incoming Scans" folder. I then need each file to be renamed with a more descriptive "proper" name, and then moved to the proper place in a large folder tree that keeps all the scanned documents. As an example, I might scan in an American Express bill and save it as "amex 2012.1004", then it is renamed to "American Express 2012.1004" and moved to /Users/nl/ScannedDocuments/Bills/CreditCards/AmericanExpress." I know there are other ways to organize this, but this is how I do it and it works for me.
THe sheer number of different things I scan makes it impractical to have a separate Hazel rule for each thing that is regularly scanned, and I have already explored using patterns to handle the process and that approach doesn't really apply (there's an earlier question and response from Mr. Noodle on this where we discussed that). Plus, I cannot really remember all the various abbreviations and so wanted a way to print out a list of my abbreviations and what they refer to.
What I hit upon is to write a script that runs off a data file that lists valid abbreviations as a regex, the "proper" name to rename the file to, and the location to move the file to after renaming. The data file is actually written as a Markdown table so it can easily be converted to a nice format for viewing/printing, so this would work well for me. The script returns two tokens to Hazel: the name to use in renaming the file, and the target folder for the file to be moved into.
The problem is that as far as I have been able to figure out, the move file action does not accept a token, and therefore I cannot actually perform the move. I could move the file to the root of the scanned documents folder and use a sort into subfolder, which does take a token, but as the file might have to go arbitrarily deep into the folder tree and as far as I can tell, sort into subfolder can only go one level deep at a time, so that won't work. To make matters worse, I handle the finances for several elderly family members, and each set of documents has its own folder tree to go into.
I was hoping there was a way to use Hazel to do the move. If there isn't I can fall back to just using a shell script to actually move the file, and maybe that's the only way to accomplish this. (I haven't yet experimented to see if a token can be passed into a shell script...). I figured I'd ask before giving up....
Sorry this was so long - I included a lot of detail in case there is a better way to have approached this in the first place, as I am open to that if I have gone about those in the wrong way.
Thanks!
nl